Skip to main content

livekit_protocol/
livekit.rs

1// @generated
2// This file is @generated by prost-build.
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct MetricsBatch {
5    /// time at which this batch is sent based on a monotonic clock (millisecond resolution)
6    #[prost(int64, tag = "1")]
7    pub timestamp_ms: i64,
8    #[prost(message, optional, tag = "2")]
9    pub normalized_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
10    /// To avoid repeating string values, we store them in a separate list and reference them by index
11    /// This is useful for storing participant identities, track names, etc.
12    /// There is also a predefined list of labels that can be used to reference common metrics.
13    /// They have reserved indices from 0 to (METRIC_LABEL_PREDEFINED_MAX_VALUE - 1).
14    /// Indexes pointing at str_data should start from METRIC_LABEL_PREDEFINED_MAX_VALUE,
15    /// such that str_data\[0\] == index of METRIC_LABEL_PREDEFINED_MAX_VALUE.
16    #[prost(string, repeated, tag = "3")]
17    pub str_data: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18    #[prost(message, repeated, tag = "4")]
19    pub time_series: ::prost::alloc::vec::Vec<TimeSeriesMetric>,
20    #[prost(message, repeated, tag = "5")]
21    pub events: ::prost::alloc::vec::Vec<EventMetric>,
22}
23#[derive(Clone, PartialEq, ::prost::Message)]
24pub struct TimeSeriesMetric {
25    /// Metric name e.g "speech_probablity". The string value is not directly stored in the message, but referenced by index
26    /// in the `str_data` field of `MetricsBatch`
27    #[prost(uint32, tag = "1")]
28    pub label: u32,
29    /// index into `str_data`
30    #[prost(uint32, tag = "2")]
31    pub participant_identity: u32,
32    /// index into `str_data`
33    #[prost(uint32, tag = "3")]
34    pub track_sid: u32,
35    #[prost(message, repeated, tag = "4")]
36    pub samples: ::prost::alloc::vec::Vec<MetricSample>,
37    /// index into 'str_data'
38    #[prost(uint32, tag = "5")]
39    pub rid: u32,
40}
41#[derive(Clone, Copy, PartialEq, ::prost::Message)]
42pub struct MetricSample {
43    /// time of metric based on a monotonic clock (in milliseconds)
44    #[prost(int64, tag = "1")]
45    pub timestamp_ms: i64,
46    #[prost(message, optional, tag = "2")]
47    pub normalized_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
48    #[prost(float, tag = "3")]
49    pub value: f32,
50}
51#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
52pub struct EventMetric {
53    #[prost(uint32, tag = "1")]
54    pub label: u32,
55    /// index into `str_data`
56    #[prost(uint32, tag = "2")]
57    pub participant_identity: u32,
58    /// index into `str_data`
59    #[prost(uint32, tag = "3")]
60    pub track_sid: u32,
61    /// start time of event based on a monotonic clock (in milliseconds)
62    #[prost(int64, tag = "4")]
63    pub start_timestamp_ms: i64,
64    /// end time of event based on a monotonic clock (in milliseconds), if needed
65    #[prost(int64, optional, tag = "5")]
66    pub end_timestamp_ms: ::core::option::Option<i64>,
67    #[prost(message, optional, tag = "6")]
68    pub normalized_start_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
69    #[prost(message, optional, tag = "7")]
70    pub normalized_end_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
71    #[prost(string, tag = "8")]
72    pub metadata: ::prost::alloc::string::String,
73    /// index into 'str_data'
74    #[prost(uint32, tag = "9")]
75    pub rid: u32,
76}
77#[derive(Clone, PartialEq, ::prost::Message)]
78pub struct MetricsRecordingHeader {
79    #[prost(string, tag = "1")]
80    pub room_id: ::prost::alloc::string::String,
81    /// milliseconds
82    #[prost(uint64, tag = "3")]
83    pub duration: u64,
84    #[prost(message, optional, tag = "4")]
85    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
86    #[prost(map = "string, string", tag = "5")]
87    pub room_tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
88    #[prost(string, tag = "6")]
89    pub room_name: ::prost::alloc::string::String,
90    #[prost(message, optional, tag = "7")]
91    pub room_start_time: ::core::option::Option<::pbjson_types::Timestamp>,
92    #[prost(string, tag = "8")]
93    pub job_id: ::prost::alloc::string::String,
94    /// session is a simulation; the collector skips PII redaction for it unless redaction_enabled is set
95    #[prost(bool, tag = "9")]
96    pub simulated: bool,
97    /// force PII redaction on for this session (only ever enables, never disables)
98    #[prost(bool, tag = "10")]
99    pub redaction_enabled: bool,
100}
101//
102// Protocol used to record metrics for a specific session.
103//
104// Clients send their timestamp in their own monotonically increasing time (e.g `performance.now` on JS).
105// These timestamps are then augmented by the SFU to its time base.
106//
107// A metric can be linked to a specific track by setting `track_sid`.
108
109/// index from [0: MAX_LABEL_PREDEFINED_MAX_VALUE) are for predefined labels (`MetricLabel`)
110#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
111#[repr(i32)]
112pub enum MetricLabel {
113    /// time to first token from LLM
114    AgentsLlmTtft = 0,
115    /// time to final transcription
116    AgentsSttTtft = 1,
117    /// time to first byte
118    AgentsTtsTtfb = 2,
119    /// Number of video freezes
120    ClientVideoSubscriberFreezeCount = 3,
121    /// total duration of freezes
122    ClientVideoSubscriberTotalFreezeDuration = 4,
123    /// number of video pauses
124    ClientVideoSubscriberPauseCount = 5,
125    /// total duration of pauses
126    ClientVideoSubscriberTotalPausesDuration = 6,
127    /// number of concealed (synthesized) audio samples
128    ClientAudioSubscriberConcealedSamples = 7,
129    /// number of silent concealed samples
130    ClientAudioSubscriberSilentConcealedSamples = 8,
131    /// number of concealment events
132    ClientAudioSubscriberConcealmentEvents = 9,
133    /// number of interruptions
134    ClientAudioSubscriberInterruptionCount = 10,
135    /// total duration of interruptions
136    ClientAudioSubscriberTotalInterruptionDuration = 11,
137    /// total time spent in jitter buffer
138    ClientSubscriberJitterBufferDelay = 12,
139    /// total time spent in jitter buffer
140    ClientSubscriberJitterBufferEmittedCount = 13,
141    /// total duration spent in bandwidth quality limitation
142    ClientVideoPublisherQualityLimitationDurationBandwidth = 14,
143    /// total duration spent in cpu quality limitation
144    ClientVideoPublisherQualityLimitationDurationCpu = 15,
145    /// total duration spent in other quality limitation
146    ClientVideoPublisherQualityLimitationDurationOther = 16,
147    /// Publisher RTT (participant -> server)
148    PublisherRtt = 17,
149    /// RTT between publisher node and subscriber node (could involve intermedia node(s))
150    ServerMeshRtt = 18,
151    /// Subscribe RTT (server -> participant)
152    SubscriberRtt = 19,
153    PredefinedMaxValue = 4096,
154}
155impl MetricLabel {
156    /// String value of the enum field names used in the ProtoBuf definition.
157    ///
158    /// The values are not transformed in any way and thus are considered stable
159    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
160    pub fn as_str_name(&self) -> &'static str {
161        match self {
162            Self::AgentsLlmTtft => "AGENTS_LLM_TTFT",
163            Self::AgentsSttTtft => "AGENTS_STT_TTFT",
164            Self::AgentsTtsTtfb => "AGENTS_TTS_TTFB",
165            Self::ClientVideoSubscriberFreezeCount => "CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT",
166            Self::ClientVideoSubscriberTotalFreezeDuration => "CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION",
167            Self::ClientVideoSubscriberPauseCount => "CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT",
168            Self::ClientVideoSubscriberTotalPausesDuration => "CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION",
169            Self::ClientAudioSubscriberConcealedSamples => "CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES",
170            Self::ClientAudioSubscriberSilentConcealedSamples => "CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES",
171            Self::ClientAudioSubscriberConcealmentEvents => "CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS",
172            Self::ClientAudioSubscriberInterruptionCount => "CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT",
173            Self::ClientAudioSubscriberTotalInterruptionDuration => "CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION",
174            Self::ClientSubscriberJitterBufferDelay => "CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY",
175            Self::ClientSubscriberJitterBufferEmittedCount => "CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT",
176            Self::ClientVideoPublisherQualityLimitationDurationBandwidth => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH",
177            Self::ClientVideoPublisherQualityLimitationDurationCpu => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU",
178            Self::ClientVideoPublisherQualityLimitationDurationOther => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER",
179            Self::PublisherRtt => "PUBLISHER_RTT",
180            Self::ServerMeshRtt => "SERVER_MESH_RTT",
181            Self::SubscriberRtt => "SUBSCRIBER_RTT",
182            Self::PredefinedMaxValue => "METRIC_LABEL_PREDEFINED_MAX_VALUE",
183        }
184    }
185    /// Creates an enum from field names used in the ProtoBuf definition.
186    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
187        match value {
188            "AGENTS_LLM_TTFT" => Some(Self::AgentsLlmTtft),
189            "AGENTS_STT_TTFT" => Some(Self::AgentsSttTtft),
190            "AGENTS_TTS_TTFB" => Some(Self::AgentsTtsTtfb),
191            "CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT" => Some(Self::ClientVideoSubscriberFreezeCount),
192            "CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION" => Some(Self::ClientVideoSubscriberTotalFreezeDuration),
193            "CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT" => Some(Self::ClientVideoSubscriberPauseCount),
194            "CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION" => Some(Self::ClientVideoSubscriberTotalPausesDuration),
195            "CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES" => Some(Self::ClientAudioSubscriberConcealedSamples),
196            "CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES" => Some(Self::ClientAudioSubscriberSilentConcealedSamples),
197            "CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS" => Some(Self::ClientAudioSubscriberConcealmentEvents),
198            "CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT" => Some(Self::ClientAudioSubscriberInterruptionCount),
199            "CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION" => Some(Self::ClientAudioSubscriberTotalInterruptionDuration),
200            "CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY" => Some(Self::ClientSubscriberJitterBufferDelay),
201            "CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT" => Some(Self::ClientSubscriberJitterBufferEmittedCount),
202            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH" => Some(Self::ClientVideoPublisherQualityLimitationDurationBandwidth),
203            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU" => Some(Self::ClientVideoPublisherQualityLimitationDurationCpu),
204            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER" => Some(Self::ClientVideoPublisherQualityLimitationDurationOther),
205            "PUBLISHER_RTT" => Some(Self::PublisherRtt),
206            "SERVER_MESH_RTT" => Some(Self::ServerMeshRtt),
207            "SUBSCRIBER_RTT" => Some(Self::SubscriberRtt),
208            "METRIC_LABEL_PREDEFINED_MAX_VALUE" => Some(Self::PredefinedMaxValue),
209            _ => None,
210        }
211    }
212}
213#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
214pub struct Pagination {
215    /// list entities which IDs are greater
216    #[prost(string, tag = "1")]
217    pub after_id: ::prost::alloc::string::String,
218    #[prost(int32, tag = "2")]
219    pub limit: i32,
220}
221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
222pub struct TokenPagination {
223    #[prost(string, tag = "1")]
224    pub token: ::prost::alloc::string::String,
225}
226/// ListUpdate is used for updated APIs where 'repeated string' field is modified.
227#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
228pub struct ListUpdate {
229    /// set the field to a new list
230    #[prost(string, repeated, tag = "1")]
231    pub set: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
232    /// append items to a list, avoiding duplicates
233    #[prost(string, repeated, tag = "2")]
234    pub add: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
235    /// delete items from a list
236    #[prost(string, repeated, tag = "3")]
237    pub remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
238    /// sets the list to an empty list
239    #[prost(bool, tag = "4")]
240    pub clear: bool,
241}
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct Room {
244    #[prost(string, tag = "1")]
245    pub sid: ::prost::alloc::string::String,
246    #[prost(string, tag = "2")]
247    pub name: ::prost::alloc::string::String,
248    #[prost(uint32, tag = "3")]
249    pub empty_timeout: u32,
250    #[prost(uint32, tag = "14")]
251    pub departure_timeout: u32,
252    #[prost(uint32, tag = "4")]
253    pub max_participants: u32,
254    #[prost(int64, tag = "5")]
255    pub creation_time: i64,
256    #[prost(int64, tag = "15")]
257    pub creation_time_ms: i64,
258    #[prost(string, tag = "6")]
259    pub turn_password: ::prost::alloc::string::String,
260    #[prost(message, repeated, tag = "7")]
261    pub enabled_codecs: ::prost::alloc::vec::Vec<Codec>,
262    #[prost(string, tag = "8")]
263    pub metadata: ::prost::alloc::string::String,
264    #[prost(uint32, tag = "9")]
265    pub num_participants: u32,
266    #[prost(uint32, tag = "11")]
267    pub num_publishers: u32,
268    #[prost(bool, tag = "10")]
269    pub active_recording: bool,
270    #[prost(message, optional, tag = "13")]
271    pub version: ::core::option::Option<TimedVersion>,
272}
273#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
274pub struct Codec {
275    #[prost(string, tag = "1")]
276    pub mime: ::prost::alloc::string::String,
277    #[prost(string, tag = "2")]
278    pub fmtp_line: ::prost::alloc::string::String,
279}
280#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
281pub struct PlayoutDelay {
282    #[prost(bool, tag = "1")]
283    pub enabled: bool,
284    #[prost(uint32, tag = "2")]
285    pub min: u32,
286    #[prost(uint32, tag = "3")]
287    pub max: u32,
288}
289#[derive(Clone, PartialEq, Eq, Hash, ::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#[derive(Clone, PartialEq, ::prost::Message)]
327pub struct ParticipantInfo {
328    #[prost(string, tag = "1")]
329    pub sid: ::prost::alloc::string::String,
330    #[prost(string, tag = "2")]
331    pub identity: ::prost::alloc::string::String,
332    #[prost(enumeration = "participant_info::State", tag = "3")]
333    pub state: i32,
334    #[prost(message, repeated, tag = "4")]
335    pub tracks: ::prost::alloc::vec::Vec<TrackInfo>,
336    #[prost(string, tag = "5")]
337    pub metadata: ::prost::alloc::string::String,
338    /// timestamp when participant joined room, in seconds
339    #[prost(int64, tag = "6")]
340    pub joined_at: i64,
341    /// timestamp when participant joined room, in milliseconds
342    #[prost(int64, tag = "17")]
343    pub joined_at_ms: i64,
344    #[prost(string, tag = "9")]
345    pub name: ::prost::alloc::string::String,
346    #[prost(uint32, tag = "10")]
347    pub version: u32,
348    #[prost(message, optional, tag = "11")]
349    pub permission: ::core::option::Option<ParticipantPermission>,
350    #[prost(string, tag = "12")]
351    pub region: ::prost::alloc::string::String,
352    /// indicates the participant has an active publisher connection
353    /// and can publish to the server
354    #[prost(bool, tag = "13")]
355    pub is_publisher: bool,
356    #[prost(enumeration = "participant_info::Kind", tag = "14")]
357    pub kind: i32,
358    #[prost(map = "string, string", tag = "15")]
359    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
360    #[prost(enumeration = "DisconnectReason", tag = "16")]
361    pub disconnect_reason: i32,
362    #[prost(enumeration = "participant_info::KindDetail", repeated, tag = "18")]
363    pub kind_details: ::prost::alloc::vec::Vec<i32>,
364    #[prost(message, repeated, tag = "19")]
365    pub data_tracks: ::prost::alloc::vec::Vec<DataTrackInfo>,
366    /// protocol version used for client feature compatibility
367    #[prost(int32, tag = "20")]
368    pub client_protocol: i32,
369    /// capabilities the participant's client advertises, mirrored from ClientInfo.
370    /// Lets other participants perform client-side feature detection.
371    #[prost(enumeration = "client_info::Capability", repeated, tag = "21")]
372    pub capabilities: ::prost::alloc::vec::Vec<i32>,
373}
374/// Nested message and enum types in `ParticipantInfo`.
375pub mod participant_info {
376    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
377    #[repr(i32)]
378    pub enum State {
379        /// websocket' connected, but not offered yet
380        Joining = 0,
381        /// server received client offer
382        Joined = 1,
383        /// ICE connectivity established
384        Active = 2,
385        /// WS disconnected
386        Disconnected = 3,
387    }
388    impl State {
389        /// String value of the enum field names used in the ProtoBuf definition.
390        ///
391        /// The values are not transformed in any way and thus are considered stable
392        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
393        pub fn as_str_name(&self) -> &'static str {
394            match self {
395                Self::Joining => "JOINING",
396                Self::Joined => "JOINED",
397                Self::Active => "ACTIVE",
398                Self::Disconnected => "DISCONNECTED",
399            }
400        }
401        /// Creates an enum from field names used in the ProtoBuf definition.
402        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
403            match value {
404                "JOINING" => Some(Self::Joining),
405                "JOINED" => Some(Self::Joined),
406                "ACTIVE" => Some(Self::Active),
407                "DISCONNECTED" => Some(Self::Disconnected),
408                _ => None,
409            }
410        }
411    }
412    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
413    #[repr(i32)]
414    pub enum Kind {
415        /// standard participants, e.g. web clients
416        Standard = 0,
417        /// only ingests streams
418        Ingress = 1,
419        /// only consumes streams
420        Egress = 2,
421        /// SIP participants
422        Sip = 3,
423        /// LiveKit agents
424        Agent = 4,
425        /// Connectors participants
426        Connector = 7,
427        /// Bridge participants
428        ///
429        /// NEXT_ID: 9
430        Bridge = 8,
431    }
432    impl Kind {
433        /// String value of the enum field names used in the ProtoBuf definition.
434        ///
435        /// The values are not transformed in any way and thus are considered stable
436        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
437        pub fn as_str_name(&self) -> &'static str {
438            match self {
439                Self::Standard => "STANDARD",
440                Self::Ingress => "INGRESS",
441                Self::Egress => "EGRESS",
442                Self::Sip => "SIP",
443                Self::Agent => "AGENT",
444                Self::Connector => "CONNECTOR",
445                Self::Bridge => "BRIDGE",
446            }
447        }
448        /// Creates an enum from field names used in the ProtoBuf definition.
449        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
450            match value {
451                "STANDARD" => Some(Self::Standard),
452                "INGRESS" => Some(Self::Ingress),
453                "EGRESS" => Some(Self::Egress),
454                "SIP" => Some(Self::Sip),
455                "AGENT" => Some(Self::Agent),
456                "CONNECTOR" => Some(Self::Connector),
457                "BRIDGE" => Some(Self::Bridge),
458                _ => None,
459            }
460        }
461    }
462    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
463    #[repr(i32)]
464    pub enum KindDetail {
465        CloudAgent = 0,
466        Forwarded = 1,
467        ConnectorWhatsapp = 2,
468        ConnectorTwilio = 3,
469        BridgeRtsp = 4,
470        /// NEXT_ID: 6
471        Simulation = 5,
472    }
473    impl KindDetail {
474        /// String value of the enum field names used in the ProtoBuf definition.
475        ///
476        /// The values are not transformed in any way and thus are considered stable
477        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
478        pub fn as_str_name(&self) -> &'static str {
479            match self {
480                Self::CloudAgent => "CLOUD_AGENT",
481                Self::Forwarded => "FORWARDED",
482                Self::ConnectorWhatsapp => "CONNECTOR_WHATSAPP",
483                Self::ConnectorTwilio => "CONNECTOR_TWILIO",
484                Self::BridgeRtsp => "BRIDGE_RTSP",
485                Self::Simulation => "SIMULATION",
486            }
487        }
488        /// Creates an enum from field names used in the ProtoBuf definition.
489        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
490            match value {
491                "CLOUD_AGENT" => Some(Self::CloudAgent),
492                "FORWARDED" => Some(Self::Forwarded),
493                "CONNECTOR_WHATSAPP" => Some(Self::ConnectorWhatsapp),
494                "CONNECTOR_TWILIO" => Some(Self::ConnectorTwilio),
495                "BRIDGE_RTSP" => Some(Self::BridgeRtsp),
496                "SIMULATION" => Some(Self::Simulation),
497                _ => None,
498            }
499        }
500    }
501}
502#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
503pub struct Encryption {
504}
505/// Nested message and enum types in `Encryption`.
506pub mod encryption {
507    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
508    #[repr(i32)]
509    pub enum Type {
510        None = 0,
511        Gcm = 1,
512        Custom = 2,
513    }
514    impl Type {
515        /// String value of the enum field names used in the ProtoBuf definition.
516        ///
517        /// The values are not transformed in any way and thus are considered stable
518        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
519        pub fn as_str_name(&self) -> &'static str {
520            match self {
521                Self::None => "NONE",
522                Self::Gcm => "GCM",
523                Self::Custom => "CUSTOM",
524            }
525        }
526        /// Creates an enum from field names used in the ProtoBuf definition.
527        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
528            match value {
529                "NONE" => Some(Self::None),
530                "GCM" => Some(Self::Gcm),
531                "CUSTOM" => Some(Self::Custom),
532                _ => None,
533            }
534        }
535    }
536}
537#[derive(Clone, PartialEq, ::prost::Message)]
538pub struct SimulcastCodecInfo {
539    #[prost(string, tag = "1")]
540    pub mime_type: ::prost::alloc::string::String,
541    #[prost(string, tag = "2")]
542    pub mid: ::prost::alloc::string::String,
543    #[prost(string, tag = "3")]
544    pub cid: ::prost::alloc::string::String,
545    #[prost(message, repeated, tag = "4")]
546    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
547    #[prost(enumeration = "video_layer::Mode", tag = "5")]
548    pub video_layer_mode: i32,
549    /// cid (client side id for track) could be different between
550    /// signalling (AddTrackRequest) and SDP offer. This field
551    /// will be populated only if it is different to avoid
552    /// duplication and keep the representation concise.
553    #[prost(string, tag = "6")]
554    pub sdp_cid: ::prost::alloc::string::String,
555}
556#[derive(Clone, PartialEq, ::prost::Message)]
557pub struct TrackInfo {
558    #[prost(string, tag = "1")]
559    pub sid: ::prost::alloc::string::String,
560    #[prost(enumeration = "TrackType", tag = "2")]
561    pub r#type: i32,
562    #[prost(string, tag = "3")]
563    pub name: ::prost::alloc::string::String,
564    #[prost(bool, tag = "4")]
565    pub muted: bool,
566    /// original width of video (unset for audio)
567    /// clients may receive a lower resolution version with simulcast
568    #[prost(uint32, tag = "5")]
569    pub width: u32,
570    /// original height of video (unset for audio)
571    #[prost(uint32, tag = "6")]
572    pub height: u32,
573    /// true if track is simulcasted
574    ///
575    /// see `video_layer_mode` in `codecs`
576    #[deprecated]
577    #[prost(bool, tag = "7")]
578    pub simulcast: bool,
579    /// true if DTX (Discontinuous Transmission) is disabled for audio
580    ///
581    /// deprecated in favor of `audio_features`
582    #[deprecated]
583    #[prost(bool, tag = "8")]
584    pub disable_dtx: bool,
585    /// source of media
586    #[prost(enumeration = "TrackSource", tag = "9")]
587    pub source: i32,
588    /// see `codecs` for layers of individual codec
589    #[deprecated]
590    #[prost(message, repeated, tag = "10")]
591    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
592    /// mime type of codec
593    #[prost(string, tag = "11")]
594    pub mime_type: ::prost::alloc::string::String,
595    #[prost(string, tag = "12")]
596    pub mid: ::prost::alloc::string::String,
597    #[prost(message, repeated, tag = "13")]
598    pub codecs: ::prost::alloc::vec::Vec<SimulcastCodecInfo>,
599    /// deprecated in favor of `audio_features`
600    #[deprecated]
601    #[prost(bool, tag = "14")]
602    pub stereo: bool,
603    /// true if RED (Redundant Encoding) is disabled for audio
604    #[prost(bool, tag = "15")]
605    pub disable_red: bool,
606    #[prost(enumeration = "encryption::Type", tag = "16")]
607    pub encryption: i32,
608    #[prost(string, tag = "17")]
609    pub stream: ::prost::alloc::string::String,
610    #[prost(message, optional, tag = "18")]
611    pub version: ::core::option::Option<TimedVersion>,
612    #[prost(enumeration = "AudioTrackFeature", repeated, tag = "19")]
613    pub audio_features: ::prost::alloc::vec::Vec<i32>,
614    #[prost(enumeration = "BackupCodecPolicy", tag = "20")]
615    pub backup_codec_policy: i32,
616    #[prost(enumeration = "PacketTrailerFeature", repeated, tag = "21")]
617    pub packet_trailer_features: ::prost::alloc::vec::Vec<i32>,
618}
619#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
620pub struct DataTrackInfo {
621    /// Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.
622    #[prost(uint32, tag = "1")]
623    pub pub_handle: u32,
624    /// Server-assigned track identifier.
625    #[prost(string, tag = "2")]
626    pub sid: ::prost::alloc::string::String,
627    /// Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.
628    #[prost(string, tag = "3")]
629    pub name: ::prost::alloc::string::String,
630    /// Method used for end-to-end encryption (E2EE) on packet payloads.
631    #[prost(enumeration = "encryption::Type", tag = "4")]
632    pub encryption: i32,
633    /// Encoding for frame payloads on this track. If unspecified, the track is untyped.
634    #[prost(message, optional, tag = "5")]
635    pub frame_encoding: ::core::option::Option<DataTrackFrameEncoding>,
636    /// ID of the schema used by frames on this track if the track is typed.
637    #[prost(message, optional, tag = "6")]
638    pub schema: ::core::option::Option<DataTrackSchemaId>,
639}
640/// Encoding for frame payloads.
641#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
642pub struct DataTrackFrameEncoding {
643    #[prost(oneof = "data_track_frame_encoding::Value", tags = "1, 2")]
644    pub value: ::core::option::Option<data_track_frame_encoding::Value>,
645}
646/// Nested message and enum types in `DataTrackFrameEncoding`.
647pub mod data_track_frame_encoding {
648    /// Well-known encoding for frame payloads.
649    ///
650    /// Mirrors the well-known message encodings from the MCAP spec:
651    /// <https://mcap.dev/spec/registry#message-encodings>
652    ///
653    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
654    #[repr(i32)]
655    pub enum WellKnownFrameEncoding {
656        Unspecified = 0,
657        /// ROS 1: must be described by `ROS1_MSG` schema encoding.
658        Ros1 = 1,
659        /// CDR: must be described by `ROS2_MSG`, `ROS2_IDL`, or `OMG_IDL` schema encoding.
660        Cdr = 2,
661        /// Protocol Buffer: must be described by `PROTOBUF` schema encoding.
662        Protobuf = 3,
663        /// FlatBuffer: must be described by `FLATBUFFER` schema encoding.
664        Flatbuffer = 4,
665        /// CBOR: self-describing.
666        Cbor = 5,
667        /// MessagePack: self-describing.
668        Msgpack = 6,
669        /// JSON: self-describing or described by `JSON_SCHEMA` schema encoding.
670        Json = 7,
671    }
672    impl WellKnownFrameEncoding {
673        /// String value of the enum field names used in the ProtoBuf definition.
674        ///
675        /// The values are not transformed in any way and thus are considered stable
676        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
677        pub fn as_str_name(&self) -> &'static str {
678            match self {
679                Self::Unspecified => "WELL_KNOWN_FRAME_ENCODING_UNSPECIFIED",
680                Self::Ros1 => "WELL_KNOWN_FRAME_ENCODING_ROS1",
681                Self::Cdr => "WELL_KNOWN_FRAME_ENCODING_CDR",
682                Self::Protobuf => "WELL_KNOWN_FRAME_ENCODING_PROTOBUF",
683                Self::Flatbuffer => "WELL_KNOWN_FRAME_ENCODING_FLATBUFFER",
684                Self::Cbor => "WELL_KNOWN_FRAME_ENCODING_CBOR",
685                Self::Msgpack => "WELL_KNOWN_FRAME_ENCODING_MSGPACK",
686                Self::Json => "WELL_KNOWN_FRAME_ENCODING_JSON",
687            }
688        }
689        /// Creates an enum from field names used in the ProtoBuf definition.
690        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
691            match value {
692                "WELL_KNOWN_FRAME_ENCODING_UNSPECIFIED" => Some(Self::Unspecified),
693                "WELL_KNOWN_FRAME_ENCODING_ROS1" => Some(Self::Ros1),
694                "WELL_KNOWN_FRAME_ENCODING_CDR" => Some(Self::Cdr),
695                "WELL_KNOWN_FRAME_ENCODING_PROTOBUF" => Some(Self::Protobuf),
696                "WELL_KNOWN_FRAME_ENCODING_FLATBUFFER" => Some(Self::Flatbuffer),
697                "WELL_KNOWN_FRAME_ENCODING_CBOR" => Some(Self::Cbor),
698                "WELL_KNOWN_FRAME_ENCODING_MSGPACK" => Some(Self::Msgpack),
699                "WELL_KNOWN_FRAME_ENCODING_JSON" => Some(Self::Json),
700                _ => None,
701            }
702        }
703    }
704    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
705    pub enum Value {
706        #[prost(enumeration = "WellKnownFrameEncoding", tag = "1")]
707        WellKnown(i32),
708        /// Identifier of a custom encoding not covered by the well-known cases.
709        /// This must be non-empty and no longer than 32 characters.
710        #[prost(string, tag = "2")]
711        Custom(::prost::alloc::string::String),
712    }
713}
714/// Encoding for schema definition.
715#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
716pub struct DataTrackSchemaEncoding {
717    #[prost(oneof = "data_track_schema_encoding::Value", tags = "1, 2")]
718    pub value: ::core::option::Option<data_track_schema_encoding::Value>,
719}
720/// Nested message and enum types in `DataTrackSchemaEncoding`.
721pub mod data_track_schema_encoding {
722    /// Well-known encoding for schema definition.
723    ///
724    /// Mirrors the well-known schema encodings from the MCAP spec:
725    /// <https://mcap.dev/spec/registry#schema-encodings>
726    ///
727    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
728    #[repr(i32)]
729    pub enum WellKnownSchemaEncoding {
730        Unspecified = 0,
731        /// Protocol Buffer IDL: describes `PROTOBUF` frame encoding.
732        Protobuf = 1,
733        /// FlatBuffer IDL: describes `FLATBUFFER` frame encoding.
734        Flatbuffer = 2,
735        /// ROS 1 Message: describes `ROS1` frame encoding.
736        Ros1Msg = 3,
737        /// ROS 2 Message: describes `CDR` frame encoding.
738        Ros2Msg = 4,
739        /// ROS 2 IDL: describes `CDR` frame encoding.
740        Ros2Idl = 5,
741        /// OMG IDL: describes `CDR` frame encoding.
742        OmgIdl = 6,
743        /// JSON Schema: describes `JSON` frame encoding.
744        JsonSchema = 7,
745    }
746    impl WellKnownSchemaEncoding {
747        /// String value of the enum field names used in the ProtoBuf definition.
748        ///
749        /// The values are not transformed in any way and thus are considered stable
750        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
751        pub fn as_str_name(&self) -> &'static str {
752            match self {
753                Self::Unspecified => "WELL_KNOWN_SCHEMA_ENCODING_UNSPECIFIED",
754                Self::Protobuf => "WELL_KNOWN_SCHEMA_ENCODING_PROTOBUF",
755                Self::Flatbuffer => "WELL_KNOWN_SCHEMA_ENCODING_FLATBUFFER",
756                Self::Ros1Msg => "WELL_KNOWN_SCHEMA_ENCODING_ROS1_MSG",
757                Self::Ros2Msg => "WELL_KNOWN_SCHEMA_ENCODING_ROS2_MSG",
758                Self::Ros2Idl => "WELL_KNOWN_SCHEMA_ENCODING_ROS2_IDL",
759                Self::OmgIdl => "WELL_KNOWN_SCHEMA_ENCODING_OMG_IDL",
760                Self::JsonSchema => "WELL_KNOWN_SCHEMA_ENCODING_JSON_SCHEMA",
761            }
762        }
763        /// Creates an enum from field names used in the ProtoBuf definition.
764        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
765            match value {
766                "WELL_KNOWN_SCHEMA_ENCODING_UNSPECIFIED" => Some(Self::Unspecified),
767                "WELL_KNOWN_SCHEMA_ENCODING_PROTOBUF" => Some(Self::Protobuf),
768                "WELL_KNOWN_SCHEMA_ENCODING_FLATBUFFER" => Some(Self::Flatbuffer),
769                "WELL_KNOWN_SCHEMA_ENCODING_ROS1_MSG" => Some(Self::Ros1Msg),
770                "WELL_KNOWN_SCHEMA_ENCODING_ROS2_MSG" => Some(Self::Ros2Msg),
771                "WELL_KNOWN_SCHEMA_ENCODING_ROS2_IDL" => Some(Self::Ros2Idl),
772                "WELL_KNOWN_SCHEMA_ENCODING_OMG_IDL" => Some(Self::OmgIdl),
773                "WELL_KNOWN_SCHEMA_ENCODING_JSON_SCHEMA" => Some(Self::JsonSchema),
774                _ => None,
775            }
776        }
777    }
778    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
779    pub enum Value {
780        #[prost(enumeration = "WellKnownSchemaEncoding", tag = "1")]
781        WellKnown(i32),
782        /// Identifier of a custom encoding not covered by the well-known cases.
783        /// This must be non-empty and no longer than 32 characters.
784        #[prost(string, tag = "2")]
785        Custom(::prost::alloc::string::String),
786    }
787}
788/// Identifier for a data track schema.
789///
790/// Schemas with the same name but different encodings are distinct.
791///
792#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
793pub struct DataTrackSchemaId {
794    /// This must be non-empty and no longer than 256 characters.
795    #[prost(string, tag = "1")]
796    pub name: ::prost::alloc::string::String,
797    #[prost(message, optional, tag = "2")]
798    pub encoding: ::core::option::Option<DataTrackSchemaEncoding>,
799}
800#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
801pub struct DataTrackExtensionParticipantSid {
802    #[prost(enumeration = "DataTrackExtensionId", tag = "1")]
803    pub id: i32,
804    #[prost(string, tag = "2")]
805    pub participant_sid: ::prost::alloc::string::String,
806}
807#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
808pub struct DataTrackSubscriptionOptions {
809    /// Rate in frames per second (FPS) the subscriber wants to receive frames at.
810    /// If omitted, the subscriber defaults to the publisher's fps
811    #[prost(uint32, optional, tag = "1")]
812    pub target_fps: ::core::option::Option<u32>,
813}
814/// Key used to uniquely identify a data blob for storage and retrieval.
815#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
816pub struct DataBlobKey {
817    #[prost(oneof = "data_blob_key::Key", tags = "1, 2")]
818    pub key: ::core::option::Option<data_blob_key::Key>,
819}
820/// Nested message and enum types in `DataBlobKey`.
821pub mod data_blob_key {
822    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
823    pub enum Key {
824        /// Generic string key, blob contains arbitrary data.
825        #[prost(string, tag = "1")]
826        Generic(::prost::alloc::string::String),
827        /// Data track schema identifier, blob contains schema definition.
828        #[prost(message, tag = "2")]
829        SchemaId(super::DataTrackSchemaId),
830    }
831}
832/// A blob of data stored in a room identified by a unique key.
833#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
834pub struct DataBlob {
835    /// Unique key the data blob is identified by.
836    #[prost(message, optional, tag = "1")]
837    pub key: ::core::option::Option<DataBlobKey>,
838    /// Contents of the data blob. This must not exceed 50 KB.
839    #[prost(bytes = "vec", tag = "2")]
840    pub contents: ::prost::alloc::vec::Vec<u8>,
841}
842/// provide information about available spatial layers
843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
844pub struct VideoLayer {
845    /// for tracks with a single layer, this should be HIGH
846    #[prost(enumeration = "VideoQuality", tag = "1")]
847    pub quality: i32,
848    #[prost(uint32, tag = "2")]
849    pub width: u32,
850    #[prost(uint32, tag = "3")]
851    pub height: u32,
852    /// target bitrate in bit per second (bps), server will measure actual
853    #[prost(uint32, tag = "4")]
854    pub bitrate: u32,
855    #[prost(uint32, tag = "5")]
856    pub ssrc: u32,
857    #[prost(int32, tag = "6")]
858    pub spatial_layer: i32,
859    #[prost(string, tag = "7")]
860    pub rid: ::prost::alloc::string::String,
861    #[prost(uint32, tag = "8")]
862    pub repair_ssrc: u32,
863}
864/// Nested message and enum types in `VideoLayer`.
865pub mod video_layer {
866    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
867    #[repr(i32)]
868    pub enum Mode {
869        Unused = 0,
870        OneSpatialLayerPerStream = 1,
871        MultipleSpatialLayersPerStream = 2,
872        OneSpatialLayerPerStreamIncompleteRtcpSr = 3,
873    }
874    impl Mode {
875        /// String value of the enum field names used in the ProtoBuf definition.
876        ///
877        /// The values are not transformed in any way and thus are considered stable
878        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
879        pub fn as_str_name(&self) -> &'static str {
880            match self {
881                Self::Unused => "MODE_UNUSED",
882                Self::OneSpatialLayerPerStream => "ONE_SPATIAL_LAYER_PER_STREAM",
883                Self::MultipleSpatialLayersPerStream => "MULTIPLE_SPATIAL_LAYERS_PER_STREAM",
884                Self::OneSpatialLayerPerStreamIncompleteRtcpSr => "ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR",
885            }
886        }
887        /// Creates an enum from field names used in the ProtoBuf definition.
888        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
889            match value {
890                "MODE_UNUSED" => Some(Self::Unused),
891                "ONE_SPATIAL_LAYER_PER_STREAM" => Some(Self::OneSpatialLayerPerStream),
892                "MULTIPLE_SPATIAL_LAYERS_PER_STREAM" => Some(Self::MultipleSpatialLayersPerStream),
893                "ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR" => Some(Self::OneSpatialLayerPerStreamIncompleteRtcpSr),
894                _ => None,
895            }
896        }
897    }
898}
899/// new DataPacket API
900#[derive(Clone, PartialEq, ::prost::Message)]
901pub struct DataPacket {
902    #[deprecated]
903    #[prost(enumeration = "data_packet::Kind", tag = "1")]
904    pub kind: i32,
905    /// participant identity of user that sent the message
906    #[prost(string, tag = "4")]
907    pub participant_identity: ::prost::alloc::string::String,
908    /// identities of participants who will receive the message (sent to all by default)
909    #[prost(string, repeated, tag = "5")]
910    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
911    /// sequence number of reliable packet
912    #[prost(uint32, tag = "16")]
913    pub sequence: u32,
914    /// sid of the user that sent the message
915    #[prost(string, tag = "17")]
916    pub participant_sid: ::prost::alloc::string::String,
917    #[prost(oneof = "data_packet::Value", tags = "2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18")]
918    pub value: ::core::option::Option<data_packet::Value>,
919}
920/// Nested message and enum types in `DataPacket`.
921pub mod data_packet {
922    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
923    #[repr(i32)]
924    pub enum Kind {
925        Reliable = 0,
926        Lossy = 1,
927    }
928    impl Kind {
929        /// String value of the enum field names used in the ProtoBuf definition.
930        ///
931        /// The values are not transformed in any way and thus are considered stable
932        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
933        pub fn as_str_name(&self) -> &'static str {
934            match self {
935                Self::Reliable => "RELIABLE",
936                Self::Lossy => "LOSSY",
937            }
938        }
939        /// Creates an enum from field names used in the ProtoBuf definition.
940        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
941            match value {
942                "RELIABLE" => Some(Self::Reliable),
943                "LOSSY" => Some(Self::Lossy),
944                _ => None,
945            }
946        }
947    }
948    #[derive(Clone, PartialEq, ::prost::Oneof)]
949    pub enum Value {
950        #[prost(message, tag = "2")]
951        User(super::UserPacket),
952        #[deprecated]
953        #[prost(message, tag = "3")]
954        Speaker(super::ActiveSpeakerUpdate),
955        #[prost(message, tag = "6")]
956        SipDtmf(super::SipDtmf),
957        #[prost(message, tag = "7")]
958        Transcription(super::Transcription),
959        #[prost(message, tag = "8")]
960        Metrics(super::MetricsBatch),
961        #[prost(message, tag = "9")]
962        ChatMessage(super::ChatMessage),
963        #[prost(message, tag = "10")]
964        RpcRequest(super::RpcRequest),
965        #[prost(message, tag = "11")]
966        RpcAck(super::RpcAck),
967        #[prost(message, tag = "12")]
968        RpcResponse(super::RpcResponse),
969        #[prost(message, tag = "13")]
970        StreamHeader(super::data_stream::Header),
971        #[prost(message, tag = "14")]
972        StreamChunk(super::data_stream::Chunk),
973        #[prost(message, tag = "15")]
974        StreamTrailer(super::data_stream::Trailer),
975        #[prost(message, tag = "18")]
976        EncryptedPacket(super::EncryptedPacket),
977    }
978}
979#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
980pub struct EncryptedPacket {
981    #[prost(enumeration = "encryption::Type", tag = "1")]
982    pub encryption_type: i32,
983    #[prost(bytes = "vec", tag = "2")]
984    pub iv: ::prost::alloc::vec::Vec<u8>,
985    #[prost(uint32, tag = "3")]
986    pub key_index: u32,
987    /// This is an encrypted EncryptedPacketPayload message representation
988    #[prost(bytes = "vec", tag = "4")]
989    pub encrypted_value: ::prost::alloc::vec::Vec<u8>,
990}
991#[derive(Clone, PartialEq, ::prost::Message)]
992pub struct EncryptedPacketPayload {
993    #[prost(oneof = "encrypted_packet_payload::Value", tags = "1, 3, 4, 5, 6, 7, 8, 9")]
994    pub value: ::core::option::Option<encrypted_packet_payload::Value>,
995}
996/// Nested message and enum types in `EncryptedPacketPayload`.
997pub mod encrypted_packet_payload {
998    #[derive(Clone, PartialEq, ::prost::Oneof)]
999    pub enum Value {
1000        #[prost(message, tag = "1")]
1001        User(super::UserPacket),
1002        #[prost(message, tag = "3")]
1003        ChatMessage(super::ChatMessage),
1004        #[prost(message, tag = "4")]
1005        RpcRequest(super::RpcRequest),
1006        #[prost(message, tag = "5")]
1007        RpcAck(super::RpcAck),
1008        #[prost(message, tag = "6")]
1009        RpcResponse(super::RpcResponse),
1010        #[prost(message, tag = "7")]
1011        StreamHeader(super::data_stream::Header),
1012        #[prost(message, tag = "8")]
1013        StreamChunk(super::data_stream::Chunk),
1014        #[prost(message, tag = "9")]
1015        StreamTrailer(super::data_stream::Trailer),
1016    }
1017}
1018#[derive(Clone, PartialEq, ::prost::Message)]
1019pub struct ActiveSpeakerUpdate {
1020    #[prost(message, repeated, tag = "1")]
1021    pub speakers: ::prost::alloc::vec::Vec<SpeakerInfo>,
1022}
1023#[derive(Clone, PartialEq, ::prost::Message)]
1024pub struct SpeakerInfo {
1025    #[prost(string, tag = "1")]
1026    pub sid: ::prost::alloc::string::String,
1027    /// audio level, 0-1.0, 1 is loudest
1028    #[prost(float, tag = "2")]
1029    pub level: f32,
1030    /// true if speaker is currently active
1031    #[prost(bool, tag = "3")]
1032    pub active: bool,
1033}
1034#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1035pub struct UserPacket {
1036    /// participant ID of user that sent the message
1037    #[deprecated]
1038    #[prost(string, tag = "1")]
1039    pub participant_sid: ::prost::alloc::string::String,
1040    #[deprecated]
1041    #[prost(string, tag = "5")]
1042    pub participant_identity: ::prost::alloc::string::String,
1043    /// user defined payload
1044    #[prost(bytes = "vec", tag = "2")]
1045    pub payload: ::prost::alloc::vec::Vec<u8>,
1046    /// the ID of the participants who will receive the message (sent to all by default)
1047    #[deprecated]
1048    #[prost(string, repeated, tag = "3")]
1049    pub destination_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1050    /// identities of participants who will receive the message (sent to all by default)
1051    #[deprecated]
1052    #[prost(string, repeated, tag = "6")]
1053    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1054    /// topic under which the message was published
1055    #[prost(string, optional, tag = "4")]
1056    pub topic: ::core::option::Option<::prost::alloc::string::String>,
1057    /// Unique ID to identify the message
1058    #[prost(string, optional, tag = "8")]
1059    pub id: ::core::option::Option<::prost::alloc::string::String>,
1060    /// start and end time allow relating the message to specific media time
1061    #[prost(uint64, optional, tag = "9")]
1062    pub start_time: ::core::option::Option<u64>,
1063    #[prost(uint64, optional, tag = "10")]
1064    pub end_time: ::core::option::Option<u64>,
1065    /// added by SDK to enable de-duping of messages, for INTERNAL USE ONLY
1066    #[prost(bytes = "vec", tag = "11")]
1067    pub nonce: ::prost::alloc::vec::Vec<u8>,
1068}
1069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1070pub struct SipDtmf {
1071    #[prost(uint32, tag = "3")]
1072    pub code: u32,
1073    #[prost(string, tag = "4")]
1074    pub digit: ::prost::alloc::string::String,
1075}
1076#[derive(Clone, PartialEq, ::prost::Message)]
1077pub struct Transcription {
1078    /// Participant that got its speech transcribed
1079    #[prost(string, tag = "2")]
1080    pub transcribed_participant_identity: ::prost::alloc::string::String,
1081    #[prost(string, tag = "3")]
1082    pub track_id: ::prost::alloc::string::String,
1083    #[prost(message, repeated, tag = "4")]
1084    pub segments: ::prost::alloc::vec::Vec<TranscriptionSegment>,
1085}
1086#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1087pub struct TranscriptionSegment {
1088    #[prost(string, tag = "1")]
1089    pub id: ::prost::alloc::string::String,
1090    #[prost(string, tag = "2")]
1091    pub text: ::prost::alloc::string::String,
1092    #[prost(uint64, tag = "3")]
1093    pub start_time: u64,
1094    #[prost(uint64, tag = "4")]
1095    pub end_time: u64,
1096    #[prost(bool, tag = "5")]
1097    pub r#final: bool,
1098    #[prost(string, tag = "6")]
1099    pub language: ::prost::alloc::string::String,
1100}
1101#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1102pub struct ChatMessage {
1103    /// uuid
1104    #[prost(string, tag = "1")]
1105    pub id: ::prost::alloc::string::String,
1106    #[prost(int64, tag = "2")]
1107    pub timestamp: i64,
1108    /// populated only if the intent is to edit/update an existing message
1109    #[prost(int64, optional, tag = "3")]
1110    pub edit_timestamp: ::core::option::Option<i64>,
1111    #[prost(string, tag = "4")]
1112    pub message: ::prost::alloc::string::String,
1113    /// true to remove message
1114    #[prost(bool, tag = "5")]
1115    pub deleted: bool,
1116    /// true if the chat message has been generated by an agent from a participant's audio transcription
1117    #[prost(bool, tag = "6")]
1118    pub generated: bool,
1119}
1120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1121pub struct RpcRequest {
1122    #[prost(string, tag = "1")]
1123    pub id: ::prost::alloc::string::String,
1124    #[prost(string, tag = "2")]
1125    pub method: ::prost::alloc::string::String,
1126    #[prost(string, tag = "3")]
1127    pub payload: ::prost::alloc::string::String,
1128    #[prost(uint32, tag = "4")]
1129    pub response_timeout_ms: u32,
1130    #[prost(uint32, tag = "5")]
1131    pub version: u32,
1132    /// Compressed payload data. When set, this field is used instead of `payload`.
1133    #[prost(bytes = "vec", tag = "6")]
1134    pub compressed_payload: ::prost::alloc::vec::Vec<u8>,
1135}
1136#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1137pub struct RpcAck {
1138    #[prost(string, tag = "1")]
1139    pub request_id: ::prost::alloc::string::String,
1140}
1141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1142pub struct RpcResponse {
1143    #[prost(string, tag = "1")]
1144    pub request_id: ::prost::alloc::string::String,
1145    #[prost(oneof = "rpc_response::Value", tags = "2, 3, 4")]
1146    pub value: ::core::option::Option<rpc_response::Value>,
1147}
1148/// Nested message and enum types in `RpcResponse`.
1149pub mod rpc_response {
1150    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1151    pub enum Value {
1152        #[prost(string, tag = "2")]
1153        Payload(::prost::alloc::string::String),
1154        #[prost(message, tag = "3")]
1155        Error(super::RpcError),
1156        /// Compressed payload data. When set, this field is used instead of `payload`.
1157        #[prost(bytes, tag = "4")]
1158        CompressedPayload(::prost::alloc::vec::Vec<u8>),
1159    }
1160}
1161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1162pub struct RpcError {
1163    #[prost(uint32, tag = "1")]
1164    pub code: u32,
1165    #[prost(string, tag = "2")]
1166    pub message: ::prost::alloc::string::String,
1167    #[prost(string, tag = "3")]
1168    pub data: ::prost::alloc::string::String,
1169}
1170#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1171pub struct ParticipantTracks {
1172    /// participant ID of participant to whom the tracks belong
1173    #[prost(string, tag = "1")]
1174    pub participant_sid: ::prost::alloc::string::String,
1175    #[prost(string, repeated, tag = "2")]
1176    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1177}
1178/// details about the server
1179#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1180pub struct ServerInfo {
1181    #[prost(enumeration = "server_info::Edition", tag = "1")]
1182    pub edition: i32,
1183    #[prost(string, tag = "2")]
1184    pub version: ::prost::alloc::string::String,
1185    #[prost(int32, tag = "3")]
1186    pub protocol: i32,
1187    #[prost(string, tag = "4")]
1188    pub region: ::prost::alloc::string::String,
1189    #[prost(string, tag = "5")]
1190    pub node_id: ::prost::alloc::string::String,
1191    /// additional debugging information. sent only if server is in development mode
1192    #[prost(string, tag = "6")]
1193    pub debug_info: ::prost::alloc::string::String,
1194    #[prost(int32, tag = "7")]
1195    pub agent_protocol: i32,
1196}
1197/// Nested message and enum types in `ServerInfo`.
1198pub mod server_info {
1199    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1200    #[repr(i32)]
1201    pub enum Edition {
1202        Standard = 0,
1203        Cloud = 1,
1204    }
1205    impl Edition {
1206        /// String value of the enum field names used in the ProtoBuf definition.
1207        ///
1208        /// The values are not transformed in any way and thus are considered stable
1209        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1210        pub fn as_str_name(&self) -> &'static str {
1211            match self {
1212                Self::Standard => "Standard",
1213                Self::Cloud => "Cloud",
1214            }
1215        }
1216        /// Creates an enum from field names used in the ProtoBuf definition.
1217        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1218            match value {
1219                "Standard" => Some(Self::Standard),
1220                "Cloud" => Some(Self::Cloud),
1221                _ => None,
1222            }
1223        }
1224    }
1225}
1226/// details about the client
1227#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1228pub struct ClientInfo {
1229    #[prost(enumeration = "client_info::Sdk", tag = "1")]
1230    pub sdk: i32,
1231    #[prost(string, tag = "2")]
1232    pub version: ::prost::alloc::string::String,
1233    #[prost(int32, tag = "3")]
1234    pub protocol: i32,
1235    #[prost(string, tag = "4")]
1236    pub os: ::prost::alloc::string::String,
1237    #[prost(string, tag = "5")]
1238    pub os_version: ::prost::alloc::string::String,
1239    #[prost(string, tag = "6")]
1240    pub device_model: ::prost::alloc::string::String,
1241    #[prost(string, tag = "7")]
1242    pub browser: ::prost::alloc::string::String,
1243    #[prost(string, tag = "8")]
1244    pub browser_version: ::prost::alloc::string::String,
1245    #[prost(string, tag = "9")]
1246    pub address: ::prost::alloc::string::String,
1247    /// wifi, wired, cellular, vpn, empty if not known
1248    #[prost(string, tag = "10")]
1249    pub network: ::prost::alloc::string::String,
1250    /// comma separated list of additional LiveKit SDKs in use of this client, with versions
1251    /// e.g. "components-js:1.2.3,track-processors-js:1.2.3"
1252    #[prost(string, tag = "11")]
1253    pub other_sdks: ::prost::alloc::string::String,
1254    /// client protocol version
1255    #[prost(int32, tag = "12")]
1256    pub client_protocol: i32,
1257    /// capabilities the client advertises. Populated automatically by each SDK;
1258    /// not a user-configurable setting.
1259    #[prost(enumeration = "client_info::Capability", repeated, tag = "13")]
1260    pub capabilities: ::prost::alloc::vec::Vec<i32>,
1261}
1262/// Nested message and enum types in `ClientInfo`.
1263pub mod client_info {
1264    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1265    #[repr(i32)]
1266    pub enum Sdk {
1267        Unknown = 0,
1268        Js = 1,
1269        Swift = 2,
1270        Android = 3,
1271        Flutter = 4,
1272        Go = 5,
1273        Unity = 6,
1274        ReactNative = 7,
1275        Rust = 8,
1276        Python = 9,
1277        Cpp = 10,
1278        UnityWeb = 11,
1279        Node = 12,
1280        Unreal = 13,
1281        Esp32 = 14,
1282        Dotnet = 15,
1283    }
1284    impl Sdk {
1285        /// String value of the enum field names used in the ProtoBuf definition.
1286        ///
1287        /// The values are not transformed in any way and thus are considered stable
1288        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1289        pub fn as_str_name(&self) -> &'static str {
1290            match self {
1291                Self::Unknown => "UNKNOWN",
1292                Self::Js => "JS",
1293                Self::Swift => "SWIFT",
1294                Self::Android => "ANDROID",
1295                Self::Flutter => "FLUTTER",
1296                Self::Go => "GO",
1297                Self::Unity => "UNITY",
1298                Self::ReactNative => "REACT_NATIVE",
1299                Self::Rust => "RUST",
1300                Self::Python => "PYTHON",
1301                Self::Cpp => "CPP",
1302                Self::UnityWeb => "UNITY_WEB",
1303                Self::Node => "NODE",
1304                Self::Unreal => "UNREAL",
1305                Self::Esp32 => "ESP32",
1306                Self::Dotnet => "DOTNET",
1307            }
1308        }
1309        /// Creates an enum from field names used in the ProtoBuf definition.
1310        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1311            match value {
1312                "UNKNOWN" => Some(Self::Unknown),
1313                "JS" => Some(Self::Js),
1314                "SWIFT" => Some(Self::Swift),
1315                "ANDROID" => Some(Self::Android),
1316                "FLUTTER" => Some(Self::Flutter),
1317                "GO" => Some(Self::Go),
1318                "UNITY" => Some(Self::Unity),
1319                "REACT_NATIVE" => Some(Self::ReactNative),
1320                "RUST" => Some(Self::Rust),
1321                "PYTHON" => Some(Self::Python),
1322                "CPP" => Some(Self::Cpp),
1323                "UNITY_WEB" => Some(Self::UnityWeb),
1324                "NODE" => Some(Self::Node),
1325                "UNREAL" => Some(Self::Unreal),
1326                "ESP32" => Some(Self::Esp32),
1327                "DOTNET" => Some(Self::Dotnet),
1328                _ => None,
1329            }
1330        }
1331    }
1332    /// Optional capabilities advertised by the client at connect time. The SFU
1333    /// uses these flags to decide whether to enable features that require
1334    /// client-side support (e.g. passing RTP packet trailers through to the
1335    /// subscriber instead of stripping them).
1336    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1337    #[repr(i32)]
1338    pub enum Capability {
1339        CapUnused = 0,
1340        CapPacketTrailer = 1,
1341        CapCompressionDeflateRaw = 2,
1342    }
1343    impl Capability {
1344        /// String value of the enum field names used in the ProtoBuf definition.
1345        ///
1346        /// The values are not transformed in any way and thus are considered stable
1347        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1348        pub fn as_str_name(&self) -> &'static str {
1349            match self {
1350                Self::CapUnused => "CAP_UNUSED",
1351                Self::CapPacketTrailer => "CAP_PACKET_TRAILER",
1352                Self::CapCompressionDeflateRaw => "CAP_COMPRESSION_DEFLATE_RAW",
1353            }
1354        }
1355        /// Creates an enum from field names used in the ProtoBuf definition.
1356        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1357            match value {
1358                "CAP_UNUSED" => Some(Self::CapUnused),
1359                "CAP_PACKET_TRAILER" => Some(Self::CapPacketTrailer),
1360                "CAP_COMPRESSION_DEFLATE_RAW" => Some(Self::CapCompressionDeflateRaw),
1361                _ => None,
1362            }
1363        }
1364    }
1365}
1366/// server provided client configuration
1367#[derive(Clone, PartialEq, ::prost::Message)]
1368pub struct ClientConfiguration {
1369    #[prost(message, optional, tag = "1")]
1370    pub video: ::core::option::Option<VideoConfiguration>,
1371    #[prost(message, optional, tag = "2")]
1372    pub screen: ::core::option::Option<VideoConfiguration>,
1373    #[prost(enumeration = "ClientConfigSetting", tag = "3")]
1374    pub resume_connection: i32,
1375    #[prost(message, optional, tag = "4")]
1376    pub disabled_codecs: ::core::option::Option<DisabledCodecs>,
1377    #[prost(enumeration = "ClientConfigSetting", tag = "5")]
1378    pub force_relay: i32,
1379}
1380#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1381pub struct VideoConfiguration {
1382    #[prost(enumeration = "ClientConfigSetting", tag = "1")]
1383    pub hardware_encoder: i32,
1384}
1385#[derive(Clone, PartialEq, ::prost::Message)]
1386pub struct DisabledCodecs {
1387    /// disabled for both publish and subscribe
1388    #[prost(message, repeated, tag = "1")]
1389    pub codecs: ::prost::alloc::vec::Vec<Codec>,
1390    /// only disable for publish
1391    #[prost(message, repeated, tag = "2")]
1392    pub publish: ::prost::alloc::vec::Vec<Codec>,
1393}
1394#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1395pub struct RtpDrift {
1396    #[prost(message, optional, tag = "1")]
1397    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
1398    #[prost(message, optional, tag = "2")]
1399    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
1400    #[prost(double, tag = "3")]
1401    pub duration: f64,
1402    #[prost(uint64, tag = "4")]
1403    pub start_timestamp: u64,
1404    #[prost(uint64, tag = "5")]
1405    pub end_timestamp: u64,
1406    #[prost(uint64, tag = "6")]
1407    pub rtp_clock_ticks: u64,
1408    #[prost(int64, tag = "7")]
1409    pub drift_samples: i64,
1410    #[prost(double, tag = "8")]
1411    pub drift_ms: f64,
1412    #[prost(double, tag = "9")]
1413    pub clock_rate: f64,
1414}
1415#[derive(Clone, PartialEq, ::prost::Message)]
1416pub struct RtpStats {
1417    #[prost(message, optional, tag = "1")]
1418    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
1419    #[prost(message, optional, tag = "2")]
1420    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
1421    #[prost(double, tag = "3")]
1422    pub duration: f64,
1423    #[prost(uint32, tag = "4")]
1424    pub packets: u32,
1425    #[prost(double, tag = "5")]
1426    pub packet_rate: f64,
1427    #[prost(uint64, tag = "6")]
1428    pub bytes: u64,
1429    #[prost(uint64, tag = "39")]
1430    pub header_bytes: u64,
1431    #[prost(double, tag = "7")]
1432    pub bitrate: f64,
1433    #[prost(uint32, tag = "8")]
1434    pub packets_lost: u32,
1435    #[prost(double, tag = "9")]
1436    pub packet_loss_rate: f64,
1437    #[prost(float, tag = "10")]
1438    pub packet_loss_percentage: f32,
1439    #[prost(uint32, tag = "11")]
1440    pub packets_duplicate: u32,
1441    #[prost(double, tag = "12")]
1442    pub packet_duplicate_rate: f64,
1443    #[prost(uint64, tag = "13")]
1444    pub bytes_duplicate: u64,
1445    #[prost(uint64, tag = "40")]
1446    pub header_bytes_duplicate: u64,
1447    #[prost(double, tag = "14")]
1448    pub bitrate_duplicate: f64,
1449    #[prost(uint32, tag = "15")]
1450    pub packets_padding: u32,
1451    #[prost(double, tag = "16")]
1452    pub packet_padding_rate: f64,
1453    #[prost(uint64, tag = "17")]
1454    pub bytes_padding: u64,
1455    #[prost(uint64, tag = "41")]
1456    pub header_bytes_padding: u64,
1457    #[prost(double, tag = "18")]
1458    pub bitrate_padding: f64,
1459    #[prost(uint32, tag = "19")]
1460    pub packets_out_of_order: u32,
1461    #[prost(uint32, tag = "20")]
1462    pub frames: u32,
1463    #[prost(double, tag = "21")]
1464    pub frame_rate: f64,
1465    #[prost(double, tag = "22")]
1466    pub jitter_current: f64,
1467    #[prost(double, tag = "23")]
1468    pub jitter_max: f64,
1469    #[prost(map = "int32, uint32", tag = "24")]
1470    pub gap_histogram: ::std::collections::HashMap<i32, u32>,
1471    #[prost(uint32, tag = "25")]
1472    pub nacks: u32,
1473    #[prost(uint32, tag = "37")]
1474    pub nack_acks: u32,
1475    #[prost(uint32, tag = "26")]
1476    pub nack_misses: u32,
1477    #[prost(uint32, tag = "38")]
1478    pub nack_repeated: u32,
1479    #[prost(uint32, tag = "27")]
1480    pub plis: u32,
1481    #[prost(message, optional, tag = "28")]
1482    pub last_pli: ::core::option::Option<::pbjson_types::Timestamp>,
1483    #[prost(uint32, tag = "29")]
1484    pub firs: u32,
1485    #[prost(message, optional, tag = "30")]
1486    pub last_fir: ::core::option::Option<::pbjson_types::Timestamp>,
1487    #[prost(uint32, tag = "31")]
1488    pub rtt_current: u32,
1489    #[prost(uint32, tag = "32")]
1490    pub rtt_max: u32,
1491    #[prost(uint32, tag = "33")]
1492    pub key_frames: u32,
1493    #[prost(message, optional, tag = "34")]
1494    pub last_key_frame: ::core::option::Option<::pbjson_types::Timestamp>,
1495    #[prost(uint32, tag = "35")]
1496    pub layer_lock_plis: u32,
1497    #[prost(message, optional, tag = "36")]
1498    pub last_layer_lock_pli: ::core::option::Option<::pbjson_types::Timestamp>,
1499    #[prost(message, optional, tag = "44")]
1500    pub packet_drift: ::core::option::Option<RtpDrift>,
1501    #[prost(message, optional, tag = "45")]
1502    pub ntp_report_drift: ::core::option::Option<RtpDrift>,
1503    #[prost(message, optional, tag = "46")]
1504    pub rebased_report_drift: ::core::option::Option<RtpDrift>,
1505    #[prost(message, optional, tag = "47")]
1506    pub received_report_drift: ::core::option::Option<RtpDrift>,
1507    #[prost(uint32, tag = "48")]
1508    pub fec_packets: u32,
1509    #[prost(uint64, tag = "49")]
1510    pub fec_bytes: u64,
1511    #[prost(uint32, tag = "50")]
1512    pub fec_packets_discarded: u32,
1513    /// NEXT_ID: 52
1514    #[prost(uint32, tag = "51")]
1515    pub fec_packets_recovered: u32,
1516}
1517#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1518pub struct RtcpSenderReportState {
1519    #[prost(uint32, tag = "1")]
1520    pub rtp_timestamp: u32,
1521    #[prost(uint64, tag = "2")]
1522    pub rtp_timestamp_ext: u64,
1523    #[prost(uint64, tag = "3")]
1524    pub ntp_timestamp: u64,
1525    /// time at which this happened
1526    #[prost(int64, tag = "4")]
1527    pub at: i64,
1528    #[prost(int64, tag = "5")]
1529    pub at_adjusted: i64,
1530    #[prost(uint32, tag = "6")]
1531    pub packets: u32,
1532    #[prost(uint64, tag = "7")]
1533    pub octets: u64,
1534}
1535#[derive(Clone, PartialEq, ::prost::Message)]
1536pub struct RtpForwarderState {
1537    #[prost(bool, tag = "1")]
1538    pub started: bool,
1539    #[prost(int32, tag = "2")]
1540    pub reference_layer_spatial: i32,
1541    #[prost(int64, tag = "3")]
1542    pub pre_start_time: i64,
1543    #[prost(uint64, tag = "4")]
1544    pub ext_first_timestamp: u64,
1545    #[prost(uint64, tag = "5")]
1546    pub dummy_start_timestamp_offset: u64,
1547    #[prost(message, optional, tag = "6")]
1548    pub rtp_munger: ::core::option::Option<RtpMungerState>,
1549    #[prost(message, repeated, tag = "8")]
1550    pub sender_report_state: ::prost::alloc::vec::Vec<RtcpSenderReportState>,
1551    #[prost(message, optional, tag = "9")]
1552    pub dependency_descriptor_forwarder: ::core::option::Option<DependencyDescriptorForwarderState>,
1553    #[prost(oneof = "rtp_forwarder_state::CodecMunger", tags = "7")]
1554    pub codec_munger: ::core::option::Option<rtp_forwarder_state::CodecMunger>,
1555}
1556/// Nested message and enum types in `RTPForwarderState`.
1557pub mod rtp_forwarder_state {
1558    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
1559    pub enum CodecMunger {
1560        #[prost(message, tag = "7")]
1561        Vp8Munger(super::Vp8MungerState),
1562    }
1563}
1564/// State of a forwarder that writes the dependency descriptor for the subscriber, so
1565/// its frame numbers continue on a migrated subscriber.
1566#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1567pub struct DependencyDescriptorForwarderState {
1568    /// highest extended frame number sent to the subscriber
1569    #[prost(uint64, tag = "1")]
1570    pub ext_last_frame_number: u64,
1571}
1572#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1573pub struct RtpMungerState {
1574    #[prost(uint64, tag = "1")]
1575    pub ext_last_sequence_number: u64,
1576    #[prost(uint64, tag = "2")]
1577    pub ext_second_last_sequence_number: u64,
1578    #[prost(uint64, tag = "3")]
1579    pub ext_last_timestamp: u64,
1580    #[prost(uint64, tag = "4")]
1581    pub ext_second_last_timestamp: u64,
1582    #[prost(bool, tag = "5")]
1583    pub last_marker: bool,
1584    #[prost(bool, tag = "6")]
1585    pub second_last_marker: bool,
1586}
1587#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1588pub struct Vp8MungerState {
1589    #[prost(int32, tag = "1")]
1590    pub ext_last_picture_id: i32,
1591    #[prost(bool, tag = "2")]
1592    pub picture_id_used: bool,
1593    #[prost(uint32, tag = "3")]
1594    pub last_tl0_pic_idx: u32,
1595    #[prost(bool, tag = "4")]
1596    pub tl0_pic_idx_used: bool,
1597    #[prost(bool, tag = "5")]
1598    pub tid_used: bool,
1599    #[prost(uint32, tag = "6")]
1600    pub last_key_idx: u32,
1601    #[prost(bool, tag = "7")]
1602    pub key_idx_used: bool,
1603}
1604#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1605pub struct TimedVersion {
1606    #[prost(int64, tag = "1")]
1607    pub unix_micro: i64,
1608    #[prost(int32, tag = "2")]
1609    pub ticks: i32,
1610}
1611#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1612pub struct DataStream {
1613}
1614/// Nested message and enum types in `DataStream`.
1615pub mod data_stream {
1616    /// header properties specific to text streams
1617    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1618    pub struct TextHeader {
1619        #[prost(enumeration = "OperationType", tag = "1")]
1620        pub operation_type: i32,
1621        /// Optional: Version for updates/edits
1622        #[prost(int32, tag = "2")]
1623        pub version: i32,
1624        /// Optional: Reply to specific message
1625        #[prost(string, tag = "3")]
1626        pub reply_to_stream_id: ::prost::alloc::string::String,
1627        /// file attachments for text streams
1628        #[prost(string, repeated, tag = "4")]
1629        pub attached_stream_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1630        /// true if the text has been generated by an agent from a participant's audio transcription
1631        #[prost(bool, tag = "5")]
1632        pub generated: bool,
1633    }
1634    /// header properties specific to byte or file streams
1635    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1636    pub struct ByteHeader {
1637        #[prost(string, tag = "1")]
1638        pub name: ::prost::alloc::string::String,
1639    }
1640    /// main DataStream.Header that contains a oneof for specific headers
1641    #[derive(Clone, PartialEq, ::prost::Message)]
1642    pub struct Header {
1643        /// unique identifier for this data stream
1644        #[prost(string, tag = "1")]
1645        pub stream_id: ::prost::alloc::string::String,
1646        /// using int64 for Unix timestamp
1647        #[prost(int64, tag = "2")]
1648        pub timestamp: i64,
1649        #[prost(string, tag = "3")]
1650        pub topic: ::prost::alloc::string::String,
1651        #[prost(string, tag = "4")]
1652        pub mime_type: ::prost::alloc::string::String,
1653        /// only populated for finite streams, if it's a stream of unknown size this stays empty
1654        #[prost(uint64, optional, tag = "5")]
1655        pub total_length: ::core::option::Option<u64>,
1656        ///   this is set on the DataPacket
1657        #[deprecated]
1658        #[prost(enumeration = "super::encryption::Type", tag = "7")]
1659        pub encryption_type: i32,
1660        /// user defined attributes map that can carry additional info
1661        #[prost(map = "string, string", tag = "8")]
1662        pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1663        /// Optional inline content so that a data stream can be sent as a single packet for short payloads.
1664        ///
1665        /// content as binary (bytes)
1666        #[prost(bytes = "vec", optional, tag = "11")]
1667        pub inline_content: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1668        #[prost(enumeration = "CompressionType", tag = "12")]
1669        pub compression: i32,
1670        /// oneof to choose between specific header types
1671        #[prost(oneof = "header::ContentHeader", tags = "9, 10")]
1672        pub content_header: ::core::option::Option<header::ContentHeader>,
1673    }
1674    /// Nested message and enum types in `Header`.
1675    pub mod header {
1676        /// oneof to choose between specific header types
1677        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1678        pub enum ContentHeader {
1679            #[prost(message, tag = "9")]
1680            TextHeader(super::TextHeader),
1681            #[prost(message, tag = "10")]
1682            ByteHeader(super::ByteHeader),
1683        }
1684    }
1685    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1686    pub struct Chunk {
1687        /// unique identifier for this data stream to map it to the correct header
1688        #[prost(string, tag = "1")]
1689        pub stream_id: ::prost::alloc::string::String,
1690        #[prost(uint64, tag = "2")]
1691        pub chunk_index: u64,
1692        /// content as binary (bytes)
1693        #[prost(bytes = "vec", tag = "3")]
1694        pub content: ::prost::alloc::vec::Vec<u8>,
1695        /// a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced
1696        #[prost(int32, tag = "4")]
1697        pub version: i32,
1698        /// this is set on the DataPacket
1699        #[deprecated]
1700        #[prost(bytes = "vec", optional, tag = "5")]
1701        pub iv: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1702    }
1703    #[derive(Clone, PartialEq, ::prost::Message)]
1704    pub struct Trailer {
1705        /// unique identifier for this data stream
1706        #[prost(string, tag = "1")]
1707        pub stream_id: ::prost::alloc::string::String,
1708        /// reason why the stream was closed (could contain "error" / "interrupted" / empty for expected end)
1709        #[prost(string, tag = "2")]
1710        pub reason: ::prost::alloc::string::String,
1711        /// finalizing updates for the stream, can also include additional insights for errors or endTime for transcription
1712        #[prost(map = "string, string", tag = "3")]
1713        pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1714    }
1715    /// enum for operation types (specific to TextHeader)
1716    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1717    #[repr(i32)]
1718    pub enum OperationType {
1719        Create = 0,
1720        Update = 1,
1721        Delete = 2,
1722        Reaction = 3,
1723    }
1724    impl OperationType {
1725        /// String value of the enum field names used in the ProtoBuf definition.
1726        ///
1727        /// The values are not transformed in any way and thus are considered stable
1728        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1729        pub fn as_str_name(&self) -> &'static str {
1730            match self {
1731                Self::Create => "CREATE",
1732                Self::Update => "UPDATE",
1733                Self::Delete => "DELETE",
1734                Self::Reaction => "REACTION",
1735            }
1736        }
1737        /// Creates an enum from field names used in the ProtoBuf definition.
1738        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1739            match value {
1740                "CREATE" => Some(Self::Create),
1741                "UPDATE" => Some(Self::Update),
1742                "DELETE" => Some(Self::Delete),
1743                "REACTION" => Some(Self::Reaction),
1744                _ => None,
1745            }
1746        }
1747    }
1748    /// The compression type of the whole data stream
1749    ///
1750    /// This will only get populated when send to participants with a
1751    /// client protocol >= 2 which advertise a client capability of CAP_COMPRESSION_DEFLATE_RAW
1752    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1753    #[repr(i32)]
1754    pub enum CompressionType {
1755        None = 0,
1756        /// DEFLATE_RAW = DEFLATE without header+checksum/trailer
1757        DeflateRaw = 1,
1758    }
1759    impl CompressionType {
1760        /// String value of the enum field names used in the ProtoBuf definition.
1761        ///
1762        /// The values are not transformed in any way and thus are considered stable
1763        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1764        pub fn as_str_name(&self) -> &'static str {
1765            match self {
1766                Self::None => "NONE",
1767                Self::DeflateRaw => "DEFLATE_RAW",
1768            }
1769        }
1770        /// Creates an enum from field names used in the ProtoBuf definition.
1771        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1772            match value {
1773                "NONE" => Some(Self::None),
1774                "DEFLATE_RAW" => Some(Self::DeflateRaw),
1775                _ => None,
1776            }
1777        }
1778    }
1779}
1780#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1781pub struct FilterParams {
1782    #[prost(string, repeated, tag = "1")]
1783    pub include_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1784    #[prost(string, repeated, tag = "2")]
1785    pub exclude_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1786}
1787#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1788pub struct WebhookConfig {
1789    #[prost(string, tag = "1")]
1790    pub url: ::prost::alloc::string::String,
1791    #[prost(string, tag = "2")]
1792    pub signing_key: ::prost::alloc::string::String,
1793    #[prost(message, optional, tag = "3")]
1794    pub filter_params: ::core::option::Option<FilterParams>,
1795}
1796#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1797pub struct SubscribedAudioCodec {
1798    #[prost(string, tag = "1")]
1799    pub codec: ::prost::alloc::string::String,
1800    #[prost(bool, tag = "2")]
1801    pub enabled: bool,
1802}
1803#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1804#[repr(i32)]
1805pub enum AudioCodec {
1806    DefaultAc = 0,
1807    Opus = 1,
1808    Aac = 2,
1809    AcMp3 = 3,
1810}
1811impl AudioCodec {
1812    /// String value of the enum field names used in the ProtoBuf definition.
1813    ///
1814    /// The values are not transformed in any way and thus are considered stable
1815    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1816    pub fn as_str_name(&self) -> &'static str {
1817        match self {
1818            Self::DefaultAc => "DEFAULT_AC",
1819            Self::Opus => "OPUS",
1820            Self::Aac => "AAC",
1821            Self::AcMp3 => "AC_MP3",
1822        }
1823    }
1824    /// Creates an enum from field names used in the ProtoBuf definition.
1825    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1826        match value {
1827            "DEFAULT_AC" => Some(Self::DefaultAc),
1828            "OPUS" => Some(Self::Opus),
1829            "AAC" => Some(Self::Aac),
1830            "AC_MP3" => Some(Self::AcMp3),
1831            _ => None,
1832        }
1833    }
1834}
1835#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1836#[repr(i32)]
1837pub enum VideoCodec {
1838    DefaultVc = 0,
1839    H264Baseline = 1,
1840    H264Main = 2,
1841    H264High = 3,
1842    Vp8 = 4,
1843}
1844impl VideoCodec {
1845    /// String value of the enum field names used in the ProtoBuf definition.
1846    ///
1847    /// The values are not transformed in any way and thus are considered stable
1848    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1849    pub fn as_str_name(&self) -> &'static str {
1850        match self {
1851            Self::DefaultVc => "DEFAULT_VC",
1852            Self::H264Baseline => "H264_BASELINE",
1853            Self::H264Main => "H264_MAIN",
1854            Self::H264High => "H264_HIGH",
1855            Self::Vp8 => "VP8",
1856        }
1857    }
1858    /// Creates an enum from field names used in the ProtoBuf definition.
1859    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1860        match value {
1861            "DEFAULT_VC" => Some(Self::DefaultVc),
1862            "H264_BASELINE" => Some(Self::H264Baseline),
1863            "H264_MAIN" => Some(Self::H264Main),
1864            "H264_HIGH" => Some(Self::H264High),
1865            "VP8" => Some(Self::Vp8),
1866            _ => None,
1867        }
1868    }
1869}
1870#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1871#[repr(i32)]
1872pub enum ImageCodec {
1873    IcDefault = 0,
1874    IcJpeg = 1,
1875}
1876impl ImageCodec {
1877    /// String value of the enum field names used in the ProtoBuf definition.
1878    ///
1879    /// The values are not transformed in any way and thus are considered stable
1880    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1881    pub fn as_str_name(&self) -> &'static str {
1882        match self {
1883            Self::IcDefault => "IC_DEFAULT",
1884            Self::IcJpeg => "IC_JPEG",
1885        }
1886    }
1887    /// Creates an enum from field names used in the ProtoBuf definition.
1888    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1889        match value {
1890            "IC_DEFAULT" => Some(Self::IcDefault),
1891            "IC_JPEG" => Some(Self::IcJpeg),
1892            _ => None,
1893        }
1894    }
1895}
1896/// Policy for publisher to handle subscribers that are unable to support the primary codec of a track
1897#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1898#[repr(i32)]
1899pub enum BackupCodecPolicy {
1900    /// default behavior, the track prefer to regress to backup codec and all subscribers will receive the backup codec,
1901    /// the sfu will try to regress codec if possible but not assured.
1902    PreferRegression = 0,
1903    /// encoding/send the primary and backup codec simultaneously
1904    Simulcast = 1,
1905    /// force the track to regress to backup codec, this option can be used in video conference or the publisher has limited bandwidth/encoding power
1906    Regression = 2,
1907}
1908impl BackupCodecPolicy {
1909    /// String value of the enum field names used in the ProtoBuf definition.
1910    ///
1911    /// The values are not transformed in any way and thus are considered stable
1912    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1913    pub fn as_str_name(&self) -> &'static str {
1914        match self {
1915            Self::PreferRegression => "PREFER_REGRESSION",
1916            Self::Simulcast => "SIMULCAST",
1917            Self::Regression => "REGRESSION",
1918        }
1919    }
1920    /// Creates an enum from field names used in the ProtoBuf definition.
1921    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1922        match value {
1923            "PREFER_REGRESSION" => Some(Self::PreferRegression),
1924            "SIMULCAST" => Some(Self::Simulcast),
1925            "REGRESSION" => Some(Self::Regression),
1926            _ => None,
1927        }
1928    }
1929}
1930#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1931#[repr(i32)]
1932pub enum TrackType {
1933    Audio = 0,
1934    Video = 1,
1935    Data = 2,
1936}
1937impl TrackType {
1938    /// String value of the enum field names used in the ProtoBuf definition.
1939    ///
1940    /// The values are not transformed in any way and thus are considered stable
1941    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1942    pub fn as_str_name(&self) -> &'static str {
1943        match self {
1944            Self::Audio => "AUDIO",
1945            Self::Video => "VIDEO",
1946            Self::Data => "DATA",
1947        }
1948    }
1949    /// Creates an enum from field names used in the ProtoBuf definition.
1950    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1951        match value {
1952            "AUDIO" => Some(Self::Audio),
1953            "VIDEO" => Some(Self::Video),
1954            "DATA" => Some(Self::Data),
1955            _ => None,
1956        }
1957    }
1958}
1959#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1960#[repr(i32)]
1961pub enum TrackSource {
1962    Unknown = 0,
1963    Camera = 1,
1964    Microphone = 2,
1965    ScreenShare = 3,
1966    ScreenShareAudio = 4,
1967}
1968impl TrackSource {
1969    /// String value of the enum field names used in the ProtoBuf definition.
1970    ///
1971    /// The values are not transformed in any way and thus are considered stable
1972    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1973    pub fn as_str_name(&self) -> &'static str {
1974        match self {
1975            Self::Unknown => "UNKNOWN",
1976            Self::Camera => "CAMERA",
1977            Self::Microphone => "MICROPHONE",
1978            Self::ScreenShare => "SCREEN_SHARE",
1979            Self::ScreenShareAudio => "SCREEN_SHARE_AUDIO",
1980        }
1981    }
1982    /// Creates an enum from field names used in the ProtoBuf definition.
1983    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1984        match value {
1985            "UNKNOWN" => Some(Self::Unknown),
1986            "CAMERA" => Some(Self::Camera),
1987            "MICROPHONE" => Some(Self::Microphone),
1988            "SCREEN_SHARE" => Some(Self::ScreenShare),
1989            "SCREEN_SHARE_AUDIO" => Some(Self::ScreenShareAudio),
1990            _ => None,
1991        }
1992    }
1993}
1994#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1995#[repr(i32)]
1996pub enum DataTrackExtensionId {
1997    DteiInvalid = 0,
1998    DteiParticipantSidLow = 1,
1999    DteiParticipantSid = 255,
2000}
2001impl DataTrackExtensionId {
2002    /// String value of the enum field names used in the ProtoBuf definition.
2003    ///
2004    /// The values are not transformed in any way and thus are considered stable
2005    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2006    pub fn as_str_name(&self) -> &'static str {
2007        match self {
2008            Self::DteiInvalid => "DTEI_INVALID",
2009            Self::DteiParticipantSidLow => "DTEI_PARTICIPANT_SID_LOW",
2010            Self::DteiParticipantSid => "DTEI_PARTICIPANT_SID",
2011        }
2012    }
2013    /// Creates an enum from field names used in the ProtoBuf definition.
2014    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2015        match value {
2016            "DTEI_INVALID" => Some(Self::DteiInvalid),
2017            "DTEI_PARTICIPANT_SID_LOW" => Some(Self::DteiParticipantSidLow),
2018            "DTEI_PARTICIPANT_SID" => Some(Self::DteiParticipantSid),
2019            _ => None,
2020        }
2021    }
2022}
2023#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2024#[repr(i32)]
2025pub enum VideoQuality {
2026    Low = 0,
2027    Medium = 1,
2028    High = 2,
2029    Off = 3,
2030}
2031impl VideoQuality {
2032    /// String value of the enum field names used in the ProtoBuf definition.
2033    ///
2034    /// The values are not transformed in any way and thus are considered stable
2035    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2036    pub fn as_str_name(&self) -> &'static str {
2037        match self {
2038            Self::Low => "LOW",
2039            Self::Medium => "MEDIUM",
2040            Self::High => "HIGH",
2041            Self::Off => "OFF",
2042        }
2043    }
2044    /// Creates an enum from field names used in the ProtoBuf definition.
2045    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2046        match value {
2047            "LOW" => Some(Self::Low),
2048            "MEDIUM" => Some(Self::Medium),
2049            "HIGH" => Some(Self::High),
2050            "OFF" => Some(Self::Off),
2051            _ => None,
2052        }
2053    }
2054}
2055#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2056#[repr(i32)]
2057pub enum ConnectionQuality {
2058    Poor = 0,
2059    Good = 1,
2060    Excellent = 2,
2061    Lost = 3,
2062}
2063impl ConnectionQuality {
2064    /// String value of the enum field names used in the ProtoBuf definition.
2065    ///
2066    /// The values are not transformed in any way and thus are considered stable
2067    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2068    pub fn as_str_name(&self) -> &'static str {
2069        match self {
2070            Self::Poor => "POOR",
2071            Self::Good => "GOOD",
2072            Self::Excellent => "EXCELLENT",
2073            Self::Lost => "LOST",
2074        }
2075    }
2076    /// Creates an enum from field names used in the ProtoBuf definition.
2077    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2078        match value {
2079            "POOR" => Some(Self::Poor),
2080            "GOOD" => Some(Self::Good),
2081            "EXCELLENT" => Some(Self::Excellent),
2082            "LOST" => Some(Self::Lost),
2083            _ => None,
2084        }
2085    }
2086}
2087#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2088#[repr(i32)]
2089pub enum ClientConfigSetting {
2090    Unset = 0,
2091    Disabled = 1,
2092    Enabled = 2,
2093}
2094impl ClientConfigSetting {
2095    /// String value of the enum field names used in the ProtoBuf definition.
2096    ///
2097    /// The values are not transformed in any way and thus are considered stable
2098    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2099    pub fn as_str_name(&self) -> &'static str {
2100        match self {
2101            Self::Unset => "UNSET",
2102            Self::Disabled => "DISABLED",
2103            Self::Enabled => "ENABLED",
2104        }
2105    }
2106    /// Creates an enum from field names used in the ProtoBuf definition.
2107    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2108        match value {
2109            "UNSET" => Some(Self::Unset),
2110            "DISABLED" => Some(Self::Disabled),
2111            "ENABLED" => Some(Self::Enabled),
2112            _ => None,
2113        }
2114    }
2115}
2116#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2117#[repr(i32)]
2118pub enum DisconnectReason {
2119    UnknownReason = 0,
2120    /// the client initiated the disconnect
2121    ClientInitiated = 1,
2122    /// another participant with the same identity has joined the room
2123    DuplicateIdentity = 2,
2124    /// the server instance is shutting down
2125    ServerShutdown = 3,
2126    /// RoomService.RemoveParticipant was called
2127    ParticipantRemoved = 4,
2128    /// RoomService.DeleteRoom was called
2129    RoomDeleted = 5,
2130    /// the client is attempting to resume a session, but server is not aware of it
2131    StateMismatch = 6,
2132    /// client was unable to connect fully
2133    JoinFailure = 7,
2134    /// Cloud-only, the server requested Participant to migrate the connection elsewhere
2135    Migration = 8,
2136    /// the signal websocket was closed unexpectedly
2137    SignalClose = 9,
2138    /// the room was closed, due to all Standard and Ingress participants having left
2139    RoomClosed = 10,
2140    /// SIP callee did not respond in time
2141    UserUnavailable = 11,
2142    /// SIP callee rejected the call (busy)
2143    UserRejected = 12,
2144    /// SIP protocol failure or unexpected response
2145    SipTrunkFailure = 13,
2146    /// server timed out a participant session
2147    ConnectionTimeout = 14,
2148    /// media stream failure or media timeout
2149    MediaFailure = 15,
2150    /// agent encountered an error
2151    AgentError = 16,
2152}
2153impl DisconnectReason {
2154    /// String value of the enum field names used in the ProtoBuf definition.
2155    ///
2156    /// The values are not transformed in any way and thus are considered stable
2157    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2158    pub fn as_str_name(&self) -> &'static str {
2159        match self {
2160            Self::UnknownReason => "UNKNOWN_REASON",
2161            Self::ClientInitiated => "CLIENT_INITIATED",
2162            Self::DuplicateIdentity => "DUPLICATE_IDENTITY",
2163            Self::ServerShutdown => "SERVER_SHUTDOWN",
2164            Self::ParticipantRemoved => "PARTICIPANT_REMOVED",
2165            Self::RoomDeleted => "ROOM_DELETED",
2166            Self::StateMismatch => "STATE_MISMATCH",
2167            Self::JoinFailure => "JOIN_FAILURE",
2168            Self::Migration => "MIGRATION",
2169            Self::SignalClose => "SIGNAL_CLOSE",
2170            Self::RoomClosed => "ROOM_CLOSED",
2171            Self::UserUnavailable => "USER_UNAVAILABLE",
2172            Self::UserRejected => "USER_REJECTED",
2173            Self::SipTrunkFailure => "SIP_TRUNK_FAILURE",
2174            Self::ConnectionTimeout => "CONNECTION_TIMEOUT",
2175            Self::MediaFailure => "MEDIA_FAILURE",
2176            Self::AgentError => "AGENT_ERROR",
2177        }
2178    }
2179    /// Creates an enum from field names used in the ProtoBuf definition.
2180    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2181        match value {
2182            "UNKNOWN_REASON" => Some(Self::UnknownReason),
2183            "CLIENT_INITIATED" => Some(Self::ClientInitiated),
2184            "DUPLICATE_IDENTITY" => Some(Self::DuplicateIdentity),
2185            "SERVER_SHUTDOWN" => Some(Self::ServerShutdown),
2186            "PARTICIPANT_REMOVED" => Some(Self::ParticipantRemoved),
2187            "ROOM_DELETED" => Some(Self::RoomDeleted),
2188            "STATE_MISMATCH" => Some(Self::StateMismatch),
2189            "JOIN_FAILURE" => Some(Self::JoinFailure),
2190            "MIGRATION" => Some(Self::Migration),
2191            "SIGNAL_CLOSE" => Some(Self::SignalClose),
2192            "ROOM_CLOSED" => Some(Self::RoomClosed),
2193            "USER_UNAVAILABLE" => Some(Self::UserUnavailable),
2194            "USER_REJECTED" => Some(Self::UserRejected),
2195            "SIP_TRUNK_FAILURE" => Some(Self::SipTrunkFailure),
2196            "CONNECTION_TIMEOUT" => Some(Self::ConnectionTimeout),
2197            "MEDIA_FAILURE" => Some(Self::MediaFailure),
2198            "AGENT_ERROR" => Some(Self::AgentError),
2199            _ => None,
2200        }
2201    }
2202}
2203/// why a room ended, reported on room-ended telemetry
2204#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2205#[repr(i32)]
2206pub enum RoomEndReason {
2207    RoomEndUnknown = 0,
2208    /// RoomService.DeleteRoom was called
2209    RoomEndApiDelete = 1,
2210    /// the room sat empty past its empty or departure timeout
2211    RoomEndIdleTimeout = 2,
2212    /// the server instance is shutting down
2213    RoomEndServerShutdown = 3,
2214    /// the room was restarted or replaced elsewhere
2215    RoomEndSuperseded = 4,
2216    /// the room failed to finish opening
2217    RoomEndOpenFailed = 5,
2218}
2219impl RoomEndReason {
2220    /// String value of the enum field names used in the ProtoBuf definition.
2221    ///
2222    /// The values are not transformed in any way and thus are considered stable
2223    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2224    pub fn as_str_name(&self) -> &'static str {
2225        match self {
2226            Self::RoomEndUnknown => "ROOM_END_UNKNOWN",
2227            Self::RoomEndApiDelete => "ROOM_END_API_DELETE",
2228            Self::RoomEndIdleTimeout => "ROOM_END_IDLE_TIMEOUT",
2229            Self::RoomEndServerShutdown => "ROOM_END_SERVER_SHUTDOWN",
2230            Self::RoomEndSuperseded => "ROOM_END_SUPERSEDED",
2231            Self::RoomEndOpenFailed => "ROOM_END_OPEN_FAILED",
2232        }
2233    }
2234    /// Creates an enum from field names used in the ProtoBuf definition.
2235    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2236        match value {
2237            "ROOM_END_UNKNOWN" => Some(Self::RoomEndUnknown),
2238            "ROOM_END_API_DELETE" => Some(Self::RoomEndApiDelete),
2239            "ROOM_END_IDLE_TIMEOUT" => Some(Self::RoomEndIdleTimeout),
2240            "ROOM_END_SERVER_SHUTDOWN" => Some(Self::RoomEndServerShutdown),
2241            "ROOM_END_SUPERSEDED" => Some(Self::RoomEndSuperseded),
2242            "ROOM_END_OPEN_FAILED" => Some(Self::RoomEndOpenFailed),
2243            _ => None,
2244        }
2245    }
2246}
2247#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2248#[repr(i32)]
2249pub enum ReconnectReason {
2250    RrUnknown = 0,
2251    RrSignalDisconnected = 1,
2252    RrPublisherFailed = 2,
2253    RrSubscriberFailed = 3,
2254    RrSwitchCandidate = 4,
2255}
2256impl ReconnectReason {
2257    /// String value of the enum field names used in the ProtoBuf definition.
2258    ///
2259    /// The values are not transformed in any way and thus are considered stable
2260    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2261    pub fn as_str_name(&self) -> &'static str {
2262        match self {
2263            Self::RrUnknown => "RR_UNKNOWN",
2264            Self::RrSignalDisconnected => "RR_SIGNAL_DISCONNECTED",
2265            Self::RrPublisherFailed => "RR_PUBLISHER_FAILED",
2266            Self::RrSubscriberFailed => "RR_SUBSCRIBER_FAILED",
2267            Self::RrSwitchCandidate => "RR_SWITCH_CANDIDATE",
2268        }
2269    }
2270    /// Creates an enum from field names used in the ProtoBuf definition.
2271    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2272        match value {
2273            "RR_UNKNOWN" => Some(Self::RrUnknown),
2274            "RR_SIGNAL_DISCONNECTED" => Some(Self::RrSignalDisconnected),
2275            "RR_PUBLISHER_FAILED" => Some(Self::RrPublisherFailed),
2276            "RR_SUBSCRIBER_FAILED" => Some(Self::RrSubscriberFailed),
2277            "RR_SWITCH_CANDIDATE" => Some(Self::RrSwitchCandidate),
2278            _ => None,
2279        }
2280    }
2281}
2282#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2283#[repr(i32)]
2284pub enum SubscriptionError {
2285    SeUnknown = 0,
2286    SeCodecUnsupported = 1,
2287    SeTrackNotfound = 2,
2288}
2289impl SubscriptionError {
2290    /// String value of the enum field names used in the ProtoBuf definition.
2291    ///
2292    /// The values are not transformed in any way and thus are considered stable
2293    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2294    pub fn as_str_name(&self) -> &'static str {
2295        match self {
2296            Self::SeUnknown => "SE_UNKNOWN",
2297            Self::SeCodecUnsupported => "SE_CODEC_UNSUPPORTED",
2298            Self::SeTrackNotfound => "SE_TRACK_NOTFOUND",
2299        }
2300    }
2301    /// Creates an enum from field names used in the ProtoBuf definition.
2302    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2303        match value {
2304            "SE_UNKNOWN" => Some(Self::SeUnknown),
2305            "SE_CODEC_UNSUPPORTED" => Some(Self::SeCodecUnsupported),
2306            "SE_TRACK_NOTFOUND" => Some(Self::SeTrackNotfound),
2307            _ => None,
2308        }
2309    }
2310}
2311#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2312#[repr(i32)]
2313pub enum AudioTrackFeature {
2314    TfStereo = 0,
2315    TfNoDtx = 1,
2316    TfAutoGainControl = 2,
2317    TfEchoCancellation = 3,
2318    TfNoiseSuppression = 4,
2319    TfEnhancedNoiseCancellation = 5,
2320    /// client will buffer audio once available and send it to the server via bytes stream once connected
2321    TfPreconnectBuffer = 6,
2322}
2323impl AudioTrackFeature {
2324    /// String value of the enum field names used in the ProtoBuf definition.
2325    ///
2326    /// The values are not transformed in any way and thus are considered stable
2327    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2328    pub fn as_str_name(&self) -> &'static str {
2329        match self {
2330            Self::TfStereo => "TF_STEREO",
2331            Self::TfNoDtx => "TF_NO_DTX",
2332            Self::TfAutoGainControl => "TF_AUTO_GAIN_CONTROL",
2333            Self::TfEchoCancellation => "TF_ECHO_CANCELLATION",
2334            Self::TfNoiseSuppression => "TF_NOISE_SUPPRESSION",
2335            Self::TfEnhancedNoiseCancellation => "TF_ENHANCED_NOISE_CANCELLATION",
2336            Self::TfPreconnectBuffer => "TF_PRECONNECT_BUFFER",
2337        }
2338    }
2339    /// Creates an enum from field names used in the ProtoBuf definition.
2340    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2341        match value {
2342            "TF_STEREO" => Some(Self::TfStereo),
2343            "TF_NO_DTX" => Some(Self::TfNoDtx),
2344            "TF_AUTO_GAIN_CONTROL" => Some(Self::TfAutoGainControl),
2345            "TF_ECHO_CANCELLATION" => Some(Self::TfEchoCancellation),
2346            "TF_NOISE_SUPPRESSION" => Some(Self::TfNoiseSuppression),
2347            "TF_ENHANCED_NOISE_CANCELLATION" => Some(Self::TfEnhancedNoiseCancellation),
2348            "TF_PRECONNECT_BUFFER" => Some(Self::TfPreconnectBuffer),
2349            _ => None,
2350        }
2351    }
2352}
2353#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2354#[repr(i32)]
2355pub enum PacketTrailerFeature {
2356    PtfUserTimestamp = 0,
2357    PtfFrameId = 1,
2358    PtfUserData = 2,
2359}
2360impl PacketTrailerFeature {
2361    /// String value of the enum field names used in the ProtoBuf definition.
2362    ///
2363    /// The values are not transformed in any way and thus are considered stable
2364    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2365    pub fn as_str_name(&self) -> &'static str {
2366        match self {
2367            Self::PtfUserTimestamp => "PTF_USER_TIMESTAMP",
2368            Self::PtfFrameId => "PTF_FRAME_ID",
2369            Self::PtfUserData => "PTF_USER_DATA",
2370        }
2371    }
2372    /// Creates an enum from field names used in the ProtoBuf definition.
2373    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2374        match value {
2375            "PTF_USER_TIMESTAMP" => Some(Self::PtfUserTimestamp),
2376            "PTF_FRAME_ID" => Some(Self::PtfFrameId),
2377            "PTF_USER_DATA" => Some(Self::PtfUserData),
2378            _ => None,
2379        }
2380    }
2381}
2382// --- Core Request ---
2383
2384#[derive(Clone, PartialEq, ::prost::Message)]
2385pub struct StartEgressRequest {
2386    #[prost(string, tag = "1")]
2387    pub room_name: ::prost::alloc::string::String,
2388    /// At least one required
2389    #[prost(message, repeated, tag = "7")]
2390    pub outputs: ::prost::alloc::vec::Vec<Output>,
2391    /// Request-level storage default
2392    #[prost(message, optional, tag = "8")]
2393    pub storage: ::core::option::Option<StorageConfig>,
2394    /// Optional additional webhook config
2395    #[prost(message, repeated, tag = "9")]
2396    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
2397    #[prost(oneof = "start_egress_request::Source", tags = "2, 3, 4")]
2398    pub source: ::core::option::Option<start_egress_request::Source>,
2399    /// Optional — default H264_720P_30
2400    #[prost(oneof = "start_egress_request::Encoding", tags = "5, 6")]
2401    pub encoding: ::core::option::Option<start_egress_request::Encoding>,
2402}
2403/// Nested message and enum types in `StartEgressRequest`.
2404pub mod start_egress_request {
2405    #[derive(Clone, PartialEq, ::prost::Oneof)]
2406    pub enum Source {
2407        #[prost(message, tag = "2")]
2408        Template(super::TemplateSource),
2409        #[prost(message, tag = "3")]
2410        Web(super::WebSource),
2411        #[prost(message, tag = "4")]
2412        Media(super::MediaSource),
2413    }
2414    /// Optional — default H264_720P_30
2415    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
2416    pub enum Encoding {
2417        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "5")]
2418        Preset(i32),
2419        #[prost(message, tag = "6")]
2420        Advanced(super::EncodingOptions),
2421    }
2422}
2423// --- Source Types ---
2424
2425/// Room composite recording via layout template.
2426/// Service generates token, constructs recorder URL, awaits start signal.
2427#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2428pub struct TemplateSource {
2429    #[prost(string, tag = "1")]
2430    pub layout: ::prost::alloc::string::String,
2431    #[prost(bool, tag = "2")]
2432    pub audio_only: bool,
2433    #[prost(bool, tag = "3")]
2434    pub video_only: bool,
2435    #[prost(string, tag = "4")]
2436    pub custom_base_url: ::prost::alloc::string::String,
2437}
2438/// Record a custom URL via headless browser.
2439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2440pub struct WebSource {
2441    #[prost(string, tag = "1")]
2442    pub url: ::prost::alloc::string::String,
2443    #[prost(bool, tag = "2")]
2444    pub audio_only: bool,
2445    #[prost(bool, tag = "3")]
2446    pub video_only: bool,
2447    #[prost(bool, tag = "4")]
2448    pub await_start_signal: bool,
2449}
2450/// Capture tracks directly from a room via SDK.
2451/// Unifies deprecated Participant, TrackComposite, and Track egress.
2452#[derive(Clone, PartialEq, ::prost::Message)]
2453pub struct MediaSource {
2454    /// TODO: DataConfig data = 4;
2455    #[prost(message, optional, tag = "3")]
2456    pub audio: ::core::option::Option<AudioConfig>,
2457    #[prost(oneof = "media_source::Video", tags = "1, 2")]
2458    pub video: ::core::option::Option<media_source::Video>,
2459}
2460/// Nested message and enum types in `MediaSource`.
2461pub mod media_source {
2462    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2463    pub enum Video {
2464        #[prost(string, tag = "1")]
2465        VideoTrackId(::prost::alloc::string::String),
2466        #[prost(message, tag = "2")]
2467        ParticipantVideo(super::ParticipantVideo),
2468    }
2469}
2470// --- Video Configuration ---
2471
2472#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2473pub struct ParticipantVideo {
2474    #[prost(string, tag = "1")]
2475    pub identity: ::prost::alloc::string::String,
2476    #[prost(bool, tag = "2")]
2477    pub prefer_screen_share: bool,
2478}
2479// --- Audio Configuration ---
2480
2481/// Unified audio selection and channel routing.
2482/// Each route specifies both which audio to capture and which channel to output to.
2483#[derive(Clone, PartialEq, ::prost::Message)]
2484pub struct AudioConfig {
2485    /// If true, all unmatched audio is recorded to both channels
2486    #[prost(bool, tag = "1")]
2487    pub capture_all: bool,
2488    #[prost(message, repeated, tag = "2")]
2489    pub routes: ::prost::alloc::vec::Vec<AudioRoute>,
2490}
2491#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2492pub struct AudioRoute {
2493    #[prost(enumeration = "AudioChannel", tag = "4")]
2494    pub channel: i32,
2495    #[prost(oneof = "audio_route::Match", tags = "1, 2, 3")]
2496    pub r#match: ::core::option::Option<audio_route::Match>,
2497}
2498/// Nested message and enum types in `AudioRoute`.
2499pub mod audio_route {
2500    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2501    pub enum Match {
2502        #[prost(string, tag = "1")]
2503        TrackId(::prost::alloc::string::String),
2504        #[prost(string, tag = "2")]
2505        ParticipantIdentity(::prost::alloc::string::String),
2506        #[prost(enumeration = "super::participant_info::Kind", tag = "3")]
2507        ParticipantKind(i32),
2508    }
2509}
2510// --- Data Track Configuration ---
2511
2512#[derive(Clone, PartialEq, ::prost::Message)]
2513pub struct DataConfig {
2514    #[prost(bool, tag = "1")]
2515    pub capture_all: bool,
2516    #[prost(message, repeated, tag = "2")]
2517    pub selectors: ::prost::alloc::vec::Vec<DataSelector>,
2518}
2519#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2520pub struct DataSelector {
2521    #[prost(oneof = "data_selector::Match", tags = "1, 2")]
2522    pub r#match: ::core::option::Option<data_selector::Match>,
2523}
2524/// Nested message and enum types in `DataSelector`.
2525pub mod data_selector {
2526    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2527    pub enum Match {
2528        #[prost(string, tag = "1")]
2529        TrackId(::prost::alloc::string::String),
2530        #[prost(string, tag = "2")]
2531        ParticipantIdentity(::prost::alloc::string::String),
2532    }
2533}
2534#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2535pub struct EncodingOptions {
2536    /// (default 1920)
2537    #[prost(int32, tag = "1")]
2538    pub width: i32,
2539    /// (default 1080)
2540    #[prost(int32, tag = "2")]
2541    pub height: i32,
2542    /// (default 24)
2543    #[prost(int32, tag = "3")]
2544    pub depth: i32,
2545    /// (default 30)
2546    #[prost(int32, tag = "4")]
2547    pub framerate: i32,
2548    /// (default OPUS)
2549    #[prost(enumeration = "AudioCodec", tag = "5")]
2550    pub audio_codec: i32,
2551    /// (default 128)
2552    #[prost(int32, tag = "6")]
2553    pub audio_bitrate: i32,
2554    /// (default 44100)
2555    #[prost(int32, tag = "7")]
2556    pub audio_frequency: i32,
2557    /// (default H264_MAIN)
2558    #[prost(enumeration = "VideoCodec", tag = "8")]
2559    pub video_codec: i32,
2560    /// (default 4500)
2561    #[prost(int32, tag = "9")]
2562    pub video_bitrate: i32,
2563    /// in seconds (default 4s for streaming, segment duration for segmented output, encoder default for files)
2564    #[prost(double, tag = "10")]
2565    pub key_frame_interval: f64,
2566    /// --- Deprecated ---
2567    ///
2568    /// quality setting on audio encoder
2569    #[deprecated]
2570    #[prost(int32, tag = "11")]
2571    pub audio_quality: i32,
2572    /// quality setting on video encoder
2573    #[deprecated]
2574    #[prost(int32, tag = "12")]
2575    pub video_quality: i32,
2576}
2577// --- Output Types ---
2578
2579#[derive(Clone, PartialEq, ::prost::Message)]
2580pub struct Output {
2581    /// Per-output storage override (falls back to request, then server)
2582    #[prost(message, optional, tag = "6")]
2583    pub storage: ::core::option::Option<StorageConfig>,
2584    #[prost(oneof = "output::Config", tags = "1, 2, 3, 4")]
2585    pub config: ::core::option::Option<output::Config>,
2586}
2587/// Nested message and enum types in `Output`.
2588pub mod output {
2589    #[derive(Clone, PartialEq, ::prost::Oneof)]
2590    pub enum Config {
2591        #[prost(message, tag = "1")]
2592        File(super::FileOutput),
2593        #[prost(message, tag = "2")]
2594        Stream(super::StreamOutput),
2595        #[prost(message, tag = "3")]
2596        Segments(super::SegmentedFileOutput),
2597        /// TODO: DataOutput data = 5;
2598        #[prost(message, tag = "4")]
2599        Images(super::ImageOutput),
2600    }
2601}
2602/// Unified file output — replaces v1 EncodedFileOutput and DirectFileOutput.
2603/// Whether transcoded depends on encoding options on the request.
2604#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2605pub struct FileOutput {
2606    #[prost(enumeration = "EncodedFileType", tag = "1")]
2607    pub file_type: i32,
2608    #[prost(string, tag = "2")]
2609    pub filepath: ::prost::alloc::string::String,
2610    #[prost(bool, tag = "3")]
2611    pub disable_manifest: bool,
2612}
2613#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2614pub struct StreamOutput {
2615    /// required
2616    #[prost(enumeration = "StreamProtocol", tag = "1")]
2617    pub protocol: i32,
2618    /// required
2619    #[prost(string, repeated, tag = "2")]
2620    pub urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2621}
2622/// Used to generate HLS segments or other kind of segmented output
2623#[derive(Clone, PartialEq, ::prost::Message)]
2624pub struct SegmentedFileOutput {
2625    /// (optional)
2626    #[prost(enumeration = "SegmentedFileProtocol", tag = "1")]
2627    pub protocol: i32,
2628    /// (optional)
2629    #[prost(string, tag = "2")]
2630    pub filename_prefix: ::prost::alloc::string::String,
2631    /// (optional)
2632    #[prost(string, tag = "3")]
2633    pub playlist_name: ::prost::alloc::string::String,
2634    /// (optional, disabled if not provided). Path of a live playlist
2635    #[prost(string, tag = "11")]
2636    pub live_playlist_name: ::prost::alloc::string::String,
2637    /// in seconds (optional)
2638    #[prost(uint32, tag = "4")]
2639    pub segment_duration: u32,
2640    /// (optional, default INDEX)
2641    #[prost(enumeration = "SegmentedFileSuffix", tag = "10")]
2642    pub filename_suffix: i32,
2643    /// disable upload of manifest file (default false)
2644    #[prost(bool, tag = "8")]
2645    pub disable_manifest: bool,
2646    /// TODO: deprecate
2647    #[prost(oneof = "segmented_file_output::Output", tags = "5, 6, 7, 9")]
2648    pub output: ::core::option::Option<segmented_file_output::Output>,
2649}
2650/// Nested message and enum types in `SegmentedFileOutput`.
2651pub mod segmented_file_output {
2652    /// TODO: deprecate
2653    #[derive(Clone, PartialEq, ::prost::Oneof)]
2654    pub enum Output {
2655        #[prost(message, tag = "5")]
2656        S3(super::S3Upload),
2657        #[prost(message, tag = "6")]
2658        Gcp(super::GcpUpload),
2659        #[prost(message, tag = "7")]
2660        Azure(super::AzureBlobUpload),
2661        #[prost(message, tag = "9")]
2662        AliOss(super::AliOssUpload),
2663    }
2664}
2665/// Capture images at a specified interval
2666#[derive(Clone, PartialEq, ::prost::Message)]
2667pub struct ImageOutput {
2668    /// in seconds (required)
2669    #[prost(uint32, tag = "1")]
2670    pub capture_interval: u32,
2671    /// (optional, defaults to track width)
2672    #[prost(int32, tag = "2")]
2673    pub width: i32,
2674    /// (optional, defaults to track height)
2675    #[prost(int32, tag = "3")]
2676    pub height: i32,
2677    /// (optional)
2678    #[prost(string, tag = "4")]
2679    pub filename_prefix: ::prost::alloc::string::String,
2680    /// (optional, default INDEX)
2681    #[prost(enumeration = "ImageFileSuffix", tag = "5")]
2682    pub filename_suffix: i32,
2683    /// (optional)
2684    #[prost(enumeration = "ImageCodec", tag = "6")]
2685    pub image_codec: i32,
2686    /// disable upload of manifest file (default false)
2687    #[prost(bool, tag = "7")]
2688    pub disable_manifest: bool,
2689    /// TODO: deprecate
2690    #[prost(oneof = "image_output::Output", tags = "8, 9, 10, 11")]
2691    pub output: ::core::option::Option<image_output::Output>,
2692}
2693/// Nested message and enum types in `ImageOutput`.
2694pub mod image_output {
2695    /// TODO: deprecate
2696    #[derive(Clone, PartialEq, ::prost::Oneof)]
2697    pub enum Output {
2698        #[prost(message, tag = "8")]
2699        S3(super::S3Upload),
2700        #[prost(message, tag = "9")]
2701        Gcp(super::GcpUpload),
2702        #[prost(message, tag = "10")]
2703        Azure(super::AzureBlobUpload),
2704        #[prost(message, tag = "11")]
2705        AliOss(super::AliOssUpload),
2706    }
2707}
2708// --- Storage ---
2709
2710#[derive(Clone, PartialEq, ::prost::Message)]
2711pub struct StorageConfig {
2712    #[prost(oneof = "storage_config::Provider", tags = "1, 2, 3, 4")]
2713    pub provider: ::core::option::Option<storage_config::Provider>,
2714}
2715/// Nested message and enum types in `StorageConfig`.
2716pub mod storage_config {
2717    #[derive(Clone, PartialEq, ::prost::Oneof)]
2718    pub enum Provider {
2719        #[prost(message, tag = "1")]
2720        S3(super::S3Upload),
2721        #[prost(message, tag = "2")]
2722        Gcp(super::GcpUpload),
2723        #[prost(message, tag = "3")]
2724        Azure(super::AzureBlobUpload),
2725        #[prost(message, tag = "4")]
2726        AliOss(super::AliOssUpload),
2727    }
2728}
2729#[derive(Clone, PartialEq, ::prost::Message)]
2730pub struct S3Upload {
2731    #[prost(string, tag = "1")]
2732    pub access_key: ::prost::alloc::string::String,
2733    #[prost(string, tag = "2")]
2734    pub secret: ::prost::alloc::string::String,
2735    #[prost(string, tag = "11")]
2736    pub session_token: ::prost::alloc::string::String,
2737    /// 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
2738    #[prost(string, tag = "12")]
2739    pub assume_role_arn: ::prost::alloc::string::String,
2740    /// ExternalID to use when assuming role for upload
2741    #[prost(string, tag = "13")]
2742    pub assume_role_external_id: ::prost::alloc::string::String,
2743    #[prost(string, tag = "3")]
2744    pub region: ::prost::alloc::string::String,
2745    #[prost(string, tag = "4")]
2746    pub endpoint: ::prost::alloc::string::String,
2747    #[prost(string, tag = "5")]
2748    pub bucket: ::prost::alloc::string::String,
2749    #[prost(bool, tag = "6")]
2750    pub force_path_style: bool,
2751    #[prost(map = "string, string", tag = "7")]
2752    pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2753    #[prost(string, tag = "8")]
2754    pub tagging: ::prost::alloc::string::String,
2755    /// Content-Disposition header
2756    #[prost(string, tag = "9")]
2757    pub content_disposition: ::prost::alloc::string::String,
2758    #[prost(message, optional, tag = "10")]
2759    pub proxy: ::core::option::Option<ProxyConfig>,
2760}
2761#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2762pub struct GcpUpload {
2763    /// service account credentials serialized in JSON "credentials.json"
2764    #[prost(string, tag = "1")]
2765    pub credentials: ::prost::alloc::string::String,
2766    #[prost(string, tag = "2")]
2767    pub bucket: ::prost::alloc::string::String,
2768    #[prost(message, optional, tag = "3")]
2769    pub proxy: ::core::option::Option<ProxyConfig>,
2770}
2771#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2772pub struct AzureBlobUpload {
2773    #[prost(string, tag = "1")]
2774    pub account_name: ::prost::alloc::string::String,
2775    #[prost(string, tag = "2")]
2776    pub account_key: ::prost::alloc::string::String,
2777    #[prost(string, tag = "3")]
2778    pub container_name: ::prost::alloc::string::String,
2779}
2780#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2781pub struct AliOssUpload {
2782    #[prost(string, tag = "1")]
2783    pub access_key: ::prost::alloc::string::String,
2784    #[prost(string, tag = "2")]
2785    pub secret: ::prost::alloc::string::String,
2786    #[prost(string, tag = "3")]
2787    pub region: ::prost::alloc::string::String,
2788    #[prost(string, tag = "4")]
2789    pub endpoint: ::prost::alloc::string::String,
2790    #[prost(string, tag = "5")]
2791    pub bucket: ::prost::alloc::string::String,
2792}
2793#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2794pub struct ProxyConfig {
2795    #[prost(string, tag = "1")]
2796    pub url: ::prost::alloc::string::String,
2797    #[prost(string, tag = "2")]
2798    pub username: ::prost::alloc::string::String,
2799    #[prost(string, tag = "3")]
2800    pub password: ::prost::alloc::string::String,
2801}
2802// --- Control RPCs ---
2803
2804#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2805pub struct ListEgressRequest {
2806    /// (optional, filter by room name)
2807    #[prost(string, tag = "1")]
2808    pub room_name: ::prost::alloc::string::String,
2809    /// (optional, filter by egress ID)
2810    #[prost(string, tag = "2")]
2811    pub egress_id: ::prost::alloc::string::String,
2812    /// (optional, list active egress only)
2813    #[prost(bool, tag = "3")]
2814    pub active: bool,
2815    /// next field id: 5
2816    #[prost(message, optional, tag = "4")]
2817    pub page_token: ::core::option::Option<TokenPagination>,
2818}
2819#[derive(Clone, PartialEq, ::prost::Message)]
2820pub struct ListEgressResponse {
2821    #[prost(message, repeated, tag = "1")]
2822    pub items: ::prost::alloc::vec::Vec<EgressInfo>,
2823    /// next field id: 3
2824    #[prost(message, optional, tag = "2")]
2825    pub next_page_token: ::core::option::Option<TokenPagination>,
2826}
2827#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2828pub struct StopEgressRequest {
2829    #[prost(string, tag = "1")]
2830    pub egress_id: ::prost::alloc::string::String,
2831}
2832// --- Egress Info ---
2833
2834#[derive(Clone, PartialEq, ::prost::Message)]
2835pub struct EgressInfo {
2836    #[prost(string, tag = "1")]
2837    pub egress_id: ::prost::alloc::string::String,
2838    #[prost(string, tag = "2")]
2839    pub room_id: ::prost::alloc::string::String,
2840    #[prost(string, tag = "13")]
2841    pub room_name: ::prost::alloc::string::String,
2842    #[prost(enumeration = "EgressSourceType", tag = "26")]
2843    pub source_type: i32,
2844    #[prost(enumeration = "EgressStatus", tag = "3")]
2845    pub status: i32,
2846    #[prost(int64, tag = "10")]
2847    pub started_at: i64,
2848    #[prost(int64, tag = "11")]
2849    pub ended_at: i64,
2850    #[prost(int64, tag = "18")]
2851    pub updated_at: i64,
2852    #[prost(message, repeated, tag = "15")]
2853    pub stream_results: ::prost::alloc::vec::Vec<StreamInfo>,
2854    #[prost(message, repeated, tag = "16")]
2855    pub file_results: ::prost::alloc::vec::Vec<FileInfo>,
2856    #[prost(message, repeated, tag = "17")]
2857    pub segment_results: ::prost::alloc::vec::Vec<SegmentsInfo>,
2858    #[prost(message, repeated, tag = "20")]
2859    pub image_results: ::prost::alloc::vec::Vec<ImagesInfo>,
2860    #[prost(string, tag = "9")]
2861    pub error: ::prost::alloc::string::String,
2862    #[prost(int32, tag = "22")]
2863    pub error_code: i32,
2864    #[prost(string, tag = "21")]
2865    pub details: ::prost::alloc::string::String,
2866    #[prost(string, tag = "23")]
2867    pub manifest_location: ::prost::alloc::string::String,
2868    #[prost(bool, tag = "25")]
2869    pub backup_storage_used: bool,
2870    #[prost(int32, tag = "27")]
2871    pub retry_count: i32,
2872    #[prost(oneof = "egress_info::Request", tags = "29, 30, 4, 14, 19, 5, 6")]
2873    pub request: ::core::option::Option<egress_info::Request>,
2874    // next ID: 31
2875
2876    /// --- Deprecated ---
2877    #[prost(oneof = "egress_info::Result", tags = "7, 8, 12")]
2878    pub result: ::core::option::Option<egress_info::Result>,
2879}
2880/// Nested message and enum types in `EgressInfo`.
2881pub mod egress_info {
2882    #[derive(Clone, PartialEq, ::prost::Oneof)]
2883    pub enum Request {
2884        #[prost(message, tag = "29")]
2885        Egress(super::StartEgressRequest),
2886        #[prost(message, tag = "30")]
2887        Replay(super::ExportReplayRequest),
2888        /// TODO: deprecate
2889        #[prost(message, tag = "4")]
2890        RoomComposite(super::RoomCompositeEgressRequest),
2891        #[prost(message, tag = "14")]
2892        Web(super::WebEgressRequest),
2893        #[prost(message, tag = "19")]
2894        Participant(super::ParticipantEgressRequest),
2895        #[prost(message, tag = "5")]
2896        TrackComposite(super::TrackCompositeEgressRequest),
2897        #[prost(message, tag = "6")]
2898        Track(super::TrackEgressRequest),
2899    }
2900    // next ID: 31
2901
2902    /// --- Deprecated ---
2903    #[derive(Clone, PartialEq, ::prost::Oneof)]
2904    pub enum Result {
2905        #[deprecated]
2906        #[prost(message, tag = "7")]
2907        Stream(super::StreamInfoList),
2908        #[deprecated]
2909        #[prost(message, tag = "8")]
2910        File(super::FileInfo),
2911        #[deprecated]
2912        #[prost(message, tag = "12")]
2913        Segments(super::SegmentsInfo),
2914    }
2915}
2916#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2917pub struct StreamInfo {
2918    #[prost(string, tag = "1")]
2919    pub url: ::prost::alloc::string::String,
2920    #[prost(int64, tag = "2")]
2921    pub started_at: i64,
2922    #[prost(int64, tag = "3")]
2923    pub ended_at: i64,
2924    #[prost(int64, tag = "4")]
2925    pub duration: i64,
2926    #[prost(enumeration = "stream_info::Status", tag = "5")]
2927    pub status: i32,
2928    #[prost(string, tag = "6")]
2929    pub error: ::prost::alloc::string::String,
2930    #[prost(int64, tag = "7")]
2931    pub last_retry_at: i64,
2932    #[prost(uint32, tag = "8")]
2933    pub retries: u32,
2934}
2935/// Nested message and enum types in `StreamInfo`.
2936pub mod stream_info {
2937    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2938    #[repr(i32)]
2939    pub enum Status {
2940        Active = 0,
2941        Finished = 1,
2942        Failed = 2,
2943    }
2944    impl Status {
2945        /// String value of the enum field names used in the ProtoBuf definition.
2946        ///
2947        /// The values are not transformed in any way and thus are considered stable
2948        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2949        pub fn as_str_name(&self) -> &'static str {
2950            match self {
2951                Self::Active => "ACTIVE",
2952                Self::Finished => "FINISHED",
2953                Self::Failed => "FAILED",
2954            }
2955        }
2956        /// Creates an enum from field names used in the ProtoBuf definition.
2957        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2958            match value {
2959                "ACTIVE" => Some(Self::Active),
2960                "FINISHED" => Some(Self::Finished),
2961                "FAILED" => Some(Self::Failed),
2962                _ => None,
2963            }
2964        }
2965    }
2966}
2967#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2968pub struct FileInfo {
2969    #[prost(string, tag = "1")]
2970    pub filename: ::prost::alloc::string::String,
2971    #[prost(int64, tag = "2")]
2972    pub started_at: i64,
2973    #[prost(int64, tag = "3")]
2974    pub ended_at: i64,
2975    #[prost(int64, tag = "6")]
2976    pub duration: i64,
2977    #[prost(int64, tag = "4")]
2978    pub size: i64,
2979    #[prost(string, tag = "5")]
2980    pub location: ::prost::alloc::string::String,
2981}
2982#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2983pub struct SegmentsInfo {
2984    #[prost(string, tag = "1")]
2985    pub playlist_name: ::prost::alloc::string::String,
2986    #[prost(string, tag = "8")]
2987    pub live_playlist_name: ::prost::alloc::string::String,
2988    #[prost(int64, tag = "2")]
2989    pub duration: i64,
2990    #[prost(int64, tag = "3")]
2991    pub size: i64,
2992    #[prost(string, tag = "4")]
2993    pub playlist_location: ::prost::alloc::string::String,
2994    #[prost(string, tag = "9")]
2995    pub live_playlist_location: ::prost::alloc::string::String,
2996    #[prost(int64, tag = "5")]
2997    pub segment_count: i64,
2998    #[prost(int64, tag = "6")]
2999    pub started_at: i64,
3000    #[prost(int64, tag = "7")]
3001    pub ended_at: i64,
3002}
3003#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3004pub struct ImagesInfo {
3005    #[prost(string, tag = "4")]
3006    pub filename_prefix: ::prost::alloc::string::String,
3007    #[prost(int64, tag = "1")]
3008    pub image_count: i64,
3009    #[prost(int64, tag = "2")]
3010    pub started_at: i64,
3011    #[prost(int64, tag = "3")]
3012    pub ended_at: i64,
3013}
3014// --- Auto Egress ---
3015
3016#[derive(Clone, PartialEq, ::prost::Message)]
3017pub struct AutoParticipantEgress {
3018    #[prost(message, repeated, tag = "3")]
3019    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3020    #[prost(message, repeated, tag = "4")]
3021    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3022    #[prost(oneof = "auto_participant_egress::Options", tags = "1, 2")]
3023    pub options: ::core::option::Option<auto_participant_egress::Options>,
3024}
3025/// Nested message and enum types in `AutoParticipantEgress`.
3026pub mod auto_participant_egress {
3027    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3028    pub enum Options {
3029        /// (default H264_720P_30)
3030        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "1")]
3031        Preset(i32),
3032        /// (optional)
3033        #[prost(message, tag = "2")]
3034        Advanced(super::EncodingOptions),
3035    }
3036}
3037#[derive(Clone, PartialEq, ::prost::Message)]
3038pub struct AutoTrackEgress {
3039    /// see docs for templating (default {track_id}-{time})
3040    #[prost(string, tag = "1")]
3041    pub filepath: ::prost::alloc::string::String,
3042    /// disables upload of json manifest file (default false)
3043    #[prost(bool, tag = "5")]
3044    pub disable_manifest: bool,
3045    #[prost(oneof = "auto_track_egress::Output", tags = "2, 3, 4, 6")]
3046    pub output: ::core::option::Option<auto_track_egress::Output>,
3047}
3048/// Nested message and enum types in `AutoTrackEgress`.
3049pub mod auto_track_egress {
3050    #[derive(Clone, PartialEq, ::prost::Oneof)]
3051    pub enum Output {
3052        #[prost(message, tag = "2")]
3053        S3(super::S3Upload),
3054        #[prost(message, tag = "3")]
3055        Gcp(super::GcpUpload),
3056        #[prost(message, tag = "4")]
3057        Azure(super::AzureBlobUpload),
3058        #[prost(message, tag = "6")]
3059        AliOss(super::AliOssUpload),
3060    }
3061}
3062// --- Replay Export (message only — RPC defined in cloud_replay.proto) ---
3063
3064#[derive(Clone, PartialEq, ::prost::Message)]
3065pub struct ExportReplayRequest {
3066    #[prost(string, tag = "1")]
3067    pub replay_id: ::prost::alloc::string::String,
3068    #[prost(int64, tag = "2")]
3069    pub start_offset_ms: i64,
3070    #[prost(int64, tag = "3")]
3071    pub end_offset_ms: i64,
3072    #[prost(message, repeated, tag = "9")]
3073    pub outputs: ::prost::alloc::vec::Vec<Output>,
3074    #[prost(message, optional, tag = "10")]
3075    pub storage: ::core::option::Option<StorageConfig>,
3076    #[prost(message, repeated, tag = "11")]
3077    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3078    #[prost(oneof = "export_replay_request::Source", tags = "4, 5, 6")]
3079    pub source: ::core::option::Option<export_replay_request::Source>,
3080    #[prost(oneof = "export_replay_request::Encoding", tags = "7, 8")]
3081    pub encoding: ::core::option::Option<export_replay_request::Encoding>,
3082}
3083/// Nested message and enum types in `ExportReplayRequest`.
3084pub mod export_replay_request {
3085    #[derive(Clone, PartialEq, ::prost::Oneof)]
3086    pub enum Source {
3087        #[prost(message, tag = "4")]
3088        Template(super::TemplateSource),
3089        #[prost(message, tag = "5")]
3090        Web(super::WebSource),
3091        #[prost(message, tag = "6")]
3092        Media(super::MediaSource),
3093    }
3094    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3095    pub enum Encoding {
3096        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "7")]
3097        Preset(i32),
3098        #[prost(message, tag = "8")]
3099        Advanced(super::EncodingOptions),
3100    }
3101}
3102// TODO: deprecate --- V1 ---
3103
3104#[derive(Clone, PartialEq, ::prost::Message)]
3105pub struct RoomCompositeEgressRequest {
3106    #[prost(string, tag = "1")]
3107    pub room_name: ::prost::alloc::string::String,
3108    #[prost(string, tag = "2")]
3109    pub layout: ::prost::alloc::string::String,
3110    #[prost(bool, tag = "3")]
3111    pub audio_only: bool,
3112    #[prost(enumeration = "AudioMixing", tag = "15")]
3113    pub audio_mixing: i32,
3114    #[prost(bool, tag = "4")]
3115    pub video_only: bool,
3116    #[prost(string, tag = "5")]
3117    pub custom_base_url: ::prost::alloc::string::String,
3118    #[prost(message, repeated, tag = "11")]
3119    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3120    #[prost(message, repeated, tag = "12")]
3121    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3122    #[prost(message, repeated, tag = "13")]
3123    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3124    #[prost(message, repeated, tag = "14")]
3125    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3126    #[prost(message, repeated, tag = "16")]
3127    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3128    #[prost(oneof = "room_composite_egress_request::Output", tags = "6, 7, 10")]
3129    pub output: ::core::option::Option<room_composite_egress_request::Output>,
3130    #[prost(oneof = "room_composite_egress_request::Options", tags = "8, 9")]
3131    pub options: ::core::option::Option<room_composite_egress_request::Options>,
3132}
3133/// Nested message and enum types in `RoomCompositeEgressRequest`.
3134pub mod room_composite_egress_request {
3135    #[derive(Clone, PartialEq, ::prost::Oneof)]
3136    pub enum Output {
3137        #[deprecated]
3138        #[prost(message, tag = "6")]
3139        File(super::EncodedFileOutput),
3140        #[deprecated]
3141        #[prost(message, tag = "7")]
3142        Stream(super::StreamOutput),
3143        #[deprecated]
3144        #[prost(message, tag = "10")]
3145        Segments(super::SegmentedFileOutput),
3146    }
3147    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3148    pub enum Options {
3149        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "8")]
3150        Preset(i32),
3151        #[prost(message, tag = "9")]
3152        Advanced(super::EncodingOptions),
3153    }
3154}
3155#[derive(Clone, PartialEq, ::prost::Message)]
3156pub struct WebEgressRequest {
3157    #[prost(string, tag = "1")]
3158    pub url: ::prost::alloc::string::String,
3159    #[prost(bool, tag = "2")]
3160    pub audio_only: bool,
3161    #[prost(bool, tag = "3")]
3162    pub video_only: bool,
3163    #[prost(bool, tag = "12")]
3164    pub await_start_signal: bool,
3165    #[prost(message, repeated, tag = "9")]
3166    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3167    #[prost(message, repeated, tag = "10")]
3168    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3169    #[prost(message, repeated, tag = "11")]
3170    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3171    #[prost(message, repeated, tag = "13")]
3172    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3173    #[prost(message, repeated, tag = "14")]
3174    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3175    #[prost(oneof = "web_egress_request::Output", tags = "4, 5, 6")]
3176    pub output: ::core::option::Option<web_egress_request::Output>,
3177    #[prost(oneof = "web_egress_request::Options", tags = "7, 8")]
3178    pub options: ::core::option::Option<web_egress_request::Options>,
3179}
3180/// Nested message and enum types in `WebEgressRequest`.
3181pub mod web_egress_request {
3182    #[derive(Clone, PartialEq, ::prost::Oneof)]
3183    pub enum Output {
3184        #[deprecated]
3185        #[prost(message, tag = "4")]
3186        File(super::EncodedFileOutput),
3187        #[deprecated]
3188        #[prost(message, tag = "5")]
3189        Stream(super::StreamOutput),
3190        #[deprecated]
3191        #[prost(message, tag = "6")]
3192        Segments(super::SegmentedFileOutput),
3193    }
3194    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3195    pub enum Options {
3196        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "7")]
3197        Preset(i32),
3198        #[prost(message, tag = "8")]
3199        Advanced(super::EncodingOptions),
3200    }
3201}
3202#[derive(Clone, PartialEq, ::prost::Message)]
3203pub struct ParticipantEgressRequest {
3204    #[prost(string, tag = "1")]
3205    pub room_name: ::prost::alloc::string::String,
3206    #[prost(string, tag = "2")]
3207    pub identity: ::prost::alloc::string::String,
3208    #[prost(bool, tag = "3")]
3209    pub screen_share: bool,
3210    #[prost(message, repeated, tag = "6")]
3211    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3212    #[prost(message, repeated, tag = "7")]
3213    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3214    #[prost(message, repeated, tag = "8")]
3215    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3216    #[prost(message, repeated, tag = "9")]
3217    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3218    #[prost(message, repeated, tag = "10")]
3219    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3220    #[prost(oneof = "participant_egress_request::Options", tags = "4, 5")]
3221    pub options: ::core::option::Option<participant_egress_request::Options>,
3222}
3223/// Nested message and enum types in `ParticipantEgressRequest`.
3224pub mod participant_egress_request {
3225    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3226    pub enum Options {
3227        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "4")]
3228        Preset(i32),
3229        #[prost(message, tag = "5")]
3230        Advanced(super::EncodingOptions),
3231    }
3232}
3233#[derive(Clone, PartialEq, ::prost::Message)]
3234pub struct TrackCompositeEgressRequest {
3235    #[prost(string, tag = "1")]
3236    pub room_name: ::prost::alloc::string::String,
3237    #[prost(string, tag = "2")]
3238    pub audio_track_id: ::prost::alloc::string::String,
3239    #[prost(string, tag = "3")]
3240    pub video_track_id: ::prost::alloc::string::String,
3241    #[prost(message, repeated, tag = "11")]
3242    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3243    #[prost(message, repeated, tag = "12")]
3244    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3245    #[prost(message, repeated, tag = "13")]
3246    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3247    #[prost(message, repeated, tag = "14")]
3248    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3249    #[prost(message, repeated, tag = "15")]
3250    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3251    #[prost(oneof = "track_composite_egress_request::Output", tags = "4, 5, 8")]
3252    pub output: ::core::option::Option<track_composite_egress_request::Output>,
3253    #[prost(oneof = "track_composite_egress_request::Options", tags = "6, 7")]
3254    pub options: ::core::option::Option<track_composite_egress_request::Options>,
3255}
3256/// Nested message and enum types in `TrackCompositeEgressRequest`.
3257pub mod track_composite_egress_request {
3258    #[derive(Clone, PartialEq, ::prost::Oneof)]
3259    pub enum Output {
3260        #[deprecated]
3261        #[prost(message, tag = "4")]
3262        File(super::EncodedFileOutput),
3263        #[deprecated]
3264        #[prost(message, tag = "5")]
3265        Stream(super::StreamOutput),
3266        #[deprecated]
3267        #[prost(message, tag = "8")]
3268        Segments(super::SegmentedFileOutput),
3269    }
3270    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3271    pub enum Options {
3272        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "6")]
3273        Preset(i32),
3274        #[prost(message, tag = "7")]
3275        Advanced(super::EncodingOptions),
3276    }
3277}
3278#[derive(Clone, PartialEq, ::prost::Message)]
3279pub struct TrackEgressRequest {
3280    #[prost(string, tag = "1")]
3281    pub room_name: ::prost::alloc::string::String,
3282    #[prost(string, tag = "2")]
3283    pub track_id: ::prost::alloc::string::String,
3284    #[prost(message, repeated, tag = "5")]
3285    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3286    #[prost(oneof = "track_egress_request::Output", tags = "3, 4")]
3287    pub output: ::core::option::Option<track_egress_request::Output>,
3288}
3289/// Nested message and enum types in `TrackEgressRequest`.
3290pub mod track_egress_request {
3291    #[derive(Clone, PartialEq, ::prost::Oneof)]
3292    pub enum Output {
3293        #[prost(message, tag = "3")]
3294        File(super::DirectFileOutput),
3295        #[prost(string, tag = "4")]
3296        WebsocketUrl(::prost::alloc::string::String),
3297    }
3298}
3299#[derive(Clone, PartialEq, ::prost::Message)]
3300pub struct DirectFileOutput {
3301    #[prost(string, tag = "1")]
3302    pub filepath: ::prost::alloc::string::String,
3303    #[prost(bool, tag = "5")]
3304    pub disable_manifest: bool,
3305    #[prost(oneof = "direct_file_output::Output", tags = "2, 3, 4, 6")]
3306    pub output: ::core::option::Option<direct_file_output::Output>,
3307}
3308/// Nested message and enum types in `DirectFileOutput`.
3309pub mod direct_file_output {
3310    #[derive(Clone, PartialEq, ::prost::Oneof)]
3311    pub enum Output {
3312        #[prost(message, tag = "2")]
3313        S3(super::S3Upload),
3314        #[prost(message, tag = "3")]
3315        Gcp(super::GcpUpload),
3316        #[prost(message, tag = "4")]
3317        Azure(super::AzureBlobUpload),
3318        #[prost(message, tag = "6")]
3319        AliOss(super::AliOssUpload),
3320    }
3321}
3322#[derive(Clone, PartialEq, ::prost::Message)]
3323pub struct EncodedFileOutput {
3324    #[prost(enumeration = "EncodedFileType", tag = "1")]
3325    pub file_type: i32,
3326    #[prost(string, tag = "2")]
3327    pub filepath: ::prost::alloc::string::String,
3328    #[prost(bool, tag = "6")]
3329    pub disable_manifest: bool,
3330    #[prost(oneof = "encoded_file_output::Output", tags = "3, 4, 5, 7")]
3331    pub output: ::core::option::Option<encoded_file_output::Output>,
3332}
3333/// Nested message and enum types in `EncodedFileOutput`.
3334pub mod encoded_file_output {
3335    #[derive(Clone, PartialEq, ::prost::Oneof)]
3336    pub enum Output {
3337        #[prost(message, tag = "3")]
3338        S3(super::S3Upload),
3339        #[prost(message, tag = "4")]
3340        Gcp(super::GcpUpload),
3341        #[prost(message, tag = "5")]
3342        Azure(super::AzureBlobUpload),
3343        #[prost(message, tag = "7")]
3344        AliOss(super::AliOssUpload),
3345    }
3346}
3347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3348pub struct UpdateLayoutRequest {
3349    #[prost(string, tag = "1")]
3350    pub egress_id: ::prost::alloc::string::String,
3351    #[prost(string, tag = "2")]
3352    pub layout: ::prost::alloc::string::String,
3353}
3354#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3355pub struct UpdateStreamRequest {
3356    #[prost(string, tag = "1")]
3357    pub egress_id: ::prost::alloc::string::String,
3358    #[prost(string, repeated, tag = "2")]
3359    pub add_output_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3360    #[prost(string, repeated, tag = "3")]
3361    pub remove_output_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3362}
3363#[derive(Clone, PartialEq, ::prost::Message)]
3364pub struct StreamInfoList {
3365    #[prost(message, repeated, tag = "1")]
3366    pub info: ::prost::alloc::vec::Vec<StreamInfo>,
3367}
3368#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3369#[repr(i32)]
3370pub enum AudioChannel {
3371    Both = 0,
3372    Left = 1,
3373    Right = 2,
3374}
3375impl AudioChannel {
3376    /// String value of the enum field names used in the ProtoBuf definition.
3377    ///
3378    /// The values are not transformed in any way and thus are considered stable
3379    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3380    pub fn as_str_name(&self) -> &'static str {
3381        match self {
3382            Self::Both => "AUDIO_CHANNEL_BOTH",
3383            Self::Left => "AUDIO_CHANNEL_LEFT",
3384            Self::Right => "AUDIO_CHANNEL_RIGHT",
3385        }
3386    }
3387    /// Creates an enum from field names used in the ProtoBuf definition.
3388    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3389        match value {
3390            "AUDIO_CHANNEL_BOTH" => Some(Self::Both),
3391            "AUDIO_CHANNEL_LEFT" => Some(Self::Left),
3392            "AUDIO_CHANNEL_RIGHT" => Some(Self::Right),
3393            _ => None,
3394        }
3395    }
3396}
3397// --- Encoding ---
3398
3399#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3400#[repr(i32)]
3401pub enum EncodingOptionsPreset {
3402    ///   1280x720, 30fps, 3000kpbs, H.264_MAIN / OPUS
3403    H264720p30 = 0,
3404    ///   1280x720, 60fps, 4500kbps, H.264_MAIN / OPUS
3405    H264720p60 = 1,
3406    /// 1920x1080, 30fps, 4500kbps, H.264_MAIN / OPUS
3407    H2641080p30 = 2,
3408    /// 1920x1080, 60fps, 6000kbps, H.264_MAIN / OPUS
3409    H2641080p60 = 3,
3410    ///   720x1280, 30fps, 3000kpbs, H.264_MAIN / OPUS
3411    PortraitH264720p30 = 4,
3412    ///   720x1280, 60fps, 4500kbps, H.264_MAIN / OPUS
3413    PortraitH264720p60 = 5,
3414    /// 1080x1920, 30fps, 4500kbps, H.264_MAIN / OPUS
3415    PortraitH2641080p30 = 6,
3416    /// 1080x1920, 60fps, 6000kbps, H.264_MAIN / OPUS
3417    PortraitH2641080p60 = 7,
3418    /// Skip transcoding. Valid only when specifying a single track with MediaSource
3419    Passthrough = 8,
3420}
3421impl EncodingOptionsPreset {
3422    /// String value of the enum field names used in the ProtoBuf definition.
3423    ///
3424    /// The values are not transformed in any way and thus are considered stable
3425    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3426    pub fn as_str_name(&self) -> &'static str {
3427        match self {
3428            Self::H264720p30 => "H264_720P_30",
3429            Self::H264720p60 => "H264_720P_60",
3430            Self::H2641080p30 => "H264_1080P_30",
3431            Self::H2641080p60 => "H264_1080P_60",
3432            Self::PortraitH264720p30 => "PORTRAIT_H264_720P_30",
3433            Self::PortraitH264720p60 => "PORTRAIT_H264_720P_60",
3434            Self::PortraitH2641080p30 => "PORTRAIT_H264_1080P_30",
3435            Self::PortraitH2641080p60 => "PORTRAIT_H264_1080P_60",
3436            Self::Passthrough => "PASSTHROUGH",
3437        }
3438    }
3439    /// Creates an enum from field names used in the ProtoBuf definition.
3440    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3441        match value {
3442            "H264_720P_30" => Some(Self::H264720p30),
3443            "H264_720P_60" => Some(Self::H264720p60),
3444            "H264_1080P_30" => Some(Self::H2641080p30),
3445            "H264_1080P_60" => Some(Self::H2641080p60),
3446            "PORTRAIT_H264_720P_30" => Some(Self::PortraitH264720p30),
3447            "PORTRAIT_H264_720P_60" => Some(Self::PortraitH264720p60),
3448            "PORTRAIT_H264_1080P_30" => Some(Self::PortraitH2641080p30),
3449            "PORTRAIT_H264_1080P_60" => Some(Self::PortraitH2641080p60),
3450            "PASSTHROUGH" => Some(Self::Passthrough),
3451            _ => None,
3452        }
3453    }
3454}
3455#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3456#[repr(i32)]
3457pub enum EncodedFileType {
3458    /// file type chosen based on codecs
3459    DefaultFiletype = 0,
3460    Mp4 = 1,
3461    Ogg = 2,
3462    Mp3 = 3,
3463}
3464impl EncodedFileType {
3465    /// String value of the enum field names used in the ProtoBuf definition.
3466    ///
3467    /// The values are not transformed in any way and thus are considered stable
3468    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3469    pub fn as_str_name(&self) -> &'static str {
3470        match self {
3471            Self::DefaultFiletype => "DEFAULT_FILETYPE",
3472            Self::Mp4 => "MP4",
3473            Self::Ogg => "OGG",
3474            Self::Mp3 => "MP3",
3475        }
3476    }
3477    /// Creates an enum from field names used in the ProtoBuf definition.
3478    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3479        match value {
3480            "DEFAULT_FILETYPE" => Some(Self::DefaultFiletype),
3481            "MP4" => Some(Self::Mp4),
3482            "OGG" => Some(Self::Ogg),
3483            "MP3" => Some(Self::Mp3),
3484            _ => None,
3485        }
3486    }
3487}
3488#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3489#[repr(i32)]
3490pub enum StreamProtocol {
3491    /// protocol chosen based on urls
3492    DefaultProtocol = 0,
3493    Rtmp = 1,
3494    Srt = 2,
3495    Websocket = 3,
3496}
3497impl StreamProtocol {
3498    /// String value of the enum field names used in the ProtoBuf definition.
3499    ///
3500    /// The values are not transformed in any way and thus are considered stable
3501    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3502    pub fn as_str_name(&self) -> &'static str {
3503        match self {
3504            Self::DefaultProtocol => "DEFAULT_PROTOCOL",
3505            Self::Rtmp => "RTMP",
3506            Self::Srt => "SRT",
3507            Self::Websocket => "WEBSOCKET",
3508        }
3509    }
3510    /// Creates an enum from field names used in the ProtoBuf definition.
3511    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3512        match value {
3513            "DEFAULT_PROTOCOL" => Some(Self::DefaultProtocol),
3514            "RTMP" => Some(Self::Rtmp),
3515            "SRT" => Some(Self::Srt),
3516            "WEBSOCKET" => Some(Self::Websocket),
3517            _ => None,
3518        }
3519    }
3520}
3521#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3522#[repr(i32)]
3523pub enum SegmentedFileProtocol {
3524    DefaultSegmentedFileProtocol = 0,
3525    HlsProtocol = 1,
3526}
3527impl SegmentedFileProtocol {
3528    /// String value of the enum field names used in the ProtoBuf definition.
3529    ///
3530    /// The values are not transformed in any way and thus are considered stable
3531    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3532    pub fn as_str_name(&self) -> &'static str {
3533        match self {
3534            Self::DefaultSegmentedFileProtocol => "DEFAULT_SEGMENTED_FILE_PROTOCOL",
3535            Self::HlsProtocol => "HLS_PROTOCOL",
3536        }
3537    }
3538    /// Creates an enum from field names used in the ProtoBuf definition.
3539    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3540        match value {
3541            "DEFAULT_SEGMENTED_FILE_PROTOCOL" => Some(Self::DefaultSegmentedFileProtocol),
3542            "HLS_PROTOCOL" => Some(Self::HlsProtocol),
3543            _ => None,
3544        }
3545    }
3546}
3547#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3548#[repr(i32)]
3549pub enum SegmentedFileSuffix {
3550    Index = 0,
3551    Timestamp = 1,
3552}
3553impl SegmentedFileSuffix {
3554    /// String value of the enum field names used in the ProtoBuf definition.
3555    ///
3556    /// The values are not transformed in any way and thus are considered stable
3557    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3558    pub fn as_str_name(&self) -> &'static str {
3559        match self {
3560            Self::Index => "INDEX",
3561            Self::Timestamp => "TIMESTAMP",
3562        }
3563    }
3564    /// Creates an enum from field names used in the ProtoBuf definition.
3565    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3566        match value {
3567            "INDEX" => Some(Self::Index),
3568            "TIMESTAMP" => Some(Self::Timestamp),
3569            _ => None,
3570        }
3571    }
3572}
3573#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3574#[repr(i32)]
3575pub enum ImageFileSuffix {
3576    ImageSuffixIndex = 0,
3577    ImageSuffixTimestamp = 1,
3578    /// Do not append any suffix and overwrite the existing image with the latest
3579    ImageSuffixNoneOverwrite = 2,
3580}
3581impl ImageFileSuffix {
3582    /// String value of the enum field names used in the ProtoBuf definition.
3583    ///
3584    /// The values are not transformed in any way and thus are considered stable
3585    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3586    pub fn as_str_name(&self) -> &'static str {
3587        match self {
3588            Self::ImageSuffixIndex => "IMAGE_SUFFIX_INDEX",
3589            Self::ImageSuffixTimestamp => "IMAGE_SUFFIX_TIMESTAMP",
3590            Self::ImageSuffixNoneOverwrite => "IMAGE_SUFFIX_NONE_OVERWRITE",
3591        }
3592    }
3593    /// Creates an enum from field names used in the ProtoBuf definition.
3594    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3595        match value {
3596            "IMAGE_SUFFIX_INDEX" => Some(Self::ImageSuffixIndex),
3597            "IMAGE_SUFFIX_TIMESTAMP" => Some(Self::ImageSuffixTimestamp),
3598            "IMAGE_SUFFIX_NONE_OVERWRITE" => Some(Self::ImageSuffixNoneOverwrite),
3599            _ => None,
3600        }
3601    }
3602}
3603#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3604#[repr(i32)]
3605pub enum EgressSourceType {
3606    Web = 0,
3607    Sdk = 1,
3608}
3609impl EgressSourceType {
3610    /// String value of the enum field names used in the ProtoBuf definition.
3611    ///
3612    /// The values are not transformed in any way and thus are considered stable
3613    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3614    pub fn as_str_name(&self) -> &'static str {
3615        match self {
3616            Self::Web => "EGRESS_SOURCE_TYPE_WEB",
3617            Self::Sdk => "EGRESS_SOURCE_TYPE_SDK",
3618        }
3619    }
3620    /// Creates an enum from field names used in the ProtoBuf definition.
3621    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3622        match value {
3623            "EGRESS_SOURCE_TYPE_WEB" => Some(Self::Web),
3624            "EGRESS_SOURCE_TYPE_SDK" => Some(Self::Sdk),
3625            _ => None,
3626        }
3627    }
3628}
3629#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3630#[repr(i32)]
3631pub enum EgressStatus {
3632    EgressStarting = 0,
3633    EgressActive = 1,
3634    EgressEnding = 2,
3635    EgressComplete = 3,
3636    EgressFailed = 4,
3637    EgressAborted = 5,
3638    EgressLimitReached = 6,
3639}
3640impl EgressStatus {
3641    /// String value of the enum field names used in the ProtoBuf definition.
3642    ///
3643    /// The values are not transformed in any way and thus are considered stable
3644    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3645    pub fn as_str_name(&self) -> &'static str {
3646        match self {
3647            Self::EgressStarting => "EGRESS_STARTING",
3648            Self::EgressActive => "EGRESS_ACTIVE",
3649            Self::EgressEnding => "EGRESS_ENDING",
3650            Self::EgressComplete => "EGRESS_COMPLETE",
3651            Self::EgressFailed => "EGRESS_FAILED",
3652            Self::EgressAborted => "EGRESS_ABORTED",
3653            Self::EgressLimitReached => "EGRESS_LIMIT_REACHED",
3654        }
3655    }
3656    /// Creates an enum from field names used in the ProtoBuf definition.
3657    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3658        match value {
3659            "EGRESS_STARTING" => Some(Self::EgressStarting),
3660            "EGRESS_ACTIVE" => Some(Self::EgressActive),
3661            "EGRESS_ENDING" => Some(Self::EgressEnding),
3662            "EGRESS_COMPLETE" => Some(Self::EgressComplete),
3663            "EGRESS_FAILED" => Some(Self::EgressFailed),
3664            "EGRESS_ABORTED" => Some(Self::EgressAborted),
3665            "EGRESS_LIMIT_REACHED" => Some(Self::EgressLimitReached),
3666            _ => None,
3667        }
3668    }
3669}
3670#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3671#[repr(i32)]
3672pub enum AudioMixing {
3673    DefaultMixing = 0,
3674    DualChannelAgent = 1,
3675    DualChannelAlternate = 2,
3676}
3677impl AudioMixing {
3678    /// String value of the enum field names used in the ProtoBuf definition.
3679    ///
3680    /// The values are not transformed in any way and thus are considered stable
3681    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3682    pub fn as_str_name(&self) -> &'static str {
3683        match self {
3684            Self::DefaultMixing => "DEFAULT_MIXING",
3685            Self::DualChannelAgent => "DUAL_CHANNEL_AGENT",
3686            Self::DualChannelAlternate => "DUAL_CHANNEL_ALTERNATE",
3687        }
3688    }
3689    /// Creates an enum from field names used in the ProtoBuf definition.
3690    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3691        match value {
3692            "DEFAULT_MIXING" => Some(Self::DefaultMixing),
3693            "DUAL_CHANNEL_AGENT" => Some(Self::DualChannelAgent),
3694            "DUAL_CHANNEL_ALTERNATE" => Some(Self::DualChannelAlternate),
3695            _ => None,
3696        }
3697    }
3698}
3699#[derive(Clone, PartialEq, ::prost::Message)]
3700pub struct SignalRequest {
3701    #[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, 22, 23")]
3702    pub message: ::core::option::Option<signal_request::Message>,
3703}
3704/// Nested message and enum types in `SignalRequest`.
3705pub mod signal_request {
3706    #[derive(Clone, PartialEq, ::prost::Oneof)]
3707    pub enum Message {
3708        /// participant offer for publisher
3709        #[prost(message, tag = "1")]
3710        Offer(super::SessionDescription),
3711        /// participant answering subscriber offer
3712        #[prost(message, tag = "2")]
3713        Answer(super::SessionDescription),
3714        #[prost(message, tag = "3")]
3715        Trickle(super::TrickleRequest),
3716        #[prost(message, tag = "4")]
3717        AddTrack(super::AddTrackRequest),
3718        /// mute the participant's published tracks
3719        #[prost(message, tag = "5")]
3720        Mute(super::MuteTrackRequest),
3721        /// Subscribe or unsubscribe from tracks
3722        #[prost(message, tag = "6")]
3723        Subscription(super::UpdateSubscription),
3724        /// Update settings of subscribed tracks
3725        #[prost(message, tag = "7")]
3726        TrackSetting(super::UpdateTrackSettings),
3727        /// Immediately terminate session
3728        #[prost(message, tag = "8")]
3729        Leave(super::LeaveRequest),
3730        /// Update published video layers
3731        #[deprecated]
3732        #[prost(message, tag = "10")]
3733        UpdateLayers(super::UpdateVideoLayers),
3734        /// Update subscriber permissions
3735        #[prost(message, tag = "11")]
3736        SubscriptionPermission(super::SubscriptionPermission),
3737        /// sync client's subscribe state to server during reconnect
3738        #[prost(message, tag = "12")]
3739        SyncState(super::SyncState),
3740        /// Simulate conditions, for client validations
3741        #[prost(message, tag = "13")]
3742        Simulate(super::SimulateScenario),
3743        /// client triggered ping to server
3744        ///
3745        /// deprecated by ping_req (message Ping)
3746        #[prost(int64, tag = "14")]
3747        Ping(i64),
3748        /// update a participant's own metadata, name, or attributes
3749        /// requires canUpdateOwnParticipantMetadata permission
3750        #[prost(message, tag = "15")]
3751        UpdateMetadata(super::UpdateParticipantMetadata),
3752        #[prost(message, tag = "16")]
3753        PingReq(super::Ping),
3754        /// Update local audio track settings
3755        #[prost(message, tag = "17")]
3756        UpdateAudioTrack(super::UpdateLocalAudioTrack),
3757        /// Update local video track settings
3758        #[prost(message, tag = "18")]
3759        UpdateVideoTrack(super::UpdateLocalVideoTrack),
3760        /// Publish a data track
3761        #[prost(message, tag = "19")]
3762        PublishDataTrackRequest(super::PublishDataTrackRequest),
3763        /// Unpublish a data track
3764        #[prost(message, tag = "20")]
3765        UnpublishDataTrackRequest(super::UnpublishDataTrackRequest),
3766        /// Update subscription state for one or more data tracks
3767        #[prost(message, tag = "21")]
3768        UpdateDataSubscription(super::UpdateDataSubscription),
3769        /// Store a data blob.
3770        #[prost(message, tag = "22")]
3771        StoreDataBlobRequest(super::StoreDataBlobRequest),
3772        /// Retrieve a stored data blob.
3773        #[prost(message, tag = "23")]
3774        GetDataBlobRequest(super::GetDataBlobRequest),
3775    }
3776}
3777#[derive(Clone, PartialEq, ::prost::Message)]
3778pub struct SignalResponse {
3779    #[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, 30, 31")]
3780    pub message: ::core::option::Option<signal_response::Message>,
3781}
3782/// Nested message and enum types in `SignalResponse`.
3783pub mod signal_response {
3784    #[derive(Clone, PartialEq, ::prost::Oneof)]
3785    pub enum Message {
3786        /// sent when join is accepted
3787        #[prost(message, tag = "1")]
3788        Join(super::JoinResponse),
3789        /// sent when server answers publisher
3790        #[prost(message, tag = "2")]
3791        Answer(super::SessionDescription),
3792        /// sent when server is sending subscriber an offer
3793        #[prost(message, tag = "3")]
3794        Offer(super::SessionDescription),
3795        /// sent when an ICE candidate is available
3796        #[prost(message, tag = "4")]
3797        Trickle(super::TrickleRequest),
3798        /// sent when participants in the room has changed
3799        #[prost(message, tag = "5")]
3800        Update(super::ParticipantUpdate),
3801        /// sent to the participant when their track has been published
3802        #[prost(message, tag = "6")]
3803        TrackPublished(super::TrackPublishedResponse),
3804        /// Immediately terminate session
3805        #[prost(message, tag = "8")]
3806        Leave(super::LeaveRequest),
3807        /// server initiated mute
3808        #[prost(message, tag = "9")]
3809        Mute(super::MuteTrackRequest),
3810        /// indicates changes to speaker status, including when they've gone to not speaking
3811        #[prost(message, tag = "10")]
3812        SpeakersChanged(super::SpeakersChanged),
3813        /// sent when metadata of the room has changed
3814        #[prost(message, tag = "11")]
3815        RoomUpdate(super::RoomUpdate),
3816        /// when connection quality changed
3817        #[prost(message, tag = "12")]
3818        ConnectionQuality(super::ConnectionQualityUpdate),
3819        /// when streamed tracks state changed, used to notify when any of the streams were paused due to
3820        /// congestion
3821        #[prost(message, tag = "13")]
3822        StreamStateUpdate(super::StreamStateUpdate),
3823        /// when max subscribe quality changed, used by dynamic broadcasting to disable unused layers
3824        #[prost(message, tag = "14")]
3825        SubscribedQualityUpdate(super::SubscribedQualityUpdate),
3826        /// when subscription permission changed
3827        #[prost(message, tag = "15")]
3828        SubscriptionPermissionUpdate(super::SubscriptionPermissionUpdate),
3829        /// update the token the client was using, to prevent an active client from using an expired token
3830        #[prost(string, tag = "16")]
3831        RefreshToken(::prost::alloc::string::String),
3832        /// server initiated track unpublish
3833        #[prost(message, tag = "17")]
3834        TrackUnpublished(super::TrackUnpublishedResponse),
3835        /// respond to ping
3836        ///
3837        /// deprecated by pong_resp (message Pong)
3838        #[prost(int64, tag = "18")]
3839        Pong(i64),
3840        /// sent when client reconnects
3841        #[prost(message, tag = "19")]
3842        Reconnect(super::ReconnectResponse),
3843        /// respond to Ping
3844        #[prost(message, tag = "20")]
3845        PongResp(super::Pong),
3846        /// Subscription response, client should not expect any media from this subscription if it fails
3847        #[prost(message, tag = "21")]
3848        SubscriptionResponse(super::SubscriptionResponse),
3849        /// Response relating to user inititated requests that carry a `request_id`
3850        #[prost(message, tag = "22")]
3851        RequestResponse(super::RequestResponse),
3852        /// notify to the publisher when a published track has been subscribed for the first time
3853        #[prost(message, tag = "23")]
3854        TrackSubscribed(super::TrackSubscribed),
3855        /// notify to the participant when they have been moved to a new room
3856        #[prost(message, tag = "24")]
3857        RoomMoved(super::RoomMovedResponse),
3858        /// notify number of required media sections to satisfy subscribed tracks
3859        #[prost(message, tag = "25")]
3860        MediaSectionsRequirement(super::MediaSectionsRequirement),
3861        /// when audio subscription changes, used to enable simulcasting of audio codecs based on subscriptions
3862        #[prost(message, tag = "26")]
3863        SubscribedAudioCodecUpdate(super::SubscribedAudioCodecUpdate),
3864        /// Sent in response to `PublishDataTrackRequest`.
3865        #[prost(message, tag = "27")]
3866        PublishDataTrackResponse(super::PublishDataTrackResponse),
3867        /// Sent in response to `UnpublishDataTrackRequest` or SFU-initiated unpublish.
3868        #[prost(message, tag = "28")]
3869        UnpublishDataTrackResponse(super::UnpublishDataTrackResponse),
3870        /// Sent to data track subscribers to provide mapping from track SIDs to handles.
3871        #[prost(message, tag = "29")]
3872        DataTrackSubscriberHandles(super::DataTrackSubscriberHandles),
3873        /// Sent in response to `StoreDataBlobRequest`.
3874        #[prost(message, tag = "30")]
3875        StoreDataBlobResponse(super::StoreDataBlobResponse),
3876        /// Sent in response to `GetDataBlobRequest`.
3877        #[prost(message, tag = "31")]
3878        GetDataBlobResponse(super::GetDataBlobResponse),
3879    }
3880}
3881#[derive(Clone, PartialEq, ::prost::Message)]
3882pub struct SimulcastCodec {
3883    #[prost(string, tag = "1")]
3884    pub codec: ::prost::alloc::string::String,
3885    #[prost(string, tag = "2")]
3886    pub cid: ::prost::alloc::string::String,
3887    #[prost(message, repeated, tag = "4")]
3888    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
3889    #[prost(enumeration = "video_layer::Mode", tag = "5")]
3890    pub video_layer_mode: i32,
3891}
3892#[derive(Clone, PartialEq, ::prost::Message)]
3893pub struct AddTrackRequest {
3894    /// client ID of track, to match it when RTC track is received
3895    #[prost(string, tag = "1")]
3896    pub cid: ::prost::alloc::string::String,
3897    #[prost(string, tag = "2")]
3898    pub name: ::prost::alloc::string::String,
3899    #[prost(enumeration = "TrackType", tag = "3")]
3900    pub r#type: i32,
3901    #[prost(uint32, tag = "4")]
3902    pub width: u32,
3903    #[prost(uint32, tag = "5")]
3904    pub height: u32,
3905    /// true to add track and initialize to muted
3906    #[prost(bool, tag = "6")]
3907    pub muted: bool,
3908    /// true if DTX (Discontinuous Transmission) is disabled for audio
3909    ///
3910    /// deprecated in favor of audio_features
3911    #[deprecated]
3912    #[prost(bool, tag = "7")]
3913    pub disable_dtx: bool,
3914    #[prost(enumeration = "TrackSource", tag = "8")]
3915    pub source: i32,
3916    #[prost(message, repeated, tag = "9")]
3917    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
3918    #[prost(message, repeated, tag = "10")]
3919    pub simulcast_codecs: ::prost::alloc::vec::Vec<SimulcastCodec>,
3920    /// server ID of track, publish new codec to exist track
3921    #[prost(string, tag = "11")]
3922    pub sid: ::prost::alloc::string::String,
3923    /// deprecated in favor of audio_features
3924    #[deprecated]
3925    #[prost(bool, tag = "12")]
3926    pub stereo: bool,
3927    /// true if RED (Redundant Encoding) is disabled for audio
3928    #[prost(bool, tag = "13")]
3929    pub disable_red: bool,
3930    #[prost(enumeration = "encryption::Type", tag = "14")]
3931    pub encryption: i32,
3932    /// which stream the track belongs to, used to group tracks together.
3933    /// if not specified, server will infer it from track source to bundle camera/microphone, screenshare/audio together
3934    #[prost(string, tag = "15")]
3935    pub stream: ::prost::alloc::string::String,
3936    #[prost(enumeration = "BackupCodecPolicy", tag = "16")]
3937    pub backup_codec_policy: i32,
3938    #[prost(enumeration = "AudioTrackFeature", repeated, tag = "17")]
3939    pub audio_features: ::prost::alloc::vec::Vec<i32>,
3940    #[prost(enumeration = "PacketTrailerFeature", repeated, tag = "18")]
3941    pub packet_trailer_features: ::prost::alloc::vec::Vec<i32>,
3942}
3943#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3944pub struct PublishDataTrackRequest {
3945    /// Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.
3946    /// This must be non-zero and unique for each data track published by the publisher.
3947    #[prost(uint32, tag = "1")]
3948    pub pub_handle: u32,
3949    /// Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.
3950    /// This must be non-empty and no longer than 256 characters.
3951    #[prost(string, tag = "2")]
3952    pub name: ::prost::alloc::string::String,
3953    /// Method used for end-to-end encryption (E2EE) on frame payloads.
3954    #[prost(enumeration = "encryption::Type", tag = "3")]
3955    pub encryption: i32,
3956    /// Encoding for frame payloads on this track. If unspecified, the track is untyped.
3957    #[prost(message, optional, tag = "4")]
3958    pub frame_encoding: ::core::option::Option<DataTrackFrameEncoding>,
3959    /// ID of the schema used by frames on this track if the track is typed.
3960    /// If set, the associated schema must be stored with `StoreDataBlobRequest`.
3961    #[prost(message, optional, tag = "5")]
3962    pub schema: ::core::option::Option<DataTrackSchemaId>,
3963}
3964#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3965pub struct PublishDataTrackResponse {
3966    /// Information about the published track.
3967    #[prost(message, optional, tag = "1")]
3968    pub info: ::core::option::Option<DataTrackInfo>,
3969}
3970#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3971pub struct UnpublishDataTrackRequest {
3972    /// Publisher handle of the track to unpublish.
3973    #[prost(uint32, tag = "1")]
3974    pub pub_handle: u32,
3975}
3976#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3977pub struct UnpublishDataTrackResponse {
3978    /// Information about the unpublished track.
3979    #[prost(message, optional, tag = "1")]
3980    pub info: ::core::option::Option<DataTrackInfo>,
3981}
3982#[derive(Clone, PartialEq, ::prost::Message)]
3983pub struct DataTrackSubscriberHandles {
3984    /// Maps handles from incoming packets to the track SIDs that the packets belong to.
3985    #[prost(map = "uint32, message", tag = "1")]
3986    pub sub_handles: ::std::collections::HashMap<u32, data_track_subscriber_handles::PublishedDataTrack>,
3987}
3988/// Nested message and enum types in `DataTrackSubscriberHandles`.
3989pub mod data_track_subscriber_handles {
3990    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3991    pub struct PublishedDataTrack {
3992        #[prost(string, tag = "1")]
3993        pub publisher_identity: ::prost::alloc::string::String,
3994        #[prost(string, tag = "2")]
3995        pub publisher_sid: ::prost::alloc::string::String,
3996        #[prost(string, tag = "3")]
3997        pub track_sid: ::prost::alloc::string::String,
3998    }
3999}
4000#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4001pub struct TrickleRequest {
4002    #[prost(string, tag = "1")]
4003    pub candidate_init: ::prost::alloc::string::String,
4004    #[prost(enumeration = "SignalTarget", tag = "2")]
4005    pub target: i32,
4006    #[prost(bool, tag = "3")]
4007    pub r#final: bool,
4008}
4009#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4010pub struct MuteTrackRequest {
4011    #[prost(string, tag = "1")]
4012    pub sid: ::prost::alloc::string::String,
4013    #[prost(bool, tag = "2")]
4014    pub muted: bool,
4015}
4016#[derive(Clone, PartialEq, ::prost::Message)]
4017pub struct JoinResponse {
4018    #[prost(message, optional, tag = "1")]
4019    pub room: ::core::option::Option<Room>,
4020    #[prost(message, optional, tag = "2")]
4021    pub participant: ::core::option::Option<ParticipantInfo>,
4022    #[prost(message, repeated, tag = "3")]
4023    pub other_participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
4024    /// deprecated. use server_info.version instead.
4025    #[prost(string, tag = "4")]
4026    pub server_version: ::prost::alloc::string::String,
4027    #[prost(message, repeated, tag = "5")]
4028    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
4029    /// use subscriber as the primary PeerConnection
4030    #[prost(bool, tag = "6")]
4031    pub subscriber_primary: bool,
4032    /// when the current server isn't available, return alternate url to retry connection
4033    /// when this is set, the other fields will be largely empty
4034    #[prost(string, tag = "7")]
4035    pub alternative_url: ::prost::alloc::string::String,
4036    #[prost(message, optional, tag = "8")]
4037    pub client_configuration: ::core::option::Option<ClientConfiguration>,
4038    /// deprecated. use server_info.region instead.
4039    #[prost(string, tag = "9")]
4040    pub server_region: ::prost::alloc::string::String,
4041    #[prost(int32, tag = "10")]
4042    pub ping_timeout: i32,
4043    #[prost(int32, tag = "11")]
4044    pub ping_interval: i32,
4045    #[prost(message, optional, tag = "12")]
4046    pub server_info: ::core::option::Option<ServerInfo>,
4047    /// Server-Injected-Frame byte trailer, used to identify unencrypted frames when e2ee is enabled
4048    #[prost(bytes = "vec", tag = "13")]
4049    pub sif_trailer: ::prost::alloc::vec::Vec<u8>,
4050    #[prost(message, repeated, tag = "14")]
4051    pub enabled_publish_codecs: ::prost::alloc::vec::Vec<Codec>,
4052    /// when set, client should attempt to establish publish peer connection when joining room to speed up publishing
4053    #[prost(bool, tag = "15")]
4054    pub fast_publish: bool,
4055}
4056#[derive(Clone, PartialEq, ::prost::Message)]
4057pub struct ReconnectResponse {
4058    #[prost(message, repeated, tag = "1")]
4059    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
4060    #[prost(message, optional, tag = "2")]
4061    pub client_configuration: ::core::option::Option<ClientConfiguration>,
4062    #[prost(message, optional, tag = "3")]
4063    pub server_info: ::core::option::Option<ServerInfo>,
4064    /// last sequence number of reliable message received before resuming
4065    #[prost(uint32, tag = "4")]
4066    pub last_message_seq: u32,
4067}
4068#[derive(Clone, PartialEq, ::prost::Message)]
4069pub struct TrackPublishedResponse {
4070    #[prost(string, tag = "1")]
4071    pub cid: ::prost::alloc::string::String,
4072    #[prost(message, optional, tag = "2")]
4073    pub track: ::core::option::Option<TrackInfo>,
4074}
4075#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4076pub struct TrackUnpublishedResponse {
4077    #[prost(string, tag = "1")]
4078    pub track_sid: ::prost::alloc::string::String,
4079}
4080#[derive(Clone, PartialEq, ::prost::Message)]
4081pub struct SessionDescription {
4082    /// "answer" | "offer" | "pranswer" | "rollback"
4083    #[prost(string, tag = "1")]
4084    pub r#type: ::prost::alloc::string::String,
4085    #[prost(string, tag = "2")]
4086    pub sdp: ::prost::alloc::string::String,
4087    #[prost(uint32, tag = "3")]
4088    pub id: u32,
4089    #[prost(map = "string, string", tag = "4")]
4090    pub mid_to_track_id: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4091}
4092#[derive(Clone, PartialEq, ::prost::Message)]
4093pub struct ParticipantUpdate {
4094    #[prost(message, repeated, tag = "1")]
4095    pub participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
4096}
4097#[derive(Clone, PartialEq, ::prost::Message)]
4098pub struct UpdateSubscription {
4099    #[prost(string, repeated, tag = "1")]
4100    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4101    #[prost(bool, tag = "2")]
4102    pub subscribe: bool,
4103    #[prost(message, repeated, tag = "3")]
4104    pub participant_tracks: ::prost::alloc::vec::Vec<ParticipantTracks>,
4105}
4106#[derive(Clone, PartialEq, ::prost::Message)]
4107pub struct UpdateDataSubscription {
4108    #[prost(message, repeated, tag = "1")]
4109    pub updates: ::prost::alloc::vec::Vec<update_data_subscription::Update>,
4110}
4111/// Nested message and enum types in `UpdateDataSubscription`.
4112pub mod update_data_subscription {
4113    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4114    pub struct Update {
4115        #[prost(string, tag = "1")]
4116        pub track_sid: ::prost::alloc::string::String,
4117        #[prost(bool, tag = "2")]
4118        pub subscribe: bool,
4119        /// Options to apply when initially subscribing or updating an existing subscription.
4120        /// When unsubscribing, this field is ignored.
4121        #[prost(message, optional, tag = "3")]
4122        pub options: ::core::option::Option<super::DataTrackSubscriptionOptions>,
4123    }
4124}
4125#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4126pub struct StoreDataBlobRequest {
4127    #[prost(uint32, tag = "1")]
4128    pub request_id: u32,
4129    #[prost(message, optional, tag = "2")]
4130    pub blob: ::core::option::Option<DataBlob>,
4131}
4132#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4133pub struct StoreDataBlobResponse {
4134    #[prost(uint32, tag = "1")]
4135    pub request_id: u32,
4136    /// Unique key the data blob was stored under.
4137    #[prost(message, optional, tag = "2")]
4138    pub key: ::core::option::Option<DataBlobKey>,
4139}
4140#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4141pub struct GetDataBlobRequest {
4142    #[prost(uint32, tag = "1")]
4143    pub request_id: u32,
4144    /// Identity of the participant who owns the blob.
4145    #[prost(string, tag = "2")]
4146    pub participant_identity: ::prost::alloc::string::String,
4147    /// Unique key of the data blob to retrieve.
4148    #[prost(message, optional, tag = "3")]
4149    pub key: ::core::option::Option<DataBlobKey>,
4150}
4151#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4152pub struct GetDataBlobResponse {
4153    #[prost(uint32, tag = "1")]
4154    pub request_id: u32,
4155    #[prost(message, optional, tag = "2")]
4156    pub blob: ::core::option::Option<DataBlob>,
4157}
4158#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4159pub struct UpdateTrackSettings {
4160    #[prost(string, repeated, tag = "1")]
4161    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4162    /// when true, the track is placed in a paused state, with no new data returned
4163    #[prost(bool, tag = "3")]
4164    pub disabled: bool,
4165    /// deprecated in favor of width & height
4166    #[prost(enumeration = "VideoQuality", tag = "4")]
4167    pub quality: i32,
4168    /// for video, width to receive
4169    #[prost(uint32, tag = "5")]
4170    pub width: u32,
4171    /// for video, height to receive
4172    #[prost(uint32, tag = "6")]
4173    pub height: u32,
4174    #[prost(uint32, tag = "7")]
4175    pub fps: u32,
4176    /// subscription priority. 1 being the highest (0 is unset)
4177    /// when unset, server sill assign priority based on the order of subscription
4178    /// server will use priority in the following ways:
4179    /// 1. when subscribed tracks exceed per-participant subscription limit, server will
4180    ///     pause the lowest priority tracks
4181    /// 2. when the network is congested, server will assign available bandwidth to
4182    ///     higher priority tracks first. lowest priority tracks can be paused
4183    #[prost(uint32, tag = "8")]
4184    pub priority: u32,
4185}
4186#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4187pub struct UpdateLocalAudioTrack {
4188    #[prost(string, tag = "1")]
4189    pub track_sid: ::prost::alloc::string::String,
4190    #[prost(enumeration = "AudioTrackFeature", repeated, tag = "2")]
4191    pub features: ::prost::alloc::vec::Vec<i32>,
4192}
4193#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4194pub struct UpdateLocalVideoTrack {
4195    #[prost(string, tag = "1")]
4196    pub track_sid: ::prost::alloc::string::String,
4197    #[prost(uint32, tag = "2")]
4198    pub width: u32,
4199    #[prost(uint32, tag = "3")]
4200    pub height: u32,
4201}
4202#[derive(Clone, PartialEq, ::prost::Message)]
4203pub struct LeaveRequest {
4204    /// sent when server initiates the disconnect due to server-restart
4205    /// indicates clients should attempt full-reconnect sequence
4206    /// NOTE: `can_reconnect` obsoleted by `action` starting in protocol version 13
4207    #[prost(bool, tag = "1")]
4208    pub can_reconnect: bool,
4209    #[prost(enumeration = "DisconnectReason", tag = "2")]
4210    pub reason: i32,
4211    #[prost(enumeration = "leave_request::Action", tag = "3")]
4212    pub action: i32,
4213    #[prost(message, optional, tag = "4")]
4214    pub regions: ::core::option::Option<RegionSettings>,
4215}
4216/// Nested message and enum types in `LeaveRequest`.
4217pub mod leave_request {
4218    /// indicates action clients should take on receiving this message
4219    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4220    #[repr(i32)]
4221    pub enum Action {
4222        /// should disconnect
4223        Disconnect = 0,
4224        /// should attempt a resume with `reconnect=1` in join URL
4225        Resume = 1,
4226        /// should attempt a reconnect, i. e. no `reconnect=1`
4227        Reconnect = 2,
4228    }
4229    impl Action {
4230        /// String value of the enum field names used in the ProtoBuf definition.
4231        ///
4232        /// The values are not transformed in any way and thus are considered stable
4233        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4234        pub fn as_str_name(&self) -> &'static str {
4235            match self {
4236                Self::Disconnect => "DISCONNECT",
4237                Self::Resume => "RESUME",
4238                Self::Reconnect => "RECONNECT",
4239            }
4240        }
4241        /// Creates an enum from field names used in the ProtoBuf definition.
4242        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4243            match value {
4244                "DISCONNECT" => Some(Self::Disconnect),
4245                "RESUME" => Some(Self::Resume),
4246                "RECONNECT" => Some(Self::Reconnect),
4247                _ => None,
4248            }
4249        }
4250    }
4251}
4252/// message to indicate published video track dimensions are changing
4253#[derive(Clone, PartialEq, ::prost::Message)]
4254pub struct UpdateVideoLayers {
4255    #[prost(string, tag = "1")]
4256    pub track_sid: ::prost::alloc::string::String,
4257    #[prost(message, repeated, tag = "2")]
4258    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
4259}
4260#[derive(Clone, PartialEq, ::prost::Message)]
4261pub struct UpdateParticipantMetadata {
4262    #[prost(string, tag = "1")]
4263    pub metadata: ::prost::alloc::string::String,
4264    #[prost(string, tag = "2")]
4265    pub name: ::prost::alloc::string::String,
4266    /// attributes to update. it only updates attributes that have been set
4267    /// to delete attributes, set the value to an empty string
4268    #[prost(map = "string, string", tag = "3")]
4269    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4270    #[prost(uint32, tag = "4")]
4271    pub request_id: u32,
4272}
4273#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4274pub struct IceServer {
4275    #[prost(string, repeated, tag = "1")]
4276    pub urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4277    #[prost(string, tag = "2")]
4278    pub username: ::prost::alloc::string::String,
4279    #[prost(string, tag = "3")]
4280    pub credential: ::prost::alloc::string::String,
4281}
4282#[derive(Clone, PartialEq, ::prost::Message)]
4283pub struct SpeakersChanged {
4284    #[prost(message, repeated, tag = "1")]
4285    pub speakers: ::prost::alloc::vec::Vec<SpeakerInfo>,
4286}
4287#[derive(Clone, PartialEq, ::prost::Message)]
4288pub struct RoomUpdate {
4289    #[prost(message, optional, tag = "1")]
4290    pub room: ::core::option::Option<Room>,
4291}
4292#[derive(Clone, PartialEq, ::prost::Message)]
4293pub struct ConnectionQualityInfo {
4294    #[prost(string, tag = "1")]
4295    pub participant_sid: ::prost::alloc::string::String,
4296    #[prost(enumeration = "ConnectionQuality", tag = "2")]
4297    pub quality: i32,
4298    #[prost(float, tag = "3")]
4299    pub score: f32,
4300}
4301#[derive(Clone, PartialEq, ::prost::Message)]
4302pub struct ConnectionQualityUpdate {
4303    #[prost(message, repeated, tag = "1")]
4304    pub updates: ::prost::alloc::vec::Vec<ConnectionQualityInfo>,
4305}
4306#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4307pub struct StreamStateInfo {
4308    #[prost(string, tag = "1")]
4309    pub participant_sid: ::prost::alloc::string::String,
4310    #[prost(string, tag = "2")]
4311    pub track_sid: ::prost::alloc::string::String,
4312    #[prost(enumeration = "StreamState", tag = "3")]
4313    pub state: i32,
4314}
4315#[derive(Clone, PartialEq, ::prost::Message)]
4316pub struct StreamStateUpdate {
4317    #[prost(message, repeated, tag = "1")]
4318    pub stream_states: ::prost::alloc::vec::Vec<StreamStateInfo>,
4319}
4320#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4321pub struct SubscribedQuality {
4322    #[prost(enumeration = "VideoQuality", tag = "1")]
4323    pub quality: i32,
4324    #[prost(bool, tag = "2")]
4325    pub enabled: bool,
4326}
4327#[derive(Clone, PartialEq, ::prost::Message)]
4328pub struct SubscribedCodec {
4329    #[prost(string, tag = "1")]
4330    pub codec: ::prost::alloc::string::String,
4331    #[prost(message, repeated, tag = "2")]
4332    pub qualities: ::prost::alloc::vec::Vec<SubscribedQuality>,
4333}
4334#[derive(Clone, PartialEq, ::prost::Message)]
4335pub struct SubscribedQualityUpdate {
4336    #[prost(string, tag = "1")]
4337    pub track_sid: ::prost::alloc::string::String,
4338    #[deprecated]
4339    #[prost(message, repeated, tag = "2")]
4340    pub subscribed_qualities: ::prost::alloc::vec::Vec<SubscribedQuality>,
4341    #[prost(message, repeated, tag = "3")]
4342    pub subscribed_codecs: ::prost::alloc::vec::Vec<SubscribedCodec>,
4343}
4344#[derive(Clone, PartialEq, ::prost::Message)]
4345pub struct SubscribedAudioCodecUpdate {
4346    #[prost(string, tag = "1")]
4347    pub track_sid: ::prost::alloc::string::String,
4348    #[prost(message, repeated, tag = "2")]
4349    pub subscribed_audio_codecs: ::prost::alloc::vec::Vec<SubscribedAudioCodec>,
4350}
4351#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4352pub struct TrackPermission {
4353    /// permission could be granted either by participant sid or identity
4354    #[prost(string, tag = "1")]
4355    pub participant_sid: ::prost::alloc::string::String,
4356    #[prost(bool, tag = "2")]
4357    pub all_tracks: bool,
4358    #[prost(string, repeated, tag = "3")]
4359    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4360    #[prost(string, tag = "4")]
4361    pub participant_identity: ::prost::alloc::string::String,
4362}
4363#[derive(Clone, PartialEq, ::prost::Message)]
4364pub struct SubscriptionPermission {
4365    #[prost(bool, tag = "1")]
4366    pub all_participants: bool,
4367    #[prost(message, repeated, tag = "2")]
4368    pub track_permissions: ::prost::alloc::vec::Vec<TrackPermission>,
4369}
4370#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4371pub struct SubscriptionPermissionUpdate {
4372    #[prost(string, tag = "1")]
4373    pub participant_sid: ::prost::alloc::string::String,
4374    #[prost(string, tag = "2")]
4375    pub track_sid: ::prost::alloc::string::String,
4376    #[prost(bool, tag = "3")]
4377    pub allowed: bool,
4378}
4379#[derive(Clone, PartialEq, ::prost::Message)]
4380pub struct RoomMovedResponse {
4381    /// information about the new room
4382    #[prost(message, optional, tag = "1")]
4383    pub room: ::core::option::Option<Room>,
4384    /// new reconnect token that can be used to reconnect to the new room
4385    #[prost(string, tag = "2")]
4386    pub token: ::prost::alloc::string::String,
4387    #[prost(message, optional, tag = "3")]
4388    pub participant: ::core::option::Option<ParticipantInfo>,
4389    #[prost(message, repeated, tag = "4")]
4390    pub other_participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
4391}
4392#[derive(Clone, PartialEq, ::prost::Message)]
4393pub struct SyncState {
4394    /// last subscribe/publish answer before reconnecting
4395    /// subscribe answer if using dual peer connection
4396    /// publish answer if using single peer connection
4397    #[prost(message, optional, tag = "1")]
4398    pub answer: ::core::option::Option<SessionDescription>,
4399    #[prost(message, optional, tag = "2")]
4400    pub subscription: ::core::option::Option<UpdateSubscription>,
4401    #[prost(message, repeated, tag = "3")]
4402    pub publish_tracks: ::prost::alloc::vec::Vec<TrackPublishedResponse>,
4403    #[prost(message, repeated, tag = "4")]
4404    pub data_channels: ::prost::alloc::vec::Vec<DataChannelInfo>,
4405    /// last received server side offer/sent client side offer before reconnecting
4406    /// received server side offer if using dual peer connection
4407    /// sent client side offer if using single peer connection
4408    #[prost(message, optional, tag = "5")]
4409    pub offer: ::core::option::Option<SessionDescription>,
4410    #[prost(string, repeated, tag = "6")]
4411    pub track_sids_disabled: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4412    #[prost(message, repeated, tag = "7")]
4413    pub datachannel_receive_states: ::prost::alloc::vec::Vec<DataChannelReceiveState>,
4414    #[prost(message, repeated, tag = "8")]
4415    pub publish_data_tracks: ::prost::alloc::vec::Vec<PublishDataTrackResponse>,
4416    #[prost(message, optional, tag = "9")]
4417    pub data_subscription: ::core::option::Option<UpdateDataSubscription>,
4418}
4419#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4420pub struct DataChannelReceiveState {
4421    #[prost(string, tag = "1")]
4422    pub publisher_sid: ::prost::alloc::string::String,
4423    #[prost(uint32, tag = "2")]
4424    pub last_seq: u32,
4425}
4426#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4427pub struct DataChannelInfo {
4428    #[prost(string, tag = "1")]
4429    pub label: ::prost::alloc::string::String,
4430    #[prost(uint32, tag = "2")]
4431    pub id: u32,
4432    #[prost(enumeration = "SignalTarget", tag = "3")]
4433    pub target: i32,
4434}
4435#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4436pub struct SimulateScenario {
4437    #[prost(oneof = "simulate_scenario::Scenario", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9")]
4438    pub scenario: ::core::option::Option<simulate_scenario::Scenario>,
4439}
4440/// Nested message and enum types in `SimulateScenario`.
4441pub mod simulate_scenario {
4442    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
4443    pub enum Scenario {
4444        /// simulate N seconds of speaker activity
4445        #[prost(int32, tag = "1")]
4446        SpeakerUpdate(i32),
4447        /// simulate local node failure
4448        #[prost(bool, tag = "2")]
4449        NodeFailure(bool),
4450        /// simulate migration
4451        #[prost(bool, tag = "3")]
4452        Migration(bool),
4453        /// server to send leave
4454        #[prost(bool, tag = "4")]
4455        ServerLeave(bool),
4456        /// switch candidate protocol to tcp
4457        #[prost(enumeration = "super::CandidateProtocol", tag = "5")]
4458        SwitchCandidateProtocol(i32),
4459        /// maximum bandwidth for subscribers, in bps
4460        /// when zero, clears artificial bandwidth limit
4461        #[prost(int64, tag = "6")]
4462        SubscriberBandwidth(i64),
4463        /// disconnect signal on resume
4464        #[prost(bool, tag = "7")]
4465        DisconnectSignalOnResume(bool),
4466        /// disconnect signal on resume before sending any messages from server
4467        #[prost(bool, tag = "8")]
4468        DisconnectSignalOnResumeNoMessages(bool),
4469        /// full reconnect leave request
4470        #[prost(bool, tag = "9")]
4471        LeaveRequestFullReconnect(bool),
4472    }
4473}
4474#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4475pub struct Ping {
4476    #[prost(int64, tag = "1")]
4477    pub timestamp: i64,
4478    /// rtt in milliseconds calculated by client
4479    #[prost(int64, tag = "2")]
4480    pub rtt: i64,
4481}
4482#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4483pub struct Pong {
4484    /// timestamp field of last received ping request
4485    #[prost(int64, tag = "1")]
4486    pub last_ping_timestamp: i64,
4487    #[prost(int64, tag = "2")]
4488    pub timestamp: i64,
4489}
4490#[derive(Clone, PartialEq, ::prost::Message)]
4491pub struct RegionSettings {
4492    #[prost(message, repeated, tag = "1")]
4493    pub regions: ::prost::alloc::vec::Vec<RegionInfo>,
4494}
4495#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4496pub struct RegionInfo {
4497    #[prost(string, tag = "1")]
4498    pub region: ::prost::alloc::string::String,
4499    #[prost(string, tag = "2")]
4500    pub url: ::prost::alloc::string::String,
4501    #[prost(int64, tag = "3")]
4502    pub distance: i64,
4503}
4504#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4505pub struct SubscriptionResponse {
4506    #[prost(string, tag = "1")]
4507    pub track_sid: ::prost::alloc::string::String,
4508    #[prost(enumeration = "SubscriptionError", tag = "2")]
4509    pub err: i32,
4510}
4511#[derive(Clone, PartialEq, ::prost::Message)]
4512pub struct RequestResponse {
4513    #[prost(uint32, tag = "1")]
4514    pub request_id: u32,
4515    #[prost(enumeration = "request_response::Reason", tag = "2")]
4516    pub reason: i32,
4517    #[prost(string, tag = "3")]
4518    pub message: ::prost::alloc::string::String,
4519    #[prost(oneof = "request_response::Request", tags = "4, 5, 6, 7, 8, 9, 10, 11")]
4520    pub request: ::core::option::Option<request_response::Request>,
4521}
4522/// Nested message and enum types in `RequestResponse`.
4523pub mod request_response {
4524    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4525    #[repr(i32)]
4526    pub enum Reason {
4527        Ok = 0,
4528        NotFound = 1,
4529        NotAllowed = 2,
4530        LimitExceeded = 3,
4531        Queued = 4,
4532        UnsupportedType = 5,
4533        UnclassifiedError = 6,
4534        InvalidHandle = 7,
4535        InvalidName = 8,
4536        DuplicateHandle = 9,
4537        DuplicateName = 10,
4538        InvalidRequest = 11,
4539    }
4540    impl Reason {
4541        /// String value of the enum field names used in the ProtoBuf definition.
4542        ///
4543        /// The values are not transformed in any way and thus are considered stable
4544        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4545        pub fn as_str_name(&self) -> &'static str {
4546            match self {
4547                Self::Ok => "OK",
4548                Self::NotFound => "NOT_FOUND",
4549                Self::NotAllowed => "NOT_ALLOWED",
4550                Self::LimitExceeded => "LIMIT_EXCEEDED",
4551                Self::Queued => "QUEUED",
4552                Self::UnsupportedType => "UNSUPPORTED_TYPE",
4553                Self::UnclassifiedError => "UNCLASSIFIED_ERROR",
4554                Self::InvalidHandle => "INVALID_HANDLE",
4555                Self::InvalidName => "INVALID_NAME",
4556                Self::DuplicateHandle => "DUPLICATE_HANDLE",
4557                Self::DuplicateName => "DUPLICATE_NAME",
4558                Self::InvalidRequest => "INVALID_REQUEST",
4559            }
4560        }
4561        /// Creates an enum from field names used in the ProtoBuf definition.
4562        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4563            match value {
4564                "OK" => Some(Self::Ok),
4565                "NOT_FOUND" => Some(Self::NotFound),
4566                "NOT_ALLOWED" => Some(Self::NotAllowed),
4567                "LIMIT_EXCEEDED" => Some(Self::LimitExceeded),
4568                "QUEUED" => Some(Self::Queued),
4569                "UNSUPPORTED_TYPE" => Some(Self::UnsupportedType),
4570                "UNCLASSIFIED_ERROR" => Some(Self::UnclassifiedError),
4571                "INVALID_HANDLE" => Some(Self::InvalidHandle),
4572                "INVALID_NAME" => Some(Self::InvalidName),
4573                "DUPLICATE_HANDLE" => Some(Self::DuplicateHandle),
4574                "DUPLICATE_NAME" => Some(Self::DuplicateName),
4575                "INVALID_REQUEST" => Some(Self::InvalidRequest),
4576                _ => None,
4577            }
4578        }
4579    }
4580    #[derive(Clone, PartialEq, ::prost::Oneof)]
4581    pub enum Request {
4582        #[prost(message, tag = "4")]
4583        Trickle(super::TrickleRequest),
4584        #[prost(message, tag = "5")]
4585        AddTrack(super::AddTrackRequest),
4586        #[prost(message, tag = "6")]
4587        Mute(super::MuteTrackRequest),
4588        #[prost(message, tag = "7")]
4589        UpdateMetadata(super::UpdateParticipantMetadata),
4590        #[prost(message, tag = "8")]
4591        UpdateAudioTrack(super::UpdateLocalAudioTrack),
4592        #[prost(message, tag = "9")]
4593        UpdateVideoTrack(super::UpdateLocalVideoTrack),
4594        #[prost(message, tag = "10")]
4595        PublishDataTrack(super::PublishDataTrackRequest),
4596        #[prost(message, tag = "11")]
4597        UnpublishDataTrack(super::UnpublishDataTrackRequest),
4598    }
4599}
4600#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4601pub struct TrackSubscribed {
4602    #[prost(string, tag = "1")]
4603    pub track_sid: ::prost::alloc::string::String,
4604}
4605#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4606pub struct ConnectionSettings {
4607    #[prost(bool, tag = "1")]
4608    pub auto_subscribe: bool,
4609    #[prost(bool, tag = "2")]
4610    pub adaptive_stream: bool,
4611    #[prost(bool, optional, tag = "3")]
4612    pub subscriber_allow_pause: ::core::option::Option<bool>,
4613    #[prost(bool, tag = "4")]
4614    pub disable_ice_lite: bool,
4615    #[prost(bool, optional, tag = "5")]
4616    pub auto_subscribe_data_track: ::core::option::Option<bool>,
4617}
4618#[derive(Clone, PartialEq, ::prost::Message)]
4619pub struct JoinRequest {
4620    #[prost(message, optional, tag = "1")]
4621    pub client_info: ::core::option::Option<ClientInfo>,
4622    #[prost(message, optional, tag = "2")]
4623    pub connection_settings: ::core::option::Option<ConnectionSettings>,
4624    /// if not empty, will overwrite `metadata` in token
4625    #[prost(string, tag = "3")]
4626    pub metadata: ::prost::alloc::string::String,
4627    /// will set keys provided via this
4628    /// will overwrite if the same key is in the token
4629    /// will not delete keys from token if there is a key collision and this sets that key to empty value
4630    #[prost(map = "string, string", tag = "4")]
4631    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4632    #[prost(message, repeated, tag = "5")]
4633    pub add_track_requests: ::prost::alloc::vec::Vec<AddTrackRequest>,
4634    #[prost(message, optional, tag = "6")]
4635    pub publisher_offer: ::core::option::Option<SessionDescription>,
4636    #[prost(bool, tag = "7")]
4637    pub reconnect: bool,
4638    #[prost(enumeration = "ReconnectReason", tag = "8")]
4639    pub reconnect_reason: i32,
4640    #[prost(string, tag = "9")]
4641    pub participant_sid: ::prost::alloc::string::String,
4642    #[prost(message, optional, tag = "10")]
4643    pub sync_state: ::core::option::Option<SyncState>,
4644}
4645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4646pub struct WrappedJoinRequest {
4647    #[prost(enumeration = "wrapped_join_request::Compression", tag = "1")]
4648    pub compression: i32,
4649    /// marshalled JoinRequest + potentially compressed
4650    #[prost(bytes = "vec", tag = "2")]
4651    pub join_request: ::prost::alloc::vec::Vec<u8>,
4652}
4653/// Nested message and enum types in `WrappedJoinRequest`.
4654pub mod wrapped_join_request {
4655    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4656    #[repr(i32)]
4657    pub enum Compression {
4658        None = 0,
4659        Gzip = 1,
4660    }
4661    impl Compression {
4662        /// String value of the enum field names used in the ProtoBuf definition.
4663        ///
4664        /// The values are not transformed in any way and thus are considered stable
4665        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4666        pub fn as_str_name(&self) -> &'static str {
4667            match self {
4668                Self::None => "NONE",
4669                Self::Gzip => "GZIP",
4670            }
4671        }
4672        /// Creates an enum from field names used in the ProtoBuf definition.
4673        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4674            match value {
4675                "NONE" => Some(Self::None),
4676                "GZIP" => Some(Self::Gzip),
4677                _ => None,
4678            }
4679        }
4680    }
4681}
4682#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4683pub struct MediaSectionsRequirement {
4684    #[prost(uint32, tag = "1")]
4685    pub num_audios: u32,
4686    #[prost(uint32, tag = "2")]
4687    pub num_videos: u32,
4688}
4689#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4690#[repr(i32)]
4691pub enum SignalTarget {
4692    Publisher = 0,
4693    Subscriber = 1,
4694}
4695impl SignalTarget {
4696    /// String value of the enum field names used in the ProtoBuf definition.
4697    ///
4698    /// The values are not transformed in any way and thus are considered stable
4699    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4700    pub fn as_str_name(&self) -> &'static str {
4701        match self {
4702            Self::Publisher => "PUBLISHER",
4703            Self::Subscriber => "SUBSCRIBER",
4704        }
4705    }
4706    /// Creates an enum from field names used in the ProtoBuf definition.
4707    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4708        match value {
4709            "PUBLISHER" => Some(Self::Publisher),
4710            "SUBSCRIBER" => Some(Self::Subscriber),
4711            _ => None,
4712        }
4713    }
4714}
4715#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4716#[repr(i32)]
4717pub enum StreamState {
4718    Active = 0,
4719    Paused = 1,
4720}
4721impl StreamState {
4722    /// String value of the enum field names used in the ProtoBuf definition.
4723    ///
4724    /// The values are not transformed in any way and thus are considered stable
4725    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4726    pub fn as_str_name(&self) -> &'static str {
4727        match self {
4728            Self::Active => "ACTIVE",
4729            Self::Paused => "PAUSED",
4730        }
4731    }
4732    /// Creates an enum from field names used in the ProtoBuf definition.
4733    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4734        match value {
4735            "ACTIVE" => Some(Self::Active),
4736            "PAUSED" => Some(Self::Paused),
4737            _ => None,
4738        }
4739    }
4740}
4741#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4742#[repr(i32)]
4743pub enum CandidateProtocol {
4744    Udp = 0,
4745    Tcp = 1,
4746    Tls = 2,
4747}
4748impl CandidateProtocol {
4749    /// String value of the enum field names used in the ProtoBuf definition.
4750    ///
4751    /// The values are not transformed in any way and thus are considered stable
4752    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4753    pub fn as_str_name(&self) -> &'static str {
4754        match self {
4755            Self::Udp => "UDP",
4756            Self::Tcp => "TCP",
4757            Self::Tls => "TLS",
4758        }
4759    }
4760    /// Creates an enum from field names used in the ProtoBuf definition.
4761    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4762        match value {
4763            "UDP" => Some(Self::Udp),
4764            "TCP" => Some(Self::Tcp),
4765            "TLS" => Some(Self::Tls),
4766            _ => None,
4767        }
4768    }
4769}
4770#[derive(Clone, PartialEq, ::prost::Message)]
4771pub struct Job {
4772    #[prost(string, tag = "1")]
4773    pub id: ::prost::alloc::string::String,
4774    #[prost(string, tag = "9")]
4775    pub dispatch_id: ::prost::alloc::string::String,
4776    #[prost(enumeration = "JobType", tag = "2")]
4777    pub r#type: i32,
4778    #[prost(message, optional, tag = "3")]
4779    pub room: ::core::option::Option<Room>,
4780    #[prost(message, optional, tag = "4")]
4781    pub participant: ::core::option::Option<ParticipantInfo>,
4782    #[deprecated]
4783    #[prost(string, tag = "5")]
4784    pub namespace: ::prost::alloc::string::String,
4785    #[prost(string, tag = "6")]
4786    pub metadata: ::prost::alloc::string::String,
4787    #[prost(string, tag = "7")]
4788    pub agent_name: ::prost::alloc::string::String,
4789    #[prost(message, optional, tag = "8")]
4790    pub state: ::core::option::Option<JobState>,
4791    #[prost(bool, tag = "10")]
4792    pub enable_recording: bool,
4793    #[prost(string, tag = "11")]
4794    pub deployment: ::prost::alloc::string::String,
4795    #[prost(map = "string, string", tag = "12")]
4796    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4797    #[prost(bool, tag = "13")]
4798    pub enable_redaction: bool,
4799}
4800#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4801pub struct JobState {
4802    #[prost(enumeration = "JobStatus", tag = "1")]
4803    pub status: i32,
4804    #[prost(string, tag = "2")]
4805    pub error: ::prost::alloc::string::String,
4806    #[prost(int64, tag = "3")]
4807    pub started_at: i64,
4808    #[prost(int64, tag = "4")]
4809    pub ended_at: i64,
4810    #[prost(int64, tag = "5")]
4811    pub updated_at: i64,
4812    #[prost(string, tag = "6")]
4813    pub participant_identity: ::prost::alloc::string::String,
4814    #[prost(string, tag = "7")]
4815    pub worker_id: ::prost::alloc::string::String,
4816    #[prost(string, tag = "8")]
4817    pub agent_id: ::prost::alloc::string::String,
4818}
4819/// from Worker to Server
4820#[derive(Clone, PartialEq, ::prost::Message)]
4821pub struct WorkerMessage {
4822    #[prost(oneof = "worker_message::Message", tags = "1, 2, 3, 4, 5, 6, 7")]
4823    pub message: ::core::option::Option<worker_message::Message>,
4824}
4825/// Nested message and enum types in `WorkerMessage`.
4826pub mod worker_message {
4827    #[derive(Clone, PartialEq, ::prost::Oneof)]
4828    pub enum Message {
4829        /// agent workers need to register themselves with the server first
4830        #[prost(message, tag = "1")]
4831        Register(super::RegisterWorkerRequest),
4832        /// worker confirms to server that it's available for a job, or declines it
4833        #[prost(message, tag = "2")]
4834        Availability(super::AvailabilityResponse),
4835        /// worker can update its status to the server, including taking itself out of the pool
4836        #[prost(message, tag = "3")]
4837        UpdateWorker(super::UpdateWorkerStatus),
4838        /// job can send status updates to the server, useful for tracking progress
4839        #[prost(message, tag = "4")]
4840        UpdateJob(super::UpdateJobStatus),
4841        #[prost(message, tag = "5")]
4842        Ping(super::WorkerPing),
4843        #[prost(message, tag = "6")]
4844        SimulateJob(super::SimulateJobRequest),
4845        #[prost(message, tag = "7")]
4846        MigrateJob(super::MigrateJobRequest),
4847    }
4848}
4849/// from Server to Worker
4850#[derive(Clone, PartialEq, ::prost::Message)]
4851pub struct ServerMessage {
4852    #[prost(oneof = "server_message::Message", tags = "1, 2, 3, 5, 4, 6")]
4853    pub message: ::core::option::Option<server_message::Message>,
4854}
4855/// Nested message and enum types in `ServerMessage`.
4856pub mod server_message {
4857    #[derive(Clone, PartialEq, ::prost::Oneof)]
4858    pub enum Message {
4859        /// server confirms the registration, from this moment on, the worker is considered active
4860        #[prost(message, tag = "1")]
4861        Register(super::RegisterWorkerResponse),
4862        /// server asks worker to confirm availability for a job
4863        #[prost(message, tag = "2")]
4864        Availability(super::AvailabilityRequest),
4865        #[prost(message, tag = "3")]
4866        Assignment(super::JobAssignment),
4867        #[prost(message, tag = "5")]
4868        Termination(super::JobTermination),
4869        #[prost(message, tag = "4")]
4870        Pong(super::WorkerPong),
4871        /// the server is draining this control connection: re-register elsewhere,
4872        /// in-flight agent HTTP streams run to completion
4873        #[prost(message, tag = "6")]
4874        GoAway(super::agent_http::GoAway),
4875    }
4876}
4877#[derive(Clone, PartialEq, ::prost::Message)]
4878pub struct SimulateJobRequest {
4879    #[prost(enumeration = "JobType", tag = "1")]
4880    pub r#type: i32,
4881    #[prost(message, optional, tag = "2")]
4882    pub room: ::core::option::Option<Room>,
4883    #[prost(message, optional, tag = "3")]
4884    pub participant: ::core::option::Option<ParticipantInfo>,
4885}
4886#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4887pub struct WorkerPing {
4888    #[prost(int64, tag = "1")]
4889    pub timestamp: i64,
4890}
4891#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4892pub struct WorkerPong {
4893    #[prost(int64, tag = "1")]
4894    pub last_timestamp: i64,
4895    #[prost(int64, tag = "2")]
4896    pub timestamp: i64,
4897}
4898#[derive(Clone, PartialEq, ::prost::Message)]
4899pub struct RegisterWorkerRequest {
4900    #[prost(enumeration = "JobType", tag = "1")]
4901    pub r#type: i32,
4902    #[prost(string, tag = "8")]
4903    pub agent_name: ::prost::alloc::string::String,
4904    #[prost(string, tag = "3")]
4905    pub version: ::prost::alloc::string::String,
4906    #[prost(uint32, tag = "5")]
4907    pub ping_interval: u32,
4908    #[prost(string, optional, tag = "6")]
4909    pub namespace: ::core::option::Option<::prost::alloc::string::String>,
4910    #[prost(message, optional, tag = "7")]
4911    pub allowed_permissions: ::core::option::Option<ParticipantPermission>,
4912    #[prost(string, tag = "9")]
4913    pub deployment: ::prost::alloc::string::String,
4914    /// HTTP endpoints this worker serves through the data plane, in route order.
4915    /// Empty means the worker exposes no endpoints and needs no data connections.
4916    #[prost(message, repeated, tag = "10")]
4917    pub endpoints: ::prost::alloc::vec::Vec<agent_http::AgentEndpoint>,
4918    /// random per process; a re-registration with a new instance_id supersedes the
4919    /// previous epoch and closes its remaining connections
4920    #[prost(string, tag = "11")]
4921    pub instance_id: ::prost::alloc::string::String,
4922    /// highest data-plane protocol version the worker supports; 0 = unsupported
4923    #[prost(uint32, tag = "12")]
4924    pub endpoint_protocol: u32,
4925}
4926#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4927pub struct RegisterWorkerResponse {
4928    #[prost(string, tag = "1")]
4929    pub worker_id: ::prost::alloc::string::String,
4930    #[prost(message, optional, tag = "3")]
4931    pub server_info: ::core::option::Option<ServerInfo>,
4932    /// present iff the registration carried endpoints and the server supports the data plane
4933    #[prost(message, optional, tag = "4")]
4934    pub endpoint_settings: ::core::option::Option<agent_http::AgentEndpointSettings>,
4935}
4936#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4937pub struct MigrateJobRequest {
4938    /// string job_id = 1 \[deprecated = true\];
4939    #[prost(string, repeated, tag = "2")]
4940    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4941}
4942#[derive(Clone, PartialEq, ::prost::Message)]
4943pub struct AvailabilityRequest {
4944    #[prost(message, optional, tag = "1")]
4945    pub job: ::core::option::Option<Job>,
4946    /// True when the job was previously assigned to another worker but has been
4947    /// migrated due to different reasons (e.g. worker failure, job migration)
4948    #[prost(bool, tag = "2")]
4949    pub resuming: bool,
4950}
4951#[derive(Clone, PartialEq, ::prost::Message)]
4952pub struct AvailabilityResponse {
4953    #[prost(string, tag = "1")]
4954    pub job_id: ::prost::alloc::string::String,
4955    #[prost(bool, tag = "2")]
4956    pub available: bool,
4957    #[prost(bool, tag = "3")]
4958    pub supports_resume: bool,
4959    #[prost(bool, tag = "8")]
4960    pub terminate: bool,
4961    #[prost(string, tag = "4")]
4962    pub participant_name: ::prost::alloc::string::String,
4963    #[prost(string, tag = "5")]
4964    pub participant_identity: ::prost::alloc::string::String,
4965    #[prost(string, tag = "6")]
4966    pub participant_metadata: ::prost::alloc::string::String,
4967    /// NEXT_ID: 9
4968    #[prost(map = "string, string", tag = "7")]
4969    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4970}
4971#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4972pub struct UpdateJobStatus {
4973    #[prost(string, tag = "1")]
4974    pub job_id: ::prost::alloc::string::String,
4975    /// The worker can indicate the job end by either specifying SUCCESS or FAILED
4976    #[prost(enumeration = "JobStatus", tag = "2")]
4977    pub status: i32,
4978    /// metadata shown on the dashboard, useful for debugging
4979    #[prost(string, tag = "3")]
4980    pub error: ::prost::alloc::string::String,
4981}
4982#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4983pub struct UpdateWorkerStatus {
4984    #[prost(enumeration = "WorkerStatus", optional, tag = "1")]
4985    pub status: ::core::option::Option<i32>,
4986    #[prost(float, tag = "3")]
4987    pub load: f32,
4988    #[prost(uint32, tag = "4")]
4989    pub job_count: u32,
4990    /// worker wants no new streams; existing streams run to completion
4991    #[prost(bool, tag = "5")]
4992    pub draining: bool,
4993    /// monotonic per registration; status updates may interleave across connections
4994    /// and a stale report must not regress newer state
4995    #[prost(uint64, tag = "6")]
4996    pub seq: u64,
4997}
4998#[derive(Clone, PartialEq, ::prost::Message)]
4999pub struct JobAssignment {
5000    #[prost(message, optional, tag = "1")]
5001    pub job: ::core::option::Option<Job>,
5002    #[prost(string, optional, tag = "2")]
5003    pub url: ::core::option::Option<::prost::alloc::string::String>,
5004    #[prost(string, tag = "3")]
5005    pub token: ::prost::alloc::string::String,
5006}
5007#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5008pub struct JobTermination {
5009    #[prost(string, tag = "1")]
5010    pub job_id: ::prost::alloc::string::String,
5011}
5012/// ----- agent HTTP endpoints data plane -----
5013///
5014/// AgentHttp namespaces the data plane: workers expose HTTP endpoints served at
5015/// /agents/{agent_name}/{deployment}/{path} without binding any local listener.
5016/// The worker opens ONE WebTransport (QUIC) session to /agent that carries both
5017/// its control stream (the same WorkerMessage/ServerMessage exchange as the
5018/// WebSocket control connection, length-delimited) and every HTTP exchange: the
5019/// node opens one bidirectional QUIC stream per request. QUIC provides the
5020/// multiplexing and per-stream flow control, so there is no credit accounting
5021/// and no attach handshake.
5022///
5023/// Each exchange stream is:
5024///
5025///    [len:u32be][StreamPreamble]   the only LiveKit framing
5026///    \[ ... opaque bytes ... \]      one HTTP/1.1 exchange, to FIN or RESET_STREAM
5027///
5028/// After the preamble the stream is byte-transparent: the node writes a
5029/// canonical HTTP/1.1 request and the worker replies with an HTTP/1.1 response,
5030/// each parsed by whatever HTTP implementation the side already has. A WebSocket
5031/// upgrade is therefore an ordinary request whose response is a 101, after which
5032/// the stream is a byte pipe. The protocol evolves by version negotiation at
5033/// registration, so the preamble carries no version of its own.
5034///
5035/// Bodies use ordinary HTTP/1.1 framing, Content-Length or chunked, and are
5036/// unbounded: a body may be many gigabytes and must be streamed. Request and
5037/// response size limits are policy for the layer above.
5038///
5039/// How one direction ends:
5040///
5041///    success             end of message per the body's own framing, then FIN.
5042///    failed mid-body     chunked trailer fields x-lk-completion and x-lk-error,
5043///                        in band, so the outcome cannot race the bytes it
5044///                        describes.
5045///    failed before any   RESET_STREAM carrying an HttpStreamResetCode, sound
5046///    bytes               only here, where nothing is in flight.
5047///
5048/// FIN before the body's own framing says it is complete is truncation, and a
5049/// receiver must surface it as such.
5050///
5051/// The x-lk- header prefix is reserved for this signalling in both directions.
5052/// A node strips it from client-supplied request headers, so a client cannot
5053/// forge one, and strips it from responses, so it never reaches the end client.
5054#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5055pub struct AgentHttp {
5056}
5057/// Nested message and enum types in `AgentHttp`.
5058pub mod agent_http {
5059    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5060    pub struct AgentEndpoint {
5061        /// starlette-style path template rooted at '/': {name} (one segment, default),
5062        /// {name:int}, {name:float}, {name:uuid} (constrained single segments),
5063        /// {name:path} (multi-segment). Custom converters are rejected.
5064        #[prost(string, tag = "1")]
5065        pub path: ::prost::alloc::string::String,
5066        /// uppercase, exactly as the application routes them (FastAPI does not imply
5067        /// HEAD from GET)
5068        #[prost(string, repeated, tag = "2")]
5069        pub methods: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5070        #[prost(enumeration = "AgentEndpointKind", tag = "3")]
5071        pub kind: i32,
5072        /// reachable without a project token
5073        #[prost(bool, tag = "4")]
5074        pub public: bool,
5075    }
5076    /// registration-level settings negotiated on the control connection, returned
5077    /// in RegisterWorkerResponse when the worker declares endpoints and the server
5078    /// supports the data plane.
5079    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5080    pub struct AgentEndpointSettings {
5081        /// the negotiated data-plane protocol version; the worker speaks exactly this
5082        /// or closes the session
5083        #[prost(uint32, tag = "1")]
5084        pub protocol: u32,
5085    }
5086    /// the first thing on every exchange stream, node -> worker. It carries only
5087    /// what the worker cannot derive from the HTTP bytes that follow and what it
5088    /// must not infer from client-supplied headers - identity above all.
5089    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5090    pub struct StreamPreamble {
5091        /// what the bytes after this preamble are. A field rather than a framing
5092        /// tag, so a new stream semantic costs no new mechanism.
5093        #[prost(enumeration = "AgentEndpointKind", tag = "1")]
5094        pub kind: i32,
5095        #[prost(string, tag = "2")]
5096        pub request_id: ::prost::alloc::string::String,
5097        /// the caller holds agent-endpoint call permission for this agent and
5098        /// deployment. Always true on a non-public route.
5099        #[prost(bool, tag = "3")]
5100        pub authorized: bool,
5101        /// the manifest template that matched, e.g. "/items/{id}"
5102        #[prost(string, tag = "4")]
5103        pub route: ::prost::alloc::string::String,
5104        /// relative, because node and worker clocks are not synchronized. 0 imposes
5105        /// no deadline.
5106        #[prost(uint32, tag = "5")]
5107        pub timeout_ms: u32,
5108        /// end client address, host only
5109        #[prost(string, tag = "6")]
5110        pub client_addr: ::prost::alloc::string::String,
5111        /// "http" or "https" as the end client saw it; not derivable worker-side
5112        ///
5113        /// NEXT_ID: 8
5114        #[prost(string, tag = "7")]
5115        pub scheme: ::prost::alloc::string::String,
5116    }
5117    /// the server is draining: the worker should re-register elsewhere; in-flight
5118    /// HTTP exchanges run to completion
5119    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5120    pub struct GoAway {
5121        #[prost(string, tag = "1")]
5122        pub reason: ::prost::alloc::string::String,
5123    }
5124    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5125    #[repr(i32)]
5126    pub enum AgentEndpointKind {
5127        AekHttp = 0,
5128        /// reserved for future text-mode endpoints
5129        AekText = 1,
5130    }
5131    impl AgentEndpointKind {
5132        /// String value of the enum field names used in the ProtoBuf definition.
5133        ///
5134        /// The values are not transformed in any way and thus are considered stable
5135        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5136        pub fn as_str_name(&self) -> &'static str {
5137            match self {
5138                Self::AekHttp => "AEK_HTTP",
5139                Self::AekText => "AEK_TEXT",
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                "AEK_HTTP" => Some(Self::AekHttp),
5146                "AEK_TEXT" => Some(Self::AekText),
5147                _ => None,
5148            }
5149        }
5150    }
5151    /// why a stream was reset before any HTTP bytes flowed. This travels as the
5152    /// QUIC RESET_STREAM / STOP_SENDING error code, so it is a number with no room
5153    /// for detail: the reason string is logged by the side that reset and joined
5154    /// to this by request_id. An outcome after bytes have flowed travels in
5155    /// trailers instead, where it cannot race them.
5156    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5157    #[repr(i32)]
5158    pub enum HttpStreamResetCode {
5159        /// no information. The ordinary cancel code, sent whenever a stream is torn
5160        /// down without a specific outcome, so it must stay the zero value and must
5161        /// not imply that anything was or was not applied.
5162        HsrAbort = 0,
5163        /// the worker aborted before any application code observed the request, so
5164        /// nothing was applied and the exchange is safe to retry. Requires that the
5165        /// application was never entered; a 404 it returned is an ordinary response.
5166        HsrRefused = 1,
5167        /// the application was entered and then failed before producing a response
5168        /// head; side effects may already have happened, so this is not safe to
5169        /// retry.
5170        HsrInternal = 2,
5171        /// the deadline elapsed before a response head was produced
5172        HsrTimeout = 3,
5173        /// the peer's bytes were not valid HTTP/1.1
5174        HsrProtocol = 4,
5175    }
5176    impl HttpStreamResetCode {
5177        /// String value of the enum field names used in the ProtoBuf definition.
5178        ///
5179        /// The values are not transformed in any way and thus are considered stable
5180        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5181        pub fn as_str_name(&self) -> &'static str {
5182            match self {
5183                Self::HsrAbort => "HSR_ABORT",
5184                Self::HsrRefused => "HSR_REFUSED",
5185                Self::HsrInternal => "HSR_INTERNAL",
5186                Self::HsrTimeout => "HSR_TIMEOUT",
5187                Self::HsrProtocol => "HSR_PROTOCOL",
5188            }
5189        }
5190        /// Creates an enum from field names used in the ProtoBuf definition.
5191        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5192            match value {
5193                "HSR_ABORT" => Some(Self::HsrAbort),
5194                "HSR_REFUSED" => Some(Self::HsrRefused),
5195                "HSR_INTERNAL" => Some(Self::HsrInternal),
5196                "HSR_TIMEOUT" => Some(Self::HsrTimeout),
5197                "HSR_PROTOCOL" => Some(Self::HsrProtocol),
5198                _ => None,
5199            }
5200        }
5201    }
5202}
5203#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5204#[repr(i32)]
5205pub enum JobType {
5206    JtRoom = 0,
5207    JtPublisher = 1,
5208    JtParticipant = 2,
5209}
5210impl JobType {
5211    /// String value of the enum field names used in the ProtoBuf definition.
5212    ///
5213    /// The values are not transformed in any way and thus are considered stable
5214    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5215    pub fn as_str_name(&self) -> &'static str {
5216        match self {
5217            Self::JtRoom => "JT_ROOM",
5218            Self::JtPublisher => "JT_PUBLISHER",
5219            Self::JtParticipant => "JT_PARTICIPANT",
5220        }
5221    }
5222    /// Creates an enum from field names used in the ProtoBuf definition.
5223    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5224        match value {
5225            "JT_ROOM" => Some(Self::JtRoom),
5226            "JT_PUBLISHER" => Some(Self::JtPublisher),
5227            "JT_PARTICIPANT" => Some(Self::JtParticipant),
5228            _ => None,
5229        }
5230    }
5231}
5232#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5233#[repr(i32)]
5234pub enum WorkerStatus {
5235    WsAvailable = 0,
5236    WsFull = 1,
5237}
5238impl WorkerStatus {
5239    /// String value of the enum field names used in the ProtoBuf definition.
5240    ///
5241    /// The values are not transformed in any way and thus are considered stable
5242    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5243    pub fn as_str_name(&self) -> &'static str {
5244        match self {
5245            Self::WsAvailable => "WS_AVAILABLE",
5246            Self::WsFull => "WS_FULL",
5247        }
5248    }
5249    /// Creates an enum from field names used in the ProtoBuf definition.
5250    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5251        match value {
5252            "WS_AVAILABLE" => Some(Self::WsAvailable),
5253            "WS_FULL" => Some(Self::WsFull),
5254            _ => None,
5255        }
5256    }
5257}
5258#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5259#[repr(i32)]
5260pub enum JobStatus {
5261    JsPending = 0,
5262    JsRunning = 1,
5263    JsSuccess = 2,
5264    JsFailed = 3,
5265}
5266impl JobStatus {
5267    /// String value of the enum field names used in the ProtoBuf definition.
5268    ///
5269    /// The values are not transformed in any way and thus are considered stable
5270    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5271    pub fn as_str_name(&self) -> &'static str {
5272        match self {
5273            Self::JsPending => "JS_PENDING",
5274            Self::JsRunning => "JS_RUNNING",
5275            Self::JsSuccess => "JS_SUCCESS",
5276            Self::JsFailed => "JS_FAILED",
5277        }
5278    }
5279    /// Creates an enum from field names used in the ProtoBuf definition.
5280    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5281        match value {
5282            "JS_PENDING" => Some(Self::JsPending),
5283            "JS_RUNNING" => Some(Self::JsRunning),
5284            "JS_SUCCESS" => Some(Self::JsSuccess),
5285            "JS_FAILED" => Some(Self::JsFailed),
5286            _ => None,
5287        }
5288    }
5289}
5290#[derive(Clone, PartialEq, ::prost::Message)]
5291pub struct CreateAgentDispatchRequest {
5292    #[prost(string, tag = "1")]
5293    pub agent_name: ::prost::alloc::string::String,
5294    #[prost(string, tag = "2")]
5295    pub room: ::prost::alloc::string::String,
5296    #[prost(string, tag = "3")]
5297    pub metadata: ::prost::alloc::string::String,
5298    /// cloud only
5299    #[prost(enumeration = "JobRestartPolicy", tag = "4")]
5300    pub restart_policy: i32,
5301    #[prost(string, tag = "5")]
5302    pub deployment: ::prost::alloc::string::String,
5303    #[prost(map = "string, string", tag = "6")]
5304    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5305}
5306#[derive(Clone, PartialEq, ::prost::Message)]
5307pub struct RoomAgentDispatch {
5308    #[prost(string, tag = "1")]
5309    pub agent_name: ::prost::alloc::string::String,
5310    #[prost(string, tag = "2")]
5311    pub metadata: ::prost::alloc::string::String,
5312    /// cloud only
5313    #[prost(enumeration = "JobRestartPolicy", tag = "3")]
5314    pub restart_policy: i32,
5315    #[prost(string, tag = "4")]
5316    pub deployment: ::prost::alloc::string::String,
5317    #[prost(map = "string, string", tag = "5")]
5318    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5319}
5320#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5321pub struct DeleteAgentDispatchRequest {
5322    #[prost(string, tag = "1")]
5323    pub dispatch_id: ::prost::alloc::string::String,
5324    #[prost(string, tag = "2")]
5325    pub room: ::prost::alloc::string::String,
5326}
5327#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5328pub struct ListAgentDispatchRequest {
5329    /// if set, only the dispatch whose id is given will be returned
5330    #[prost(string, tag = "1")]
5331    pub dispatch_id: ::prost::alloc::string::String,
5332    /// name of the room to list agents for. Must be set.
5333    #[prost(string, tag = "2")]
5334    pub room: ::prost::alloc::string::String,
5335}
5336#[derive(Clone, PartialEq, ::prost::Message)]
5337pub struct ListAgentDispatchResponse {
5338    #[prost(message, repeated, tag = "1")]
5339    pub agent_dispatches: ::prost::alloc::vec::Vec<AgentDispatch>,
5340}
5341#[derive(Clone, PartialEq, ::prost::Message)]
5342pub struct AgentDispatch {
5343    #[prost(string, tag = "1")]
5344    pub id: ::prost::alloc::string::String,
5345    #[prost(string, tag = "2")]
5346    pub agent_name: ::prost::alloc::string::String,
5347    #[prost(string, tag = "3")]
5348    pub room: ::prost::alloc::string::String,
5349    #[prost(string, tag = "4")]
5350    pub metadata: ::prost::alloc::string::String,
5351    #[prost(message, optional, tag = "5")]
5352    pub state: ::core::option::Option<AgentDispatchState>,
5353    /// cloud only
5354    #[prost(enumeration = "JobRestartPolicy", tag = "6")]
5355    pub restart_policy: i32,
5356    #[prost(string, tag = "7")]
5357    pub deployment: ::prost::alloc::string::String,
5358    #[prost(map = "string, string", tag = "8")]
5359    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5360}
5361#[derive(Clone, PartialEq, ::prost::Message)]
5362pub struct AgentDispatchState {
5363    /// For dispatches of tyoe JT_ROOM, there will be at most 1 job.
5364    /// For dispatches of type JT_PUBLISHER, there will be 1 per publisher.
5365    #[prost(message, repeated, tag = "1")]
5366    pub jobs: ::prost::alloc::vec::Vec<Job>,
5367    #[prost(int64, tag = "2")]
5368    pub created_at: i64,
5369    #[prost(int64, tag = "3")]
5370    pub deleted_at: i64,
5371}
5372#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5373#[repr(i32)]
5374pub enum JobRestartPolicy {
5375    /// restart when the job fails (default)
5376    JrpOnFailure = 0,
5377    /// never restart
5378    JrpNever = 1,
5379}
5380impl JobRestartPolicy {
5381    /// String value of the enum field names used in the ProtoBuf definition.
5382    ///
5383    /// The values are not transformed in any way and thus are considered stable
5384    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5385    pub fn as_str_name(&self) -> &'static str {
5386        match self {
5387            Self::JrpOnFailure => "JRP_ON_FAILURE",
5388            Self::JrpNever => "JRP_NEVER",
5389        }
5390    }
5391    /// Creates an enum from field names used in the ProtoBuf definition.
5392    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5393        match value {
5394            "JRP_ON_FAILURE" => Some(Self::JrpOnFailure),
5395            "JRP_NEVER" => Some(Self::JrpNever),
5396            _ => None,
5397        }
5398    }
5399}
5400#[derive(Clone, PartialEq, ::prost::Message)]
5401pub struct CreateRoomRequest {
5402    /// name of the room
5403    #[prost(string, tag = "1")]
5404    pub name: ::prost::alloc::string::String,
5405    /// configuration to use for this room parameters. Setting parameters below override the config defaults.
5406    #[prost(string, tag = "12")]
5407    pub room_preset: ::prost::alloc::string::String,
5408    /// number of seconds to keep the room open if no one joins
5409    #[prost(uint32, tag = "2")]
5410    pub empty_timeout: u32,
5411    /// number of seconds to keep the room open after everyone leaves
5412    #[prost(uint32, tag = "10")]
5413    pub departure_timeout: u32,
5414    /// limit number of participants that can be in a room
5415    #[prost(uint32, tag = "3")]
5416    pub max_participants: u32,
5417    /// override the node room is allocated to, for debugging
5418    #[prost(string, tag = "4")]
5419    pub node_id: ::prost::alloc::string::String,
5420    /// metadata of room
5421    #[prost(string, tag = "5")]
5422    pub metadata: ::prost::alloc::string::String,
5423    /// search tags
5424    #[prost(map = "string, string", tag = "15")]
5425    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5426    /// auto-egress configurations
5427    #[prost(message, optional, tag = "6")]
5428    pub egress: ::core::option::Option<RoomEgress>,
5429    /// playout delay of subscriber
5430    #[prost(uint32, tag = "7")]
5431    pub min_playout_delay: u32,
5432    #[prost(uint32, tag = "8")]
5433    pub max_playout_delay: u32,
5434    /// improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use
5435    /// so not recommended for rooms with frequent subscription changes
5436    #[prost(bool, tag = "9")]
5437    pub sync_streams: bool,
5438    /// replay
5439    #[prost(bool, tag = "13")]
5440    pub replay_enabled: bool,
5441    /// Define agents that should be dispatched to this room
5442    #[prost(message, repeated, tag = "14")]
5443    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
5444}
5445#[derive(Clone, PartialEq, ::prost::Message)]
5446pub struct RoomEgress {
5447    #[prost(message, optional, tag = "1")]
5448    pub room: ::core::option::Option<RoomCompositeEgressRequest>,
5449    #[prost(message, optional, tag = "3")]
5450    pub participant: ::core::option::Option<AutoParticipantEgress>,
5451    #[prost(message, optional, tag = "2")]
5452    pub tracks: ::core::option::Option<AutoTrackEgress>,
5453}
5454#[derive(Clone, PartialEq, ::prost::Message)]
5455pub struct RoomAgent {
5456    #[prost(message, repeated, tag = "1")]
5457    pub dispatches: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
5458}
5459#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5460pub struct ListRoomsRequest {
5461    /// when set, will only return rooms with name match
5462    #[prost(string, repeated, tag = "1")]
5463    pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5464}
5465#[derive(Clone, PartialEq, ::prost::Message)]
5466pub struct ListRoomsResponse {
5467    #[prost(message, repeated, tag = "1")]
5468    pub rooms: ::prost::alloc::vec::Vec<Room>,
5469}
5470#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5471pub struct DeleteRoomRequest {
5472    /// name of the room
5473    #[prost(string, tag = "1")]
5474    pub room: ::prost::alloc::string::String,
5475}
5476#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5477pub struct DeleteRoomResponse {
5478}
5479#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5480pub struct ListParticipantsRequest {
5481    /// name of the room
5482    #[prost(string, tag = "1")]
5483    pub room: ::prost::alloc::string::String,
5484}
5485#[derive(Clone, PartialEq, ::prost::Message)]
5486pub struct ListParticipantsResponse {
5487    #[prost(message, repeated, tag = "1")]
5488    pub participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
5489}
5490#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5491pub struct RoomParticipantIdentity {
5492    /// name of the room
5493    #[prost(string, tag = "1")]
5494    pub room: ::prost::alloc::string::String,
5495    /// identity of the participant
5496    #[prost(string, tag = "2")]
5497    pub identity: ::prost::alloc::string::String,
5498    /// Unix timestamp used to invalidate token whose nbf is before this value.
5499    /// Used only by RemoveParticipant; defaults to now(server)+leeway(1min) if left empty.
5500    #[prost(int64, tag = "3")]
5501    pub revoke_token_ts: i64,
5502}
5503#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5504pub struct RemoveParticipantResponse {
5505}
5506#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5507pub struct MuteRoomTrackRequest {
5508    /// name of the room
5509    #[prost(string, tag = "1")]
5510    pub room: ::prost::alloc::string::String,
5511    #[prost(string, tag = "2")]
5512    pub identity: ::prost::alloc::string::String,
5513    /// sid of the track to mute
5514    #[prost(string, tag = "3")]
5515    pub track_sid: ::prost::alloc::string::String,
5516    /// set to true to mute, false to unmute
5517    #[prost(bool, tag = "4")]
5518    pub muted: bool,
5519}
5520#[derive(Clone, PartialEq, ::prost::Message)]
5521pub struct MuteRoomTrackResponse {
5522    #[prost(message, optional, tag = "1")]
5523    pub track: ::core::option::Option<TrackInfo>,
5524}
5525#[derive(Clone, PartialEq, ::prost::Message)]
5526pub struct UpdateParticipantRequest {
5527    #[prost(string, tag = "1")]
5528    pub room: ::prost::alloc::string::String,
5529    #[prost(string, tag = "2")]
5530    pub identity: ::prost::alloc::string::String,
5531    /// metadata to update. skipping updates if left empty
5532    #[prost(string, tag = "3")]
5533    pub metadata: ::prost::alloc::string::String,
5534    /// set to update the participant's permissions
5535    #[prost(message, optional, tag = "4")]
5536    pub permission: ::core::option::Option<ParticipantPermission>,
5537    /// display name to update
5538    #[prost(string, tag = "5")]
5539    pub name: ::prost::alloc::string::String,
5540    /// attributes to update. it only updates attributes that have been set
5541    /// to delete attributes, set the value to an empty string
5542    #[prost(map = "string, string", tag = "6")]
5543    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5544}
5545#[derive(Clone, PartialEq, ::prost::Message)]
5546pub struct UpdateSubscriptionsRequest {
5547    #[prost(string, tag = "1")]
5548    pub room: ::prost::alloc::string::String,
5549    #[prost(string, tag = "2")]
5550    pub identity: ::prost::alloc::string::String,
5551    /// list of sids of tracks
5552    #[prost(string, repeated, tag = "3")]
5553    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5554    /// set to true to subscribe, false to unsubscribe from tracks
5555    #[prost(bool, tag = "4")]
5556    pub subscribe: bool,
5557    /// list of participants and their tracks
5558    #[prost(message, repeated, tag = "5")]
5559    pub participant_tracks: ::prost::alloc::vec::Vec<ParticipantTracks>,
5560}
5561/// empty for now
5562#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5563pub struct UpdateSubscriptionsResponse {
5564}
5565#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5566pub struct SendDataRequest {
5567    #[prost(string, tag = "1")]
5568    pub room: ::prost::alloc::string::String,
5569    #[prost(bytes = "vec", tag = "2")]
5570    pub data: ::prost::alloc::vec::Vec<u8>,
5571    #[prost(enumeration = "data_packet::Kind", tag = "3")]
5572    pub kind: i32,
5573    /// mark deprecated
5574    #[deprecated]
5575    #[prost(string, repeated, tag = "4")]
5576    pub destination_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5577    /// when set, only forward to these identities
5578    #[prost(string, repeated, tag = "6")]
5579    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5580    #[prost(string, optional, tag = "5")]
5581    pub topic: ::core::option::Option<::prost::alloc::string::String>,
5582    /// added by SDK to enable de-duping of messages, for INTERNAL USE ONLY
5583    #[prost(bytes = "vec", tag = "7")]
5584    pub nonce: ::prost::alloc::vec::Vec<u8>,
5585}
5586///
5587#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5588pub struct SendDataResponse {
5589}
5590#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5591pub struct UpdateRoomMetadataRequest {
5592    #[prost(string, tag = "1")]
5593    pub room: ::prost::alloc::string::String,
5594    /// metadata to update. skipping updates if left empty
5595    #[prost(string, tag = "2")]
5596    pub metadata: ::prost::alloc::string::String,
5597}
5598#[derive(Clone, PartialEq, ::prost::Message)]
5599pub struct RoomConfiguration {
5600    /// Used as ID, must be unique
5601    #[prost(string, tag = "1")]
5602    pub name: ::prost::alloc::string::String,
5603    /// number of seconds to keep the room open if no one joins
5604    #[prost(uint32, tag = "2")]
5605    pub empty_timeout: u32,
5606    /// number of seconds to keep the room open after everyone leaves
5607    #[prost(uint32, tag = "3")]
5608    pub departure_timeout: u32,
5609    /// limit number of participants that can be in a room, excluding Egress and Agent participants
5610    #[prost(uint32, tag = "4")]
5611    pub max_participants: u32,
5612    /// metadata of room
5613    #[prost(string, tag = "11")]
5614    pub metadata: ::prost::alloc::string::String,
5615    /// egress
5616    #[prost(message, optional, tag = "5")]
5617    pub egress: ::core::option::Option<RoomEgress>,
5618    /// playout delay of subscriber
5619    #[prost(uint32, tag = "7")]
5620    pub min_playout_delay: u32,
5621    #[prost(uint32, tag = "8")]
5622    pub max_playout_delay: u32,
5623    /// improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use
5624    /// so not recommended for rooms with frequent subscription changes
5625    #[prost(bool, tag = "9")]
5626    pub sync_streams: bool,
5627    /// Define agents that should be dispatched to this room
5628    #[prost(message, repeated, tag = "10")]
5629    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
5630    /// Tags to attach to the room
5631    #[prost(map = "string, string", tag = "12")]
5632    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5633}
5634#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5635pub struct ForwardParticipantRequest {
5636    /// room to forward participant from
5637    #[prost(string, tag = "1")]
5638    pub room: ::prost::alloc::string::String,
5639    /// identity of the participant to forward
5640    #[prost(string, tag = "2")]
5641    pub identity: ::prost::alloc::string::String,
5642    /// room to forward participant to
5643    #[prost(string, tag = "3")]
5644    pub destination_room: ::prost::alloc::string::String,
5645}
5646#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5647pub struct ForwardParticipantResponse {
5648}
5649#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5650pub struct MoveParticipantRequest {
5651    /// room to move participant from
5652    #[prost(string, tag = "1")]
5653    pub room: ::prost::alloc::string::String,
5654    /// identity of the participant to move to
5655    #[prost(string, tag = "2")]
5656    pub identity: ::prost::alloc::string::String,
5657    /// room to move participant to
5658    #[prost(string, tag = "3")]
5659    pub destination_room: ::prost::alloc::string::String,
5660}
5661#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5662pub struct MoveParticipantResponse {
5663}
5664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5665pub struct PerformRpcRequest {
5666    #[prost(string, tag = "1")]
5667    pub room: ::prost::alloc::string::String,
5668    #[prost(string, tag = "2")]
5669    pub destination_identity: ::prost::alloc::string::String,
5670    #[prost(string, tag = "3")]
5671    pub method: ::prost::alloc::string::String,
5672    #[prost(string, tag = "4")]
5673    pub payload: ::prost::alloc::string::String,
5674    #[prost(uint32, tag = "5")]
5675    pub response_timeout_ms: u32,
5676}
5677#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5678pub struct PerformRpcResponse {
5679    #[prost(string, tag = "1")]
5680    pub payload: ::prost::alloc::string::String,
5681}
5682#[derive(Clone, PartialEq, ::prost::Message)]
5683pub struct CreateIngressRequest {
5684    #[prost(enumeration = "IngressInput", tag = "1")]
5685    pub input_type: i32,
5686    /// Where to pull media from, only for URL input type
5687    #[prost(string, tag = "9")]
5688    pub url: ::prost::alloc::string::String,
5689    /// User provided identifier for the ingress
5690    #[prost(string, tag = "2")]
5691    pub name: ::prost::alloc::string::String,
5692    /// room to publish to
5693    #[prost(string, tag = "3")]
5694    pub room_name: ::prost::alloc::string::String,
5695    /// publish as participant
5696    #[prost(string, tag = "4")]
5697    pub participant_identity: ::prost::alloc::string::String,
5698    /// name of publishing participant (used for display only)
5699    #[prost(string, tag = "5")]
5700    pub participant_name: ::prost::alloc::string::String,
5701    /// metadata associated with the publishing participant
5702    #[prost(string, tag = "10")]
5703    pub participant_metadata: ::prost::alloc::string::String,
5704    /// \[depreacted \] whether to pass through the incoming media without transcoding, only compatible with some input types. Use `enable_transcoding` instead.
5705    #[deprecated]
5706    #[prost(bool, tag = "8")]
5707    pub bypass_transcoding: bool,
5708    /// Whether to transcode the ingested media. Only WHIP supports disabling transcoding currently. WHIP will default to transcoding disabled. Replaces `bypass_transcoding. 
5709    #[prost(bool, optional, tag = "11")]
5710    pub enable_transcoding: ::core::option::Option<bool>,
5711    #[prost(message, optional, tag = "6")]
5712    pub audio: ::core::option::Option<IngressAudioOptions>,
5713    #[prost(message, optional, tag = "7")]
5714    pub video: ::core::option::Option<IngressVideoOptions>,
5715    /// The default value is true and when set to false, the new connection attempts will be rejected
5716    #[prost(bool, optional, tag = "12")]
5717    pub enabled: ::core::option::Option<bool>,
5718}
5719#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5720pub struct IngressAudioOptions {
5721    #[prost(string, tag = "1")]
5722    pub name: ::prost::alloc::string::String,
5723    #[prost(enumeration = "TrackSource", tag = "2")]
5724    pub source: i32,
5725    #[prost(oneof = "ingress_audio_options::EncodingOptions", tags = "3, 4")]
5726    pub encoding_options: ::core::option::Option<ingress_audio_options::EncodingOptions>,
5727}
5728/// Nested message and enum types in `IngressAudioOptions`.
5729pub mod ingress_audio_options {
5730    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
5731    pub enum EncodingOptions {
5732        #[prost(enumeration = "super::IngressAudioEncodingPreset", tag = "3")]
5733        Preset(i32),
5734        #[prost(message, tag = "4")]
5735        Options(super::IngressAudioEncodingOptions),
5736    }
5737}
5738#[derive(Clone, PartialEq, ::prost::Message)]
5739pub struct IngressVideoOptions {
5740    #[prost(string, tag = "1")]
5741    pub name: ::prost::alloc::string::String,
5742    #[prost(enumeration = "TrackSource", tag = "2")]
5743    pub source: i32,
5744    #[prost(oneof = "ingress_video_options::EncodingOptions", tags = "3, 4")]
5745    pub encoding_options: ::core::option::Option<ingress_video_options::EncodingOptions>,
5746}
5747/// Nested message and enum types in `IngressVideoOptions`.
5748pub mod ingress_video_options {
5749    #[derive(Clone, PartialEq, ::prost::Oneof)]
5750    pub enum EncodingOptions {
5751        #[prost(enumeration = "super::IngressVideoEncodingPreset", tag = "3")]
5752        Preset(i32),
5753        #[prost(message, tag = "4")]
5754        Options(super::IngressVideoEncodingOptions),
5755    }
5756}
5757#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5758pub struct IngressAudioEncodingOptions {
5759    /// desired audio codec to publish to room
5760    #[prost(enumeration = "AudioCodec", tag = "1")]
5761    pub audio_codec: i32,
5762    #[prost(uint32, tag = "2")]
5763    pub bitrate: u32,
5764    #[prost(bool, tag = "3")]
5765    pub disable_dtx: bool,
5766    #[prost(uint32, tag = "4")]
5767    pub channels: u32,
5768}
5769#[derive(Clone, PartialEq, ::prost::Message)]
5770pub struct IngressVideoEncodingOptions {
5771    /// desired codec to publish to room
5772    #[prost(enumeration = "VideoCodec", tag = "1")]
5773    pub video_codec: i32,
5774    #[prost(double, tag = "2")]
5775    pub frame_rate: f64,
5776    /// simulcast layers to publish, when empty, should usually be set to layers at 1/2 and 1/4 of the dimensions
5777    #[prost(message, repeated, tag = "3")]
5778    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
5779}
5780#[derive(Clone, PartialEq, ::prost::Message)]
5781pub struct IngressInfo {
5782    #[prost(string, tag = "1")]
5783    pub ingress_id: ::prost::alloc::string::String,
5784    #[prost(string, tag = "2")]
5785    pub name: ::prost::alloc::string::String,
5786    #[prost(string, tag = "3")]
5787    pub stream_key: ::prost::alloc::string::String,
5788    /// URL to point the encoder to for push (RTMP, WHIP), or location to pull media from for pull (URL)
5789    #[prost(string, tag = "4")]
5790    pub url: ::prost::alloc::string::String,
5791    /// for RTMP input, it'll be a rtmp:// URL
5792    /// for FILE input, it'll be a http:// URL
5793    /// for SRT input, it'll be a srt:// URL
5794    #[prost(enumeration = "IngressInput", tag = "5")]
5795    pub input_type: i32,
5796    #[deprecated]
5797    #[prost(bool, tag = "13")]
5798    pub bypass_transcoding: bool,
5799    #[prost(bool, optional, tag = "15")]
5800    pub enable_transcoding: ::core::option::Option<bool>,
5801    #[prost(message, optional, tag = "6")]
5802    pub audio: ::core::option::Option<IngressAudioOptions>,
5803    #[prost(message, optional, tag = "7")]
5804    pub video: ::core::option::Option<IngressVideoOptions>,
5805    #[prost(string, tag = "8")]
5806    pub room_name: ::prost::alloc::string::String,
5807    #[prost(string, tag = "9")]
5808    pub participant_identity: ::prost::alloc::string::String,
5809    #[prost(string, tag = "10")]
5810    pub participant_name: ::prost::alloc::string::String,
5811    #[prost(string, tag = "14")]
5812    pub participant_metadata: ::prost::alloc::string::String,
5813    #[prost(bool, tag = "11")]
5814    pub reusable: bool,
5815    /// Description of error/stream non compliance and debug info for publisher otherwise (received bitrate, resolution, bandwidth)
5816    #[prost(message, optional, tag = "12")]
5817    pub state: ::core::option::Option<IngressState>,
5818    /// The default value is true and when set to false, the new connection attempts will be rejected
5819    #[prost(bool, optional, tag = "16")]
5820    pub enabled: ::core::option::Option<bool>,
5821}
5822#[derive(Clone, PartialEq, ::prost::Message)]
5823pub struct IngressState {
5824    #[prost(enumeration = "ingress_state::Status", tag = "1")]
5825    pub status: i32,
5826    /// Error/non compliance description if any
5827    #[prost(string, tag = "2")]
5828    pub error: ::prost::alloc::string::String,
5829    #[prost(message, optional, tag = "3")]
5830    pub video: ::core::option::Option<InputVideoState>,
5831    #[prost(message, optional, tag = "4")]
5832    pub audio: ::core::option::Option<InputAudioState>,
5833    /// ID of the current/previous room published to
5834    #[prost(string, tag = "5")]
5835    pub room_id: ::prost::alloc::string::String,
5836    #[prost(int64, tag = "7")]
5837    pub started_at: i64,
5838    #[prost(int64, tag = "8")]
5839    pub ended_at: i64,
5840    #[prost(int64, tag = "10")]
5841    pub updated_at: i64,
5842    #[prost(string, tag = "9")]
5843    pub resource_id: ::prost::alloc::string::String,
5844    #[prost(message, repeated, tag = "6")]
5845    pub tracks: ::prost::alloc::vec::Vec<TrackInfo>,
5846}
5847/// Nested message and enum types in `IngressState`.
5848pub mod ingress_state {
5849    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5850    #[repr(i32)]
5851    pub enum Status {
5852        EndpointInactive = 0,
5853        EndpointBuffering = 1,
5854        EndpointPublishing = 2,
5855        EndpointError = 3,
5856        EndpointComplete = 4,
5857    }
5858    impl Status {
5859        /// String value of the enum field names used in the ProtoBuf definition.
5860        ///
5861        /// The values are not transformed in any way and thus are considered stable
5862        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5863        pub fn as_str_name(&self) -> &'static str {
5864            match self {
5865                Self::EndpointInactive => "ENDPOINT_INACTIVE",
5866                Self::EndpointBuffering => "ENDPOINT_BUFFERING",
5867                Self::EndpointPublishing => "ENDPOINT_PUBLISHING",
5868                Self::EndpointError => "ENDPOINT_ERROR",
5869                Self::EndpointComplete => "ENDPOINT_COMPLETE",
5870            }
5871        }
5872        /// Creates an enum from field names used in the ProtoBuf definition.
5873        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5874            match value {
5875                "ENDPOINT_INACTIVE" => Some(Self::EndpointInactive),
5876                "ENDPOINT_BUFFERING" => Some(Self::EndpointBuffering),
5877                "ENDPOINT_PUBLISHING" => Some(Self::EndpointPublishing),
5878                "ENDPOINT_ERROR" => Some(Self::EndpointError),
5879                "ENDPOINT_COMPLETE" => Some(Self::EndpointComplete),
5880                _ => None,
5881            }
5882        }
5883    }
5884}
5885#[derive(Clone, PartialEq, ::prost::Message)]
5886pub struct InputVideoState {
5887    #[prost(string, tag = "1")]
5888    pub mime_type: ::prost::alloc::string::String,
5889    #[prost(uint32, tag = "2")]
5890    pub average_bitrate: u32,
5891    #[prost(uint32, tag = "3")]
5892    pub width: u32,
5893    #[prost(uint32, tag = "4")]
5894    pub height: u32,
5895    #[prost(double, tag = "5")]
5896    pub framerate: f64,
5897}
5898#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5899pub struct InputAudioState {
5900    #[prost(string, tag = "1")]
5901    pub mime_type: ::prost::alloc::string::String,
5902    #[prost(uint32, tag = "2")]
5903    pub average_bitrate: u32,
5904    #[prost(uint32, tag = "3")]
5905    pub channels: u32,
5906    #[prost(uint32, tag = "4")]
5907    pub sample_rate: u32,
5908}
5909#[derive(Clone, PartialEq, ::prost::Message)]
5910pub struct UpdateIngressRequest {
5911    #[prost(string, tag = "1")]
5912    pub ingress_id: ::prost::alloc::string::String,
5913    #[prost(string, tag = "2")]
5914    pub name: ::prost::alloc::string::String,
5915    #[prost(string, tag = "3")]
5916    pub room_name: ::prost::alloc::string::String,
5917    #[prost(string, tag = "4")]
5918    pub participant_identity: ::prost::alloc::string::String,
5919    #[prost(string, tag = "5")]
5920    pub participant_name: ::prost::alloc::string::String,
5921    #[prost(string, tag = "9")]
5922    pub participant_metadata: ::prost::alloc::string::String,
5923    #[deprecated]
5924    #[prost(bool, optional, tag = "8")]
5925    pub bypass_transcoding: ::core::option::Option<bool>,
5926    #[prost(bool, optional, tag = "10")]
5927    pub enable_transcoding: ::core::option::Option<bool>,
5928    #[prost(message, optional, tag = "6")]
5929    pub audio: ::core::option::Option<IngressAudioOptions>,
5930    #[prost(message, optional, tag = "7")]
5931    pub video: ::core::option::Option<IngressVideoOptions>,
5932    /// The default value is true and when set to false, the new connection attempts will be rejected
5933    #[prost(bool, optional, tag = "11")]
5934    pub enabled: ::core::option::Option<bool>,
5935}
5936#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5937pub struct ListIngressRequest {
5938    #[prost(message, optional, tag = "3")]
5939    pub page_token: ::core::option::Option<TokenPagination>,
5940    /// when blank, lists all ingress endpoints
5941    ///
5942    /// (optional, filter by room name)
5943    #[prost(string, tag = "1")]
5944    pub room_name: ::prost::alloc::string::String,
5945    /// (optional, filter by ingress ID)
5946    #[prost(string, tag = "2")]
5947    pub ingress_id: ::prost::alloc::string::String,
5948}
5949#[derive(Clone, PartialEq, ::prost::Message)]
5950pub struct ListIngressResponse {
5951    #[prost(message, optional, tag = "2")]
5952    pub next_page_token: ::core::option::Option<TokenPagination>,
5953    /// next field id: 3
5954    #[prost(message, repeated, tag = "1")]
5955    pub items: ::prost::alloc::vec::Vec<IngressInfo>,
5956}
5957#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5958pub struct DeleteIngressRequest {
5959    #[prost(string, tag = "1")]
5960    pub ingress_id: ::prost::alloc::string::String,
5961}
5962#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5963#[repr(i32)]
5964pub enum IngressInput {
5965    RtmpInput = 0,
5966    WhipInput = 1,
5967    /// Pull from the provided URL. Only HTTP url are supported, serving either a single media file or a HLS stream
5968    UrlInput = 2,
5969}
5970impl IngressInput {
5971    /// String value of the enum field names used in the ProtoBuf definition.
5972    ///
5973    /// The values are not transformed in any way and thus are considered stable
5974    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5975    pub fn as_str_name(&self) -> &'static str {
5976        match self {
5977            Self::RtmpInput => "RTMP_INPUT",
5978            Self::WhipInput => "WHIP_INPUT",
5979            Self::UrlInput => "URL_INPUT",
5980        }
5981    }
5982    /// Creates an enum from field names used in the ProtoBuf definition.
5983    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5984        match value {
5985            "RTMP_INPUT" => Some(Self::RtmpInput),
5986            "WHIP_INPUT" => Some(Self::WhipInput),
5987            "URL_INPUT" => Some(Self::UrlInput),
5988            _ => None,
5989        }
5990    }
5991}
5992#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5993#[repr(i32)]
5994pub enum IngressAudioEncodingPreset {
5995    /// OPUS, 2 channels, 96kbps
5996    OpusStereo96kbps = 0,
5997    /// OPUS, 1 channel, 64kbps
5998    OpusMono64kbs = 1,
5999}
6000impl IngressAudioEncodingPreset {
6001    /// String value of the enum field names used in the ProtoBuf definition.
6002    ///
6003    /// The values are not transformed in any way and thus are considered stable
6004    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6005    pub fn as_str_name(&self) -> &'static str {
6006        match self {
6007            Self::OpusStereo96kbps => "OPUS_STEREO_96KBPS",
6008            Self::OpusMono64kbs => "OPUS_MONO_64KBS",
6009        }
6010    }
6011    /// Creates an enum from field names used in the ProtoBuf definition.
6012    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6013        match value {
6014            "OPUS_STEREO_96KBPS" => Some(Self::OpusStereo96kbps),
6015            "OPUS_MONO_64KBS" => Some(Self::OpusMono64kbs),
6016            _ => None,
6017        }
6018    }
6019}
6020#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6021#[repr(i32)]
6022pub enum IngressVideoEncodingPreset {
6023    /// 1280x720,  30fps, 1900kbps main layer, 3 layers total
6024    H264720p30fps3Layers = 0,
6025    /// 1980x1080, 30fps, 3500kbps main layer, 3 layers total
6026    H2641080p30fps3Layers = 1,
6027    ///   960x540,  25fps, 1000kbps  main layer, 2 layers total
6028    H264540p25fps2Layers = 2,
6029    /// 1280x720,  30fps, 1900kbps, no simulcast
6030    H264720p30fps1Layer = 3,
6031    /// 1980x1080, 30fps, 3500kbps, no simulcast
6032    H2641080p30fps1Layer = 4,
6033    /// 1280x720,  30fps, 2500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content
6034    H264720p30fps3LayersHighMotion = 5,
6035    /// 1980x1080, 30fps, 4500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content
6036    H2641080p30fps3LayersHighMotion = 6,
6037    ///   960x540,  25fps, 1300kbps  main layer, 2 layers total, higher bitrate for high motion, harder to encode content
6038    H264540p25fps2LayersHighMotion = 7,
6039    /// 1280x720,  30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content
6040    H264720p30fps1LayerHighMotion = 8,
6041    /// 1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content
6042    H2641080p30fps1LayerHighMotion = 9,
6043}
6044impl IngressVideoEncodingPreset {
6045    /// String value of the enum field names used in the ProtoBuf definition.
6046    ///
6047    /// The values are not transformed in any way and thus are considered stable
6048    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6049    pub fn as_str_name(&self) -> &'static str {
6050        match self {
6051            Self::H264720p30fps3Layers => "H264_720P_30FPS_3_LAYERS",
6052            Self::H2641080p30fps3Layers => "H264_1080P_30FPS_3_LAYERS",
6053            Self::H264540p25fps2Layers => "H264_540P_25FPS_2_LAYERS",
6054            Self::H264720p30fps1Layer => "H264_720P_30FPS_1_LAYER",
6055            Self::H2641080p30fps1Layer => "H264_1080P_30FPS_1_LAYER",
6056            Self::H264720p30fps3LayersHighMotion => "H264_720P_30FPS_3_LAYERS_HIGH_MOTION",
6057            Self::H2641080p30fps3LayersHighMotion => "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION",
6058            Self::H264540p25fps2LayersHighMotion => "H264_540P_25FPS_2_LAYERS_HIGH_MOTION",
6059            Self::H264720p30fps1LayerHighMotion => "H264_720P_30FPS_1_LAYER_HIGH_MOTION",
6060            Self::H2641080p30fps1LayerHighMotion => "H264_1080P_30FPS_1_LAYER_HIGH_MOTION",
6061        }
6062    }
6063    /// Creates an enum from field names used in the ProtoBuf definition.
6064    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6065        match value {
6066            "H264_720P_30FPS_3_LAYERS" => Some(Self::H264720p30fps3Layers),
6067            "H264_1080P_30FPS_3_LAYERS" => Some(Self::H2641080p30fps3Layers),
6068            "H264_540P_25FPS_2_LAYERS" => Some(Self::H264540p25fps2Layers),
6069            "H264_720P_30FPS_1_LAYER" => Some(Self::H264720p30fps1Layer),
6070            "H264_1080P_30FPS_1_LAYER" => Some(Self::H2641080p30fps1Layer),
6071            "H264_720P_30FPS_3_LAYERS_HIGH_MOTION" => Some(Self::H264720p30fps3LayersHighMotion),
6072            "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION" => Some(Self::H2641080p30fps3LayersHighMotion),
6073            "H264_540P_25FPS_2_LAYERS_HIGH_MOTION" => Some(Self::H264540p25fps2LayersHighMotion),
6074            "H264_720P_30FPS_1_LAYER_HIGH_MOTION" => Some(Self::H264720p30fps1LayerHighMotion),
6075            "H264_1080P_30FPS_1_LAYER_HIGH_MOTION" => Some(Self::H2641080p30fps1LayerHighMotion),
6076            _ => None,
6077        }
6078    }
6079}
6080#[derive(Clone, PartialEq, ::prost::Message)]
6081pub struct WebhookEvent {
6082    /// one of room_started, room_finished, participant_joined, participant_left, participant_connection_aborted,
6083    /// track_published, track_unpublished, egress_started, egress_updated, egress_ended,
6084    /// ingress_started, ingress_ended, agent_job_started, agent_job_ended
6085    #[prost(string, tag = "1")]
6086    pub event: ::prost::alloc::string::String,
6087    #[prost(message, optional, tag = "2")]
6088    pub room: ::core::option::Option<Room>,
6089    /// set when event is participant_* or track_*
6090    #[prost(message, optional, tag = "3")]
6091    pub participant: ::core::option::Option<ParticipantInfo>,
6092    /// set when event is egress_*
6093    #[prost(message, optional, tag = "9")]
6094    pub egress_info: ::core::option::Option<EgressInfo>,
6095    /// set when event is ingress_*
6096    #[prost(message, optional, tag = "10")]
6097    pub ingress_info: ::core::option::Option<IngressInfo>,
6098    /// set when event is track_*
6099    #[prost(message, optional, tag = "8")]
6100    pub track: ::core::option::Option<TrackInfo>,
6101    /// set when event is agent_job_*
6102    #[prost(message, optional, tag = "12")]
6103    pub job: ::core::option::Option<Job>,
6104    /// unique event uuid
6105    #[prost(string, tag = "6")]
6106    pub id: ::prost::alloc::string::String,
6107    /// timestamp in seconds
6108    #[prost(int64, tag = "7")]
6109    pub created_at: i64,
6110    #[deprecated]
6111    #[prost(int32, tag = "11")]
6112    pub num_dropped: i32,
6113    /// set when event is room_finished
6114    #[prost(enumeration = "RoomEndReason", tag = "13")]
6115    pub room_end_reason: i32,
6116}
6117/// SIPStatus is returned as an error detail in CreateSIPParticipant.
6118#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6119pub struct SipStatus {
6120    #[prost(enumeration = "SipStatusCode", tag = "1")]
6121    pub code: i32,
6122    #[prost(string, tag = "2")]
6123    pub status: ::prost::alloc::string::String,
6124}
6125#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6126pub struct CreateSipTrunkRequest {
6127    /// CIDR or IPs that traffic is accepted from
6128    /// An empty list means all inbound traffic is accepted.
6129    #[prost(string, repeated, tag = "1")]
6130    pub inbound_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6131    /// IP that SIP INVITE is sent too
6132    #[prost(string, tag = "2")]
6133    pub outbound_address: ::prost::alloc::string::String,
6134    /// Number used to make outbound calls
6135    #[prost(string, tag = "3")]
6136    pub outbound_number: ::prost::alloc::string::String,
6137    #[deprecated]
6138    #[prost(string, repeated, tag = "4")]
6139    pub inbound_numbers_regex: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6140    /// Accepted `To` values. This Trunk will only accept a call made to
6141    /// these numbers. This allows you to have distinct Trunks for different phone
6142    /// numbers at the same provider.
6143    #[prost(string, repeated, tag = "9")]
6144    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6145    /// Username and password used to authenticate inbound and outbound SIP invites
6146    /// May be empty to have no Authentication
6147    #[prost(string, tag = "5")]
6148    pub inbound_username: ::prost::alloc::string::String,
6149    #[prost(string, tag = "6")]
6150    pub inbound_password: ::prost::alloc::string::String,
6151    #[prost(string, tag = "7")]
6152    pub outbound_username: ::prost::alloc::string::String,
6153    #[prost(string, tag = "8")]
6154    pub outbound_password: ::prost::alloc::string::String,
6155    /// Optional human-readable name for the Trunk.
6156    #[prost(string, tag = "10")]
6157    pub name: ::prost::alloc::string::String,
6158    /// Optional user-defined metadata for the Trunk.
6159    #[prost(string, tag = "11")]
6160    pub metadata: ::prost::alloc::string::String,
6161}
6162#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6163pub struct SipCodec {
6164    #[prost(string, tag = "1")]
6165    pub name: ::prost::alloc::string::String,
6166    #[prost(uint32, tag = "2")]
6167    pub rate: u32,
6168}
6169#[derive(Clone, PartialEq, ::prost::Message)]
6170pub struct SipMediaConfig {
6171    /// if set, ignore the default codecs and use the list below.
6172    #[prost(bool, tag = "1")]
6173    pub only_listed_codecs: bool,
6174    /// List of allowed codecs. If only_listed_codecs is not set, this list is added to default codecs.
6175    #[prost(message, repeated, tag = "2")]
6176    pub codecs: ::prost::alloc::vec::Vec<SipCodec>,
6177    #[prost(enumeration = "SipMediaEncryption", optional, tag = "3")]
6178    pub encryption: ::core::option::Option<i32>,
6179    /// Use specific media timeout. If zero or not specified, will use default timeout.
6180    #[prost(message, optional, tag = "4")]
6181    pub media_timeout: ::core::option::Option<::pbjson_types::Duration>,
6182}
6183#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6184pub struct ProviderInfo {
6185    #[prost(string, tag = "1")]
6186    pub id: ::prost::alloc::string::String,
6187    #[prost(string, tag = "2")]
6188    pub name: ::prost::alloc::string::String,
6189    #[prost(enumeration = "ProviderType", tag = "3")]
6190    pub r#type: i32,
6191    #[prost(bool, tag = "4")]
6192    pub prevent_transfer: bool,
6193}
6194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6195pub struct SipTrunkInfo {
6196    #[prost(string, tag = "1")]
6197    pub sip_trunk_id: ::prost::alloc::string::String,
6198    #[prost(enumeration = "sip_trunk_info::TrunkKind", tag = "14")]
6199    pub kind: i32,
6200    /// CIDR or IPs that traffic is accepted from
6201    /// An empty list means all inbound traffic is accepted.
6202    #[prost(string, repeated, tag = "2")]
6203    pub inbound_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6204    /// IP that SIP INVITE is sent too
6205    #[prost(string, tag = "3")]
6206    pub outbound_address: ::prost::alloc::string::String,
6207    /// Number used to make outbound calls
6208    #[prost(string, tag = "4")]
6209    pub outbound_number: ::prost::alloc::string::String,
6210    /// Transport used for inbound and outbound calls.
6211    #[prost(enumeration = "SipTransport", tag = "13")]
6212    pub transport: i32,
6213    #[deprecated]
6214    #[prost(string, repeated, tag = "5")]
6215    pub inbound_numbers_regex: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6216    /// Accepted `To` values. This Trunk will only accept a call made to
6217    /// these numbers. This allows you to have distinct Trunks for different phone
6218    /// numbers at the same provider.
6219    #[prost(string, repeated, tag = "10")]
6220    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6221    /// Username and password used to authenticate inbound and outbound SIP invites
6222    /// May be empty to have no Authentication
6223    #[prost(string, tag = "6")]
6224    pub inbound_username: ::prost::alloc::string::String,
6225    #[prost(string, tag = "7")]
6226    pub inbound_password: ::prost::alloc::string::String,
6227    #[prost(string, tag = "8")]
6228    pub outbound_username: ::prost::alloc::string::String,
6229    #[prost(string, tag = "9")]
6230    pub outbound_password: ::prost::alloc::string::String,
6231    /// Human-readable name for the Trunk.
6232    #[prost(string, tag = "11")]
6233    pub name: ::prost::alloc::string::String,
6234    /// User-defined metadata for the Trunk.
6235    #[prost(string, tag = "12")]
6236    pub metadata: ::prost::alloc::string::String,
6237}
6238/// Nested message and enum types in `SIPTrunkInfo`.
6239pub mod sip_trunk_info {
6240    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6241    #[repr(i32)]
6242    pub enum TrunkKind {
6243        TrunkLegacy = 0,
6244        TrunkInbound = 1,
6245        TrunkOutbound = 2,
6246    }
6247    impl TrunkKind {
6248        /// String value of the enum field names used in the ProtoBuf definition.
6249        ///
6250        /// The values are not transformed in any way and thus are considered stable
6251        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6252        pub fn as_str_name(&self) -> &'static str {
6253            match self {
6254                Self::TrunkLegacy => "TRUNK_LEGACY",
6255                Self::TrunkInbound => "TRUNK_INBOUND",
6256                Self::TrunkOutbound => "TRUNK_OUTBOUND",
6257            }
6258        }
6259        /// Creates an enum from field names used in the ProtoBuf definition.
6260        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6261            match value {
6262                "TRUNK_LEGACY" => Some(Self::TrunkLegacy),
6263                "TRUNK_INBOUND" => Some(Self::TrunkInbound),
6264                "TRUNK_OUTBOUND" => Some(Self::TrunkOutbound),
6265                _ => None,
6266            }
6267        }
6268    }
6269}
6270#[derive(Clone, PartialEq, ::prost::Message)]
6271pub struct CreateSipInboundTrunkRequest {
6272    /// Trunk ID is ignored
6273    #[prost(message, optional, tag = "1")]
6274    pub trunk: ::core::option::Option<SipInboundTrunkInfo>,
6275}
6276#[derive(Clone, PartialEq, ::prost::Message)]
6277pub struct UpdateSipInboundTrunkRequest {
6278    #[prost(string, tag = "1")]
6279    pub sip_trunk_id: ::prost::alloc::string::String,
6280    #[prost(oneof = "update_sip_inbound_trunk_request::Action", tags = "2, 3")]
6281    pub action: ::core::option::Option<update_sip_inbound_trunk_request::Action>,
6282}
6283/// Nested message and enum types in `UpdateSIPInboundTrunkRequest`.
6284pub mod update_sip_inbound_trunk_request {
6285    #[derive(Clone, PartialEq, ::prost::Oneof)]
6286    pub enum Action {
6287        #[prost(message, tag = "2")]
6288        Replace(super::SipInboundTrunkInfo),
6289        #[prost(message, tag = "3")]
6290        Update(super::SipInboundTrunkUpdate),
6291    }
6292}
6293#[derive(Clone, PartialEq, ::prost::Message)]
6294pub struct SipInboundTrunkInfo {
6295    #[prost(string, tag = "1")]
6296    pub sip_trunk_id: ::prost::alloc::string::String,
6297    /// Human-readable name for the Trunk.
6298    #[prost(string, tag = "2")]
6299    pub name: ::prost::alloc::string::String,
6300    /// User-defined metadata for the Trunk.
6301    #[prost(string, tag = "3")]
6302    pub metadata: ::prost::alloc::string::String,
6303    /// Numbers associated with LiveKit SIP. The Trunk will only accept calls made to these numbers.
6304    /// Creating multiple Trunks with different phone numbers allows having different rules for a single provider.
6305    #[prost(string, repeated, tag = "4")]
6306    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6307    /// CIDR or IPs that traffic is accepted from.
6308    /// An empty list means all inbound traffic is accepted.
6309    #[prost(string, repeated, tag = "5")]
6310    pub allowed_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6311    /// Numbers that are allowed to make calls to this Trunk.
6312    /// An empty list means calls from any phone number is accepted.
6313    #[prost(string, repeated, tag = "6")]
6314    pub allowed_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6315    /// Username and password used to authenticate inbound SIP invites.
6316    /// May be empty to have no authentication.
6317    #[prost(string, tag = "7")]
6318    pub auth_username: ::prost::alloc::string::String,
6319    #[prost(string, tag = "8")]
6320    pub auth_password: ::prost::alloc::string::String,
6321    #[prost(string, tag = "19")]
6322    pub auth_realm: ::prost::alloc::string::String,
6323    /// Include these SIP X-* headers in 200 OK responses.
6324    #[prost(map = "string, string", tag = "9")]
6325    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6326    /// Map SIP X-* headers from INVITE to SIP participant attributes.
6327    #[prost(map = "string, string", tag = "10")]
6328    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6329    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
6330    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
6331    #[prost(map = "string, string", tag = "14")]
6332    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6333    /// Map SIP headers from INVITE to sip.h.* participant attributes automatically.
6334    ///
6335    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
6336    ///
6337    /// When mapping INVITE headers to response headers with attributes_to_headers map,
6338    /// lowercase header names should be used, for example: sip.h.x-custom-header.
6339    #[prost(enumeration = "SipHeaderOptions", tag = "15")]
6340    pub include_headers: i32,
6341    /// Max time for the caller to wait for track subscription.
6342    #[prost(message, optional, tag = "11")]
6343    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
6344    /// SIP status code if ringing_timeout elapses. Unset means using system default.
6345    #[prost(enumeration = "SipStatusCode", tag = "21")]
6346    pub ringing_timeout_status: i32,
6347    /// Max call duration.
6348    #[prost(message, optional, tag = "12")]
6349    pub max_call_duration: ::core::option::Option<::pbjson_types::Duration>,
6350    #[prost(bool, tag = "13")]
6351    pub krisp_enabled: bool,
6352    #[deprecated]
6353    #[prost(enumeration = "SipMediaEncryption", tag = "16")]
6354    pub media_encryption: i32,
6355    #[prost(message, optional, tag = "20")]
6356    pub media: ::core::option::Option<SipMediaConfig>,
6357    #[prost(message, optional, tag = "17")]
6358    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
6359    #[prost(message, optional, tag = "18")]
6360    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
6361}
6362#[derive(Clone, PartialEq, ::prost::Message)]
6363pub struct SipInboundTrunkUpdate {
6364    #[prost(message, optional, tag = "1")]
6365    pub numbers: ::core::option::Option<ListUpdate>,
6366    #[prost(message, optional, tag = "2")]
6367    pub allowed_addresses: ::core::option::Option<ListUpdate>,
6368    #[prost(message, optional, tag = "3")]
6369    pub allowed_numbers: ::core::option::Option<ListUpdate>,
6370    #[prost(string, optional, tag = "4")]
6371    pub auth_username: ::core::option::Option<::prost::alloc::string::String>,
6372    #[prost(string, optional, tag = "5")]
6373    pub auth_password: ::core::option::Option<::prost::alloc::string::String>,
6374    #[prost(string, optional, tag = "9")]
6375    pub auth_realm: ::core::option::Option<::prost::alloc::string::String>,
6376    #[prost(string, optional, tag = "6")]
6377    pub name: ::core::option::Option<::prost::alloc::string::String>,
6378    #[prost(string, optional, tag = "7")]
6379    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
6380    #[deprecated]
6381    #[prost(enumeration = "SipMediaEncryption", optional, tag = "8")]
6382    pub media_encryption: ::core::option::Option<i32>,
6383    #[prost(message, optional, tag = "10")]
6384    pub media: ::core::option::Option<SipMediaConfig>,
6385}
6386#[derive(Clone, PartialEq, ::prost::Message)]
6387pub struct CreateSipOutboundTrunkRequest {
6388    /// Trunk ID is ignored
6389    #[prost(message, optional, tag = "1")]
6390    pub trunk: ::core::option::Option<SipOutboundTrunkInfo>,
6391}
6392#[derive(Clone, PartialEq, ::prost::Message)]
6393pub struct UpdateSipOutboundTrunkRequest {
6394    #[prost(string, tag = "1")]
6395    pub sip_trunk_id: ::prost::alloc::string::String,
6396    #[prost(oneof = "update_sip_outbound_trunk_request::Action", tags = "2, 3")]
6397    pub action: ::core::option::Option<update_sip_outbound_trunk_request::Action>,
6398}
6399/// Nested message and enum types in `UpdateSIPOutboundTrunkRequest`.
6400pub mod update_sip_outbound_trunk_request {
6401    #[derive(Clone, PartialEq, ::prost::Oneof)]
6402    pub enum Action {
6403        #[prost(message, tag = "2")]
6404        Replace(super::SipOutboundTrunkInfo),
6405        #[prost(message, tag = "3")]
6406        Update(super::SipOutboundTrunkUpdate),
6407    }
6408}
6409#[derive(Clone, PartialEq, ::prost::Message)]
6410pub struct SipOutboundTrunkInfo {
6411    #[prost(string, tag = "1")]
6412    pub sip_trunk_id: ::prost::alloc::string::String,
6413    /// Human-readable name for the Trunk.
6414    #[prost(string, tag = "2")]
6415    pub name: ::prost::alloc::string::String,
6416    /// User-defined metadata for the Trunk.
6417    #[prost(string, tag = "3")]
6418    pub metadata: ::prost::alloc::string::String,
6419    /// Hostname or IP that SIP INVITE is sent too.
6420    /// Note that this is not a SIP URI and should not contain the 'sip:' protocol prefix.
6421    #[prost(string, tag = "4")]
6422    pub address: ::prost::alloc::string::String,
6423    /// 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.
6424    #[prost(string, tag = "14")]
6425    pub destination_country: ::prost::alloc::string::String,
6426    /// SIP Transport used for outbound call.
6427    #[prost(enumeration = "SipTransport", tag = "5")]
6428    pub transport: i32,
6429    /// Numbers used to make the calls. Random one from this list will be selected.
6430    #[prost(string, repeated, tag = "6")]
6431    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6432    /// Username and password used to authenticate with SIP server.
6433    /// May be empty to have no authentication.
6434    #[prost(string, tag = "7")]
6435    pub auth_username: ::prost::alloc::string::String,
6436    #[prost(string, tag = "8")]
6437    pub auth_password: ::prost::alloc::string::String,
6438    /// Include these SIP X-* headers in INVITE request.
6439    /// These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.
6440    #[prost(map = "string, string", tag = "9")]
6441    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6442    /// Map SIP X-* headers from 200 OK to SIP participant attributes.
6443    /// Keys are the names of X-* headers and values are the names of attributes they will be mapped to.
6444    #[prost(map = "string, string", tag = "10")]
6445    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6446    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
6447    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
6448    #[prost(map = "string, string", tag = "11")]
6449    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6450    /// Map SIP headers from 200 OK to sip.h.* participant attributes automatically.
6451    ///
6452    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
6453    ///
6454    /// When mapping 200 OK headers to follow-up request headers with attributes_to_headers map,
6455    /// lowercase header names should be used, for example: sip.h.x-custom-header.
6456    #[prost(enumeration = "SipHeaderOptions", tag = "12")]
6457    pub include_headers: i32,
6458    #[deprecated]
6459    #[prost(enumeration = "SipMediaEncryption", tag = "13")]
6460    pub media_encryption: i32,
6461    #[prost(message, optional, tag = "18")]
6462    pub media: ::core::option::Option<SipMediaConfig>,
6463    /// Optional custom hostname for the 'From' SIP header in outbound INVITEs.
6464    /// When set, outbound calls from this trunk will use this host instead of the default project SIP domain.
6465    /// Enables originating calls from custom domains.
6466    #[prost(string, tag = "15")]
6467    pub from_host: ::prost::alloc::string::String,
6468    #[prost(message, optional, tag = "16")]
6469    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
6470    #[prost(message, optional, tag = "17")]
6471    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
6472}
6473#[derive(Clone, PartialEq, ::prost::Message)]
6474pub struct SipOutboundTrunkUpdate {
6475    #[prost(string, optional, tag = "1")]
6476    pub address: ::core::option::Option<::prost::alloc::string::String>,
6477    #[prost(enumeration = "SipTransport", optional, tag = "2")]
6478    pub transport: ::core::option::Option<i32>,
6479    #[prost(string, optional, tag = "9")]
6480    pub destination_country: ::core::option::Option<::prost::alloc::string::String>,
6481    #[prost(message, optional, tag = "3")]
6482    pub numbers: ::core::option::Option<ListUpdate>,
6483    #[prost(string, optional, tag = "4")]
6484    pub auth_username: ::core::option::Option<::prost::alloc::string::String>,
6485    #[prost(string, optional, tag = "5")]
6486    pub auth_password: ::core::option::Option<::prost::alloc::string::String>,
6487    #[prost(string, optional, tag = "6")]
6488    pub name: ::core::option::Option<::prost::alloc::string::String>,
6489    #[prost(string, optional, tag = "7")]
6490    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
6491    #[deprecated]
6492    #[prost(enumeration = "SipMediaEncryption", optional, tag = "8")]
6493    pub media_encryption: ::core::option::Option<i32>,
6494    #[prost(message, optional, tag = "11")]
6495    pub media: ::core::option::Option<SipMediaConfig>,
6496    #[prost(string, optional, tag = "10")]
6497    pub from_host: ::core::option::Option<::prost::alloc::string::String>,
6498}
6499#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6500pub struct GetSipInboundTrunkRequest {
6501    #[prost(string, tag = "1")]
6502    pub sip_trunk_id: ::prost::alloc::string::String,
6503}
6504#[derive(Clone, PartialEq, ::prost::Message)]
6505pub struct GetSipInboundTrunkResponse {
6506    #[prost(message, optional, tag = "1")]
6507    pub trunk: ::core::option::Option<SipInboundTrunkInfo>,
6508}
6509#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6510pub struct GetSipOutboundTrunkRequest {
6511    #[prost(string, tag = "1")]
6512    pub sip_trunk_id: ::prost::alloc::string::String,
6513}
6514#[derive(Clone, PartialEq, ::prost::Message)]
6515pub struct GetSipOutboundTrunkResponse {
6516    #[prost(message, optional, tag = "1")]
6517    pub trunk: ::core::option::Option<SipOutboundTrunkInfo>,
6518}
6519#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6520pub struct ListSipTrunkRequest {
6521    #[prost(message, optional, tag = "1")]
6522    pub page: ::core::option::Option<Pagination>,
6523}
6524#[derive(Clone, PartialEq, ::prost::Message)]
6525pub struct ListSipTrunkResponse {
6526    #[prost(message, repeated, tag = "1")]
6527    pub items: ::prost::alloc::vec::Vec<SipTrunkInfo>,
6528}
6529/// ListSIPInboundTrunkRequest lists inbound trunks for given filters. If no filters are set, all trunks are listed.
6530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6531pub struct ListSipInboundTrunkRequest {
6532    #[prost(message, optional, tag = "3")]
6533    pub page: ::core::option::Option<Pagination>,
6534    /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order.
6535    /// If any of the trunks is missing, a nil item in that position will be sent in the response.
6536    #[prost(string, repeated, tag = "1")]
6537    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6538    /// Only list trunks that contain one of the numbers, including wildcard trunks.
6539    #[prost(string, repeated, tag = "2")]
6540    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6541}
6542#[derive(Clone, PartialEq, ::prost::Message)]
6543pub struct ListSipInboundTrunkResponse {
6544    #[prost(message, repeated, tag = "1")]
6545    pub items: ::prost::alloc::vec::Vec<SipInboundTrunkInfo>,
6546}
6547/// ListSIPOutboundTrunkRequest lists outbound trunks for given filters. If no filters are set, all trunks are listed.
6548#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6549pub struct ListSipOutboundTrunkRequest {
6550    #[prost(message, optional, tag = "3")]
6551    pub page: ::core::option::Option<Pagination>,
6552    /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order.
6553    /// If any of the trunks is missing, a nil item in that position will be sent in the response.
6554    #[prost(string, repeated, tag = "1")]
6555    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6556    /// Only list trunks that contain one of the numbers, including wildcard trunks.
6557    #[prost(string, repeated, tag = "2")]
6558    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6559}
6560#[derive(Clone, PartialEq, ::prost::Message)]
6561pub struct ListSipOutboundTrunkResponse {
6562    #[prost(message, repeated, tag = "1")]
6563    pub items: ::prost::alloc::vec::Vec<SipOutboundTrunkInfo>,
6564}
6565#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6566pub struct DeleteSipTrunkRequest {
6567    #[prost(string, tag = "1")]
6568    pub sip_trunk_id: ::prost::alloc::string::String,
6569}
6570#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6571pub struct SipDispatchRuleDirect {
6572    /// What room should call be directed into
6573    #[prost(string, tag = "1")]
6574    pub room_name: ::prost::alloc::string::String,
6575    /// Optional pin required to enter room
6576    #[prost(string, tag = "2")]
6577    pub pin: ::prost::alloc::string::String,
6578}
6579#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6580pub struct SipDispatchRuleIndividual {
6581    /// Prefix used on new room name
6582    #[prost(string, tag = "1")]
6583    pub room_prefix: ::prost::alloc::string::String,
6584    /// Optional pin required to enter room
6585    #[prost(string, tag = "2")]
6586    pub pin: ::prost::alloc::string::String,
6587    /// Optionally append random suffix
6588    #[prost(bool, tag = "3")]
6589    pub no_randomness: bool,
6590}
6591#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6592pub struct SipDispatchRuleCallee {
6593    /// Prefix used on new room name
6594    #[prost(string, tag = "1")]
6595    pub room_prefix: ::prost::alloc::string::String,
6596    /// Optional pin required to enter room
6597    #[prost(string, tag = "2")]
6598    pub pin: ::prost::alloc::string::String,
6599    /// Optionally append random suffix
6600    #[prost(bool, tag = "3")]
6601    pub randomize: bool,
6602}
6603#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6604pub struct SipDispatchRule {
6605    #[prost(oneof = "sip_dispatch_rule::Rule", tags = "1, 2, 3")]
6606    pub rule: ::core::option::Option<sip_dispatch_rule::Rule>,
6607}
6608/// Nested message and enum types in `SIPDispatchRule`.
6609pub mod sip_dispatch_rule {
6610    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
6611    pub enum Rule {
6612        /// SIPDispatchRuleDirect is a `SIP Dispatch Rule` that puts a user directly into a room
6613        /// This places users into an existing room. Optionally you can require a pin before a user can
6614        /// enter the room
6615        #[prost(message, tag = "1")]
6616        DispatchRuleDirect(super::SipDispatchRuleDirect),
6617        /// SIPDispatchRuleIndividual is a `SIP Dispatch Rule` that creates a new room for each caller.
6618        #[prost(message, tag = "2")]
6619        DispatchRuleIndividual(super::SipDispatchRuleIndividual),
6620        /// SIPDispatchRuleCallee is a `SIP Dispatch Rule` that creates a new room for each callee.
6621        #[prost(message, tag = "3")]
6622        DispatchRuleCallee(super::SipDispatchRuleCallee),
6623    }
6624}
6625#[derive(Clone, PartialEq, ::prost::Message)]
6626pub struct CreateSipDispatchRuleRequest {
6627    /// Rule ID is ignored
6628    #[prost(message, optional, tag = "10")]
6629    pub dispatch_rule: ::core::option::Option<SipDispatchRuleInfo>,
6630    #[deprecated]
6631    #[prost(message, optional, tag = "1")]
6632    pub rule: ::core::option::Option<SipDispatchRule>,
6633    /// What trunks are accepted for this dispatch rule
6634    /// If empty all trunks will match this dispatch rule
6635    #[deprecated]
6636    #[prost(string, repeated, tag = "2")]
6637    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6638    /// By default the From value (Phone number) is used for participant name/identity and added to attributes.
6639    /// If true, a random value for identity will be used and numbers will be omitted from attributes.
6640    #[deprecated]
6641    #[prost(bool, tag = "3")]
6642    pub hide_phone_number: bool,
6643    /// Dispatch Rule will only accept a call made to these numbers (if set).
6644    #[deprecated]
6645    #[prost(string, repeated, tag = "6")]
6646    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6647    /// Optional human-readable name for the Dispatch Rule.
6648    #[deprecated]
6649    #[prost(string, tag = "4")]
6650    pub name: ::prost::alloc::string::String,
6651    /// User-defined metadata for the Dispatch Rule.
6652    /// Participants created by this rule will inherit this metadata.
6653    #[deprecated]
6654    #[prost(string, tag = "5")]
6655    pub metadata: ::prost::alloc::string::String,
6656    /// User-defined attributes for the Dispatch Rule.
6657    /// Participants created by this rule will inherit these attributes.
6658    #[prost(map = "string, string", tag = "7")]
6659    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6660    /// Cloud-only, config preset to use
6661    #[deprecated]
6662    #[prost(string, tag = "8")]
6663    pub room_preset: ::prost::alloc::string::String,
6664    /// RoomConfiguration to use if the participant initiates the room
6665    #[deprecated]
6666    #[prost(message, optional, tag = "9")]
6667    pub room_config: ::core::option::Option<RoomConfiguration>,
6668}
6669#[derive(Clone, PartialEq, ::prost::Message)]
6670pub struct UpdateSipDispatchRuleRequest {
6671    #[prost(string, tag = "1")]
6672    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
6673    #[prost(oneof = "update_sip_dispatch_rule_request::Action", tags = "2, 3")]
6674    pub action: ::core::option::Option<update_sip_dispatch_rule_request::Action>,
6675}
6676/// Nested message and enum types in `UpdateSIPDispatchRuleRequest`.
6677pub mod update_sip_dispatch_rule_request {
6678    #[derive(Clone, PartialEq, ::prost::Oneof)]
6679    pub enum Action {
6680        #[prost(message, tag = "2")]
6681        Replace(super::SipDispatchRuleInfo),
6682        #[prost(message, tag = "3")]
6683        Update(super::SipDispatchRuleUpdate),
6684    }
6685}
6686#[derive(Clone, PartialEq, ::prost::Message)]
6687pub struct SipDispatchRuleInfo {
6688    #[prost(string, tag = "1")]
6689    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
6690    #[prost(message, optional, tag = "2")]
6691    pub rule: ::core::option::Option<SipDispatchRule>,
6692    #[prost(string, repeated, tag = "3")]
6693    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6694    #[prost(bool, tag = "4")]
6695    pub hide_phone_number: bool,
6696    /// Dispatch Rule will only accept a call made from these numbers (if set).
6697    #[prost(string, repeated, tag = "7")]
6698    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6699    /// Dispatch Rule will only accept a call made to these numbers (if set).
6700    #[prost(string, repeated, tag = "13")]
6701    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6702    /// Human-readable name for the Dispatch Rule.
6703    #[prost(string, tag = "5")]
6704    pub name: ::prost::alloc::string::String,
6705    /// User-defined metadata for the Dispatch Rule.
6706    /// Participants created by this rule will inherit this metadata.
6707    #[prost(string, tag = "6")]
6708    pub metadata: ::prost::alloc::string::String,
6709    /// User-defined attributes for the Dispatch Rule.
6710    /// Participants created by this rule will inherit these attributes.
6711    #[prost(map = "string, string", tag = "8")]
6712    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6713    /// Cloud-only, config preset to use
6714    #[prost(string, tag = "9")]
6715    pub room_preset: ::prost::alloc::string::String,
6716    /// RoomConfiguration to use if the participant initiates the room
6717    #[prost(message, optional, tag = "10")]
6718    pub room_config: ::core::option::Option<RoomConfiguration>,
6719    #[prost(message, optional, tag = "16")]
6720    pub media: ::core::option::Option<SipMediaConfig>,
6721    #[prost(bool, tag = "11")]
6722    pub krisp_enabled: bool,
6723    #[deprecated]
6724    #[prost(enumeration = "SipMediaEncryption", tag = "12")]
6725    pub media_encryption: i32,
6726    #[prost(message, optional, tag = "14")]
6727    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
6728    #[prost(message, optional, tag = "15")]
6729    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
6730}
6731#[derive(Clone, PartialEq, ::prost::Message)]
6732pub struct SipDispatchRuleUpdate {
6733    #[prost(message, optional, tag = "1")]
6734    pub trunk_ids: ::core::option::Option<ListUpdate>,
6735    #[prost(message, optional, tag = "2")]
6736    pub rule: ::core::option::Option<SipDispatchRule>,
6737    #[prost(string, optional, tag = "3")]
6738    pub name: ::core::option::Option<::prost::alloc::string::String>,
6739    #[prost(string, optional, tag = "4")]
6740    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
6741    #[prost(map = "string, string", tag = "5")]
6742    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6743    #[deprecated]
6744    #[prost(enumeration = "SipMediaEncryption", optional, tag = "6")]
6745    pub media_encryption: ::core::option::Option<i32>,
6746    #[prost(message, optional, tag = "7")]
6747    pub media: ::core::option::Option<SipMediaConfig>,
6748}
6749/// ListSIPDispatchRuleRequest lists dispatch rules for given filters. If no filters are set, all rules are listed.
6750#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6751pub struct ListSipDispatchRuleRequest {
6752    #[prost(message, optional, tag = "3")]
6753    pub page: ::core::option::Option<Pagination>,
6754    /// Rule IDs to list. If this option is set, the response will contains rules in the same order.
6755    /// If any of the rules is missing, a nil item in that position will be sent in the response.
6756    #[prost(string, repeated, tag = "1")]
6757    pub dispatch_rule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6758    /// Only list rules that contain one of the Trunk IDs, including wildcard rules.
6759    #[prost(string, repeated, tag = "2")]
6760    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6761}
6762#[derive(Clone, PartialEq, ::prost::Message)]
6763pub struct ListSipDispatchRuleResponse {
6764    #[prost(message, repeated, tag = "1")]
6765    pub items: ::prost::alloc::vec::Vec<SipDispatchRuleInfo>,
6766}
6767#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6768pub struct DeleteSipDispatchRuleRequest {
6769    #[prost(string, tag = "1")]
6770    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
6771}
6772#[derive(Clone, PartialEq, ::prost::Message)]
6773pub struct SipOutboundConfig {
6774    /// SIP server address
6775    #[prost(string, tag = "1")]
6776    pub hostname: ::prost::alloc::string::String,
6777    /// 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.
6778    #[prost(string, tag = "7")]
6779    pub destination_country: ::prost::alloc::string::String,
6780    /// SIP Transport used for outbound call.
6781    #[prost(enumeration = "SipTransport", tag = "2")]
6782    pub transport: i32,
6783    /// Username and password used to authenticate with SIP server.
6784    /// May be empty to have no authentication.
6785    #[prost(string, tag = "3")]
6786    pub auth_username: ::prost::alloc::string::String,
6787    #[prost(string, tag = "4")]
6788    pub auth_password: ::prost::alloc::string::String,
6789    /// Map SIP X-* headers from 200 OK to SIP participant attributes.
6790    /// Keys are the names of X-* headers and values are the names of attributes they will be mapped to.
6791    #[prost(map = "string, string", tag = "5")]
6792    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6793    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
6794    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
6795    #[prost(map = "string, string", tag = "6")]
6796    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6797    /// Optional custom hostname for the 'From' SIP header. When set, outbound calls use this host instead of the default project SIP domain.
6798    #[prost(string, tag = "8")]
6799    pub from_host: ::prost::alloc::string::String,
6800}
6801/// A SIP Participant is a singular SIP session connected to a LiveKit room via
6802/// a SIP Trunk into a SIP DispatchRule
6803#[derive(Clone, PartialEq, ::prost::Message)]
6804pub struct CreateSipParticipantRequest {
6805    /// What SIP Trunk should be used to dial the user
6806    #[prost(string, tag = "1")]
6807    pub sip_trunk_id: ::prost::alloc::string::String,
6808    #[prost(message, optional, tag = "20")]
6809    pub trunk: ::core::option::Option<SipOutboundConfig>,
6810    /// INVITE <uri>
6811    #[prost(message, optional, tag = "24")]
6812    pub sip_request_uri: ::core::option::Option<SipRequestDest>,
6813    /// Currently not usable with CreateSIPParticipant: sip_call_to is required, and
6814    /// the two cannot be combined. Use to_user_override to change the To header user.
6815    ///
6816    /// To:   "Name" <uri>
6817    #[prost(message, optional, tag = "25")]
6818    pub sip_to_header: ::core::option::Option<SipNamedDest>,
6819    /// From: "Name" <uri>
6820    #[prost(message, optional, tag = "26")]
6821    pub sip_from_header: ::core::option::Option<SipNamedDest>,
6822    /// What number should be dialed via SIP
6823    #[prost(string, tag = "2")]
6824    pub sip_call_to: ::prost::alloc::string::String,
6825    /// Replaces the user part of the To header, leaving its host, port and transport
6826    /// as they would otherwise be. The request URI is not affected, so the call is
6827    /// still placed to sip_call_to. Empty means no override.
6828    ///
6829    /// Use this when the callee expects a To header that differs from the number
6830    /// being dialed. Setting "To" in the headers map is not a valid alternative:
6831    /// it adds a second To header rather than replacing the existing one, which
6832    /// makes the INVITE malformed.
6833    #[prost(string, tag = "27")]
6834    pub to_user_override: ::prost::alloc::string::String,
6835    /// Optional SIP From number to use. If empty, trunk number is used.
6836    #[prost(string, tag = "15")]
6837    pub sip_number: ::prost::alloc::string::String,
6838    /// What LiveKit room should this participant be connected too
6839    #[prost(string, tag = "3")]
6840    pub room_name: ::prost::alloc::string::String,
6841    /// Optional identity of the participant in LiveKit room
6842    #[prost(string, tag = "4")]
6843    pub participant_identity: ::prost::alloc::string::String,
6844    /// Optional name of the participant in LiveKit room
6845    #[prost(string, tag = "7")]
6846    pub participant_name: ::prost::alloc::string::String,
6847    /// Optional user-defined metadata. Will be attached to a created Participant in the room.
6848    #[prost(string, tag = "8")]
6849    pub participant_metadata: ::prost::alloc::string::String,
6850    /// Optional user-defined attributes. Will be attached to a created Participant in the room.
6851    #[prost(map = "string, string", tag = "9")]
6852    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6853    /// Optionally send following DTMF digits (extension codes) when making a call.
6854    /// Character 'w' can be used to add a 0.5 sec delay.
6855    #[prost(string, tag = "5")]
6856    pub dtmf: ::prost::alloc::string::String,
6857    /// Optionally play dialtone in the room as an audible indicator for existing participants. The `play_ringtone` option is deprectated but has the same effect.
6858    #[deprecated]
6859    #[prost(bool, tag = "6")]
6860    pub play_ringtone: bool,
6861    #[prost(bool, tag = "13")]
6862    pub play_dialtone: bool,
6863    /// By default the From value (Phone number) is used for participant name/identity (if not set) and added to attributes.
6864    /// If true, a random value for identity will be used and numbers will be omitted from attributes.
6865    #[prost(bool, tag = "10")]
6866    pub hide_phone_number: bool,
6867    /// These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.
6868    #[prost(map = "string, string", tag = "16")]
6869    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6870    /// Map SIP headers from 200 OK to sip.h.* participant attributes automatically.
6871    ///
6872    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
6873    ///
6874    /// When mapping 200 OK headers to follow-up request headers with attributes_to_headers map,
6875    /// lowercase header names should be used, for example: sip.h.x-custom-header.
6876    #[prost(enumeration = "SipHeaderOptions", tag = "17")]
6877    pub include_headers: i32,
6878    /// Max time for the callee to answer the call.
6879    #[prost(message, optional, tag = "11")]
6880    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
6881    /// Max call duration.
6882    #[prost(message, optional, tag = "12")]
6883    pub max_call_duration: ::core::option::Option<::pbjson_types::Duration>,
6884    /// Enable voice isolation for the callee.
6885    #[prost(bool, tag = "14")]
6886    pub krisp_enabled: bool,
6887    #[deprecated]
6888    #[prost(enumeration = "SipMediaEncryption", tag = "18")]
6889    pub media_encryption: i32,
6890    #[prost(message, optional, tag = "23")]
6891    pub media: ::core::option::Option<SipMediaConfig>,
6892    /// Wait for the answer for the call before returning.
6893    #[prost(bool, tag = "19")]
6894    pub wait_until_answered: bool,
6895    /// Optional display name for the 'From' SIP header.
6896    ///
6897    /// Cases:
6898    /// 1) Unspecified: Use legacy behavior - display name will be set to be the caller's number.
6899    /// 2) Empty string: Do not send a display name, which will result in a CNAM lookup downstream.
6900    /// 3) Non-empty: Use the specified value as the display name.
6901    #[prost(string, optional, tag = "21")]
6902    pub display_name: ::core::option::Option<::prost::alloc::string::String>,
6903    /// NEXT ID: 28
6904    #[prost(message, optional, tag = "22")]
6905    pub destination: ::core::option::Option<Destination>,
6906}
6907#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6908pub struct SipParticipantInfo {
6909    #[prost(string, tag = "1")]
6910    pub participant_id: ::prost::alloc::string::String,
6911    #[prost(string, tag = "2")]
6912    pub participant_identity: ::prost::alloc::string::String,
6913    #[prost(string, tag = "3")]
6914    pub room_name: ::prost::alloc::string::String,
6915    #[prost(string, tag = "4")]
6916    pub sip_call_id: ::prost::alloc::string::String,
6917}
6918#[derive(Clone, PartialEq, ::prost::Message)]
6919pub struct TransferSipParticipantRequest {
6920    #[prost(string, tag = "1")]
6921    pub participant_identity: ::prost::alloc::string::String,
6922    #[prost(string, tag = "2")]
6923    pub room_name: ::prost::alloc::string::String,
6924    #[prost(string, tag = "3")]
6925    pub transfer_to: ::prost::alloc::string::String,
6926    /// Optionally play dialtone to the SIP participant as an audible indicator of being transferred
6927    #[prost(bool, tag = "4")]
6928    pub play_dialtone: bool,
6929    /// Add the following headers to the REFER SIP request.
6930    #[prost(map = "string, string", tag = "5")]
6931    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6932    /// Max time for the transfer destination to answer the call.
6933    #[prost(message, optional, tag = "6")]
6934    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
6935}
6936/// Added in <https://github.com/livekit/protocol/pull/1730.> Not needed after all:
6937/// will be rolled back to an empty message once STR_CALL_ENDED is reported as an
6938/// error like every other failed transfer.
6939#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6940pub struct TransferSipParticipantResponse {
6941    #[prost(string, tag = "1")]
6942    pub transfer_id: ::prost::alloc::string::String,
6943    #[prost(enumeration = "SipTransferStatus", tag = "2")]
6944    pub status: i32,
6945    #[prost(enumeration = "SipTransferReason", tag = "3")]
6946    pub reason: i32,
6947    /// Set when the outcome was reported by a SIP response.
6948    #[prost(message, optional, tag = "4")]
6949    pub sip_status: ::core::option::Option<SipStatus>,
6950}
6951/// Details of a failed SIP transfer, attached to the error.
6952#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6953pub struct SipTransferError {
6954    #[prost(string, tag = "1")]
6955    pub transfer_id: ::prost::alloc::string::String,
6956    #[prost(enumeration = "SipTransferReason", tag = "2")]
6957    pub reason: i32,
6958    /// Set when the outcome was reported by a SIP response.
6959    #[prost(message, optional, tag = "3")]
6960    pub sip_status: ::core::option::Option<SipStatus>,
6961}
6962#[derive(Clone, PartialEq, ::prost::Message)]
6963pub struct SipCallInfo {
6964    #[prost(string, tag = "1")]
6965    pub call_id: ::prost::alloc::string::String,
6966    #[prost(string, tag = "2")]
6967    pub trunk_id: ::prost::alloc::string::String,
6968    #[prost(string, tag = "16")]
6969    pub dispatch_rule_id: ::prost::alloc::string::String,
6970    #[prost(string, tag = "17")]
6971    pub region: ::prost::alloc::string::String,
6972    #[prost(string, tag = "3")]
6973    pub room_name: ::prost::alloc::string::String,
6974    /// ID of the current/previous room published to
6975    #[prost(string, tag = "4")]
6976    pub room_id: ::prost::alloc::string::String,
6977    #[prost(string, tag = "5")]
6978    pub participant_identity: ::prost::alloc::string::String,
6979    #[prost(map = "string, string", tag = "18")]
6980    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6981    #[prost(message, optional, tag = "6")]
6982    pub from_uri: ::core::option::Option<SipUri>,
6983    #[prost(message, optional, tag = "7")]
6984    pub to_uri: ::core::option::Option<SipUri>,
6985    #[deprecated]
6986    #[prost(int64, tag = "9")]
6987    pub created_at: i64,
6988    #[deprecated]
6989    #[prost(int64, tag = "10")]
6990    pub started_at: i64,
6991    #[deprecated]
6992    #[prost(int64, tag = "11")]
6993    pub ended_at: i64,
6994    #[prost(enumeration = "SipFeature", repeated, tag = "14")]
6995    pub enabled_features: ::prost::alloc::vec::Vec<i32>,
6996    #[prost(enumeration = "SipCallDirection", tag = "15")]
6997    pub call_direction: i32,
6998    #[prost(enumeration = "SipCallStatus", tag = "8")]
6999    pub call_status: i32,
7000    #[prost(int64, tag = "22")]
7001    pub created_at_ns: i64,
7002    #[prost(int64, tag = "23")]
7003    pub started_at_ns: i64,
7004    #[prost(int64, tag = "24")]
7005    pub ended_at_ns: i64,
7006    #[prost(enumeration = "DisconnectReason", tag = "12")]
7007    pub disconnect_reason: i32,
7008    #[prost(string, tag = "13")]
7009    pub error: ::prost::alloc::string::String,
7010    #[prost(message, optional, tag = "19")]
7011    pub call_status_code: ::core::option::Option<SipStatus>,
7012    #[prost(string, tag = "20")]
7013    pub audio_codec: ::prost::alloc::string::String,
7014    #[prost(string, tag = "21")]
7015    pub media_encryption: ::prost::alloc::string::String,
7016    #[prost(string, tag = "25")]
7017    pub pcap_file_link: ::prost::alloc::string::String,
7018    #[prost(message, repeated, tag = "26")]
7019    pub call_context: ::prost::alloc::vec::Vec<::pbjson_types::Any>,
7020    #[prost(message, optional, tag = "27")]
7021    pub provider_info: ::core::option::Option<ProviderInfo>,
7022    #[prost(string, tag = "28")]
7023    pub sip_call_id: ::prost::alloc::string::String,
7024}
7025#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7026pub struct SipTransferInfo {
7027    #[prost(string, tag = "1")]
7028    pub transfer_id: ::prost::alloc::string::String,
7029    #[prost(string, tag = "2")]
7030    pub call_id: ::prost::alloc::string::String,
7031    #[prost(string, tag = "3")]
7032    pub transfer_to: ::prost::alloc::string::String,
7033    #[prost(int64, tag = "4")]
7034    pub transfer_initiated_at_ns: i64,
7035    #[prost(int64, tag = "5")]
7036    pub transfer_completed_at_ns: i64,
7037    #[prost(enumeration = "SipTransferStatus", tag = "6")]
7038    pub transfer_status: i32,
7039    #[prost(string, tag = "7")]
7040    pub error: ::prost::alloc::string::String,
7041    #[prost(message, optional, tag = "8")]
7042    pub transfer_status_code: ::core::option::Option<SipStatus>,
7043    #[prost(enumeration = "SipTransferReason", tag = "9")]
7044    pub reason: i32,
7045}
7046#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7047pub struct SipUri {
7048    #[prost(string, tag = "1")]
7049    pub user: ::prost::alloc::string::String,
7050    #[prost(string, tag = "2")]
7051    pub host: ::prost::alloc::string::String,
7052    #[prost(string, tag = "3")]
7053    pub ip: ::prost::alloc::string::String,
7054    #[prost(uint32, tag = "4")]
7055    pub port: u32,
7056    #[prost(enumeration = "SipTransport", tag = "5")]
7057    pub transport: i32,
7058}
7059#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7060pub struct SipRequestDest {
7061    #[prost(oneof = "sip_request_dest::Uri", tags = "1, 2")]
7062    pub uri: ::core::option::Option<sip_request_dest::Uri>,
7063}
7064/// Nested message and enum types in `SIPRequestDest`.
7065pub mod sip_request_dest {
7066    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7067    pub enum Uri {
7068        /// <sip:user@sip.example.com:5060;transport=tcp>
7069        #[prost(string, tag = "1")]
7070        Raw(::prost::alloc::string::String),
7071        #[prost(message, tag = "2")]
7072        Values(super::SipUri),
7073    }
7074}
7075#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7076pub struct SipNamedDest {
7077    #[prost(string, tag = "3")]
7078    pub display_name: ::prost::alloc::string::String,
7079    #[prost(oneof = "sip_named_dest::Uri", tags = "1, 2")]
7080    pub uri: ::core::option::Option<sip_named_dest::Uri>,
7081}
7082/// Nested message and enum types in `SIPNamedDest`.
7083pub mod sip_named_dest {
7084    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7085    pub enum Uri {
7086        /// <sip:user@sip.example.com:5060;transport=tcp>
7087        #[prost(string, tag = "1")]
7088        Raw(::prost::alloc::string::String),
7089        #[prost(message, tag = "2")]
7090        Values(super::SipUri),
7091    }
7092}
7093#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7094pub struct Destination {
7095    #[prost(string, tag = "1")]
7096    pub city: ::prost::alloc::string::String,
7097    #[prost(string, tag = "2")]
7098    pub country: ::prost::alloc::string::String,
7099    #[prost(string, tag = "3")]
7100    pub region: ::prost::alloc::string::String,
7101}
7102#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7103#[repr(i32)]
7104pub enum SipStatusCode {
7105    SipStatusUnknown = 0,
7106    SipStatusTrying = 100,
7107    SipStatusRinging = 180,
7108    SipStatusCallIsForwarded = 181,
7109    SipStatusQueued = 182,
7110    SipStatusSessionProgress = 183,
7111    SipStatusEarlyDialogTerminated = 199,
7112    SipStatusOk = 200,
7113    SipStatusAccepted = 202,
7114    SipStatusNoNotification = 204,
7115    SipStatusMultipleChoices = 300,
7116    SipStatusMovedPermanently = 301,
7117    SipStatusMovedTemporarily = 302,
7118    SipStatusUseProxy = 305,
7119    SipStatusAlternativeService = 380,
7120    SipStatusBadRequest = 400,
7121    SipStatusUnauthorized = 401,
7122    SipStatusPaymentRequired = 402,
7123    SipStatusForbidden = 403,
7124    SipStatusNotfound = 404,
7125    SipStatusMethodNotAllowed = 405,
7126    SipStatusNotAcceptable = 406,
7127    SipStatusProxyAuthRequired = 407,
7128    SipStatusRequestTimeout = 408,
7129    SipStatusConflict = 409,
7130    SipStatusGone = 410,
7131    SipStatusLengthRequired = 411,
7132    SipStatusConditionalRequestFailed = 412,
7133    SipStatusRequestEntityTooLarge = 413,
7134    SipStatusRequestUriTooLong = 414,
7135    SipStatusUnsupportedMediaType = 415,
7136    SipStatusRequestedRangeNotSatisfiable = 416,
7137    SipStatusUnknownResourcePriority = 417,
7138    SipStatusBadExtension = 420,
7139    SipStatusExtensionRequired = 421,
7140    SipStatusSessionIntervalTooSmall = 422,
7141    SipStatusIntervalTooBrief = 423,
7142    SipStatusBadLocationInformation = 424,
7143    SipStatusBadAlertMessage = 425,
7144    SipStatusUseIdentityHeader = 428,
7145    SipStatusProvideReferrerIdentity = 429,
7146    SipStatusFlowFailed = 430,
7147    SipStatusAnonymityDisallowed = 433,
7148    SipStatusBadIdentityInfo = 436,
7149    SipStatusUnsupportedCertificate = 437,
7150    SipStatusInvalidIdentityHeader = 438,
7151    SipStatusFirstHopLacksOutboundSupport = 439,
7152    SipStatusMaxBreadthExceeded = 440,
7153    SipStatusBadInfoPackage = 469,
7154    SipStatusConsentNeeded = 470,
7155    SipStatusTemporarilyUnavailable = 480,
7156    SipStatusCallTransactionDoesNotExists = 481,
7157    SipStatusLoopDetected = 482,
7158    SipStatusTooManyHops = 483,
7159    SipStatusAddressIncomplete = 484,
7160    SipStatusAmbiguous = 485,
7161    SipStatusBusyHere = 486,
7162    SipStatusRequestTerminated = 487,
7163    SipStatusNotAcceptableHere = 488,
7164    SipStatusBadEvent = 489,
7165    SipStatusRequestPending = 491,
7166    SipStatusUndecipherable = 493,
7167    SipStatusSecurityAgreementRequired = 494,
7168    SipStatusInternalServerError = 500,
7169    SipStatusNotImplemented = 501,
7170    SipStatusBadGateway = 502,
7171    SipStatusServiceUnavailable = 503,
7172    SipStatusGatewayTimeout = 504,
7173    SipStatusVersionNotSupported = 505,
7174    SipStatusMessageTooLarge = 513,
7175    SipStatusGlobalBusyEverywhere = 600,
7176    SipStatusGlobalDecline = 603,
7177    SipStatusGlobalDoesNotExistAnywhere = 604,
7178    SipStatusGlobalNotAcceptable = 606,
7179    SipStatusGlobalUnwanted = 607,
7180    SipStatusGlobalRejected = 608,
7181}
7182impl SipStatusCode {
7183    /// String value of the enum field names used in the ProtoBuf definition.
7184    ///
7185    /// The values are not transformed in any way and thus are considered stable
7186    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7187    pub fn as_str_name(&self) -> &'static str {
7188        match self {
7189            Self::SipStatusUnknown => "SIP_STATUS_UNKNOWN",
7190            Self::SipStatusTrying => "SIP_STATUS_TRYING",
7191            Self::SipStatusRinging => "SIP_STATUS_RINGING",
7192            Self::SipStatusCallIsForwarded => "SIP_STATUS_CALL_IS_FORWARDED",
7193            Self::SipStatusQueued => "SIP_STATUS_QUEUED",
7194            Self::SipStatusSessionProgress => "SIP_STATUS_SESSION_PROGRESS",
7195            Self::SipStatusEarlyDialogTerminated => "SIP_STATUS_EARLY_DIALOG_TERMINATED",
7196            Self::SipStatusOk => "SIP_STATUS_OK",
7197            Self::SipStatusAccepted => "SIP_STATUS_ACCEPTED",
7198            Self::SipStatusNoNotification => "SIP_STATUS_NO_NOTIFICATION",
7199            Self::SipStatusMultipleChoices => "SIP_STATUS_MULTIPLE_CHOICES",
7200            Self::SipStatusMovedPermanently => "SIP_STATUS_MOVED_PERMANENTLY",
7201            Self::SipStatusMovedTemporarily => "SIP_STATUS_MOVED_TEMPORARILY",
7202            Self::SipStatusUseProxy => "SIP_STATUS_USE_PROXY",
7203            Self::SipStatusAlternativeService => "SIP_STATUS_ALTERNATIVE_SERVICE",
7204            Self::SipStatusBadRequest => "SIP_STATUS_BAD_REQUEST",
7205            Self::SipStatusUnauthorized => "SIP_STATUS_UNAUTHORIZED",
7206            Self::SipStatusPaymentRequired => "SIP_STATUS_PAYMENT_REQUIRED",
7207            Self::SipStatusForbidden => "SIP_STATUS_FORBIDDEN",
7208            Self::SipStatusNotfound => "SIP_STATUS_NOTFOUND",
7209            Self::SipStatusMethodNotAllowed => "SIP_STATUS_METHOD_NOT_ALLOWED",
7210            Self::SipStatusNotAcceptable => "SIP_STATUS_NOT_ACCEPTABLE",
7211            Self::SipStatusProxyAuthRequired => "SIP_STATUS_PROXY_AUTH_REQUIRED",
7212            Self::SipStatusRequestTimeout => "SIP_STATUS_REQUEST_TIMEOUT",
7213            Self::SipStatusConflict => "SIP_STATUS_CONFLICT",
7214            Self::SipStatusGone => "SIP_STATUS_GONE",
7215            Self::SipStatusLengthRequired => "SIP_STATUS_LENGTH_REQUIRED",
7216            Self::SipStatusConditionalRequestFailed => "SIP_STATUS_CONDITIONAL_REQUEST_FAILED",
7217            Self::SipStatusRequestEntityTooLarge => "SIP_STATUS_REQUEST_ENTITY_TOO_LARGE",
7218            Self::SipStatusRequestUriTooLong => "SIP_STATUS_REQUEST_URI_TOO_LONG",
7219            Self::SipStatusUnsupportedMediaType => "SIP_STATUS_UNSUPPORTED_MEDIA_TYPE",
7220            Self::SipStatusRequestedRangeNotSatisfiable => "SIP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE",
7221            Self::SipStatusUnknownResourcePriority => "SIP_STATUS_UNKNOWN_RESOURCE_PRIORITY",
7222            Self::SipStatusBadExtension => "SIP_STATUS_BAD_EXTENSION",
7223            Self::SipStatusExtensionRequired => "SIP_STATUS_EXTENSION_REQUIRED",
7224            Self::SipStatusSessionIntervalTooSmall => "SIP_STATUS_SESSION_INTERVAL_TOO_SMALL",
7225            Self::SipStatusIntervalTooBrief => "SIP_STATUS_INTERVAL_TOO_BRIEF",
7226            Self::SipStatusBadLocationInformation => "SIP_STATUS_BAD_LOCATION_INFORMATION",
7227            Self::SipStatusBadAlertMessage => "SIP_STATUS_BAD_ALERT_MESSAGE",
7228            Self::SipStatusUseIdentityHeader => "SIP_STATUS_USE_IDENTITY_HEADER",
7229            Self::SipStatusProvideReferrerIdentity => "SIP_STATUS_PROVIDE_REFERRER_IDENTITY",
7230            Self::SipStatusFlowFailed => "SIP_STATUS_FLOW_FAILED",
7231            Self::SipStatusAnonymityDisallowed => "SIP_STATUS_ANONYMITY_DISALLOWED",
7232            Self::SipStatusBadIdentityInfo => "SIP_STATUS_BAD_IDENTITY_INFO",
7233            Self::SipStatusUnsupportedCertificate => "SIP_STATUS_UNSUPPORTED_CERTIFICATE",
7234            Self::SipStatusInvalidIdentityHeader => "SIP_STATUS_INVALID_IDENTITY_HEADER",
7235            Self::SipStatusFirstHopLacksOutboundSupport => "SIP_STATUS_FIRST_HOP_LACKS_OUTBOUND_SUPPORT",
7236            Self::SipStatusMaxBreadthExceeded => "SIP_STATUS_MAX_BREADTH_EXCEEDED",
7237            Self::SipStatusBadInfoPackage => "SIP_STATUS_BAD_INFO_PACKAGE",
7238            Self::SipStatusConsentNeeded => "SIP_STATUS_CONSENT_NEEDED",
7239            Self::SipStatusTemporarilyUnavailable => "SIP_STATUS_TEMPORARILY_UNAVAILABLE",
7240            Self::SipStatusCallTransactionDoesNotExists => "SIP_STATUS_CALL_TRANSACTION_DOES_NOT_EXISTS",
7241            Self::SipStatusLoopDetected => "SIP_STATUS_LOOP_DETECTED",
7242            Self::SipStatusTooManyHops => "SIP_STATUS_TOO_MANY_HOPS",
7243            Self::SipStatusAddressIncomplete => "SIP_STATUS_ADDRESS_INCOMPLETE",
7244            Self::SipStatusAmbiguous => "SIP_STATUS_AMBIGUOUS",
7245            Self::SipStatusBusyHere => "SIP_STATUS_BUSY_HERE",
7246            Self::SipStatusRequestTerminated => "SIP_STATUS_REQUEST_TERMINATED",
7247            Self::SipStatusNotAcceptableHere => "SIP_STATUS_NOT_ACCEPTABLE_HERE",
7248            Self::SipStatusBadEvent => "SIP_STATUS_BAD_EVENT",
7249            Self::SipStatusRequestPending => "SIP_STATUS_REQUEST_PENDING",
7250            Self::SipStatusUndecipherable => "SIP_STATUS_UNDECIPHERABLE",
7251            Self::SipStatusSecurityAgreementRequired => "SIP_STATUS_SECURITY_AGREEMENT_REQUIRED",
7252            Self::SipStatusInternalServerError => "SIP_STATUS_INTERNAL_SERVER_ERROR",
7253            Self::SipStatusNotImplemented => "SIP_STATUS_NOT_IMPLEMENTED",
7254            Self::SipStatusBadGateway => "SIP_STATUS_BAD_GATEWAY",
7255            Self::SipStatusServiceUnavailable => "SIP_STATUS_SERVICE_UNAVAILABLE",
7256            Self::SipStatusGatewayTimeout => "SIP_STATUS_GATEWAY_TIMEOUT",
7257            Self::SipStatusVersionNotSupported => "SIP_STATUS_VERSION_NOT_SUPPORTED",
7258            Self::SipStatusMessageTooLarge => "SIP_STATUS_MESSAGE_TOO_LARGE",
7259            Self::SipStatusGlobalBusyEverywhere => "SIP_STATUS_GLOBAL_BUSY_EVERYWHERE",
7260            Self::SipStatusGlobalDecline => "SIP_STATUS_GLOBAL_DECLINE",
7261            Self::SipStatusGlobalDoesNotExistAnywhere => "SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE",
7262            Self::SipStatusGlobalNotAcceptable => "SIP_STATUS_GLOBAL_NOT_ACCEPTABLE",
7263            Self::SipStatusGlobalUnwanted => "SIP_STATUS_GLOBAL_UNWANTED",
7264            Self::SipStatusGlobalRejected => "SIP_STATUS_GLOBAL_REJECTED",
7265        }
7266    }
7267    /// Creates an enum from field names used in the ProtoBuf definition.
7268    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7269        match value {
7270            "SIP_STATUS_UNKNOWN" => Some(Self::SipStatusUnknown),
7271            "SIP_STATUS_TRYING" => Some(Self::SipStatusTrying),
7272            "SIP_STATUS_RINGING" => Some(Self::SipStatusRinging),
7273            "SIP_STATUS_CALL_IS_FORWARDED" => Some(Self::SipStatusCallIsForwarded),
7274            "SIP_STATUS_QUEUED" => Some(Self::SipStatusQueued),
7275            "SIP_STATUS_SESSION_PROGRESS" => Some(Self::SipStatusSessionProgress),
7276            "SIP_STATUS_EARLY_DIALOG_TERMINATED" => Some(Self::SipStatusEarlyDialogTerminated),
7277            "SIP_STATUS_OK" => Some(Self::SipStatusOk),
7278            "SIP_STATUS_ACCEPTED" => Some(Self::SipStatusAccepted),
7279            "SIP_STATUS_NO_NOTIFICATION" => Some(Self::SipStatusNoNotification),
7280            "SIP_STATUS_MULTIPLE_CHOICES" => Some(Self::SipStatusMultipleChoices),
7281            "SIP_STATUS_MOVED_PERMANENTLY" => Some(Self::SipStatusMovedPermanently),
7282            "SIP_STATUS_MOVED_TEMPORARILY" => Some(Self::SipStatusMovedTemporarily),
7283            "SIP_STATUS_USE_PROXY" => Some(Self::SipStatusUseProxy),
7284            "SIP_STATUS_ALTERNATIVE_SERVICE" => Some(Self::SipStatusAlternativeService),
7285            "SIP_STATUS_BAD_REQUEST" => Some(Self::SipStatusBadRequest),
7286            "SIP_STATUS_UNAUTHORIZED" => Some(Self::SipStatusUnauthorized),
7287            "SIP_STATUS_PAYMENT_REQUIRED" => Some(Self::SipStatusPaymentRequired),
7288            "SIP_STATUS_FORBIDDEN" => Some(Self::SipStatusForbidden),
7289            "SIP_STATUS_NOTFOUND" => Some(Self::SipStatusNotfound),
7290            "SIP_STATUS_METHOD_NOT_ALLOWED" => Some(Self::SipStatusMethodNotAllowed),
7291            "SIP_STATUS_NOT_ACCEPTABLE" => Some(Self::SipStatusNotAcceptable),
7292            "SIP_STATUS_PROXY_AUTH_REQUIRED" => Some(Self::SipStatusProxyAuthRequired),
7293            "SIP_STATUS_REQUEST_TIMEOUT" => Some(Self::SipStatusRequestTimeout),
7294            "SIP_STATUS_CONFLICT" => Some(Self::SipStatusConflict),
7295            "SIP_STATUS_GONE" => Some(Self::SipStatusGone),
7296            "SIP_STATUS_LENGTH_REQUIRED" => Some(Self::SipStatusLengthRequired),
7297            "SIP_STATUS_CONDITIONAL_REQUEST_FAILED" => Some(Self::SipStatusConditionalRequestFailed),
7298            "SIP_STATUS_REQUEST_ENTITY_TOO_LARGE" => Some(Self::SipStatusRequestEntityTooLarge),
7299            "SIP_STATUS_REQUEST_URI_TOO_LONG" => Some(Self::SipStatusRequestUriTooLong),
7300            "SIP_STATUS_UNSUPPORTED_MEDIA_TYPE" => Some(Self::SipStatusUnsupportedMediaType),
7301            "SIP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE" => Some(Self::SipStatusRequestedRangeNotSatisfiable),
7302            "SIP_STATUS_UNKNOWN_RESOURCE_PRIORITY" => Some(Self::SipStatusUnknownResourcePriority),
7303            "SIP_STATUS_BAD_EXTENSION" => Some(Self::SipStatusBadExtension),
7304            "SIP_STATUS_EXTENSION_REQUIRED" => Some(Self::SipStatusExtensionRequired),
7305            "SIP_STATUS_SESSION_INTERVAL_TOO_SMALL" => Some(Self::SipStatusSessionIntervalTooSmall),
7306            "SIP_STATUS_INTERVAL_TOO_BRIEF" => Some(Self::SipStatusIntervalTooBrief),
7307            "SIP_STATUS_BAD_LOCATION_INFORMATION" => Some(Self::SipStatusBadLocationInformation),
7308            "SIP_STATUS_BAD_ALERT_MESSAGE" => Some(Self::SipStatusBadAlertMessage),
7309            "SIP_STATUS_USE_IDENTITY_HEADER" => Some(Self::SipStatusUseIdentityHeader),
7310            "SIP_STATUS_PROVIDE_REFERRER_IDENTITY" => Some(Self::SipStatusProvideReferrerIdentity),
7311            "SIP_STATUS_FLOW_FAILED" => Some(Self::SipStatusFlowFailed),
7312            "SIP_STATUS_ANONYMITY_DISALLOWED" => Some(Self::SipStatusAnonymityDisallowed),
7313            "SIP_STATUS_BAD_IDENTITY_INFO" => Some(Self::SipStatusBadIdentityInfo),
7314            "SIP_STATUS_UNSUPPORTED_CERTIFICATE" => Some(Self::SipStatusUnsupportedCertificate),
7315            "SIP_STATUS_INVALID_IDENTITY_HEADER" => Some(Self::SipStatusInvalidIdentityHeader),
7316            "SIP_STATUS_FIRST_HOP_LACKS_OUTBOUND_SUPPORT" => Some(Self::SipStatusFirstHopLacksOutboundSupport),
7317            "SIP_STATUS_MAX_BREADTH_EXCEEDED" => Some(Self::SipStatusMaxBreadthExceeded),
7318            "SIP_STATUS_BAD_INFO_PACKAGE" => Some(Self::SipStatusBadInfoPackage),
7319            "SIP_STATUS_CONSENT_NEEDED" => Some(Self::SipStatusConsentNeeded),
7320            "SIP_STATUS_TEMPORARILY_UNAVAILABLE" => Some(Self::SipStatusTemporarilyUnavailable),
7321            "SIP_STATUS_CALL_TRANSACTION_DOES_NOT_EXISTS" => Some(Self::SipStatusCallTransactionDoesNotExists),
7322            "SIP_STATUS_LOOP_DETECTED" => Some(Self::SipStatusLoopDetected),
7323            "SIP_STATUS_TOO_MANY_HOPS" => Some(Self::SipStatusTooManyHops),
7324            "SIP_STATUS_ADDRESS_INCOMPLETE" => Some(Self::SipStatusAddressIncomplete),
7325            "SIP_STATUS_AMBIGUOUS" => Some(Self::SipStatusAmbiguous),
7326            "SIP_STATUS_BUSY_HERE" => Some(Self::SipStatusBusyHere),
7327            "SIP_STATUS_REQUEST_TERMINATED" => Some(Self::SipStatusRequestTerminated),
7328            "SIP_STATUS_NOT_ACCEPTABLE_HERE" => Some(Self::SipStatusNotAcceptableHere),
7329            "SIP_STATUS_BAD_EVENT" => Some(Self::SipStatusBadEvent),
7330            "SIP_STATUS_REQUEST_PENDING" => Some(Self::SipStatusRequestPending),
7331            "SIP_STATUS_UNDECIPHERABLE" => Some(Self::SipStatusUndecipherable),
7332            "SIP_STATUS_SECURITY_AGREEMENT_REQUIRED" => Some(Self::SipStatusSecurityAgreementRequired),
7333            "SIP_STATUS_INTERNAL_SERVER_ERROR" => Some(Self::SipStatusInternalServerError),
7334            "SIP_STATUS_NOT_IMPLEMENTED" => Some(Self::SipStatusNotImplemented),
7335            "SIP_STATUS_BAD_GATEWAY" => Some(Self::SipStatusBadGateway),
7336            "SIP_STATUS_SERVICE_UNAVAILABLE" => Some(Self::SipStatusServiceUnavailable),
7337            "SIP_STATUS_GATEWAY_TIMEOUT" => Some(Self::SipStatusGatewayTimeout),
7338            "SIP_STATUS_VERSION_NOT_SUPPORTED" => Some(Self::SipStatusVersionNotSupported),
7339            "SIP_STATUS_MESSAGE_TOO_LARGE" => Some(Self::SipStatusMessageTooLarge),
7340            "SIP_STATUS_GLOBAL_BUSY_EVERYWHERE" => Some(Self::SipStatusGlobalBusyEverywhere),
7341            "SIP_STATUS_GLOBAL_DECLINE" => Some(Self::SipStatusGlobalDecline),
7342            "SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE" => Some(Self::SipStatusGlobalDoesNotExistAnywhere),
7343            "SIP_STATUS_GLOBAL_NOT_ACCEPTABLE" => Some(Self::SipStatusGlobalNotAcceptable),
7344            "SIP_STATUS_GLOBAL_UNWANTED" => Some(Self::SipStatusGlobalUnwanted),
7345            "SIP_STATUS_GLOBAL_REJECTED" => Some(Self::SipStatusGlobalRejected),
7346            _ => None,
7347        }
7348    }
7349}
7350#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7351#[repr(i32)]
7352pub enum SipTransport {
7353    Auto = 0,
7354    Udp = 1,
7355    Tcp = 2,
7356    Tls = 3,
7357}
7358impl SipTransport {
7359    /// String value of the enum field names used in the ProtoBuf definition.
7360    ///
7361    /// The values are not transformed in any way and thus are considered stable
7362    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7363    pub fn as_str_name(&self) -> &'static str {
7364        match self {
7365            Self::Auto => "SIP_TRANSPORT_AUTO",
7366            Self::Udp => "SIP_TRANSPORT_UDP",
7367            Self::Tcp => "SIP_TRANSPORT_TCP",
7368            Self::Tls => "SIP_TRANSPORT_TLS",
7369        }
7370    }
7371    /// Creates an enum from field names used in the ProtoBuf definition.
7372    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7373        match value {
7374            "SIP_TRANSPORT_AUTO" => Some(Self::Auto),
7375            "SIP_TRANSPORT_UDP" => Some(Self::Udp),
7376            "SIP_TRANSPORT_TCP" => Some(Self::Tcp),
7377            "SIP_TRANSPORT_TLS" => Some(Self::Tls),
7378            _ => None,
7379        }
7380    }
7381}
7382#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7383#[repr(i32)]
7384pub enum SipHeaderOptions {
7385    /// do not map any headers, except ones mapped explicitly
7386    SipNoHeaders = 0,
7387    /// map all X-* headers to sip.h.x-* attributes
7388    SipXHeaders = 1,
7389    /// map all headers to sip.h.* attributes
7390    SipAllHeaders = 2,
7391}
7392impl SipHeaderOptions {
7393    /// String value of the enum field names used in the ProtoBuf definition.
7394    ///
7395    /// The values are not transformed in any way and thus are considered stable
7396    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7397    pub fn as_str_name(&self) -> &'static str {
7398        match self {
7399            Self::SipNoHeaders => "SIP_NO_HEADERS",
7400            Self::SipXHeaders => "SIP_X_HEADERS",
7401            Self::SipAllHeaders => "SIP_ALL_HEADERS",
7402        }
7403    }
7404    /// Creates an enum from field names used in the ProtoBuf definition.
7405    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7406        match value {
7407            "SIP_NO_HEADERS" => Some(Self::SipNoHeaders),
7408            "SIP_X_HEADERS" => Some(Self::SipXHeaders),
7409            "SIP_ALL_HEADERS" => Some(Self::SipAllHeaders),
7410            _ => None,
7411        }
7412    }
7413}
7414#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7415#[repr(i32)]
7416pub enum SipMediaEncryption {
7417    /// do not enable encryption
7418    SipMediaEncryptDisable = 0,
7419    /// use encryption if available
7420    SipMediaEncryptAllow = 1,
7421    /// require encryption
7422    SipMediaEncryptRequire = 2,
7423}
7424impl SipMediaEncryption {
7425    /// String value of the enum field names used in the ProtoBuf definition.
7426    ///
7427    /// The values are not transformed in any way and thus are considered stable
7428    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7429    pub fn as_str_name(&self) -> &'static str {
7430        match self {
7431            Self::SipMediaEncryptDisable => "SIP_MEDIA_ENCRYPT_DISABLE",
7432            Self::SipMediaEncryptAllow => "SIP_MEDIA_ENCRYPT_ALLOW",
7433            Self::SipMediaEncryptRequire => "SIP_MEDIA_ENCRYPT_REQUIRE",
7434        }
7435    }
7436    /// Creates an enum from field names used in the ProtoBuf definition.
7437    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7438        match value {
7439            "SIP_MEDIA_ENCRYPT_DISABLE" => Some(Self::SipMediaEncryptDisable),
7440            "SIP_MEDIA_ENCRYPT_ALLOW" => Some(Self::SipMediaEncryptAllow),
7441            "SIP_MEDIA_ENCRYPT_REQUIRE" => Some(Self::SipMediaEncryptRequire),
7442            _ => None,
7443        }
7444    }
7445}
7446#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7447#[repr(i32)]
7448pub enum ProviderType {
7449    Unknown = 0,
7450    /// Internally implemented
7451    Internal = 1,
7452    /// Vendor provided
7453    External = 2,
7454}
7455impl ProviderType {
7456    /// String value of the enum field names used in the ProtoBuf definition.
7457    ///
7458    /// The values are not transformed in any way and thus are considered stable
7459    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7460    pub fn as_str_name(&self) -> &'static str {
7461        match self {
7462            Self::Unknown => "PROVIDER_TYPE_UNKNOWN",
7463            Self::Internal => "PROVIDER_TYPE_INTERNAL",
7464            Self::External => "PROVIDER_TYPE_EXTERNAL",
7465        }
7466    }
7467    /// Creates an enum from field names used in the ProtoBuf definition.
7468    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7469        match value {
7470            "PROVIDER_TYPE_UNKNOWN" => Some(Self::Unknown),
7471            "PROVIDER_TYPE_INTERNAL" => Some(Self::Internal),
7472            "PROVIDER_TYPE_EXTERNAL" => Some(Self::External),
7473            _ => None,
7474        }
7475    }
7476}
7477#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7478#[repr(i32)]
7479pub enum SipCallStatus {
7480    /// Incoming call is being handled by the SIP service. The SIP participant hasn't joined a LiveKit room yet
7481    ScsCallIncoming = 0,
7482    /// SIP participant for outgoing call has been created. The SIP outgoing call is being established
7483    ScsParticipantJoined = 1,
7484    /// Call is ongoing. SIP participant is active in the LiveKit room
7485    ScsActive = 2,
7486    /// Call has ended
7487    ScsDisconnected = 3,
7488    /// Call has ended or never succeeded because of an error
7489    ScsError = 4,
7490}
7491impl SipCallStatus {
7492    /// String value of the enum field names used in the ProtoBuf definition.
7493    ///
7494    /// The values are not transformed in any way and thus are considered stable
7495    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7496    pub fn as_str_name(&self) -> &'static str {
7497        match self {
7498            Self::ScsCallIncoming => "SCS_CALL_INCOMING",
7499            Self::ScsParticipantJoined => "SCS_PARTICIPANT_JOINED",
7500            Self::ScsActive => "SCS_ACTIVE",
7501            Self::ScsDisconnected => "SCS_DISCONNECTED",
7502            Self::ScsError => "SCS_ERROR",
7503        }
7504    }
7505    /// Creates an enum from field names used in the ProtoBuf definition.
7506    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7507        match value {
7508            "SCS_CALL_INCOMING" => Some(Self::ScsCallIncoming),
7509            "SCS_PARTICIPANT_JOINED" => Some(Self::ScsParticipantJoined),
7510            "SCS_ACTIVE" => Some(Self::ScsActive),
7511            "SCS_DISCONNECTED" => Some(Self::ScsDisconnected),
7512            "SCS_ERROR" => Some(Self::ScsError),
7513            _ => None,
7514        }
7515    }
7516}
7517#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7518#[repr(i32)]
7519pub enum SipTransferStatus {
7520    StsTransferOngoing = 0,
7521    StsTransferFailed = 1,
7522    StsTransferSuccessful = 2,
7523}
7524impl SipTransferStatus {
7525    /// String value of the enum field names used in the ProtoBuf definition.
7526    ///
7527    /// The values are not transformed in any way and thus are considered stable
7528    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7529    pub fn as_str_name(&self) -> &'static str {
7530        match self {
7531            Self::StsTransferOngoing => "STS_TRANSFER_ONGOING",
7532            Self::StsTransferFailed => "STS_TRANSFER_FAILED",
7533            Self::StsTransferSuccessful => "STS_TRANSFER_SUCCESSFUL",
7534        }
7535    }
7536    /// Creates an enum from field names used in the ProtoBuf definition.
7537    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7538        match value {
7539            "STS_TRANSFER_ONGOING" => Some(Self::StsTransferOngoing),
7540            "STS_TRANSFER_FAILED" => Some(Self::StsTransferFailed),
7541            "STS_TRANSFER_SUCCESSFUL" => Some(Self::StsTransferSuccessful),
7542            _ => None,
7543        }
7544    }
7545}
7546#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7547#[repr(i32)]
7548pub enum SipTransferReason {
7549    /// No reason reported
7550    StrUnspecified = 0,
7551    /// The transferee answered and the transfer completed
7552    StrCompleted = 1,
7553    /// The call ended before the transfer completed: remote BYE, room deleted or local hangup
7554    StrCallEnded = 2,
7555    /// The transferee, or its provider, rejected the transfer
7556    StrRejected = 3,
7557    /// The transferee did not answer in time
7558    StrRingingTimeout = 4,
7559    /// The provider stopped reporting the transfer status without a final response
7560    StrSubscriptionTerminated = 5,
7561    /// Canceled through the API
7562    StrCanceled = 6,
7563}
7564impl SipTransferReason {
7565    /// String value of the enum field names used in the ProtoBuf definition.
7566    ///
7567    /// The values are not transformed in any way and thus are considered stable
7568    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7569    pub fn as_str_name(&self) -> &'static str {
7570        match self {
7571            Self::StrUnspecified => "STR_UNSPECIFIED",
7572            Self::StrCompleted => "STR_COMPLETED",
7573            Self::StrCallEnded => "STR_CALL_ENDED",
7574            Self::StrRejected => "STR_REJECTED",
7575            Self::StrRingingTimeout => "STR_RINGING_TIMEOUT",
7576            Self::StrSubscriptionTerminated => "STR_SUBSCRIPTION_TERMINATED",
7577            Self::StrCanceled => "STR_CANCELED",
7578        }
7579    }
7580    /// Creates an enum from field names used in the ProtoBuf definition.
7581    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7582        match value {
7583            "STR_UNSPECIFIED" => Some(Self::StrUnspecified),
7584            "STR_COMPLETED" => Some(Self::StrCompleted),
7585            "STR_CALL_ENDED" => Some(Self::StrCallEnded),
7586            "STR_REJECTED" => Some(Self::StrRejected),
7587            "STR_RINGING_TIMEOUT" => Some(Self::StrRingingTimeout),
7588            "STR_SUBSCRIPTION_TERMINATED" => Some(Self::StrSubscriptionTerminated),
7589            "STR_CANCELED" => Some(Self::StrCanceled),
7590            _ => None,
7591        }
7592    }
7593}
7594#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7595#[repr(i32)]
7596pub enum SipFeature {
7597    None = 0,
7598    KrispEnabled = 1,
7599}
7600impl SipFeature {
7601    /// String value of the enum field names used in the ProtoBuf definition.
7602    ///
7603    /// The values are not transformed in any way and thus are considered stable
7604    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7605    pub fn as_str_name(&self) -> &'static str {
7606        match self {
7607            Self::None => "NONE",
7608            Self::KrispEnabled => "KRISP_ENABLED",
7609        }
7610    }
7611    /// Creates an enum from field names used in the ProtoBuf definition.
7612    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7613        match value {
7614            "NONE" => Some(Self::None),
7615            "KRISP_ENABLED" => Some(Self::KrispEnabled),
7616            _ => None,
7617        }
7618    }
7619}
7620#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7621#[repr(i32)]
7622pub enum SipCallDirection {
7623    ScdUnknown = 0,
7624    ScdInbound = 1,
7625    ScdOutbound = 2,
7626}
7627impl SipCallDirection {
7628    /// String value of the enum field names used in the ProtoBuf definition.
7629    ///
7630    /// The values are not transformed in any way and thus are considered stable
7631    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7632    pub fn as_str_name(&self) -> &'static str {
7633        match self {
7634            Self::ScdUnknown => "SCD_UNKNOWN",
7635            Self::ScdInbound => "SCD_INBOUND",
7636            Self::ScdOutbound => "SCD_OUTBOUND",
7637        }
7638    }
7639    /// Creates an enum from field names used in the ProtoBuf definition.
7640    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7641        match value {
7642            "SCD_UNKNOWN" => Some(Self::ScdUnknown),
7643            "SCD_INBOUND" => Some(Self::ScdInbound),
7644            "SCD_OUTBOUND" => Some(Self::ScdOutbound),
7645            _ => None,
7646        }
7647    }
7648}
7649#[derive(Clone, PartialEq, ::prost::Message)]
7650pub struct DialWhatsAppCallRequest {
7651    /// Required - The phone number id of the business that is initiating the call
7652    #[prost(string, tag = "1")]
7653    pub whatsapp_phone_number_id: ::prost::alloc::string::String,
7654    /// Required - The number of the user that is supossed to receive the call
7655    #[prost(string, tag = "2")]
7656    pub whatsapp_to_phone_number: ::prost::alloc::string::String,
7657    /// Required - The API key of the business that is initiating the call
7658    #[prost(string, tag = "3")]
7659    pub whatsapp_api_key: ::prost::alloc::string::String,
7660    /// Required - WhatsApp Cloud API version, eg: 23.0, 24.0, etc.
7661    #[prost(string, tag = "12")]
7662    pub whatsapp_cloud_api_version: ::prost::alloc::string::String,
7663    /// Optional - An arbitrary string you can pass in that is useful for tracking and logging purposes.
7664    #[prost(string, tag = "4")]
7665    pub whatsapp_biz_opaque_callback_data: ::prost::alloc::string::String,
7666    /// Optional - What LiveKit room should this participant be connected too
7667    #[prost(string, tag = "5")]
7668    pub room_name: ::prost::alloc::string::String,
7669    /// Optional - Agents to dispatch the call to
7670    #[prost(message, repeated, tag = "6")]
7671    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
7672    /// Optional - Identity of the participant in LiveKit room
7673    /// This is used for logging purposes, so it is advised to not put PII in this field.
7674    #[prost(string, tag = "7")]
7675    pub participant_identity: ::prost::alloc::string::String,
7676    /// Optional - Name of the participant in LiveKit room
7677    #[prost(string, tag = "8")]
7678    pub participant_name: ::prost::alloc::string::String,
7679    /// Optional - User-defined metadata. Will be attached to a created Participant in the room.
7680    #[prost(string, tag = "9")]
7681    pub participant_metadata: ::prost::alloc::string::String,
7682    /// Optional - User-defined attributes. Will be attached to a created Participant in the room.
7683    #[prost(map = "string, string", tag = "10")]
7684    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7685    /// 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.
7686    #[prost(string, tag = "11")]
7687    pub destination_country: ::prost::alloc::string::String,
7688    /// Max time for the callee to answer the call.
7689    #[prost(message, optional, tag = "13")]
7690    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
7691}
7692#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7693pub struct DialWhatsAppCallResponse {
7694    /// Call ID sent by Meta
7695    #[prost(string, tag = "1")]
7696    pub whatsapp_call_id: ::prost::alloc::string::String,
7697    /// The name of the LiveKit room that the call is connected to
7698    #[prost(string, tag = "2")]
7699    pub room_name: ::prost::alloc::string::String,
7700}
7701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7702pub struct DisconnectWhatsAppCallRequest {
7703    /// Required - Call ID sent by Meta
7704    #[prost(string, tag = "1")]
7705    pub whatsapp_call_id: ::prost::alloc::string::String,
7706    /// The API key of the whatsapp business.
7707    /// Required if the DisconnectReason is BUSINESS_INITIATED.
7708    /// Optional for  USER_INITIATED as no API call to WhatsApp is needed.
7709    #[prost(string, tag = "2")]
7710    pub whatsapp_api_key: ::prost::alloc::string::String,
7711    /// The reason for disconnecting the call
7712    #[prost(enumeration = "disconnect_whats_app_call_request::DisconnectReason", tag = "3")]
7713    pub disconnect_reason: i32,
7714}
7715/// Nested message and enum types in `DisconnectWhatsAppCallRequest`.
7716pub mod disconnect_whats_app_call_request {
7717    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7718    #[repr(i32)]
7719    pub enum DisconnectReason {
7720        /// The call is being disconnected by the business
7721        BusinessInitiated = 0,
7722        /// The call is disconnected by the user.
7723        /// This can be tracked as part of call terminate webhook
7724        /// <https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/user-initiated-calls#call-terminate-webhook>
7725        /// Note that this webhook will also be sent when the call is disconnected by the business.
7726        /// Calling the API twice in such cases will result in an error.
7727        UserInitiated = 1,
7728    }
7729    impl DisconnectReason {
7730        /// String value of the enum field names used in the ProtoBuf definition.
7731        ///
7732        /// The values are not transformed in any way and thus are considered stable
7733        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7734        pub fn as_str_name(&self) -> &'static str {
7735            match self {
7736                Self::BusinessInitiated => "BUSINESS_INITIATED",
7737                Self::UserInitiated => "USER_INITIATED",
7738            }
7739        }
7740        /// Creates an enum from field names used in the ProtoBuf definition.
7741        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7742            match value {
7743                "BUSINESS_INITIATED" => Some(Self::BusinessInitiated),
7744                "USER_INITIATED" => Some(Self::UserInitiated),
7745                _ => None,
7746            }
7747        }
7748    }
7749}
7750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7751pub struct DisconnectWhatsAppCallResponse {
7752}
7753#[derive(Clone, PartialEq, ::prost::Message)]
7754pub struct ConnectWhatsAppCallRequest {
7755    /// Required - Call ID sent by Meta
7756    #[prost(string, tag = "1")]
7757    pub whatsapp_call_id: ::prost::alloc::string::String,
7758    /// Required - The call connect webhook comes with SDP from Meta
7759    /// It is the answer SDP for a business initiated call
7760    #[prost(message, optional, tag = "2")]
7761    pub sdp: ::core::option::Option<SessionDescription>,
7762    /// Wait for the answer for the call before returning.
7763    #[prost(bool, tag = "3")]
7764    pub wait_until_answered: bool,
7765}
7766#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7767pub struct ConnectWhatsAppCallResponse {
7768}
7769#[derive(Clone, PartialEq, ::prost::Message)]
7770pub struct AcceptWhatsAppCallRequest {
7771    /// Required - The phone number id of the business that is conencting the call
7772    #[prost(string, tag = "1")]
7773    pub whatsapp_phone_number_id: ::prost::alloc::string::String,
7774    /// Required - The API key of the business that is connecting the call
7775    #[prost(string, tag = "2")]
7776    pub whatsapp_api_key: ::prost::alloc::string::String,
7777    /// Required - WhatsApp Cloud API version, eg: 23.0, 24.0, etc.
7778    #[prost(string, tag = "13")]
7779    pub whatsapp_cloud_api_version: ::prost::alloc::string::String,
7780    /// Required - Call ID sent by Meta
7781    #[prost(string, tag = "3")]
7782    pub whatsapp_call_id: ::prost::alloc::string::String,
7783    /// Optional - An arbitrary string you can pass in that is useful for tracking and logging purposes.
7784    #[prost(string, tag = "4")]
7785    pub whatsapp_biz_opaque_callback_data: ::prost::alloc::string::String,
7786    /// Required - The call accept webhook comes with SDP from Meta
7787    /// It is the for a user initiated call
7788    #[prost(message, optional, tag = "5")]
7789    pub sdp: ::core::option::Option<SessionDescription>,
7790    /// Optional - What LiveKit room should this participant be connected too
7791    #[prost(string, tag = "6")]
7792    pub room_name: ::prost::alloc::string::String,
7793    /// Optional - Agents to dispatch the call to
7794    #[prost(message, repeated, tag = "7")]
7795    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
7796    /// Optional - Identity of the participant in LiveKit room
7797    /// This is used for logging purposes, so it is advised to not put PII in this field.
7798    #[prost(string, tag = "8")]
7799    pub participant_identity: ::prost::alloc::string::String,
7800    /// Optional - Name of the participant in LiveKit room
7801    #[prost(string, tag = "9")]
7802    pub participant_name: ::prost::alloc::string::String,
7803    /// Optional - User-defined metadata. Will be attached to a created Participant in the room.
7804    #[prost(string, tag = "10")]
7805    pub participant_metadata: ::prost::alloc::string::String,
7806    /// Optional - User-defined attributes. Will be attached to a created Participant in the room.
7807    #[prost(map = "string, string", tag = "11")]
7808    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7809    /// 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.
7810    #[prost(string, tag = "12")]
7811    pub destination_country: ::prost::alloc::string::String,
7812    /// Max time for the callee to answer the call.
7813    #[prost(message, optional, tag = "14")]
7814    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
7815    /// Wait for the answer for the call before returning.
7816    #[prost(bool, tag = "15")]
7817    pub wait_until_answered: bool,
7818}
7819#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7820pub struct AcceptWhatsAppCallResponse {
7821    /// The name of the LiveKit room that the call is connected to
7822    #[prost(string, tag = "1")]
7823    pub room_name: ::prost::alloc::string::String,
7824}
7825#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7826pub struct WhatsAppCall {
7827    /// list of call ids that are currently active
7828    #[prost(string, tag = "1")]
7829    pub whatsapp_call_id: ::prost::alloc::string::String,
7830    /// Direction of the call
7831    #[prost(enumeration = "WhatsAppCallDirection", tag = "2")]
7832    pub direction: i32,
7833}
7834#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7835#[repr(i32)]
7836pub enum WhatsAppCallDirection {
7837    WhatsappCallDirectionInbound = 0,
7838    WhatsappCallDirectionOutbound = 2,
7839}
7840impl WhatsAppCallDirection {
7841    /// String value of the enum field names used in the ProtoBuf definition.
7842    ///
7843    /// The values are not transformed in any way and thus are considered stable
7844    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7845    pub fn as_str_name(&self) -> &'static str {
7846        match self {
7847            Self::WhatsappCallDirectionInbound => "WHATSAPP_CALL_DIRECTION_INBOUND",
7848            Self::WhatsappCallDirectionOutbound => "WHATSAPP_CALL_DIRECTION_OUTBOUND",
7849        }
7850    }
7851    /// Creates an enum from field names used in the ProtoBuf definition.
7852    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7853        match value {
7854            "WHATSAPP_CALL_DIRECTION_INBOUND" => Some(Self::WhatsappCallDirectionInbound),
7855            "WHATSAPP_CALL_DIRECTION_OUTBOUND" => Some(Self::WhatsappCallDirectionOutbound),
7856            _ => None,
7857        }
7858    }
7859}
7860#[derive(Clone, PartialEq, ::prost::Message)]
7861pub struct ConnectTwilioCallRequest {
7862    /// The Direction of the call
7863    #[prost(enumeration = "connect_twilio_call_request::TwilioCallDirection", tag = "1")]
7864    pub twilio_call_direction: i32,
7865    /// What LiveKit room should this call be connected to
7866    #[prost(string, tag = "2")]
7867    pub room_name: ::prost::alloc::string::String,
7868    /// Optional agents to dispatch the call to
7869    #[prost(message, repeated, tag = "3")]
7870    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
7871    /// Optional identity of the participant in LiveKit room
7872    /// This is used for logging purposes, so it is advised to not put PII in this field.
7873    #[prost(string, tag = "4")]
7874    pub participant_identity: ::prost::alloc::string::String,
7875    /// Optional name of the participant in LiveKit room
7876    #[prost(string, tag = "5")]
7877    pub participant_name: ::prost::alloc::string::String,
7878    /// Optional user-defined metadata. Will be attached to a created Participant in the room.
7879    #[prost(string, tag = "6")]
7880    pub participant_metadata: ::prost::alloc::string::String,
7881    /// Optional user-defined attributes. Will be attached to a created Participant in the room.
7882    #[prost(map = "string, string", tag = "7")]
7883    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7884    /// 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.
7885    #[prost(string, tag = "8")]
7886    pub destination_country: ::prost::alloc::string::String,
7887}
7888/// Nested message and enum types in `ConnectTwilioCallRequest`.
7889pub mod connect_twilio_call_request {
7890    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7891    #[repr(i32)]
7892    pub enum TwilioCallDirection {
7893        /// Call is inbound to LiveKit from Twilio
7894        Inbound = 0,
7895        /// Call is outbound from LiveKit to Twilio
7896        Outbound = 1,
7897    }
7898    impl TwilioCallDirection {
7899        /// String value of the enum field names used in the ProtoBuf definition.
7900        ///
7901        /// The values are not transformed in any way and thus are considered stable
7902        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7903        pub fn as_str_name(&self) -> &'static str {
7904            match self {
7905                Self::Inbound => "TWILIO_CALL_DIRECTION_INBOUND",
7906                Self::Outbound => "TWILIO_CALL_DIRECTION_OUTBOUND",
7907            }
7908        }
7909        /// Creates an enum from field names used in the ProtoBuf definition.
7910        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7911            match value {
7912                "TWILIO_CALL_DIRECTION_INBOUND" => Some(Self::Inbound),
7913                "TWILIO_CALL_DIRECTION_OUTBOUND" => Some(Self::Outbound),
7914                _ => None,
7915            }
7916        }
7917    }
7918}
7919#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7920pub struct ConnectTwilioCallResponse {
7921    /// The websocket URL which twilio media stream will connect to
7922    #[prost(string, tag = "1")]
7923    pub connect_url: ::prost::alloc::string::String,
7924}
7925#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7926#[repr(i32)]
7927pub enum ConnectorType {
7928    Unspecified = 0,
7929    WhatsApp = 1,
7930    Twilio = 2,
7931}
7932impl ConnectorType {
7933    /// String value of the enum field names used in the ProtoBuf definition.
7934    ///
7935    /// The values are not transformed in any way and thus are considered stable
7936    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7937    pub fn as_str_name(&self) -> &'static str {
7938        match self {
7939            Self::Unspecified => "Unspecified",
7940            Self::WhatsApp => "WhatsApp",
7941            Self::Twilio => "Twilio",
7942        }
7943    }
7944    /// Creates an enum from field names used in the ProtoBuf definition.
7945    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7946        match value {
7947            "Unspecified" => Some(Self::Unspecified),
7948            "WhatsApp" => Some(Self::WhatsApp),
7949            "Twilio" => Some(Self::Twilio),
7950            _ => None,
7951        }
7952    }
7953}
7954#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7955pub struct AnalyticsVideoLayer {
7956    #[prost(int32, tag = "1")]
7957    pub layer: i32,
7958    #[prost(uint32, tag = "2")]
7959    pub packets: u32,
7960    #[prost(uint64, tag = "3")]
7961    pub bytes: u64,
7962    #[prost(uint32, tag = "4")]
7963    pub frames: u32,
7964}
7965#[derive(Clone, PartialEq, ::prost::Message)]
7966pub struct AnalyticsStream {
7967    #[prost(uint32, tag = "1")]
7968    pub ssrc: u32,
7969    #[prost(uint32, tag = "2")]
7970    pub primary_packets: u32,
7971    #[prost(uint64, tag = "3")]
7972    pub primary_bytes: u64,
7973    #[prost(uint32, tag = "4")]
7974    pub retransmit_packets: u32,
7975    #[prost(uint64, tag = "5")]
7976    pub retransmit_bytes: u64,
7977    #[prost(uint32, tag = "6")]
7978    pub padding_packets: u32,
7979    #[prost(uint64, tag = "7")]
7980    pub padding_bytes: u64,
7981    #[prost(uint32, tag = "8")]
7982    pub packets_lost: u32,
7983    #[prost(uint32, tag = "9")]
7984    pub frames: u32,
7985    #[prost(uint32, tag = "10")]
7986    pub rtt: u32,
7987    #[prost(uint32, tag = "11")]
7988    pub jitter: u32,
7989    #[prost(uint32, tag = "12")]
7990    pub nacks: u32,
7991    #[prost(uint32, tag = "13")]
7992    pub plis: u32,
7993    #[prost(uint32, tag = "14")]
7994    pub firs: u32,
7995    #[prost(message, repeated, tag = "15")]
7996    pub video_layers: ::prost::alloc::vec::Vec<AnalyticsVideoLayer>,
7997    #[prost(message, optional, tag = "17")]
7998    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
7999    #[prost(message, optional, tag = "18")]
8000    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
8001    #[prost(uint32, tag = "19")]
8002    pub packets_out_of_order: u32,
8003}
8004#[derive(Clone, PartialEq, ::prost::Message)]
8005pub struct AnalyticsStat {
8006    /// unique id for this stat
8007    #[prost(string, tag = "14")]
8008    pub id: ::prost::alloc::string::String,
8009    #[prost(string, tag = "1")]
8010    pub analytics_key: ::prost::alloc::string::String,
8011    #[prost(enumeration = "StreamType", tag = "2")]
8012    pub kind: i32,
8013    #[prost(message, optional, tag = "3")]
8014    pub time_stamp: ::core::option::Option<::pbjson_types::Timestamp>,
8015    #[prost(string, tag = "4")]
8016    pub node: ::prost::alloc::string::String,
8017    #[prost(string, tag = "5")]
8018    pub room_id: ::prost::alloc::string::String,
8019    #[prost(string, tag = "6")]
8020    pub room_name: ::prost::alloc::string::String,
8021    #[prost(string, tag = "7")]
8022    pub participant_id: ::prost::alloc::string::String,
8023    #[prost(string, tag = "8")]
8024    pub track_id: ::prost::alloc::string::String,
8025    /// average score
8026    #[prost(float, tag = "9")]
8027    pub score: f32,
8028    #[prost(message, repeated, tag = "10")]
8029    pub streams: ::prost::alloc::vec::Vec<AnalyticsStream>,
8030    #[prost(string, tag = "11")]
8031    pub mime: ::prost::alloc::string::String,
8032    #[prost(float, tag = "12")]
8033    pub min_score: f32,
8034    #[prost(float, tag = "13")]
8035    pub median_score: f32,
8036}
8037#[derive(Clone, PartialEq, ::prost::Message)]
8038pub struct AnalyticsStats {
8039    #[prost(message, repeated, tag = "1")]
8040    pub stats: ::prost::alloc::vec::Vec<AnalyticsStat>,
8041}
8042#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8043pub struct AnalyticsClientMeta {
8044    #[prost(string, tag = "1")]
8045    pub region: ::prost::alloc::string::String,
8046    #[prost(string, tag = "2")]
8047    pub node: ::prost::alloc::string::String,
8048    #[prost(string, tag = "3")]
8049    pub client_addr: ::prost::alloc::string::String,
8050    #[prost(uint32, tag = "4")]
8051    pub client_connect_time: u32,
8052    /// udp, tcp, turn
8053    #[prost(string, tag = "5")]
8054    pub connection_type: ::prost::alloc::string::String,
8055    #[prost(enumeration = "ReconnectReason", tag = "6")]
8056    pub reconnect_reason: i32,
8057    #[prost(string, optional, tag = "7")]
8058    pub geo_hash: ::core::option::Option<::prost::alloc::string::String>,
8059    #[prost(string, optional, tag = "8")]
8060    pub country: ::core::option::Option<::prost::alloc::string::String>,
8061    #[prost(uint32, optional, tag = "9")]
8062    pub isp_asn: ::core::option::Option<u32>,
8063}
8064#[derive(Clone, PartialEq, ::prost::Message)]
8065pub struct AnalyticsEvent {
8066    /// unique id for this event
8067    #[prost(string, tag = "25")]
8068    pub id: ::prost::alloc::string::String,
8069    #[prost(enumeration = "AnalyticsEventType", tag = "1")]
8070    pub r#type: i32,
8071    #[prost(message, optional, tag = "2")]
8072    pub timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
8073    #[prost(string, tag = "3")]
8074    pub room_id: ::prost::alloc::string::String,
8075    #[prost(message, optional, tag = "4")]
8076    pub room: ::core::option::Option<Room>,
8077    #[prost(string, tag = "5")]
8078    pub participant_id: ::prost::alloc::string::String,
8079    #[prost(message, optional, tag = "6")]
8080    pub participant: ::core::option::Option<ParticipantInfo>,
8081    #[prost(string, tag = "7")]
8082    pub track_id: ::prost::alloc::string::String,
8083    #[prost(message, optional, tag = "8")]
8084    pub track: ::core::option::Option<TrackInfo>,
8085    #[prost(string, tag = "10")]
8086    pub analytics_key: ::prost::alloc::string::String,
8087    #[prost(message, optional, tag = "11")]
8088    pub client_info: ::core::option::Option<ClientInfo>,
8089    #[prost(message, optional, tag = "12")]
8090    pub client_meta: ::core::option::Option<AnalyticsClientMeta>,
8091    #[prost(string, tag = "13")]
8092    pub egress_id: ::prost::alloc::string::String,
8093    #[prost(string, tag = "19")]
8094    pub ingress_id: ::prost::alloc::string::String,
8095    #[prost(enumeration = "VideoQuality", tag = "14")]
8096    pub max_subscribed_video_quality: i32,
8097    #[prost(message, optional, tag = "15")]
8098    pub publisher: ::core::option::Option<ParticipantInfo>,
8099    #[prost(string, tag = "16")]
8100    pub mime: ::prost::alloc::string::String,
8101    #[prost(message, optional, tag = "17")]
8102    pub egress: ::core::option::Option<EgressInfo>,
8103    #[prost(message, optional, tag = "18")]
8104    pub ingress: ::core::option::Option<IngressInfo>,
8105    #[prost(string, tag = "20")]
8106    pub error: ::prost::alloc::string::String,
8107    #[prost(message, optional, tag = "21")]
8108    pub rtp_stats: ::core::option::Option<RtpStats>,
8109    #[prost(int32, tag = "22")]
8110    pub video_layer: i32,
8111    #[prost(string, tag = "24")]
8112    pub node_id: ::prost::alloc::string::String,
8113    #[prost(string, tag = "26")]
8114    pub sip_call_id: ::prost::alloc::string::String,
8115    #[prost(message, optional, tag = "27")]
8116    pub sip_call: ::core::option::Option<SipCallInfo>,
8117    #[prost(string, tag = "28")]
8118    pub sip_trunk_id: ::prost::alloc::string::String,
8119    #[prost(message, optional, tag = "29")]
8120    pub sip_inbound_trunk: ::core::option::Option<SipInboundTrunkInfo>,
8121    #[prost(message, optional, tag = "30")]
8122    pub sip_outbound_trunk: ::core::option::Option<SipOutboundTrunkInfo>,
8123    #[prost(string, tag = "31")]
8124    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
8125    #[prost(message, optional, tag = "32")]
8126    pub sip_dispatch_rule: ::core::option::Option<SipDispatchRuleInfo>,
8127    #[prost(message, optional, tag = "36")]
8128    pub sip_transfer: ::core::option::Option<SipTransferInfo>,
8129    #[prost(message, optional, tag = "33")]
8130    pub report: ::core::option::Option<ReportInfo>,
8131    #[prost(message, optional, tag = "34")]
8132    pub api_call: ::core::option::Option<ApiCallInfo>,
8133    #[prost(message, optional, tag = "35")]
8134    pub webhook: ::core::option::Option<WebhookInfo>,
8135    #[prost(enumeration = "RoomEndReason", tag = "37")]
8136    pub room_end_reason: i32,
8137}
8138#[derive(Clone, PartialEq, ::prost::Message)]
8139pub struct AnalyticsEvents {
8140    #[prost(message, repeated, tag = "1")]
8141    pub events: ::prost::alloc::vec::Vec<AnalyticsEvent>,
8142}
8143#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8144pub struct AnalyticsRoomParticipant {
8145    #[prost(string, tag = "1")]
8146    pub id: ::prost::alloc::string::String,
8147    #[prost(string, tag = "2")]
8148    pub identity: ::prost::alloc::string::String,
8149    #[prost(string, tag = "3")]
8150    pub name: ::prost::alloc::string::String,
8151    #[prost(enumeration = "participant_info::State", tag = "4")]
8152    pub state: i32,
8153    #[prost(message, optional, tag = "5")]
8154    pub joined_at: ::core::option::Option<::pbjson_types::Timestamp>,
8155}
8156#[derive(Clone, PartialEq, ::prost::Message)]
8157pub struct AnalyticsRoom {
8158    #[prost(string, tag = "1")]
8159    pub id: ::prost::alloc::string::String,
8160    #[prost(string, tag = "2")]
8161    pub name: ::prost::alloc::string::String,
8162    #[prost(string, tag = "5")]
8163    pub project_id: ::prost::alloc::string::String,
8164    #[prost(message, optional, tag = "3")]
8165    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
8166    #[prost(message, repeated, tag = "4")]
8167    pub participants: ::prost::alloc::vec::Vec<AnalyticsRoomParticipant>,
8168}
8169#[derive(Clone, PartialEq, ::prost::Message)]
8170pub struct AnalyticsNodeRooms {
8171    #[prost(string, tag = "1")]
8172    pub node_id: ::prost::alloc::string::String,
8173    #[prost(uint64, tag = "2")]
8174    pub sequence_number: u64,
8175    #[prost(message, optional, tag = "3")]
8176    pub timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
8177    #[prost(message, repeated, tag = "4")]
8178    pub rooms: ::prost::alloc::vec::Vec<AnalyticsRoom>,
8179}
8180#[derive(Clone, PartialEq, ::prost::Message)]
8181pub struct ReportInfo {
8182    #[prost(oneof = "report_info::Message", tags = "1")]
8183    pub message: ::core::option::Option<report_info::Message>,
8184}
8185/// Nested message and enum types in `ReportInfo`.
8186pub mod report_info {
8187    #[derive(Clone, PartialEq, ::prost::Oneof)]
8188    pub enum Message {
8189        #[prost(message, tag = "1")]
8190        FeatureUsage(super::FeatureUsageInfo),
8191    }
8192}
8193#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8194pub struct TimeRange {
8195    #[prost(message, optional, tag = "1")]
8196    pub started_at: ::core::option::Option<::pbjson_types::Timestamp>,
8197    #[prost(message, optional, tag = "2")]
8198    pub ended_at: ::core::option::Option<::pbjson_types::Timestamp>,
8199}
8200#[derive(Clone, PartialEq, ::prost::Message)]
8201pub struct FeatureUsageInfo {
8202    #[prost(enumeration = "feature_usage_info::Feature", tag = "1")]
8203    pub feature: i32,
8204    #[prost(string, tag = "2")]
8205    pub project_id: ::prost::alloc::string::String,
8206    #[prost(string, tag = "3")]
8207    pub room_name: ::prost::alloc::string::String,
8208    #[prost(string, tag = "4")]
8209    pub room_id: ::prost::alloc::string::String,
8210    #[prost(string, tag = "5")]
8211    pub participant_identity: ::prost::alloc::string::String,
8212    #[prost(string, tag = "6")]
8213    pub participant_id: ::prost::alloc::string::String,
8214    #[prost(string, tag = "7")]
8215    pub track_id: ::prost::alloc::string::String,
8216    /// time ranges during which the feature was enabled.
8217    /// for e. g., noise cancellation may not be applied when a media track is paused/muted,
8218    /// this allows reporting only periods during which a feature is active.
8219    #[prost(message, repeated, tag = "8")]
8220    pub time_ranges: ::prost::alloc::vec::Vec<TimeRange>,
8221    /// Feature specific metadata included in the report
8222    #[prost(map = "string, string", tag = "9")]
8223    pub feature_info: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
8224}
8225/// Nested message and enum types in `FeatureUsageInfo`.
8226pub mod feature_usage_info {
8227    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8228    #[repr(i32)]
8229    pub enum Feature {
8230        KrispNoiseCancellation = 0,
8231        KrispBackgroundVoiceCancellation = 1,
8232        AicAudioEnhancement = 2,
8233        KrispViva = 3,
8234    }
8235    impl Feature {
8236        /// String value of the enum field names used in the ProtoBuf definition.
8237        ///
8238        /// The values are not transformed in any way and thus are considered stable
8239        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8240        pub fn as_str_name(&self) -> &'static str {
8241            match self {
8242                Self::KrispNoiseCancellation => "KRISP_NOISE_CANCELLATION",
8243                Self::KrispBackgroundVoiceCancellation => "KRISP_BACKGROUND_VOICE_CANCELLATION",
8244                Self::AicAudioEnhancement => "AIC_AUDIO_ENHANCEMENT",
8245                Self::KrispViva => "KRISP_VIVA",
8246            }
8247        }
8248        /// Creates an enum from field names used in the ProtoBuf definition.
8249        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8250            match value {
8251                "KRISP_NOISE_CANCELLATION" => Some(Self::KrispNoiseCancellation),
8252                "KRISP_BACKGROUND_VOICE_CANCELLATION" => Some(Self::KrispBackgroundVoiceCancellation),
8253                "AIC_AUDIO_ENHANCEMENT" => Some(Self::AicAudioEnhancement),
8254                "KRISP_VIVA" => Some(Self::KrispViva),
8255                _ => None,
8256            }
8257        }
8258    }
8259}
8260#[derive(Clone, PartialEq, ::prost::Message)]
8261pub struct ApiCallRequest {
8262    #[prost(oneof = "api_call_request::Message", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")]
8263    pub message: ::core::option::Option<api_call_request::Message>,
8264}
8265/// Nested message and enum types in `APICallRequest`.
8266pub mod api_call_request {
8267    #[derive(Clone, PartialEq, ::prost::Oneof)]
8268    pub enum Message {
8269        #[prost(message, tag = "1")]
8270        CreateRoomRequest(super::CreateRoomRequest),
8271        #[prost(message, tag = "2")]
8272        ListRoomsRequest(super::ListRoomsRequest),
8273        #[prost(message, tag = "3")]
8274        DeleteRoomRequest(super::DeleteRoomRequest),
8275        #[prost(message, tag = "4")]
8276        ListParticipantsRequest(super::ListParticipantsRequest),
8277        #[prost(message, tag = "5")]
8278        RoomParticipantIdentity(super::RoomParticipantIdentity),
8279        #[prost(message, tag = "6")]
8280        MuteRoomTrackRequest(super::MuteRoomTrackRequest),
8281        #[prost(message, tag = "7")]
8282        UpdateParticipantRequest(super::UpdateParticipantRequest),
8283        #[prost(message, tag = "8")]
8284        UpdateSubscriptionsRequest(super::UpdateSubscriptionsRequest),
8285        #[prost(message, tag = "9")]
8286        SendDataRequest(super::SendDataRequest),
8287        #[prost(message, tag = "10")]
8288        UpdateRoomMetadataRequest(super::UpdateRoomMetadataRequest),
8289    }
8290}
8291#[derive(Clone, PartialEq, ::prost::Message)]
8292pub struct ApiCallInfo {
8293    #[prost(string, tag = "1")]
8294    pub project_id: ::prost::alloc::string::String,
8295    #[prost(message, optional, tag = "2")]
8296    pub request: ::core::option::Option<ApiCallRequest>,
8297    #[prost(string, tag = "3")]
8298    pub service: ::prost::alloc::string::String,
8299    #[prost(string, tag = "4")]
8300    pub method: ::prost::alloc::string::String,
8301    #[prost(string, tag = "5")]
8302    pub node_id: ::prost::alloc::string::String,
8303    #[prost(int32, tag = "6")]
8304    pub status: i32,
8305    #[prost(string, tag = "7")]
8306    pub twirp_error_code: ::prost::alloc::string::String,
8307    #[prost(string, tag = "8")]
8308    pub twirp_error_message: ::prost::alloc::string::String,
8309    #[prost(string, tag = "9")]
8310    pub room_name: ::prost::alloc::string::String,
8311    #[prost(string, tag = "10")]
8312    pub room_id: ::prost::alloc::string::String,
8313    #[prost(string, tag = "11")]
8314    pub participant_identity: ::prost::alloc::string::String,
8315    #[prost(string, tag = "12")]
8316    pub participant_id: ::prost::alloc::string::String,
8317    #[prost(string, tag = "13")]
8318    pub track_id: ::prost::alloc::string::String,
8319    #[prost(message, optional, tag = "14")]
8320    pub started_at: ::core::option::Option<::pbjson_types::Timestamp>,
8321    #[prost(int64, tag = "15")]
8322    pub duration_ns: i64,
8323}
8324#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8325pub struct WebhookInfo {
8326    #[prost(string, tag = "1")]
8327    pub event_id: ::prost::alloc::string::String,
8328    #[prost(string, tag = "2")]
8329    pub event: ::prost::alloc::string::String,
8330    #[prost(string, tag = "3")]
8331    pub project_id: ::prost::alloc::string::String,
8332    #[prost(string, tag = "4")]
8333    pub room_name: ::prost::alloc::string::String,
8334    #[prost(string, tag = "5")]
8335    pub room_id: ::prost::alloc::string::String,
8336    #[prost(string, tag = "6")]
8337    pub participant_identity: ::prost::alloc::string::String,
8338    #[prost(string, tag = "7")]
8339    pub participant_id: ::prost::alloc::string::String,
8340    #[prost(string, tag = "8")]
8341    pub track_id: ::prost::alloc::string::String,
8342    #[prost(string, tag = "9")]
8343    pub egress_id: ::prost::alloc::string::String,
8344    #[prost(string, tag = "10")]
8345    pub ingress_id: ::prost::alloc::string::String,
8346    #[prost(message, optional, tag = "11")]
8347    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
8348    #[prost(message, optional, tag = "12")]
8349    pub queued_at: ::core::option::Option<::pbjson_types::Timestamp>,
8350    #[prost(int64, tag = "13")]
8351    pub queue_duration_ns: i64,
8352    #[prost(message, optional, tag = "14")]
8353    pub sent_at: ::core::option::Option<::pbjson_types::Timestamp>,
8354    #[prost(int64, tag = "15")]
8355    pub send_duration_ns: i64,
8356    #[prost(string, tag = "16")]
8357    pub url: ::prost::alloc::string::String,
8358    #[prost(int32, tag = "17")]
8359    pub num_dropped: i32,
8360    #[prost(bool, tag = "18")]
8361    pub is_dropped: bool,
8362    #[prost(string, tag = "19")]
8363    pub service_status: ::prost::alloc::string::String,
8364    #[prost(int32, tag = "20")]
8365    pub service_error_code: i32,
8366    #[prost(string, tag = "21")]
8367    pub service_error: ::prost::alloc::string::String,
8368    #[prost(string, tag = "22")]
8369    pub send_error: ::prost::alloc::string::String,
8370    /// HTTP response status code for the delivery attempt (0 if no response).
8371    #[prost(int32, tag = "23")]
8372    pub http_status_code: i32,
8373}
8374#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8375#[repr(i32)]
8376pub enum StreamType {
8377    Upstream = 0,
8378    Downstream = 1,
8379}
8380impl StreamType {
8381    /// String value of the enum field names used in the ProtoBuf definition.
8382    ///
8383    /// The values are not transformed in any way and thus are considered stable
8384    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8385    pub fn as_str_name(&self) -> &'static str {
8386        match self {
8387            Self::Upstream => "UPSTREAM",
8388            Self::Downstream => "DOWNSTREAM",
8389        }
8390    }
8391    /// Creates an enum from field names used in the ProtoBuf definition.
8392    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8393        match value {
8394            "UPSTREAM" => Some(Self::Upstream),
8395            "DOWNSTREAM" => Some(Self::Downstream),
8396            _ => None,
8397        }
8398    }
8399}
8400#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8401#[repr(i32)]
8402pub enum AnalyticsEventType {
8403    RoomCreated = 0,
8404    RoomEnded = 1,
8405    ParticipantJoined = 2,
8406    ParticipantLeft = 3,
8407    ParticipantConnectionAborted = 45,
8408    TrackPublished = 4,
8409    TrackPublishRequested = 20,
8410    TrackUnpublished = 5,
8411    TrackSubscribed = 6,
8412    TrackSubscribeRequested = 21,
8413    TrackSubscribeFailed = 25,
8414    TrackUnsubscribed = 7,
8415    TrackPublishedUpdate = 10,
8416    TrackMuted = 23,
8417    TrackUnmuted = 24,
8418    TrackPublishStats = 26,
8419    TrackSubscribeStats = 27,
8420    ParticipantActive = 11,
8421    ParticipantResumed = 22,
8422    EgressStarted = 12,
8423    EgressEnded = 13,
8424    EgressUpdated = 28,
8425    TrackMaxSubscribedVideoQuality = 14,
8426    Reconnected = 15,
8427    IngressCreated = 18,
8428    IngressDeleted = 19,
8429    IngressStarted = 16,
8430    IngressEnded = 17,
8431    IngressUpdated = 29,
8432    SipInboundTrunkCreated = 30,
8433    SipInboundTrunkDeleted = 31,
8434    SipOutboundTrunkCreated = 32,
8435    SipOutboundTrunkDeleted = 33,
8436    SipDispatchRuleCreated = 34,
8437    SipDispatchRuleDeleted = 35,
8438    SipParticipantCreated = 36,
8439    SipCallIncoming = 37,
8440    SipCallStarted = 38,
8441    SipCallEnded = 39,
8442    SipTransferRequested = 43,
8443    SipTransferComplete = 44,
8444    SipCallUpdate = 46,
8445    Report = 40,
8446    ApiCall = 41,
8447    Webhook = 42,
8448}
8449impl AnalyticsEventType {
8450    /// String value of the enum field names used in the ProtoBuf definition.
8451    ///
8452    /// The values are not transformed in any way and thus are considered stable
8453    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8454    pub fn as_str_name(&self) -> &'static str {
8455        match self {
8456            Self::RoomCreated => "ROOM_CREATED",
8457            Self::RoomEnded => "ROOM_ENDED",
8458            Self::ParticipantJoined => "PARTICIPANT_JOINED",
8459            Self::ParticipantLeft => "PARTICIPANT_LEFT",
8460            Self::ParticipantConnectionAborted => "PARTICIPANT_CONNECTION_ABORTED",
8461            Self::TrackPublished => "TRACK_PUBLISHED",
8462            Self::TrackPublishRequested => "TRACK_PUBLISH_REQUESTED",
8463            Self::TrackUnpublished => "TRACK_UNPUBLISHED",
8464            Self::TrackSubscribed => "TRACK_SUBSCRIBED",
8465            Self::TrackSubscribeRequested => "TRACK_SUBSCRIBE_REQUESTED",
8466            Self::TrackSubscribeFailed => "TRACK_SUBSCRIBE_FAILED",
8467            Self::TrackUnsubscribed => "TRACK_UNSUBSCRIBED",
8468            Self::TrackPublishedUpdate => "TRACK_PUBLISHED_UPDATE",
8469            Self::TrackMuted => "TRACK_MUTED",
8470            Self::TrackUnmuted => "TRACK_UNMUTED",
8471            Self::TrackPublishStats => "TRACK_PUBLISH_STATS",
8472            Self::TrackSubscribeStats => "TRACK_SUBSCRIBE_STATS",
8473            Self::ParticipantActive => "PARTICIPANT_ACTIVE",
8474            Self::ParticipantResumed => "PARTICIPANT_RESUMED",
8475            Self::EgressStarted => "EGRESS_STARTED",
8476            Self::EgressEnded => "EGRESS_ENDED",
8477            Self::EgressUpdated => "EGRESS_UPDATED",
8478            Self::TrackMaxSubscribedVideoQuality => "TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY",
8479            Self::Reconnected => "RECONNECTED",
8480            Self::IngressCreated => "INGRESS_CREATED",
8481            Self::IngressDeleted => "INGRESS_DELETED",
8482            Self::IngressStarted => "INGRESS_STARTED",
8483            Self::IngressEnded => "INGRESS_ENDED",
8484            Self::IngressUpdated => "INGRESS_UPDATED",
8485            Self::SipInboundTrunkCreated => "SIP_INBOUND_TRUNK_CREATED",
8486            Self::SipInboundTrunkDeleted => "SIP_INBOUND_TRUNK_DELETED",
8487            Self::SipOutboundTrunkCreated => "SIP_OUTBOUND_TRUNK_CREATED",
8488            Self::SipOutboundTrunkDeleted => "SIP_OUTBOUND_TRUNK_DELETED",
8489            Self::SipDispatchRuleCreated => "SIP_DISPATCH_RULE_CREATED",
8490            Self::SipDispatchRuleDeleted => "SIP_DISPATCH_RULE_DELETED",
8491            Self::SipParticipantCreated => "SIP_PARTICIPANT_CREATED",
8492            Self::SipCallIncoming => "SIP_CALL_INCOMING",
8493            Self::SipCallStarted => "SIP_CALL_STARTED",
8494            Self::SipCallEnded => "SIP_CALL_ENDED",
8495            Self::SipTransferRequested => "SIP_TRANSFER_REQUESTED",
8496            Self::SipTransferComplete => "SIP_TRANSFER_COMPLETE",
8497            Self::SipCallUpdate => "SIP_CALL_UPDATE",
8498            Self::Report => "REPORT",
8499            Self::ApiCall => "API_CALL",
8500            Self::Webhook => "WEBHOOK",
8501        }
8502    }
8503    /// Creates an enum from field names used in the ProtoBuf definition.
8504    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8505        match value {
8506            "ROOM_CREATED" => Some(Self::RoomCreated),
8507            "ROOM_ENDED" => Some(Self::RoomEnded),
8508            "PARTICIPANT_JOINED" => Some(Self::ParticipantJoined),
8509            "PARTICIPANT_LEFT" => Some(Self::ParticipantLeft),
8510            "PARTICIPANT_CONNECTION_ABORTED" => Some(Self::ParticipantConnectionAborted),
8511            "TRACK_PUBLISHED" => Some(Self::TrackPublished),
8512            "TRACK_PUBLISH_REQUESTED" => Some(Self::TrackPublishRequested),
8513            "TRACK_UNPUBLISHED" => Some(Self::TrackUnpublished),
8514            "TRACK_SUBSCRIBED" => Some(Self::TrackSubscribed),
8515            "TRACK_SUBSCRIBE_REQUESTED" => Some(Self::TrackSubscribeRequested),
8516            "TRACK_SUBSCRIBE_FAILED" => Some(Self::TrackSubscribeFailed),
8517            "TRACK_UNSUBSCRIBED" => Some(Self::TrackUnsubscribed),
8518            "TRACK_PUBLISHED_UPDATE" => Some(Self::TrackPublishedUpdate),
8519            "TRACK_MUTED" => Some(Self::TrackMuted),
8520            "TRACK_UNMUTED" => Some(Self::TrackUnmuted),
8521            "TRACK_PUBLISH_STATS" => Some(Self::TrackPublishStats),
8522            "TRACK_SUBSCRIBE_STATS" => Some(Self::TrackSubscribeStats),
8523            "PARTICIPANT_ACTIVE" => Some(Self::ParticipantActive),
8524            "PARTICIPANT_RESUMED" => Some(Self::ParticipantResumed),
8525            "EGRESS_STARTED" => Some(Self::EgressStarted),
8526            "EGRESS_ENDED" => Some(Self::EgressEnded),
8527            "EGRESS_UPDATED" => Some(Self::EgressUpdated),
8528            "TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY" => Some(Self::TrackMaxSubscribedVideoQuality),
8529            "RECONNECTED" => Some(Self::Reconnected),
8530            "INGRESS_CREATED" => Some(Self::IngressCreated),
8531            "INGRESS_DELETED" => Some(Self::IngressDeleted),
8532            "INGRESS_STARTED" => Some(Self::IngressStarted),
8533            "INGRESS_ENDED" => Some(Self::IngressEnded),
8534            "INGRESS_UPDATED" => Some(Self::IngressUpdated),
8535            "SIP_INBOUND_TRUNK_CREATED" => Some(Self::SipInboundTrunkCreated),
8536            "SIP_INBOUND_TRUNK_DELETED" => Some(Self::SipInboundTrunkDeleted),
8537            "SIP_OUTBOUND_TRUNK_CREATED" => Some(Self::SipOutboundTrunkCreated),
8538            "SIP_OUTBOUND_TRUNK_DELETED" => Some(Self::SipOutboundTrunkDeleted),
8539            "SIP_DISPATCH_RULE_CREATED" => Some(Self::SipDispatchRuleCreated),
8540            "SIP_DISPATCH_RULE_DELETED" => Some(Self::SipDispatchRuleDeleted),
8541            "SIP_PARTICIPANT_CREATED" => Some(Self::SipParticipantCreated),
8542            "SIP_CALL_INCOMING" => Some(Self::SipCallIncoming),
8543            "SIP_CALL_STARTED" => Some(Self::SipCallStarted),
8544            "SIP_CALL_ENDED" => Some(Self::SipCallEnded),
8545            "SIP_TRANSFER_REQUESTED" => Some(Self::SipTransferRequested),
8546            "SIP_TRANSFER_COMPLETE" => Some(Self::SipTransferComplete),
8547            "SIP_CALL_UPDATE" => Some(Self::SipCallUpdate),
8548            "REPORT" => Some(Self::Report),
8549            "API_CALL" => Some(Self::ApiCall),
8550            "WEBHOOK" => Some(Self::Webhook),
8551            _ => None,
8552        }
8553    }
8554}
8555/// Nested so that names like Value and Ping need not be unique across the
8556/// livekit package. `tip` throughout is the latest durable commit sequence.
8557#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8558pub struct AgentDb {
8559}
8560/// Nested message and enum types in `AgentDB`.
8561pub mod agent_db {
8562    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8563    pub struct CreateRequest {
8564        /// Unset: never expires, and expires_at is then unset everywhere.
8565        /// Otherwise clamped to the server cap, and never extended.
8566        #[prost(message, optional, tag = "1")]
8567        pub ttl: ::core::option::Option<::pbjson_types::Duration>,
8568    }
8569    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8570    pub struct CreateResponse {
8571        /// "DB_..."
8572        #[prost(string, tag = "1")]
8573        pub database_id: ::prost::alloc::string::String,
8574        #[prost(message, optional, tag = "2")]
8575        pub expires_at: ::core::option::Option<::pbjson_types::Timestamp>,
8576    }
8577    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8578    pub struct GetRequest {
8579        #[prost(string, tag = "1")]
8580        pub database_id: ::prost::alloc::string::String,
8581    }
8582    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8583    pub struct ListRequest {
8584        /// server-clamped
8585        #[prost(int32, tag = "1")]
8586        pub page_size: i32,
8587        #[prost(string, tag = "2")]
8588        pub page_token: ::prost::alloc::string::String,
8589    }
8590    #[derive(Clone, PartialEq, ::prost::Message)]
8591    pub struct ListResponse {
8592        #[prost(message, repeated, tag = "1")]
8593        pub databases: ::prost::alloc::vec::Vec<AgentDatabase>,
8594        /// empty when exhausted
8595        #[prost(string, tag = "2")]
8596        pub next_page_token: ::prost::alloc::string::String,
8597    }
8598    /// One database, as get and list both report it.
8599    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8600    pub struct AgentDatabase {
8601        #[prost(string, tag = "1")]
8602        pub database_id: ::prost::alloc::string::String,
8603        #[prost(string, tag = "2")]
8604        pub region: ::prost::alloc::string::String,
8605        #[prost(message, optional, tag = "3")]
8606        pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
8607        #[prost(message, optional, tag = "4")]
8608        pub expires_at: ::core::option::Option<::pbjson_types::Timestamp>,
8609        #[prost(int64, tag = "5")]
8610        pub tip: i64,
8611    }
8612    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8613    pub struct DeleteRequest {
8614        #[prost(string, tag = "1")]
8615        pub database_id: ::prost::alloc::string::String,
8616    }
8617    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8618    pub struct DeleteResponse {
8619    }
8620    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8621    pub struct ExportRequest {
8622        #[prost(string, tag = "1")]
8623        pub database_id: ::prost::alloc::string::String,
8624    }
8625    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8626    pub struct ExportResponse {
8627        /// pre-authenticated object-storage URL
8628        #[prost(string, tag = "1")]
8629        pub download_url: ::prost::alloc::string::String,
8630        /// of the URL, not the database
8631        #[prost(message, optional, tag = "2")]
8632        pub expires_at: ::core::option::Option<::pbjson_types::Timestamp>,
8633        /// what the export is consistent at
8634        #[prost(int64, tag = "3")]
8635        pub tip: i64,
8636    }
8637    /// Data plane: one WebSocket per database, one message per frame, correlated
8638    /// by a client-chosen request_id. Result batches are paced by Credit, so the
8639    /// server never sends more un-consumed batches than granted.
8640    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8641    pub struct Wire {
8642    }
8643    /// Nested message and enum types in `Wire`.
8644    pub mod wire {
8645        #[derive(Clone, PartialEq, ::prost::Message)]
8646        pub struct ClientMessage {
8647            #[prost(uint32, tag = "1")]
8648            pub request_id: u32,
8649            #[prost(oneof = "client_message::Message", tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11")]
8650            pub message: ::core::option::Option<client_message::Message>,
8651        }
8652        /// Nested message and enum types in `ClientMessage`.
8653        pub mod client_message {
8654            #[derive(Clone, PartialEq, ::prost::Oneof)]
8655            pub enum Message {
8656                /// must be first on the socket
8657                #[prost(message, tag = "2")]
8658                Hello(super::Hello),
8659                /// answers ExecResult
8660                #[prost(message, tag = "3")]
8661                Exec(super::Statement),
8662                /// answers Columns + ColumnBatch* + Done
8663                #[prost(message, tag = "4")]
8664                Query(super::Statement),
8665                /// answers one result per statement, then Done
8666                #[prost(message, tag = "5")]
8667                Batch(super::Batch),
8668                #[prost(message, tag = "6")]
8669                Begin(super::Begin),
8670                #[prost(message, tag = "7")]
8671                Commit(super::Commit),
8672                #[prost(message, tag = "8")]
8673                Rollback(super::Rollback),
8674                #[prost(message, tag = "9")]
8675                Cancel(super::Cancel),
8676                #[prost(message, tag = "10")]
8677                Credit(super::Credit),
8678                #[prost(message, tag = "11")]
8679                Ping(super::Ping),
8680            }
8681        }
8682        #[derive(Clone, PartialEq, ::prost::Message)]
8683        pub struct ServerMessage {
8684            #[prost(uint32, tag = "1")]
8685            pub request_id: u32,
8686            #[prost(oneof = "server_message::Message", tags = "2, 3, 4, 5, 6, 7, 8")]
8687            pub message: ::core::option::Option<server_message::Message>,
8688        }
8689        /// Nested message and enum types in `ServerMessage`.
8690        pub mod server_message {
8691            #[derive(Clone, PartialEq, ::prost::Oneof)]
8692            pub enum Message {
8693                #[prost(message, tag = "2")]
8694                HelloOk(super::HelloOk),
8695                #[prost(message, tag = "3")]
8696                Columns(super::Columns),
8697                #[prost(message, tag = "4")]
8698                ColumnBatch(super::ColumnBatch),
8699                #[prost(message, tag = "5")]
8700                ExecResult(super::ExecResult),
8701                #[prost(message, tag = "6")]
8702                Done(super::Done),
8703                #[prost(message, tag = "7")]
8704                Error(super::Error),
8705                #[prost(message, tag = "8")]
8706                Pong(super::Pong),
8707            }
8708        }
8709        /// SQLite's five storage classes.
8710        #[derive(Clone, PartialEq, ::prost::Message)]
8711        pub struct Value {
8712            #[prost(oneof = "value::Value", tags = "1, 2, 3, 4, 5")]
8713            pub value: ::core::option::Option<value::Value>,
8714        }
8715        /// Nested message and enum types in `Value`.
8716        pub mod value {
8717            #[derive(Clone, PartialEq, ::prost::Oneof)]
8718            pub enum Value {
8719                /// always true when set
8720                #[prost(bool, tag = "1")]
8721                NullValue(bool),
8722                #[prost(int64, tag = "2")]
8723                IntValue(i64),
8724                #[prost(double, tag = "3")]
8725                DoubleValue(f64),
8726                #[prost(string, tag = "4")]
8727                TextValue(::prost::alloc::string::String),
8728                #[prost(bytes, tag = "5")]
8729                BlobValue(::prost::alloc::vec::Vec<u8>),
8730            }
8731        }
8732        #[derive(Clone, PartialEq, ::prost::Message)]
8733        pub struct Statement {
8734            #[prost(string, tag = "1")]
8735            pub sql: ::prost::alloc::string::String,
8736            /// positional
8737            #[prost(message, repeated, tag = "2")]
8738            pub params: ::prost::alloc::vec::Vec<Value>,
8739            #[prost(enumeration = "QueryLang", tag = "3")]
8740            pub lang: i32,
8741        }
8742        /// Applied atomically, in order, and answered with one result per
8743        /// statement, in order: Columns then ColumnBatch frames for a statement
8744        /// that returns rows, one ExecResult for one that does not, each tagged
8745        /// with the statement's 0-based index, then a single Done for the whole
8746        /// batch. A statement that returns no rows still sends its Columns. Credit
8747        /// paces the ColumnBatch frames of the batch as a whole.
8748        #[derive(Clone, PartialEq, ::prost::Message)]
8749        pub struct Batch {
8750            #[prost(message, repeated, tag = "1")]
8751            pub statements: ::prost::alloc::vec::Vec<Statement>,
8752        }
8753        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8754        pub struct Begin {
8755        }
8756        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8757        pub struct Commit {
8758        }
8759        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8760        pub struct Rollback {
8761        }
8762        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8763        pub struct Cancel {
8764        }
8765        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8766        pub struct Credit {
8767            /// additional batches the client can absorb
8768            #[prost(uint32, tag = "1")]
8769            pub batches: u32,
8770        }
8771        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8772        pub struct Ping {
8773            #[prost(int64, tag = "1")]
8774            pub timestamp_ms: i64,
8775        }
8776        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8777        pub struct Pong {
8778            #[prost(int64, tag = "1")]
8779            pub last_ping_timestamp_ms: i64,
8780            #[prost(int64, tag = "2")]
8781            pub timestamp_ms: i64,
8782        }
8783        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8784        pub struct Hello {
8785            #[prost(string, tag = "1")]
8786            pub token: ::prost::alloc::string::String,
8787            #[prost(string, tag = "2")]
8788            pub database_id: ::prost::alloc::string::String,
8789        }
8790        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8791        pub struct HelloOk {
8792            #[prost(int64, tag = "1")]
8793            pub tip: i64,
8794            #[prost(uint32, tag = "2")]
8795            pub ping_interval_ms: u32,
8796            #[prost(uint32, tag = "3")]
8797            pub ping_timeout_ms: u32,
8798        }
8799        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8800        pub struct Columns {
8801            #[prost(string, repeated, tag = "1")]
8802            pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8803            /// index within a Batch; 0 and unused for a Query
8804            #[prost(uint32, tag = "2")]
8805            pub statement: u32,
8806        }
8807        /// Values are typed per row, as SQLite types them, so a column may mix
8808        /// classes: walk `types` and take the next entry from the matching array. Text
8809        /// and blobs are concatenated with one exclusive end offset each, so value i
8810        /// is data\[ends[i-1\]:ends\[i]\] with 0 implied before the first. A NULL occupies
8811        /// a tag only.
8812        #[derive(Clone, PartialEq, ::prost::Message)]
8813        pub struct Column {
8814            /// one ValueType per row
8815            #[prost(bytes = "vec", tag = "1")]
8816            pub types: ::prost::alloc::vec::Vec<u8>,
8817            #[prost(sint64, repeated, tag = "2")]
8818            pub ints: ::prost::alloc::vec::Vec<i64>,
8819            #[prost(double, repeated, tag = "3")]
8820            pub doubles: ::prost::alloc::vec::Vec<f64>,
8821            #[prost(bytes = "vec", tag = "4")]
8822            pub text_data: ::prost::alloc::vec::Vec<u8>,
8823            #[prost(uint32, repeated, tag = "5")]
8824            pub text_ends: ::prost::alloc::vec::Vec<u32>,
8825            #[prost(bytes = "vec", tag = "6")]
8826            pub blob_data: ::prost::alloc::vec::Vec<u8>,
8827            #[prost(uint32, repeated, tag = "7")]
8828            pub blob_ends: ::prost::alloc::vec::Vec<u32>,
8829        }
8830        #[derive(Clone, PartialEq, ::prost::Message)]
8831        pub struct ColumnBatch {
8832            /// one per name in Columns
8833            #[prost(message, repeated, tag = "1")]
8834            pub columns: ::prost::alloc::vec::Vec<Column>,
8835            #[prost(uint32, tag = "2")]
8836            pub rows: u32,
8837            /// index within a Batch; 0 and unused for a Query
8838            #[prost(uint32, tag = "3")]
8839            pub statement: u32,
8840        }
8841        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8842        pub struct ExecResult {
8843            #[prost(int64, tag = "1")]
8844            pub rows_affected: i64,
8845            #[prost(int64, tag = "2")]
8846            pub last_insert_id: i64,
8847            #[prost(int64, tag = "3")]
8848            pub tip: i64,
8849            /// index within a Batch; 0 and unused for an Exec
8850            #[prost(uint32, tag = "4")]
8851            pub statement: u32,
8852        }
8853        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8854        pub struct Done {
8855            /// the snapshot the query ran at
8856            #[prost(int64, tag = "1")]
8857            pub tip: i64,
8858            #[prost(uint64, tag = "2")]
8859            pub total_rows: u64,
8860        }
8861        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8862        pub struct Error {
8863            /// stable, machine-readable
8864            #[prost(string, tag = "1")]
8865            pub code: ::prost::alloc::string::String,
8866            #[prost(string, tag = "2")]
8867            pub message: ::prost::alloc::string::String,
8868        }
8869        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8870        #[repr(i32)]
8871        pub enum QueryLang {
8872            Sql = 0,
8873        }
8874        impl QueryLang {
8875            /// String value of the enum field names used in the ProtoBuf definition.
8876            ///
8877            /// The values are not transformed in any way and thus are considered stable
8878            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8879            pub fn as_str_name(&self) -> &'static str {
8880                match self {
8881                    Self::Sql => "SQL",
8882                }
8883            }
8884            /// Creates an enum from field names used in the ProtoBuf definition.
8885            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8886                match value {
8887                    "SQL" => Some(Self::Sql),
8888                    _ => None,
8889                }
8890            }
8891        }
8892        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8893        #[repr(i32)]
8894        pub enum ValueType {
8895            Null = 0,
8896            Int = 1,
8897            Double = 2,
8898            Text = 3,
8899            Blob = 4,
8900        }
8901        impl ValueType {
8902            /// String value of the enum field names used in the ProtoBuf definition.
8903            ///
8904            /// The values are not transformed in any way and thus are considered stable
8905            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8906            pub fn as_str_name(&self) -> &'static str {
8907                match self {
8908                    Self::Null => "NULL",
8909                    Self::Int => "INT",
8910                    Self::Double => "DOUBLE",
8911                    Self::Text => "TEXT",
8912                    Self::Blob => "BLOB",
8913                }
8914            }
8915            /// Creates an enum from field names used in the ProtoBuf definition.
8916            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8917                match value {
8918                    "NULL" => Some(Self::Null),
8919                    "INT" => Some(Self::Int),
8920                    "DOUBLE" => Some(Self::Double),
8921                    "TEXT" => Some(Self::Text),
8922                    "BLOB" => Some(Self::Blob),
8923                    _ => None,
8924                }
8925            }
8926        }
8927    }
8928}
8929#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8930pub struct ListReplaysRequest {
8931    /// optional
8932    #[prost(string, tag = "1")]
8933    pub room_name: ::prost::alloc::string::String,
8934    #[prost(message, optional, tag = "2")]
8935    pub page_token: ::core::option::Option<TokenPagination>,
8936}
8937#[derive(Clone, PartialEq, ::prost::Message)]
8938pub struct ListReplaysResponse {
8939    #[prost(message, repeated, tag = "1")]
8940    pub replays: ::prost::alloc::vec::Vec<ReplayInfo>,
8941    #[prost(message, optional, tag = "2")]
8942    pub next_page_token: ::core::option::Option<TokenPagination>,
8943}
8944#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8945pub struct ReplayInfo {
8946    #[prost(string, tag = "1")]
8947    pub replay_id: ::prost::alloc::string::String,
8948    #[prost(string, tag = "2")]
8949    pub room_name: ::prost::alloc::string::String,
8950    #[prost(int64, tag = "3")]
8951    pub start_time: i64,
8952    #[prost(int64, tag = "4")]
8953    pub duration_ms: i64,
8954}
8955#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8956pub struct PlaybackRequest {
8957    #[prost(string, tag = "1")]
8958    pub replay_id: ::prost::alloc::string::String,
8959    /// name of room to play into
8960    #[prost(string, tag = "2")]
8961    pub playback_room: ::prost::alloc::string::String,
8962    /// initial timestamp (ms)
8963    #[prost(int64, tag = "3")]
8964    pub seek_offset_ms: i64,
8965}
8966#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8967pub struct PlaybackResponse {
8968    #[prost(string, tag = "1")]
8969    pub playback_id: ::prost::alloc::string::String,
8970}
8971#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8972pub struct SeekRequest {
8973    #[prost(string, tag = "1")]
8974    pub playback_id: ::prost::alloc::string::String,
8975    /// timestamp (ms)
8976    #[prost(int64, tag = "2")]
8977    pub seek_offset_ms: i64,
8978}
8979#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8980pub struct ClosePlaybackRequest {
8981    #[prost(string, tag = "1")]
8982    pub playback_id: ::prost::alloc::string::String,
8983}
8984#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8985pub struct DeleteReplayRequest {
8986    #[prost(string, tag = "1")]
8987    pub replay_id: ::prost::alloc::string::String,
8988}
8989#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8990pub struct AgentEvent {
8991    #[prost(enumeration = "AgentEventType", tag = "1")]
8992    pub r#type: i32,
8993    #[prost(int32, tag = "2")]
8994    pub count: i32,
8995    #[prost(message, optional, tag = "3")]
8996    pub timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
8997}
8998#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8999pub struct AgentSecret {
9000    #[prost(string, tag = "1")]
9001    pub name: ::prost::alloc::string::String,
9002    #[prost(bytes = "vec", tag = "2")]
9003    pub value: ::prost::alloc::vec::Vec<u8>,
9004    #[prost(message, optional, tag = "3")]
9005    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
9006    #[prost(message, optional, tag = "4")]
9007    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
9008    #[prost(enumeration = "AgentSecretKind", tag = "5")]
9009    pub kind: i32,
9010    #[prost(string, repeated, tag = "6")]
9011    pub deployments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9012}
9013#[derive(Clone, PartialEq, ::prost::Message)]
9014pub struct CreateAgentRequest {
9015    #[deprecated]
9016    #[prost(string, tag = "1")]
9017    pub agent_name: ::prost::alloc::string::String,
9018    #[prost(message, repeated, tag = "2")]
9019    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9020    #[deprecated]
9021    #[prost(int32, tag = "3")]
9022    pub replicas: i32,
9023    #[deprecated]
9024    #[prost(int32, tag = "4")]
9025    pub max_replicas: i32,
9026    #[deprecated]
9027    #[prost(string, tag = "5")]
9028    pub cpu_req: ::prost::alloc::string::String,
9029    #[prost(string, repeated, tag = "6")]
9030    pub regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9031}
9032#[derive(Clone, PartialEq, ::prost::Message)]
9033pub struct CreateAgentResponse {
9034    #[prost(string, tag = "1")]
9035    pub agent_id: ::prost::alloc::string::String,
9036    #[prost(string, tag = "2")]
9037    pub agent_name: ::prost::alloc::string::String,
9038    #[prost(string, tag = "3")]
9039    pub status: ::prost::alloc::string::String,
9040    #[prost(string, tag = "4")]
9041    pub version: ::prost::alloc::string::String,
9042    #[prost(string, tag = "5")]
9043    pub presigned_url: ::prost::alloc::string::String,
9044    #[prost(string, tag = "6")]
9045    pub tag: ::prost::alloc::string::String,
9046    #[prost(string, repeated, tag = "7")]
9047    pub server_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9048    #[prost(message, optional, tag = "8")]
9049    pub presigned_post_request: ::core::option::Option<PresignedPostRequest>,
9050}
9051#[derive(Clone, PartialEq, ::prost::Message)]
9052pub struct CreateAgentV2Request {
9053    #[prost(message, repeated, tag = "1")]
9054    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9055    #[prost(string, repeated, tag = "2")]
9056    pub regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9057}
9058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9059pub struct CreateAgentV2Response {
9060    #[prost(string, tag = "1")]
9061    pub agent_id: ::prost::alloc::string::String,
9062    #[prost(string, tag = "2")]
9063    pub status: ::prost::alloc::string::String,
9064    #[prost(string, repeated, tag = "3")]
9065    pub server_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9066}
9067#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9068pub struct PromoteAgentRequest {
9069    #[prost(string, tag = "1")]
9070    pub agent_id: ::prost::alloc::string::String,
9071    #[prost(string, tag = "2")]
9072    pub src_deployment: ::prost::alloc::string::String,
9073    #[prost(string, tag = "3")]
9074    pub dst_deployment: ::prost::alloc::string::String,
9075}
9076#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9077pub struct PromoteAgentResponse {
9078    #[prost(bool, tag = "1")]
9079    pub success: bool,
9080    #[prost(string, tag = "2")]
9081    pub message: ::prost::alloc::string::String,
9082    #[prost(string, tag = "3")]
9083    pub agent_id: ::prost::alloc::string::String,
9084    #[prost(string, tag = "4")]
9085    pub src_deployment: ::prost::alloc::string::String,
9086    #[prost(string, tag = "5")]
9087    pub dst_deployment: ::prost::alloc::string::String,
9088    #[prost(string, tag = "6")]
9089    pub version_tag: ::prost::alloc::string::String,
9090}
9091#[derive(Clone, PartialEq, ::prost::Message)]
9092pub struct PresignedPostRequest {
9093    #[prost(string, tag = "1")]
9094    pub url: ::prost::alloc::string::String,
9095    #[prost(map = "string, string", tag = "2")]
9096    pub values: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9097}
9098#[derive(Clone, PartialEq, ::prost::Message)]
9099pub struct AgentDeployment {
9100    #[prost(string, tag = "1")]
9101    pub region: ::prost::alloc::string::String,
9102    #[prost(string, tag = "2")]
9103    pub agent_id: ::prost::alloc::string::String,
9104    #[prost(string, tag = "3")]
9105    pub status: ::prost::alloc::string::String,
9106    #[prost(int32, tag = "4")]
9107    pub replicas: i32,
9108    #[prost(int32, tag = "5")]
9109    pub min_replicas: i32,
9110    #[prost(int32, tag = "6")]
9111    pub max_replicas: i32,
9112    #[prost(string, tag = "7")]
9113    pub cpu_req: ::prost::alloc::string::String,
9114    #[prost(string, tag = "8")]
9115    pub cur_cpu: ::prost::alloc::string::String,
9116    #[prost(string, tag = "9")]
9117    pub cur_mem: ::prost::alloc::string::String,
9118    #[prost(string, tag = "10")]
9119    pub mem_req: ::prost::alloc::string::String,
9120    #[prost(string, tag = "11")]
9121    pub mem_limit: ::prost::alloc::string::String,
9122    #[prost(string, tag = "12")]
9123    pub cpu_limit: ::prost::alloc::string::String,
9124    #[prost(string, tag = "13")]
9125    pub server_region: ::prost::alloc::string::String,
9126    #[prost(message, repeated, tag = "14")]
9127    pub events: ::prost::alloc::vec::Vec<AgentEvent>,
9128    #[prost(string, tag = "15")]
9129    pub deployment: ::prost::alloc::string::String,
9130    #[prost(string, tag = "16")]
9131    pub version: ::prost::alloc::string::String,
9132    #[prost(string, tag = "17")]
9133    pub agent_name: ::prost::alloc::string::String,
9134    #[prost(bool, tag = "18")]
9135    pub deployment_enabled: bool,
9136    #[prost(message, optional, tag = "19")]
9137    pub last_scraped_at: ::core::option::Option<::pbjson_types::Timestamp>,
9138}
9139#[derive(Clone, PartialEq, ::prost::Message)]
9140pub struct AgentInfo {
9141    #[prost(string, tag = "1")]
9142    pub agent_id: ::prost::alloc::string::String,
9143    #[prost(string, tag = "2")]
9144    pub agent_name: ::prost::alloc::string::String,
9145    #[prost(string, tag = "3")]
9146    pub version: ::prost::alloc::string::String,
9147    #[prost(message, repeated, tag = "4")]
9148    pub agent_deployments: ::prost::alloc::vec::Vec<AgentDeployment>,
9149    #[prost(message, repeated, tag = "5")]
9150    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9151    #[prost(message, optional, tag = "6")]
9152    pub deployed_at: ::core::option::Option<::pbjson_types::Timestamp>,
9153}
9154#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9155pub struct ListAgentsRequest {
9156    #[prost(string, tag = "1")]
9157    pub agent_name: ::prost::alloc::string::String,
9158    #[prost(string, tag = "2")]
9159    pub agent_id: ::prost::alloc::string::String,
9160}
9161#[derive(Clone, PartialEq, ::prost::Message)]
9162pub struct ListAgentsResponse {
9163    #[prost(message, repeated, tag = "1")]
9164    pub agents: ::prost::alloc::vec::Vec<AgentInfo>,
9165}
9166#[derive(Clone, PartialEq, ::prost::Message)]
9167pub struct AgentVersion {
9168    #[prost(string, tag = "1")]
9169    pub version: ::prost::alloc::string::String,
9170    #[prost(bool, tag = "2")]
9171    pub current: bool,
9172    #[prost(message, optional, tag = "3")]
9173    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
9174    #[prost(message, optional, tag = "4")]
9175    pub deployed_at: ::core::option::Option<::pbjson_types::Timestamp>,
9176    #[prost(map = "string, string", tag = "5")]
9177    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9178    #[prost(string, tag = "6")]
9179    pub status: ::prost::alloc::string::String,
9180    #[prost(string, tag = "7")]
9181    pub owner: ::prost::alloc::string::String,
9182    #[prost(bool, tag = "8")]
9183    pub draining: bool,
9184    #[prost(bool, tag = "9")]
9185    pub active: bool,
9186}
9187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9188pub struct ListAgentVersionsRequest {
9189    #[prost(string, tag = "1")]
9190    pub agent_id: ::prost::alloc::string::String,
9191    #[prost(string, tag = "2")]
9192    pub agent_name: ::prost::alloc::string::String,
9193}
9194#[derive(Clone, PartialEq, ::prost::Message)]
9195pub struct ListAgentVersionsResponse {
9196    #[prost(message, repeated, tag = "1")]
9197    pub versions: ::prost::alloc::vec::Vec<AgentVersion>,
9198}
9199#[derive(Clone, PartialEq, ::prost::Message)]
9200pub struct UpdateAgentRequest {
9201    #[prost(string, tag = "1")]
9202    pub agent_id: ::prost::alloc::string::String,
9203    #[deprecated]
9204    #[prost(string, tag = "2")]
9205    pub agent_name: ::prost::alloc::string::String,
9206    #[deprecated]
9207    #[prost(int32, tag = "3")]
9208    pub replicas: i32,
9209    #[deprecated]
9210    #[prost(int32, tag = "4")]
9211    pub max_replicas: i32,
9212    #[deprecated]
9213    #[prost(string, tag = "5")]
9214    pub cpu_req: ::prost::alloc::string::String,
9215    #[prost(string, repeated, tag = "6")]
9216    pub regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9217    #[prost(message, repeated, tag = "7")]
9218    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9219}
9220#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9221pub struct UpdateAgentResponse {
9222    #[prost(bool, tag = "1")]
9223    pub success: bool,
9224    #[prost(string, tag = "2")]
9225    pub message: ::prost::alloc::string::String,
9226}
9227#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9228pub struct RestartAgentRequest {
9229    #[prost(string, tag = "1")]
9230    pub agent_id: ::prost::alloc::string::String,
9231}
9232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9233pub struct RestartAgentResponse {
9234    #[prost(bool, tag = "1")]
9235    pub success: bool,
9236    #[prost(string, tag = "2")]
9237    pub message: ::prost::alloc::string::String,
9238}
9239#[derive(Clone, PartialEq, ::prost::Message)]
9240pub struct DeployAgentRequest {
9241    #[prost(string, tag = "1")]
9242    pub agent_id: ::prost::alloc::string::String,
9243    #[deprecated]
9244    #[prost(string, tag = "2")]
9245    pub agent_name: ::prost::alloc::string::String,
9246    #[prost(message, repeated, tag = "3")]
9247    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9248    #[deprecated]
9249    #[prost(int32, tag = "4")]
9250    pub replicas: i32,
9251    #[deprecated]
9252    #[prost(int32, tag = "5")]
9253    pub max_replicas: i32,
9254    #[deprecated]
9255    #[prost(string, tag = "6")]
9256    pub cpu_req: ::prost::alloc::string::String,
9257    #[prost(string, tag = "7")]
9258    pub deployment: ::prost::alloc::string::String,
9259    #[prost(map = "string, string", tag = "8")]
9260    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9261}
9262#[derive(Clone, PartialEq, ::prost::Message)]
9263pub struct DeployAgentResponse {
9264    #[prost(bool, tag = "1")]
9265    pub success: bool,
9266    #[prost(string, tag = "2")]
9267    pub message: ::prost::alloc::string::String,
9268    #[prost(string, tag = "3")]
9269    pub agent_id: ::prost::alloc::string::String,
9270    #[deprecated]
9271    #[prost(string, tag = "4")]
9272    pub presigned_url: ::prost::alloc::string::String,
9273    #[prost(string, tag = "5")]
9274    pub tag: ::prost::alloc::string::String,
9275    #[prost(message, optional, tag = "6")]
9276    pub presigned_post_request: ::core::option::Option<PresignedPostRequest>,
9277    #[prost(string, tag = "7")]
9278    pub deployment: ::prost::alloc::string::String,
9279}
9280#[derive(Clone, PartialEq, ::prost::Message)]
9281pub struct DeployAgentV2Request {
9282    #[prost(string, tag = "1")]
9283    pub agent_id: ::prost::alloc::string::String,
9284    #[prost(message, repeated, tag = "2")]
9285    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9286    #[prost(string, tag = "3")]
9287    pub deployment: ::prost::alloc::string::String,
9288    #[prost(map = "string, string", tag = "4")]
9289    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9290}
9291#[derive(Clone, PartialEq, ::prost::Message)]
9292pub struct DeployAgentV2Response {
9293    #[prost(bool, tag = "1")]
9294    pub success: bool,
9295    #[prost(string, tag = "2")]
9296    pub message: ::prost::alloc::string::String,
9297    #[prost(string, tag = "3")]
9298    pub agent_id: ::prost::alloc::string::String,
9299    #[prost(string, tag = "4")]
9300    pub tag: ::prost::alloc::string::String,
9301    #[prost(message, optional, tag = "5")]
9302    pub presigned_req: ::core::option::Option<PresignedPostRequest>,
9303    #[prost(string, tag = "6")]
9304    pub deployment: ::prost::alloc::string::String,
9305}
9306#[derive(Clone, PartialEq, ::prost::Message)]
9307pub struct UpdateAgentSecretsRequest {
9308    #[prost(string, tag = "1")]
9309    pub agent_id: ::prost::alloc::string::String,
9310    #[prost(string, tag = "2")]
9311    pub agent_name: ::prost::alloc::string::String,
9312    #[prost(bool, tag = "3")]
9313    pub overwrite: bool,
9314    #[prost(message, repeated, tag = "4")]
9315    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9316    #[prost(string, repeated, tag = "5")]
9317    pub remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9318}
9319#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9320pub struct UpdateAgentSecretsResponse {
9321    #[prost(bool, tag = "1")]
9322    pub success: bool,
9323    #[prost(string, tag = "2")]
9324    pub message: ::prost::alloc::string::String,
9325}
9326#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9327pub struct RollbackAgentRequest {
9328    #[prost(string, tag = "1")]
9329    pub agent_id: ::prost::alloc::string::String,
9330    #[prost(string, tag = "2")]
9331    pub agent_name: ::prost::alloc::string::String,
9332    #[prost(string, tag = "3")]
9333    pub version: ::prost::alloc::string::String,
9334}
9335#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9336pub struct RollbackAgentResponse {
9337    #[prost(bool, tag = "1")]
9338    pub success: bool,
9339    #[prost(string, tag = "2")]
9340    pub message: ::prost::alloc::string::String,
9341}
9342#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9343pub struct DeleteAgentRequest {
9344    #[prost(string, tag = "1")]
9345    pub agent_id: ::prost::alloc::string::String,
9346    #[prost(string, tag = "2")]
9347    pub agent_name: ::prost::alloc::string::String,
9348    /// optional
9349    #[prost(string, tag = "3")]
9350    pub deployment: ::prost::alloc::string::String,
9351}
9352#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9353pub struct DeleteAgentResponse {
9354    #[prost(bool, tag = "1")]
9355    pub success: bool,
9356    #[prost(string, tag = "2")]
9357    pub message: ::prost::alloc::string::String,
9358}
9359#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9360pub struct ListAgentSecretsRequest {
9361    #[prost(string, tag = "1")]
9362    pub agent_id: ::prost::alloc::string::String,
9363    #[prost(string, tag = "2")]
9364    pub agent_name: ::prost::alloc::string::String,
9365}
9366#[derive(Clone, PartialEq, ::prost::Message)]
9367pub struct ListAgentSecretsResponse {
9368    #[prost(message, repeated, tag = "1")]
9369    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9370}
9371#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9372pub struct SettingsParam {
9373    #[prost(string, tag = "1")]
9374    pub name: ::prost::alloc::string::String,
9375    #[prost(string, tag = "2")]
9376    pub value: ::prost::alloc::string::String,
9377}
9378#[derive(Clone, PartialEq, ::prost::Message)]
9379pub struct ClientSettingsResponse {
9380    #[prost(message, repeated, tag = "1")]
9381    pub params: ::prost::alloc::vec::Vec<SettingsParam>,
9382}
9383#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9384pub struct ClientSettingsRequest {
9385}
9386#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9387pub struct PrivateLink {
9388    #[prost(string, tag = "1")]
9389    pub private_link_id: ::prost::alloc::string::String,
9390    #[prost(string, tag = "2")]
9391    pub name: ::prost::alloc::string::String,
9392    #[prost(string, tag = "4")]
9393    pub region: ::prost::alloc::string::String,
9394    #[prost(uint32, tag = "5")]
9395    pub port: u32,
9396    #[prost(string, tag = "6")]
9397    pub endpoint: ::prost::alloc::string::String,
9398    #[prost(string, tag = "7")]
9399    pub connection_endpoint: ::prost::alloc::string::String,
9400    #[prost(string, tag = "8")]
9401    pub cloud_region: ::prost::alloc::string::String,
9402    #[prost(oneof = "private_link::Config", tags = "3")]
9403    pub config: ::core::option::Option<private_link::Config>,
9404}
9405/// Nested message and enum types in `PrivateLink`.
9406pub mod private_link {
9407    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9408    pub struct AwsConfig {
9409        /// Use the generic "endpoint" instead
9410        #[deprecated]
9411        #[prost(string, tag = "1")]
9412        pub endpoint: ::prost::alloc::string::String,
9413    }
9414    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9415    pub enum Config {
9416        #[deprecated]
9417        #[prost(message, tag = "3")]
9418        Aws(AwsConfig),
9419    }
9420}
9421#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9422pub struct PrivateLinkStatus {
9423    #[prost(enumeration = "private_link_status::Status", tag = "1")]
9424    pub status: i32,
9425    #[prost(message, optional, tag = "2")]
9426    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
9427    #[prost(string, tag = "3")]
9428    pub reason: ::prost::alloc::string::String,
9429}
9430/// Nested message and enum types in `PrivateLinkStatus`.
9431pub mod private_link_status {
9432    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9433    #[repr(i32)]
9434    pub enum Status {
9435        PrivateLinkStatusUnknown = 0,
9436        PrivateLinkStatusProvisioning = 1,
9437        PrivateLinkStatusPendingApproval = 2,
9438        PrivateLinkStatusHealthy = 3,
9439        PrivateLinkStatusUnhealthy = 4,
9440        PrivateLinkStatusApproved = 5,
9441    }
9442    impl Status {
9443        /// String value of the enum field names used in the ProtoBuf definition.
9444        ///
9445        /// The values are not transformed in any way and thus are considered stable
9446        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9447        pub fn as_str_name(&self) -> &'static str {
9448            match self {
9449                Self::PrivateLinkStatusUnknown => "PRIVATE_LINK_STATUS_UNKNOWN",
9450                Self::PrivateLinkStatusProvisioning => "PRIVATE_LINK_STATUS_PROVISIONING",
9451                Self::PrivateLinkStatusPendingApproval => "PRIVATE_LINK_STATUS_PENDING_APPROVAL",
9452                Self::PrivateLinkStatusHealthy => "PRIVATE_LINK_STATUS_HEALTHY",
9453                Self::PrivateLinkStatusUnhealthy => "PRIVATE_LINK_STATUS_UNHEALTHY",
9454                Self::PrivateLinkStatusApproved => "PRIVATE_LINK_STATUS_APPROVED",
9455            }
9456        }
9457        /// Creates an enum from field names used in the ProtoBuf definition.
9458        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9459            match value {
9460                "PRIVATE_LINK_STATUS_UNKNOWN" => Some(Self::PrivateLinkStatusUnknown),
9461                "PRIVATE_LINK_STATUS_PROVISIONING" => Some(Self::PrivateLinkStatusProvisioning),
9462                "PRIVATE_LINK_STATUS_PENDING_APPROVAL" => Some(Self::PrivateLinkStatusPendingApproval),
9463                "PRIVATE_LINK_STATUS_HEALTHY" => Some(Self::PrivateLinkStatusHealthy),
9464                "PRIVATE_LINK_STATUS_UNHEALTHY" => Some(Self::PrivateLinkStatusUnhealthy),
9465                "PRIVATE_LINK_STATUS_APPROVED" => Some(Self::PrivateLinkStatusApproved),
9466                _ => None,
9467            }
9468        }
9469    }
9470}
9471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9472pub struct CreatePrivateLinkRequest {
9473    #[prost(string, tag = "1")]
9474    pub name: ::prost::alloc::string::String,
9475    #[prost(string, tag = "3")]
9476    pub region: ::prost::alloc::string::String,
9477    #[prost(uint32, tag = "4")]
9478    pub port: u32,
9479    #[prost(string, tag = "5")]
9480    pub endpoint: ::prost::alloc::string::String,
9481    #[prost(string, optional, tag = "6")]
9482    pub cloud_region: ::core::option::Option<::prost::alloc::string::String>,
9483    #[prost(oneof = "create_private_link_request::Config", tags = "2")]
9484    pub config: ::core::option::Option<create_private_link_request::Config>,
9485}
9486/// Nested message and enum types in `CreatePrivateLinkRequest`.
9487pub mod create_private_link_request {
9488    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9489    pub struct AwsCreateConfig {
9490        #[deprecated]
9491        #[prost(string, tag = "1")]
9492        pub endpoint: ::prost::alloc::string::String,
9493    }
9494    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9495    pub enum Config {
9496        #[deprecated]
9497        #[prost(message, tag = "2")]
9498        Aws(AwsCreateConfig),
9499    }
9500}
9501#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9502pub struct CreatePrivateLinkResponse {
9503    #[prost(message, optional, tag = "1")]
9504    pub private_link: ::core::option::Option<PrivateLink>,
9505}
9506#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9507pub struct DestroyPrivateLinkRequest {
9508    #[prost(string, tag = "1")]
9509    pub private_link_id: ::prost::alloc::string::String,
9510}
9511#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9512pub struct DestroyPrivateLinkResponse {
9513}
9514#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9515pub struct ListPrivateLinksRequest {
9516}
9517#[derive(Clone, PartialEq, ::prost::Message)]
9518pub struct ListPrivateLinksResponse {
9519    #[prost(message, repeated, tag = "1")]
9520    pub items: ::prost::alloc::vec::Vec<PrivateLink>,
9521}
9522#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9523pub struct GetPrivateLinkStatusRequest {
9524    #[prost(string, tag = "1")]
9525    pub private_link_id: ::prost::alloc::string::String,
9526}
9527#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9528pub struct GetPrivateLinkStatusResponse {
9529    #[prost(message, optional, tag = "1")]
9530    pub value: ::core::option::Option<PrivateLinkStatus>,
9531}
9532#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9533#[repr(i32)]
9534pub enum AgentSecretKind {
9535    Unknown = 0,
9536    Environment = 1,
9537    File = 2,
9538}
9539impl AgentSecretKind {
9540    /// String value of the enum field names used in the ProtoBuf definition.
9541    ///
9542    /// The values are not transformed in any way and thus are considered stable
9543    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9544    pub fn as_str_name(&self) -> &'static str {
9545        match self {
9546            Self::Unknown => "AGENT_SECRET_KIND_UNKNOWN",
9547            Self::Environment => "AGENT_SECRET_KIND_ENVIRONMENT",
9548            Self::File => "AGENT_SECRET_KIND_FILE",
9549        }
9550    }
9551    /// Creates an enum from field names used in the ProtoBuf definition.
9552    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9553        match value {
9554            "AGENT_SECRET_KIND_UNKNOWN" => Some(Self::Unknown),
9555            "AGENT_SECRET_KIND_ENVIRONMENT" => Some(Self::Environment),
9556            "AGENT_SECRET_KIND_FILE" => Some(Self::File),
9557            _ => None,
9558        }
9559    }
9560}
9561#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9562#[repr(i32)]
9563pub enum AgentEventType {
9564    Unknown = 0,
9565    ApplicationCrashed = 1,
9566    RestartedHighDiskUsage = 2,
9567    RestartedHighMemoryUsage = 3,
9568}
9569impl AgentEventType {
9570    /// String value of the enum field names used in the ProtoBuf definition.
9571    ///
9572    /// The values are not transformed in any way and thus are considered stable
9573    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9574    pub fn as_str_name(&self) -> &'static str {
9575        match self {
9576            Self::Unknown => "AGENT_EVENT_TYPE_UNKNOWN",
9577            Self::ApplicationCrashed => "AGENT_EVENT_TYPE_APPLICATION_CRASHED",
9578            Self::RestartedHighDiskUsage => "AGENT_EVENT_TYPE_RESTARTED_HIGH_DISK_USAGE",
9579            Self::RestartedHighMemoryUsage => "AGENT_EVENT_TYPE_RESTARTED_HIGH_MEMORY_USAGE",
9580        }
9581    }
9582    /// Creates an enum from field names used in the ProtoBuf definition.
9583    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9584        match value {
9585            "AGENT_EVENT_TYPE_UNKNOWN" => Some(Self::Unknown),
9586            "AGENT_EVENT_TYPE_APPLICATION_CRASHED" => Some(Self::ApplicationCrashed),
9587            "AGENT_EVENT_TYPE_RESTARTED_HIGH_DISK_USAGE" => Some(Self::RestartedHighDiskUsage),
9588            "AGENT_EVENT_TYPE_RESTARTED_HIGH_MEMORY_USAGE" => Some(Self::RestartedHighMemoryUsage),
9589            _ => None,
9590        }
9591    }
9592}
9593#[derive(Clone, PartialEq, ::prost::Message)]
9594pub struct SimulationRunSummary {
9595    #[prost(int32, tag = "1")]
9596    pub passed: i32,
9597    #[prost(int32, tag = "2")]
9598    pub failed: i32,
9599    #[prost(string, tag = "3")]
9600    pub going_well: ::prost::alloc::string::String,
9601    #[prost(string, tag = "4")]
9602    pub to_improve: ::prost::alloc::string::String,
9603    #[prost(message, repeated, tag = "5")]
9604    pub issues: ::prost::alloc::vec::Vec<simulation_run_summary::Issue>,
9605    #[prost(map = "string, message", tag = "6")]
9606    pub chat_history: ::std::collections::HashMap<::prost::alloc::string::String, agent::ChatContext>,
9607}
9608/// Nested message and enum types in `SimulationRunSummary`.
9609pub mod simulation_run_summary {
9610    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9611    pub struct Issue {
9612        #[prost(string, tag = "1")]
9613        pub description: ::prost::alloc::string::String,
9614        #[prost(string, tag = "2")]
9615        pub suggestion: ::prost::alloc::string::String,
9616        #[prost(string, tag = "3")]
9617        pub label: ::prost::alloc::string::String,
9618    }
9619}
9620#[derive(Clone, PartialEq, ::prost::Message)]
9621pub struct SimulationRun {
9622    #[prost(string, tag = "1")]
9623    pub id: ::prost::alloc::string::String,
9624    #[prost(string, tag = "2")]
9625    pub project_id: ::prost::alloc::string::String,
9626    #[prost(enumeration = "simulation_run::Status", tag = "3")]
9627    pub status: i32,
9628    #[prost(string, tag = "4")]
9629    pub agent_description: ::prost::alloc::string::String,
9630    #[prost(string, tag = "5")]
9631    pub error: ::prost::alloc::string::String,
9632    #[prost(message, optional, tag = "6")]
9633    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
9634    #[prost(message, repeated, tag = "7")]
9635    pub jobs: ::prost::alloc::vec::Vec<simulation_run::Job>,
9636    #[prost(string, tag = "9")]
9637    pub agent_name: ::prost::alloc::string::String,
9638    #[prost(message, optional, tag = "10")]
9639    pub scenario_group: ::core::option::Option<ScenarioGroup>,
9640    #[prost(message, optional, tag = "11")]
9641    pub ended_at: ::core::option::Option<::pbjson_types::Timestamp>,
9642    #[prost(int32, tag = "12")]
9643    pub job_count: i32,
9644    #[prost(int32, tag = "13")]
9645    pub passed_count: i32,
9646    #[prost(int32, tag = "14")]
9647    pub failed_count: i32,
9648    #[prost(int32, tag = "15")]
9649    pub num_simulations: i32,
9650    /// Aggregate usage across all jobs in this run (sum of Job.usage).
9651    #[prost(message, optional, tag = "16")]
9652    pub usage: ::core::option::Option<simulation_run::Usage>,
9653    /// Maximum simulate jobs running in parallel for this run (0 = server default).
9654    #[prost(int32, tag = "17")]
9655    pub concurrency: i32,
9656    /// Conversation mode for every job in this run; unspecified = TEXT.
9657    #[prost(enumeration = "SimulationMode", tag = "18")]
9658    pub mode: i32,
9659    /// Run-level aggregates over this run's jobs.
9660    #[prost(message, optional, tag = "19")]
9661    pub metrics: ::core::option::Option<simulation_run::RunMetrics>,
9662    /// zstd-compressed SimulationRunSummary: decompress, then proto.Unmarshal.
9663    /// Compressed by default so the blob ships as-is on every hop.
9664    #[prost(bytes = "vec", tag = "20")]
9665    pub summary_zstd: ::prost::alloc::vec::Vec<u8>,
9666    /// How many issues the stored summary flagged. Present only once a summary
9667    /// landed — absent and 0 differ ("never summarized" vs "no issues") — and
9668    /// List responses carry it without the summary blob itself.
9669    #[prost(int32, optional, tag = "21")]
9670    pub issue_count: ::core::option::Option<i32>,
9671    /// The pipeline this run came from; unset when it did not come from one.
9672    #[prost(message, optional, tag = "22")]
9673    pub ci: ::core::option::Option<simulation_run::Ci>,
9674    /// Absent when the run ran each scenario once and required it to pass.
9675    #[prost(message, optional, tag = "23")]
9676    pub sampling: ::core::option::Option<simulation_run::SamplingOptions>,
9677}
9678/// Nested message and enum types in `SimulationRun`.
9679pub mod simulation_run {
9680    #[derive(Clone, PartialEq, ::prost::Message)]
9681    pub struct Job {
9682        #[prost(string, tag = "1")]
9683        pub id: ::prost::alloc::string::String,
9684        #[prost(enumeration = "job::Status", tag = "2")]
9685        pub status: i32,
9686        #[prost(string, tag = "3")]
9687        pub instructions: ::prost::alloc::string::String,
9688        #[prost(string, tag = "4")]
9689        pub error: ::prost::alloc::string::String,
9690        #[prost(string, tag = "5")]
9691        pub agent_expectations: ::prost::alloc::string::String,
9692        #[prost(string, tag = "6")]
9693        pub label: ::prost::alloc::string::String,
9694        #[prost(string, repeated, tag = "7")]
9695        pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9696        #[prost(string, tag = "8")]
9697        pub room_name: ::prost::alloc::string::String,
9698        #[prost(message, optional, tag = "10")]
9699        pub started_at: ::core::option::Option<::pbjson_types::Timestamp>,
9700        #[prost(message, optional, tag = "11")]
9701        pub ended_at: ::core::option::Option<::pbjson_types::Timestamp>,
9702        #[prost(string, tag = "12")]
9703        pub room_id: ::prost::alloc::string::String,
9704        #[prost(message, optional, tag = "13")]
9705        pub usage: ::core::option::Option<job::Usage>,
9706        /// Quality metrics for this job's call. Unset when the job produced none.
9707        #[prost(message, optional, tag = "14")]
9708        pub metrics: ::core::option::Option<JobMetrics>,
9709        /// The Scenario.id this job ran; empty for generated runs. Every sample
9710        /// of one scenario shares it, so a run's jobs group back into scenarios.
9711        #[prost(string, tag = "15")]
9712        pub scenario_id: ::prost::alloc::string::String,
9713        /// 1-based sample of that scenario within the run; always 1 when the run's
9714        /// samples is 1.
9715        #[prost(int32, tag = "16")]
9716        pub sample: i32,
9717    }
9718    /// Nested message and enum types in `Job`.
9719    pub mod job {
9720        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9721        pub struct Usage {
9722            #[prost(int32, tag = "1")]
9723            pub text_turns_count: i32,
9724            #[prost(int32, tag = "2")]
9725            pub audio_turns_count: i32,
9726        }
9727        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9728        #[repr(i32)]
9729        pub enum Status {
9730            Pending = 0,
9731            Running = 1,
9732            Completed = 2,
9733            Failed = 3,
9734            Cancelled = 4,
9735        }
9736        impl Status {
9737            /// String value of the enum field names used in the ProtoBuf definition.
9738            ///
9739            /// The values are not transformed in any way and thus are considered stable
9740            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9741            pub fn as_str_name(&self) -> &'static str {
9742                match self {
9743                    Self::Pending => "STATUS_PENDING",
9744                    Self::Running => "STATUS_RUNNING",
9745                    Self::Completed => "STATUS_COMPLETED",
9746                    Self::Failed => "STATUS_FAILED",
9747                    Self::Cancelled => "STATUS_CANCELLED",
9748                }
9749            }
9750            /// Creates an enum from field names used in the ProtoBuf definition.
9751            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9752                match value {
9753                    "STATUS_PENDING" => Some(Self::Pending),
9754                    "STATUS_RUNNING" => Some(Self::Running),
9755                    "STATUS_COMPLETED" => Some(Self::Completed),
9756                    "STATUS_FAILED" => Some(Self::Failed),
9757                    "STATUS_CANCELLED" => Some(Self::Cancelled),
9758                    _ => None,
9759                }
9760            }
9761        }
9762    }
9763    #[derive(Clone, PartialEq, ::prost::Message)]
9764    pub struct JobMetrics {
9765        /// the scenario verdict as 1/0
9766        #[prost(float, optional, tag = "3")]
9767        pub task_completion: ::core::option::Option<f32>,
9768        /// weighted mean of the judged and heard scores
9769        #[prost(float, optional, tag = "20")]
9770        pub overall_score: ::core::option::Option<f32>,
9771        #[prost(message, optional, tag = "4")]
9772        pub stt: ::core::option::Option<job_metrics::Stt>,
9773        #[prost(message, optional, tag = "5")]
9774        pub llm: ::core::option::Option<job_metrics::Llm>,
9775        #[prost(message, optional, tag = "6")]
9776        pub tts: ::core::option::Option<job_metrics::Tts>,
9777        #[prost(message, optional, tag = "7")]
9778        pub conversation: ::core::option::Option<job_metrics::Conversation>,
9779        /// One entry per turn, both speakers.
9780        #[prost(message, repeated, tag = "9")]
9781        pub turns: ::prost::alloc::vec::Vec<job_metrics::Turn>,
9782        /// text judge for judged scores; "" if none ran
9783        #[prost(string, tag = "10")]
9784        pub judge_model: ::prost::alloc::string::String,
9785        /// false = waveform-only capture (e.g. SIP)
9786        #[prost(bool, tag = "12")]
9787        pub has_remote_session: bool,
9788        /// audio only; call start (first speech edge); turn times relative to it
9789        #[prost(message, optional, tag = "13")]
9790        pub t0: ::core::option::Option<::pbjson_types::Timestamp>,
9791        /// Judged over the authored dialog (text and audio); needs the text judge.
9792        ///
9793        /// judged {0, 0.5, 1} per agent turn; job = mean
9794        #[prost(float, optional, tag = "14")]
9795        pub conciseness: ::core::option::Option<f32>,
9796        /// Whole-call issue flags; true = present, absent = not judged.
9797        #[prost(bool, optional, tag = "15")]
9798        pub unnecessary_tool_calls: ::core::option::Option<bool>,
9799        #[prost(bool, optional, tag = "16")]
9800        pub information_loss: ::core::option::Option<bool>,
9801        #[prost(bool, optional, tag = "17")]
9802        pub redundant_statements: ::core::option::Option<bool>,
9803        #[prost(bool, optional, tag = "18")]
9804        pub poor_question_quality: ::core::option::Option<bool>,
9805        /// 0-1, derived from the flags above
9806        #[prost(float, optional, tag = "19")]
9807        pub conversation_progression: ::core::option::Option<f32>,
9808    }
9809    /// Nested message and enum types in `JobMetrics`.
9810    pub mod job_metrics {
9811        /// The agent's perception of the caller. Audio only.
9812        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9813        pub struct Stt {
9814            /// needs the RemoteSession; word_errors / words
9815            #[prost(float, optional, tag = "1")]
9816            pub wer: ::core::option::Option<f32>,
9817            /// needs the RemoteSession
9818            #[prost(uint32, optional, tag = "2")]
9819            pub words: ::core::option::Option<u32>,
9820            /// needs the RemoteSession
9821            #[prost(uint32, optional, tag = "3")]
9822            pub word_errors: ::core::option::Option<u32>,
9823            /// needs the RemoteSession; char_errors / chars
9824            #[prost(float, optional, tag = "4")]
9825            pub cer: ::core::option::Option<f32>,
9826            /// needs the RemoteSession
9827            #[prost(uint32, optional, tag = "9")]
9828            pub chars: ::core::option::Option<u32>,
9829            /// needs the RemoteSession
9830            #[prost(uint32, optional, tag = "10")]
9831            pub char_errors: ::core::option::Option<u32>,
9832            /// needs the RemoteSession; agent-reported STT/endpointing delay
9833            #[prost(uint32, optional, tag = "8")]
9834            pub stt_delay_ms: ::core::option::Option<u32>,
9835            /// Key entities (names, IDs, amounts) the caller said. Needs the text judge.
9836            ///
9837            /// recognized / uttered
9838            #[prost(float, optional, tag = "11")]
9839            pub entity_recognition: ::core::option::Option<f32>,
9840            #[prost(uint32, optional, tag = "12")]
9841            pub entities_uttered: ::core::option::Option<u32>,
9842            #[prost(uint32, optional, tag = "13")]
9843            pub entities_recognized: ::core::option::Option<u32>,
9844            /// Retention: an entity is acquired at the first saying heard right, and
9845            /// these count only the sayings after that, so recall separates keeping an
9846            /// entity from ever getting it.
9847            ///
9848            /// acquired_recognized / acquired_uttered
9849            #[prost(float, optional, tag = "14")]
9850            pub entity_recall: ::core::option::Option<f32>,
9851            #[prost(uint32, optional, tag = "15")]
9852            pub entities_acquired_uttered: ::core::option::Option<u32>,
9853            #[prost(uint32, optional, tag = "16")]
9854            pub entities_acquired_recognized: ::core::option::Option<u32>,
9855        }
9856        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9857        pub struct Llm {
9858            /// needs the RemoteSession; time to first token
9859            #[prost(uint32, optional, tag = "1")]
9860            pub ttft_ms: ::core::option::Option<u32>,
9861            /// needs the RemoteSession; time to first sentence, the smallest speakable unit
9862            #[prost(uint32, optional, tag = "2")]
9863            pub ttfs_ms: ::core::option::Option<u32>,
9864            /// needs the RemoteSession
9865            #[prost(float, optional, tag = "3")]
9866            pub tokens_per_second: ::core::option::Option<f32>,
9867        }
9868        /// The agent's voice. Audio only.
9869        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9870        pub struct Tts {
9871            /// needs the RemoteSession; provider byte-level TTFB
9872            #[prost(uint32, optional, tag = "2")]
9873            pub ttfb_ms: ::core::option::Option<u32>,
9874            /// needs the RemoteSession; word_errors / words
9875            #[prost(float, optional, tag = "3")]
9876            pub wer: ::core::option::Option<f32>,
9877            /// needs the RemoteSession
9878            #[prost(uint32, optional, tag = "7")]
9879            pub words: ::core::option::Option<u32>,
9880            /// needs the RemoteSession
9881            #[prost(uint32, optional, tag = "8")]
9882            pub word_errors: ::core::option::Option<u32>,
9883            /// needs the RemoteSession; char_errors / chars
9884            #[prost(float, optional, tag = "9")]
9885            pub cer: ::core::option::Option<f32>,
9886            /// needs the RemoteSession
9887            #[prost(uint32, optional, tag = "10")]
9888            pub chars: ::core::option::Option<u32>,
9889            /// needs the RemoteSession
9890            #[prost(uint32, optional, tag = "11")]
9891            pub char_errors: ::core::option::Option<u32>,
9892            /// Key entities the agent said, as the caller heard them. Needs the text judge.
9893            ///
9894            /// recognized / uttered
9895            #[prost(float, optional, tag = "14")]
9896            pub entity_recognition: ::core::option::Option<f32>,
9897            #[prost(uint32, optional, tag = "15")]
9898            pub entities_uttered: ::core::option::Option<u32>,
9899            #[prost(uint32, optional, tag = "16")]
9900            pub entities_recognized: ::core::option::Option<u32>,
9901            /// acquired_recognized / acquired_uttered
9902            #[prost(float, optional, tag = "17")]
9903            pub entity_recall: ::core::option::Option<f32>,
9904            #[prost(uint32, optional, tag = "18")]
9905            pub entities_acquired_uttered: ::core::option::Option<u32>,
9906            #[prost(uint32, optional, tag = "19")]
9907            pub entities_acquired_recognized: ::core::option::Option<u32>,
9908        }
9909        /// Audio only.
9910        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9911        pub struct Conversation {
9912            /// 0-1
9913            #[prost(float, optional, tag = "1")]
9914            pub turn_taking_score: ::core::option::Option<f32>,
9915            /// floor-transfer offset; a gap is > 0, an overlap < 0
9916            #[prost(int32, optional, tag = "2")]
9917            pub heard_e2e_latency_p50_ms: ::core::option::Option<i32>,
9918            #[prost(int32, optional, tag = "3")]
9919            pub heard_e2e_latency_p95_ms: ::core::option::Option<i32>,
9920            #[prost(int32, optional, tag = "4")]
9921            pub heard_e2e_latency_p99_ms: ::core::option::Option<i32>,
9922            /// agent audio continuing past a barge-in
9923            #[prost(uint32, optional, tag = "5")]
9924            pub time_to_yield_ms: ::core::option::Option<u32>,
9925            /// agent started before the caller's turn ended
9926            #[prost(uint32, optional, tag = "6")]
9927            pub eot_misprediction_count: ::core::option::Option<u32>,
9928            /// overlapping speech / total speech
9929            #[prost(float, optional, tag = "7")]
9930            pub overlap_ratio: ::core::option::Option<f32>,
9931            /// pooling stats for overlap_ratio
9932            #[prost(uint32, optional, tag = "8")]
9933            pub overlap_speech_ms: ::core::option::Option<u32>,
9934            #[prost(uint32, optional, tag = "9")]
9935            pub total_speech_ms: ::core::option::Option<u32>,
9936            /// gaps past the natural-pause threshold
9937            #[prost(uint32, optional, tag = "11")]
9938            pub awkward_silence_count: ::core::option::Option<u32>,
9939            /// the simulated party spoke, the agent never responded
9940            #[prost(uint32, optional, tag = "12")]
9941            pub unanswered_turns: ::core::option::Option<u32>,
9942            /// needs the RemoteSession; agent paused for a non-interruption
9943            #[prost(uint32, optional, tag = "13")]
9944            pub false_interruption_count: ::core::option::Option<u32>,
9945            /// needs the RemoteSession; the agent's own claim
9946            #[prost(uint32, optional, tag = "15")]
9947            pub e2e_latency_ms: ::core::option::Option<u32>,
9948        }
9949        /// Rows exist for text and audio. The groups above hold the means and pools
9950        /// over these; anything not measured for a turn stays unset.
9951        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9952        pub struct Turn {
9953            /// 1-based, conversation order
9954            #[prost(uint32, tag = "1")]
9955            pub index: u32,
9956            /// ASSISTANT = the agent under test, USER = simulator persona
9957            #[prost(enumeration = "super::super::agent::ChatRole", tag = "2")]
9958            pub role: i32,
9959            /// audio only; relative to t0; unset if the turn could not be aligned to the audio
9960            #[prost(uint32, optional, tag = "3")]
9961            pub start_ms: ::core::option::Option<u32>,
9962            /// audio only
9963            #[prost(uint32, optional, tag = "4")]
9964            pub end_ms: ::core::option::Option<u32>,
9965            /// needs the RemoteSession
9966            #[prost(uint32, optional, tag = "5")]
9967            pub stt_delay_ms: ::core::option::Option<u32>,
9968            /// needs the RemoteSession
9969            #[prost(uint32, optional, tag = "6")]
9970            pub llm_ttft_ms: ::core::option::Option<u32>,
9971            /// needs the RemoteSession
9972            #[prost(uint32, optional, tag = "7")]
9973            pub llm_ttfs_ms: ::core::option::Option<u32>,
9974            /// needs the RemoteSession
9975            #[prost(float, optional, tag = "8")]
9976            pub llm_tps: ::core::option::Option<f32>,
9977            /// needs the RemoteSession
9978            #[prost(uint32, optional, tag = "9")]
9979            pub tts_ttfb_ms: ::core::option::Option<u32>,
9980            /// needs the RemoteSession
9981            #[prost(uint32, optional, tag = "10")]
9982            pub e2e_latency_ms: ::core::option::Option<u32>,
9983            #[prost(int32, optional, tag = "11")]
9984            pub heard_e2e_latency_ms: ::core::option::Option<i32>,
9985            #[prost(uint32, optional, tag = "12")]
9986            pub time_to_yield_ms: ::core::option::Option<u32>,
9987            #[prost(float, optional, tag = "13")]
9988            pub turn_taking_score: ::core::option::Option<f32>,
9989            /// needs the text judge
9990            #[prost(float, optional, tag = "14")]
9991            pub conciseness: ::core::option::Option<f32>,
9992            #[prost(bool, optional, tag = "15")]
9993            pub eot_misprediction: ::core::option::Option<bool>,
9994            #[prost(bool, optional, tag = "16")]
9995            pub awkward_silence: ::core::option::Option<bool>,
9996            #[prost(bool, optional, tag = "17")]
9997            pub unanswered: ::core::option::Option<bool>,
9998        }
9999    }
10000    /// Aggregates over this run's jobs, so a run summary does not have to pull
10001    /// every job and turn. Reuses the JobMetrics group shapes.
10002    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10003    pub struct RunMetrics {
10004        /// share of jobs whose scenario verdict passed
10005        #[prost(float, optional, tag = "3")]
10006        pub scenario_pass_rate: ::core::option::Option<f32>,
10007        /// mean over scored jobs
10008        #[prost(float, optional, tag = "10")]
10009        pub overall_score: ::core::option::Option<f32>,
10010        #[prost(message, optional, tag = "4")]
10011        pub stt: ::core::option::Option<job_metrics::Stt>,
10012        #[prost(message, optional, tag = "5")]
10013        pub llm: ::core::option::Option<job_metrics::Llm>,
10014        #[prost(message, optional, tag = "6")]
10015        pub tts: ::core::option::Option<job_metrics::Tts>,
10016        #[prost(message, optional, tag = "7")]
10017        pub conversation: ::core::option::Option<job_metrics::Conversation>,
10018        /// Means over the jobs that report them.
10019        #[prost(float, optional, tag = "8")]
10020        pub conciseness: ::core::option::Option<f32>,
10021        #[prost(float, optional, tag = "9")]
10022        pub conversation_progression: ::core::option::Option<f32>,
10023    }
10024    /// The pipeline this run came from. Set by the client from its CI
10025    /// environment; absent for runs not started by a pipeline.
10026    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10027    pub struct Ci {
10028        /// e.g. "github_actions"
10029        #[prost(string, tag = "1")]
10030        pub provider: ::prost::alloc::string::String,
10031        #[prost(string, tag = "2")]
10032        pub commit_sha: ::prost::alloc::string::String,
10033        /// branch or tag
10034        #[prost(string, tag = "3")]
10035        pub r#ref: ::prost::alloc::string::String,
10036        #[prost(string, tag = "4")]
10037        pub pull_request: ::prost::alloc::string::String,
10038        /// link back to the CI job
10039        #[prost(string, tag = "5")]
10040        pub run_url: ::prost::alloc::string::String,
10041        #[prost(string, tag = "6")]
10042        pub actor: ::prost::alloc::string::String,
10043    }
10044    /// Runs each scenario more than once, so a flaky sample is distinguishable
10045    /// from a broken scenario. Both fields are required when it is present.
10046    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10047    pub struct SamplingOptions {
10048        /// Samples per scenario, > 1. The run holds scenarios × samples jobs,
10049        /// subject to the usual job cap.
10050        #[prost(int32, tag = "1")]
10051        pub samples: i32,
10052        /// The share of a scenario's samples that must pass for that scenario to
10053        /// pass, 0-1. A scenario needs round(rate × samples) of them, so 1
10054        /// requires every sample and 0.67 of 3 requires 2.
10055        #[prost(double, tag = "2")]
10056        pub pass_rate: f64,
10057    }
10058    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10059    pub struct Create {
10060    }
10061    /// Nested message and enum types in `Create`.
10062    pub mod create {
10063        #[derive(Clone, PartialEq, ::prost::Message)]
10064        pub struct Request {
10065            #[prost(string, tag = "1")]
10066            pub project_id: ::prost::alloc::string::String,
10067            #[prost(string, tag = "2")]
10068            pub agent_name: ::prost::alloc::string::String,
10069            #[prost(int32, tag = "4")]
10070            pub num_simulations: i32,
10071            #[prost(string, tag = "6")]
10072            pub region: ::prost::alloc::string::String,
10073            /// When set, run these scenarios (loaded from a scenarios.yaml).
10074            /// When unset, generate num_simulations scenarios from the uploaded agent source.
10075            #[prost(message, optional, tag = "7")]
10076            pub scenario_group: ::core::option::Option<super::super::ScenarioGroup>,
10077            /// Maximum simulate jobs running in parallel for this run. Clamped to the
10078            /// project's concurrency quota; 0/unset uses the server default.
10079            #[prost(int32, optional, tag = "8")]
10080            pub concurrency: ::core::option::Option<i32>,
10081            /// Conversation mode for every job in this run; unspecified = TEXT.
10082            #[prost(enumeration = "super::super::SimulationMode", tag = "9")]
10083            pub mode: i32,
10084            /// Impairments applied to the simulated user's audio; AUDIO mode only.
10085            #[prost(bool, tag = "10")]
10086            pub background_noise: bool,
10087            #[prost(bool, tag = "11")]
10088            pub low_quality_microphone: bool,
10089            #[prost(bool, tag = "12")]
10090            pub packet_loss: bool,
10091            #[prost(message, optional, tag = "13")]
10092            pub ci: ::core::option::Option<super::Ci>,
10093            /// Absent runs each scenario once and requires it to pass. Requires
10094            /// scenario_group. The run fails if any scenario fails; pass@k and
10095            /// pass^k report over scenarios and neither gates.
10096            #[prost(message, optional, tag = "14")]
10097            pub sampling: ::core::option::Option<super::SamplingOptions>,
10098        }
10099        #[derive(Clone, PartialEq, ::prost::Message)]
10100        pub struct Response {
10101            #[prost(string, tag = "1")]
10102            pub simulation_run_id: ::prost::alloc::string::String,
10103            #[prost(message, optional, tag = "2")]
10104            pub presigned_post_request: ::core::option::Option<super::super::PresignedPostRequest>,
10105        }
10106    }
10107    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10108    pub struct ConfirmSourceUpload {
10109    }
10110    /// Nested message and enum types in `ConfirmSourceUpload`.
10111    pub mod confirm_source_upload {
10112        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10113        pub struct Request {
10114            #[prost(string, tag = "1")]
10115            pub project_id: ::prost::alloc::string::String,
10116            #[prost(string, tag = "2")]
10117            pub simulation_run_id: ::prost::alloc::string::String,
10118            #[prost(string, tag = "3")]
10119            pub code_entrypoint: ::prost::alloc::string::String,
10120        }
10121        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10122        pub struct Response {
10123        }
10124    }
10125    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10126    pub struct Get {
10127    }
10128    /// Nested message and enum types in `Get`.
10129    pub mod get {
10130        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10131        pub struct Request {
10132            #[prost(string, tag = "1")]
10133            pub project_id: ::prost::alloc::string::String,
10134            #[prost(string, tag = "2")]
10135            pub simulation_run_id: ::prost::alloc::string::String,
10136        }
10137        #[derive(Clone, PartialEq, ::prost::Message)]
10138        pub struct Response {
10139            #[prost(message, optional, tag = "1")]
10140            pub run: ::core::option::Option<super::super::SimulationRun>,
10141        }
10142    }
10143    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10144    pub struct List {
10145    }
10146    /// Nested message and enum types in `List`.
10147    pub mod list {
10148        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10149        pub struct Request {
10150            #[prost(string, tag = "1")]
10151            pub project_id: ::prost::alloc::string::String,
10152            #[prost(enumeration = "super::Status", optional, tag = "2")]
10153            pub status: ::core::option::Option<i32>,
10154            #[prost(message, optional, tag = "3")]
10155            pub page_token: ::core::option::Option<super::super::TokenPagination>,
10156            /// Half-open window [start_time, end_time) on created_at, the leading key
10157            /// of this list's keyset. Unset bounds mean no window, so existing callers
10158            /// keep their unbounded scan; the histogram's selected range sets both.
10159            #[prost(message, optional, tag = "4")]
10160            pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
10161            #[prost(message, optional, tag = "5")]
10162            pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
10163            /// Exact agent name. Unset means every agent — including the runs whose
10164            /// name is empty, which a bare string could not tell from no filter.
10165            #[prost(string, optional, tag = "6")]
10166            pub agent_name: ::core::option::Option<::prost::alloc::string::String>,
10167            /// Absent applies no mode filter. TEXT matches runs stored as TEXT or
10168            /// UNSPECIFIED, which `SimulationRun.mode` defines as the same mode.
10169            #[prost(enumeration = "super::super::SimulationMode", optional, tag = "7")]
10170            pub mode: ::core::option::Option<i32>,
10171        }
10172        #[derive(Clone, PartialEq, ::prost::Message)]
10173        pub struct Response {
10174            #[prost(message, repeated, tag = "1")]
10175            pub runs: ::prost::alloc::vec::Vec<super::super::SimulationRun>,
10176            #[prost(message, optional, tag = "2")]
10177            pub next_page_token: ::core::option::Option<super::super::TokenPagination>,
10178        }
10179    }
10180    /// Counts of the runs `List` would return over the same window, bucketed by
10181    /// created_at instead of paginated.
10182    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10183    pub struct Counts {
10184    }
10185    /// Nested message and enum types in `Counts`.
10186    pub mod counts {
10187        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10188        pub struct Request {
10189            #[prost(string, tag = "1")]
10190            pub project_id: ::prost::alloc::string::String,
10191            /// Both bounds required: a bucketed scan of a project's whole history is
10192            /// never what a caller wants.
10193            #[prost(message, optional, tag = "2")]
10194            pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
10195            #[prost(message, optional, tag = "3")]
10196            pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
10197            /// Applied as `List` applies it: a filter the rows honour and the bars
10198            /// above them drop would make the histogram an answer about a wider set.
10199            #[prost(enumeration = "super::Status", optional, tag = "4")]
10200            pub status: ::core::option::Option<i32>,
10201            #[prost(string, optional, tag = "5")]
10202            pub agent_name: ::core::option::Option<::prost::alloc::string::String>,
10203            #[prost(enumeration = "super::super::SimulationMode", optional, tag = "6")]
10204            pub mode: ::core::option::Option<i32>,
10205        }
10206        #[derive(Clone, PartialEq, ::prost::Message)]
10207        pub struct Response {
10208            /// Buckets holding at least one run, ascending by bucket_start. Empty
10209            /// buckets are omitted; each run lands in exactly one bucket, so the
10210            /// counts sum to the number of runs in the window.
10211            #[prost(message, repeated, tag = "1")]
10212            pub buckets: ::prost::alloc::vec::Vec<Bucket>,
10213            /// The bucket width the server chose from the window, so the client
10214            /// zero-fills the omitted buckets on the grid the counts were built on.
10215            #[prost(message, optional, tag = "2")]
10216            pub interval: ::core::option::Option<::pbjson_types::Duration>,
10217        }
10218        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10219        pub struct Bucket {
10220            #[prost(message, optional, tag = "1")]
10221            pub bucket_start: ::core::option::Option<::pbjson_types::Timestamp>,
10222            #[prost(uint64, tag = "2")]
10223            pub count: u64,
10224        }
10225    }
10226    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10227    pub struct Cancel {
10228    }
10229    /// Nested message and enum types in `Cancel`.
10230    pub mod cancel {
10231        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10232        pub struct Request {
10233            #[prost(string, tag = "1")]
10234            pub project_id: ::prost::alloc::string::String,
10235            #[prost(string, tag = "2")]
10236            pub simulation_run_id: ::prost::alloc::string::String,
10237        }
10238        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10239        pub struct Response {
10240        }
10241    }
10242    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10243    pub struct Usage {
10244        #[prost(int32, tag = "1")]
10245        pub text_turns_count: i32,
10246        #[prost(int32, tag = "2")]
10247        pub audio_turns_count: i32,
10248    }
10249    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10250    #[repr(i32)]
10251    pub enum Status {
10252        PendingUpload = 0,
10253        Generating = 1,
10254        Running = 2,
10255        Summarizing = 3,
10256        Completed = 4,
10257        Failed = 5,
10258        Cancelled = 6,
10259    }
10260    impl Status {
10261        /// String value of the enum field names used in the ProtoBuf definition.
10262        ///
10263        /// The values are not transformed in any way and thus are considered stable
10264        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10265        pub fn as_str_name(&self) -> &'static str {
10266            match self {
10267                Self::PendingUpload => "STATUS_PENDING_UPLOAD",
10268                Self::Generating => "STATUS_GENERATING",
10269                Self::Running => "STATUS_RUNNING",
10270                Self::Summarizing => "STATUS_SUMMARIZING",
10271                Self::Completed => "STATUS_COMPLETED",
10272                Self::Failed => "STATUS_FAILED",
10273                Self::Cancelled => "STATUS_CANCELLED",
10274            }
10275        }
10276        /// Creates an enum from field names used in the ProtoBuf definition.
10277        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10278            match value {
10279                "STATUS_PENDING_UPLOAD" => Some(Self::PendingUpload),
10280                "STATUS_GENERATING" => Some(Self::Generating),
10281                "STATUS_RUNNING" => Some(Self::Running),
10282                "STATUS_SUMMARIZING" => Some(Self::Summarizing),
10283                "STATUS_COMPLETED" => Some(Self::Completed),
10284                "STATUS_FAILED" => Some(Self::Failed),
10285                "STATUS_CANCELLED" => Some(Self::Cancelled),
10286                _ => None,
10287            }
10288        }
10289    }
10290}
10291/// A single scenario, mirroring one entry in a scenarios.yaml file. Scenarios
10292/// are no longer stored server-side; the yaml file is the source of truth.
10293#[derive(Clone, PartialEq, ::prost::Message)]
10294pub struct Scenario {
10295    #[prost(string, tag = "1")]
10296    pub label: ::prost::alloc::string::String,
10297    #[prost(string, tag = "2")]
10298    pub instructions: ::prost::alloc::string::String,
10299    #[prost(string, tag = "3")]
10300    pub agent_expectations: ::prost::alloc::string::String,
10301    /// Set as participant attributes on the simulation participant's access token.
10302    #[prost(map = "string, string", tag = "4")]
10303    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
10304    /// Arbitrary JSON-encoded object, surfaced to the agent under test as
10305    /// SimulationContext userdata (e.g. inputs and benchmark target state).
10306    #[prost(string, tag = "5")]
10307    pub userdata: ::prost::alloc::string::String,
10308    /// SCN_-prefixed guid. Stable across edits to label, instructions, or
10309    /// expectations, so runs of the same scenario can be correlated over time.
10310    #[prost(string, tag = "6")]
10311    pub id: ::prost::alloc::string::String,
10312}
10313/// Nested message and enum types in `Scenario`.
10314pub mod scenario {
10315    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10316    pub struct CreateFromSession {
10317    }
10318    /// Nested message and enum types in `CreateFromSession`.
10319    pub mod create_from_session {
10320        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10321        pub struct Request {
10322            #[prost(string, tag = "1")]
10323            pub project_id: ::prost::alloc::string::String,
10324            #[prost(string, tag = "2")]
10325            pub room_id: ::prost::alloc::string::String,
10326            #[prost(string, tag = "3")]
10327            pub region: ::prost::alloc::string::String,
10328        }
10329        #[derive(Clone, PartialEq, ::prost::Message)]
10330        pub struct Response {
10331            #[prost(message, optional, tag = "1")]
10332            pub scenario: ::core::option::Option<super::super::Scenario>,
10333        }
10334    }
10335}
10336/// A named group of scenarios, mirroring a whole scenarios.yaml file.
10337#[derive(Clone, PartialEq, ::prost::Message)]
10338pub struct ScenarioGroup {
10339    #[prost(string, tag = "1")]
10340    pub name: ::prost::alloc::string::String,
10341    #[prost(message, repeated, tag = "2")]
10342    pub scenarios: ::prost::alloc::vec::Vec<Scenario>,
10343    /// SCNG_-prefixed guid. Stable identity of the scenarios file, independent
10344    /// of its name.
10345    #[prost(string, tag = "3")]
10346    pub id: ::prost::alloc::string::String,
10347}
10348/// Carried (protojson-encoded) in the simulation room's metadata so the agent
10349/// under test can read the scenario + run identity synchronously at connect.
10350#[derive(Clone, PartialEq, ::prost::Message)]
10351pub struct SimulationDispatch {
10352    #[prost(string, tag = "1")]
10353    pub simulation_run_id: ::prost::alloc::string::String,
10354    #[prost(string, tag = "2")]
10355    pub job_id: ::prost::alloc::string::String,
10356    #[prost(message, optional, tag = "3")]
10357    pub scenario: ::core::option::Option<Scenario>,
10358    #[prost(enumeration = "SimulationMode", tag = "4")]
10359    pub mode: i32,
10360}
10361/// How the simulated user interacts with the agent under test.
10362#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10363#[repr(i32)]
10364pub enum SimulationMode {
10365    Unspecified = 0,
10366    /// The simulator chats over text streams (no audio).
10367    Text = 1,
10368    /// The simulator publishes/subscribes audio in the room.
10369    Audio = 2,
10370}
10371impl SimulationMode {
10372    /// String value of the enum field names used in the ProtoBuf definition.
10373    ///
10374    /// The values are not transformed in any way and thus are considered stable
10375    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10376    pub fn as_str_name(&self) -> &'static str {
10377        match self {
10378            Self::Unspecified => "SIMULATION_MODE_UNSPECIFIED",
10379            Self::Text => "SIMULATION_MODE_TEXT",
10380            Self::Audio => "SIMULATION_MODE_AUDIO",
10381        }
10382    }
10383    /// Creates an enum from field names used in the ProtoBuf definition.
10384    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10385        match value {
10386            "SIMULATION_MODE_UNSPECIFIED" => Some(Self::Unspecified),
10387            "SIMULATION_MODE_TEXT" => Some(Self::Text),
10388            "SIMULATION_MODE_AUDIO" => Some(Self::Audio),
10389            _ => None,
10390        }
10391    }
10392}
10393#[derive(Clone, PartialEq, ::prost::Message)]
10394pub struct WorkerInfo {
10395    #[prost(string, tag = "1")]
10396    pub worker_type: ::prost::alloc::string::String,
10397    #[prost(string, tag = "2")]
10398    pub agent_name: ::prost::alloc::string::String,
10399    #[prost(float, tag = "3")]
10400    pub active_jobs: f32,
10401    #[prost(string, tag = "4")]
10402    pub sdk_version: ::prost::alloc::string::String,
10403    #[prost(float, tag = "5")]
10404    pub worker_load: f32,
10405    #[prost(int32, tag = "6")]
10406    pub protocol_version: i32,
10407}
10408#[derive(Clone, PartialEq, ::prost::Message)]
10409pub struct Node {
10410    #[prost(string, tag = "1")]
10411    pub id: ::prost::alloc::string::String,
10412    #[prost(string, tag = "2")]
10413    pub ip: ::prost::alloc::string::String,
10414    #[prost(uint32, tag = "3")]
10415    pub num_cpus: u32,
10416    #[prost(message, optional, tag = "4")]
10417    pub stats: ::core::option::Option<NodeStats>,
10418    #[prost(enumeration = "NodeType", tag = "5")]
10419    pub r#type: i32,
10420    #[prost(enumeration = "NodeState", tag = "6")]
10421    pub state: i32,
10422    #[prost(string, tag = "7")]
10423    pub region: ::prost::alloc::string::String,
10424}
10425#[derive(Clone, PartialEq, ::prost::Message)]
10426pub struct NodeStats {
10427    /// when server was started
10428    #[prost(int64, tag = "1")]
10429    pub started_at: i64,
10430    /// when server last reported its status
10431    #[prost(int64, tag = "2")]
10432    pub updated_at: i64,
10433    /// room
10434    #[prost(int32, tag = "3")]
10435    pub num_rooms: i32,
10436    #[prost(int32, tag = "4")]
10437    pub num_clients: i32,
10438    #[prost(int32, tag = "5")]
10439    pub num_tracks_in: i32,
10440    #[prost(int32, tag = "6")]
10441    pub num_tracks_out: i32,
10442    #[prost(int32, tag = "36")]
10443    pub num_track_publish_attempts: i32,
10444    #[deprecated]
10445    #[prost(float, tag = "37")]
10446    pub track_publish_attempts_per_sec: f32,
10447    #[prost(int32, tag = "38")]
10448    pub num_track_publish_success: i32,
10449    #[deprecated]
10450    #[prost(float, tag = "39")]
10451    pub track_publish_success_per_sec: f32,
10452    #[prost(int32, tag = "51")]
10453    pub num_track_publish_cancels: i32,
10454    #[prost(int32, tag = "40")]
10455    pub num_track_subscribe_attempts: i32,
10456    #[deprecated]
10457    #[prost(float, tag = "41")]
10458    pub track_subscribe_attempts_per_sec: f32,
10459    #[prost(int32, tag = "42")]
10460    pub num_track_subscribe_success: i32,
10461    #[deprecated]
10462    #[prost(float, tag = "43")]
10463    pub track_subscribe_success_per_sec: f32,
10464    #[prost(int32, tag = "52")]
10465    pub num_track_subscribe_cancels: i32,
10466    /// packet
10467    #[prost(uint64, tag = "7")]
10468    pub bytes_in: u64,
10469    #[prost(uint64, tag = "8")]
10470    pub bytes_out: u64,
10471    #[prost(uint64, tag = "9")]
10472    pub packets_in: u64,
10473    #[prost(uint64, tag = "10")]
10474    pub packets_out: u64,
10475    #[prost(uint64, tag = "11")]
10476    pub nack_total: u64,
10477    #[deprecated]
10478    #[prost(float, tag = "12")]
10479    pub bytes_in_per_sec: f32,
10480    #[deprecated]
10481    #[prost(float, tag = "13")]
10482    pub bytes_out_per_sec: f32,
10483    #[prost(float, tag = "14")]
10484    pub packets_in_per_sec: f32,
10485    #[deprecated]
10486    #[prost(float, tag = "15")]
10487    pub packets_out_per_sec: f32,
10488    #[deprecated]
10489    #[prost(float, tag = "16")]
10490    pub nack_per_sec: f32,
10491    /// system
10492    #[prost(uint32, tag = "17")]
10493    pub num_cpus: u32,
10494    #[prost(float, tag = "18")]
10495    pub load_avg_last1min: f32,
10496    #[prost(float, tag = "19")]
10497    pub load_avg_last5min: f32,
10498    #[prost(float, tag = "20")]
10499    pub load_avg_last15min: f32,
10500    #[prost(float, tag = "21")]
10501    pub cpu_load: f32,
10502    #[deprecated]
10503    #[prost(float, tag = "33")]
10504    pub memory_load: f32,
10505    #[prost(uint64, tag = "34")]
10506    pub memory_total: u64,
10507    #[prost(uint64, tag = "35")]
10508    pub memory_used: u64,
10509    #[prost(uint32, tag = "28")]
10510    pub sys_packets_out: u32,
10511    #[prost(uint32, tag = "29")]
10512    pub sys_packets_dropped: u32,
10513    #[deprecated]
10514    #[prost(float, tag = "30")]
10515    pub sys_packets_out_per_sec: f32,
10516    #[deprecated]
10517    #[prost(float, tag = "31")]
10518    pub sys_packets_dropped_per_sec: f32,
10519    #[deprecated]
10520    #[prost(float, tag = "32")]
10521    pub sys_packets_dropped_pct_per_sec: f32,
10522    /// retransmissions
10523    #[prost(uint64, tag = "22")]
10524    pub retransmit_bytes_out: u64,
10525    #[prost(uint64, tag = "23")]
10526    pub retransmit_packets_out: u64,
10527    #[deprecated]
10528    #[prost(float, tag = "24")]
10529    pub retransmit_bytes_out_per_sec: f32,
10530    #[deprecated]
10531    #[prost(float, tag = "25")]
10532    pub retransmit_packets_out_per_sec: f32,
10533    /// participant joins
10534    #[prost(uint64, tag = "26")]
10535    pub participant_signal_connected: u64,
10536    #[deprecated]
10537    #[prost(float, tag = "27")]
10538    pub participant_signal_connected_per_sec: f32,
10539    #[deprecated]
10540    #[prost(uint64, tag = "55")]
10541    pub participant_signal_failed: u64,
10542    #[deprecated]
10543    #[prost(uint64, tag = "56")]
10544    pub participant_signal_validation_failed: u64,
10545    #[prost(uint64, tag = "44")]
10546    pub participant_rtc_connected: u64,
10547    #[deprecated]
10548    #[prost(float, tag = "45")]
10549    pub participant_rtc_connected_per_sec: f32,
10550    #[prost(uint64, tag = "46")]
10551    pub participant_rtc_init: u64,
10552    #[deprecated]
10553    #[prost(float, tag = "47")]
10554    pub participant_rtc_init_per_sec: f32,
10555    #[prost(uint64, tag = "53")]
10556    pub participant_rtc_canceled: u64,
10557    #[prost(uint64, tag = "54")]
10558    pub participant_rtc_active: u64,
10559    /// forward metrics
10560    #[prost(uint32, tag = "48")]
10561    pub forward_latency: u32,
10562    #[deprecated]
10563    #[prost(uint32, tag = "49")]
10564    pub forward_jitter: u32,
10565    #[prost(message, repeated, tag = "50")]
10566    pub rates: ::prost::alloc::vec::Vec<NodeStatsRate>,
10567}
10568/// rates of different node stats (per second)
10569#[derive(Clone, Copy, PartialEq, ::prost::Message)]
10570pub struct NodeStatsRate {
10571    #[prost(int64, tag = "1")]
10572    pub started_at: i64,
10573    #[prost(int64, tag = "2")]
10574    pub ended_at: i64,
10575    #[prost(int64, tag = "3")]
10576    pub duration: i64,
10577    #[prost(float, tag = "4")]
10578    pub track_publish_attempts: f32,
10579    #[prost(float, tag = "5")]
10580    pub track_publish_success: f32,
10581    #[prost(float, tag = "24")]
10582    pub track_publish_cancels: f32,
10583    #[prost(float, tag = "6")]
10584    pub track_subscribe_attempts: f32,
10585    #[prost(float, tag = "7")]
10586    pub track_subscribe_success: f32,
10587    #[prost(float, tag = "25")]
10588    pub track_subscribe_cancels: f32,
10589    #[prost(float, tag = "8")]
10590    pub bytes_in: f32,
10591    #[prost(float, tag = "9")]
10592    pub bytes_out: f32,
10593    #[prost(float, tag = "10")]
10594    pub packets_in: f32,
10595    #[prost(float, tag = "11")]
10596    pub packets_out: f32,
10597    #[prost(float, tag = "12")]
10598    pub nack_total: f32,
10599    #[prost(float, tag = "13")]
10600    pub sys_packets_out: f32,
10601    #[prost(float, tag = "14")]
10602    pub sys_packets_dropped: f32,
10603    #[prost(float, tag = "15")]
10604    pub retransmit_bytes_out: f32,
10605    #[prost(float, tag = "16")]
10606    pub retransmit_packets_out: f32,
10607    #[prost(float, tag = "17")]
10608    pub participant_signal_connected: f32,
10609    #[prost(float, tag = "28")]
10610    pub participant_signal_failed: f32,
10611    #[prost(float, tag = "29")]
10612    pub participant_signal_validation_failed: f32,
10613    #[prost(float, tag = "18")]
10614    pub participant_rtc_connected: f32,
10615    #[prost(float, tag = "19")]
10616    pub participant_rtc_init: f32,
10617    #[prost(float, tag = "26")]
10618    pub participant_rtc_canceled: f32,
10619    #[prost(float, tag = "27")]
10620    pub participant_rtc_active: f32,
10621    /// time weighted averages across stats windows forming part of a rate measurement interval
10622    #[prost(float, tag = "20")]
10623    pub cpu_load: f32,
10624    #[prost(float, tag = "21")]
10625    pub memory_load: f32,
10626    #[prost(float, tag = "22")]
10627    pub memory_used: f32,
10628    #[prost(float, tag = "23")]
10629    pub memory_total: f32,
10630}
10631#[derive(Clone, PartialEq, ::prost::Message)]
10632pub struct StartSession {
10633    #[prost(string, tag = "1")]
10634    pub room_name: ::prost::alloc::string::String,
10635    #[prost(string, tag = "2")]
10636    pub identity: ::prost::alloc::string::String,
10637    #[prost(string, tag = "3")]
10638    pub connection_id: ::prost::alloc::string::String,
10639    /// if a client is reconnecting (i.e. resume instead of restart)
10640    #[prost(bool, tag = "4")]
10641    pub reconnect: bool,
10642    #[prost(bool, tag = "9")]
10643    pub auto_subscribe: bool,
10644    #[prost(bool, optional, tag = "25")]
10645    pub auto_subscribe_data_track: ::core::option::Option<bool>,
10646    #[deprecated]
10647    #[prost(bool, tag = "10")]
10648    pub hidden: bool,
10649    #[prost(message, optional, tag = "11")]
10650    pub client: ::core::option::Option<ClientInfo>,
10651    #[deprecated]
10652    #[prost(bool, tag = "12")]
10653    pub recorder: bool,
10654    #[prost(string, tag = "13")]
10655    pub name: ::prost::alloc::string::String,
10656    /// A user's ClaimGrants serialized in JSON
10657    #[prost(string, tag = "14")]
10658    pub grants_json: ::prost::alloc::string::String,
10659    #[prost(bool, tag = "15")]
10660    pub adaptive_stream: bool,
10661    /// if reconnect, client will set current sid
10662    #[prost(string, tag = "16")]
10663    pub participant_id: ::prost::alloc::string::String,
10664    #[prost(enumeration = "ReconnectReason", tag = "17")]
10665    pub reconnect_reason: i32,
10666    #[prost(bool, optional, tag = "18")]
10667    pub subscriber_allow_pause: ::core::option::Option<bool>,
10668    #[prost(bool, tag = "19")]
10669    pub disable_ice_lite: bool,
10670    #[prost(message, optional, tag = "20")]
10671    pub create_room: ::core::option::Option<CreateRoomRequest>,
10672    #[prost(message, repeated, tag = "21")]
10673    pub add_track_requests: ::prost::alloc::vec::Vec<AddTrackRequest>,
10674    #[prost(message, optional, tag = "22")]
10675    pub publisher_offer: ::core::option::Option<SessionDescription>,
10676    #[prost(message, optional, tag = "23")]
10677    pub sync_state: ::core::option::Option<SyncState>,
10678    #[prost(bool, tag = "24")]
10679    pub use_single_peer_connection: bool,
10680    #[prost(int64, tag = "26")]
10681    pub token_expires_at: i64,
10682}
10683/// room info that should not be returned to clients
10684#[derive(Clone, PartialEq, ::prost::Message)]
10685pub struct RoomInternal {
10686    #[prost(message, optional, tag = "1")]
10687    pub track_egress: ::core::option::Option<AutoTrackEgress>,
10688    #[prost(message, optional, tag = "2")]
10689    pub participant_egress: ::core::option::Option<AutoParticipantEgress>,
10690    #[prost(message, optional, tag = "3")]
10691    pub playout_delay: ::core::option::Option<PlayoutDelay>,
10692    #[prost(message, repeated, tag = "5")]
10693    pub agent_dispatches: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
10694    #[prost(bool, tag = "4")]
10695    pub sync_streams: bool,
10696    #[prost(bool, tag = "6")]
10697    pub replay_enabled: bool,
10698    #[prost(bool, tag = "7")]
10699    pub export_room: bool,
10700    #[prost(map = "string, string", tag = "8")]
10701    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
10702}
10703#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10704pub struct IceConfig {
10705    #[prost(enumeration = "IceCandidateType", tag = "1")]
10706    pub preference_subscriber: i32,
10707    #[prost(enumeration = "IceCandidateType", tag = "2")]
10708    pub preference_publisher: i32,
10709}
10710#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10711#[repr(i32)]
10712pub enum NodeType {
10713    Server = 0,
10714    Controller = 1,
10715    Media = 2,
10716    Turn = 4,
10717    Sweeper = 5,
10718    Director = 6,
10719    HostedAgent = 7,
10720    Settings = 8,
10721}
10722impl NodeType {
10723    /// String value of the enum field names used in the ProtoBuf definition.
10724    ///
10725    /// The values are not transformed in any way and thus are considered stable
10726    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10727    pub fn as_str_name(&self) -> &'static str {
10728        match self {
10729            Self::Server => "SERVER",
10730            Self::Controller => "CONTROLLER",
10731            Self::Media => "MEDIA",
10732            Self::Turn => "TURN",
10733            Self::Sweeper => "SWEEPER",
10734            Self::Director => "DIRECTOR",
10735            Self::HostedAgent => "HOSTED_AGENT",
10736            Self::Settings => "SETTINGS",
10737        }
10738    }
10739    /// Creates an enum from field names used in the ProtoBuf definition.
10740    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10741        match value {
10742            "SERVER" => Some(Self::Server),
10743            "CONTROLLER" => Some(Self::Controller),
10744            "MEDIA" => Some(Self::Media),
10745            "TURN" => Some(Self::Turn),
10746            "SWEEPER" => Some(Self::Sweeper),
10747            "DIRECTOR" => Some(Self::Director),
10748            "HOSTED_AGENT" => Some(Self::HostedAgent),
10749            "SETTINGS" => Some(Self::Settings),
10750            _ => None,
10751        }
10752    }
10753}
10754#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10755#[repr(i32)]
10756pub enum NodeState {
10757    StartingUp = 0,
10758    Serving = 1,
10759    ShuttingDown = 2,
10760    Suspended = 3,
10761}
10762impl NodeState {
10763    /// String value of the enum field names used in the ProtoBuf definition.
10764    ///
10765    /// The values are not transformed in any way and thus are considered stable
10766    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10767    pub fn as_str_name(&self) -> &'static str {
10768        match self {
10769            Self::StartingUp => "STARTING_UP",
10770            Self::Serving => "SERVING",
10771            Self::ShuttingDown => "SHUTTING_DOWN",
10772            Self::Suspended => "SUSPENDED",
10773        }
10774    }
10775    /// Creates an enum from field names used in the ProtoBuf definition.
10776    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10777        match value {
10778            "STARTING_UP" => Some(Self::StartingUp),
10779            "SERVING" => Some(Self::Serving),
10780            "SHUTTING_DOWN" => Some(Self::ShuttingDown),
10781            "SUSPENDED" => Some(Self::Suspended),
10782            _ => None,
10783        }
10784    }
10785}
10786#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10787#[repr(i32)]
10788pub enum IceCandidateType {
10789    IctNone = 0,
10790    IctTcp = 1,
10791    IctTls = 2,
10792}
10793impl IceCandidateType {
10794    /// String value of the enum field names used in the ProtoBuf definition.
10795    ///
10796    /// The values are not transformed in any way and thus are considered stable
10797    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10798    pub fn as_str_name(&self) -> &'static str {
10799        match self {
10800            Self::IctNone => "ICT_NONE",
10801            Self::IctTcp => "ICT_TCP",
10802            Self::IctTls => "ICT_TLS",
10803        }
10804    }
10805    /// Creates an enum from field names used in the ProtoBuf definition.
10806    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10807        match value {
10808            "ICT_NONE" => Some(Self::IctNone),
10809            "ICT_TCP" => Some(Self::IctTcp),
10810            "ICT_TLS" => Some(Self::IctTls),
10811            _ => None,
10812        }
10813    }
10814}
10815/// SearchPhoneNumbersRequest - Request to search available phone numbers
10816#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10817pub struct SearchPhoneNumbersRequest {
10818    /// Filter by country code (e.g., "US", "CA")
10819    #[prost(string, tag = "1")]
10820    pub country_code: ::prost::alloc::string::String,
10821    /// Filter by area code (e.g., "415")
10822    #[prost(string, optional, tag = "2")]
10823    pub area_code: ::core::option::Option<::prost::alloc::string::String>,
10824    /// Maximum number of results (default: 50)
10825    #[prost(int32, optional, tag = "3")]
10826    pub limit: ::core::option::Option<i32>,
10827    /// Token for pagination (empty for first page)
10828    #[prost(message, optional, tag = "4")]
10829    pub page_token: ::core::option::Option<TokenPagination>,
10830}
10831/// SearchPhoneNumbersResponse - Response containing available phone numbers
10832#[derive(Clone, PartialEq, ::prost::Message)]
10833pub struct SearchPhoneNumbersResponse {
10834    /// List of available phone numbers
10835    #[prost(message, repeated, tag = "1")]
10836    pub items: ::prost::alloc::vec::Vec<PhoneNumber>,
10837    /// Token for next page (empty if no more pages)
10838    #[prost(message, optional, tag = "2")]
10839    pub next_page_token: ::core::option::Option<TokenPagination>,
10840}
10841/// PurchasePhoneNumberRequest - Request to purchase phone numbers
10842#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10843pub struct PurchasePhoneNumberRequest {
10844    /// Phone numbers to purchase (e.g., \["+1234567890", "+1234567891"\])
10845    #[prost(string, repeated, tag = "1")]
10846    pub phone_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10847    /// SIP dispatch rule ID to apply to all purchased numbers
10848    #[prost(string, optional, tag = "2")]
10849    pub sip_dispatch_rule_id: ::core::option::Option<::prost::alloc::string::String>,
10850}
10851/// PurchasePhoneNumberResponse - Response containing the purchased phone numbers
10852#[derive(Clone, PartialEq, ::prost::Message)]
10853pub struct PurchasePhoneNumberResponse {
10854    /// Details of the purchased phone numbers
10855    #[prost(message, repeated, tag = "1")]
10856    pub phone_numbers: ::prost::alloc::vec::Vec<PhoneNumber>,
10857}
10858/// ListPhoneNumbersRequest - Request to list phone numbers
10859#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10860pub struct ListPhoneNumbersRequest {
10861    /// Maximum number of results (default: 50)
10862    #[prost(int32, optional, tag = "1")]
10863    pub limit: ::core::option::Option<i32>,
10864    /// Filter by statuses (active, pending, released)
10865    #[prost(enumeration = "PhoneNumberStatus", repeated, tag = "2")]
10866    pub statuses: ::prost::alloc::vec::Vec<i32>,
10867    /// Token for pagination (empty for first page)
10868    #[prost(message, optional, tag = "3")]
10869    pub page_token: ::core::option::Option<TokenPagination>,
10870    /// Filter by SIP dispatch rule ID
10871    #[prost(string, optional, tag = "4")]
10872    pub sip_dispatch_rule_id: ::core::option::Option<::prost::alloc::string::String>,
10873}
10874/// ListPhoneNumbersResponse - Response containing phone numbers
10875#[derive(Clone, PartialEq, ::prost::Message)]
10876pub struct ListPhoneNumbersResponse {
10877    /// List of phone numbers
10878    #[prost(message, repeated, tag = "1")]
10879    pub items: ::prost::alloc::vec::Vec<PhoneNumber>,
10880    /// Token for next page (empty if no more pages)
10881    #[prost(message, optional, tag = "2")]
10882    pub next_page_token: ::core::option::Option<TokenPagination>,
10883    /// Total number of phone numbers
10884    #[prost(int32, tag = "3")]
10885    pub total_count: i32,
10886    /// Total number of offline phone numbers
10887    #[prost(int32, tag = "4")]
10888    pub offline_count: i32,
10889}
10890/// GetPhoneNumberRequest - Request to get a phone number
10891#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10892pub struct GetPhoneNumberRequest {
10893    /// Use phone number ID for direct lookup
10894    #[prost(string, optional, tag = "1")]
10895    pub id: ::core::option::Option<::prost::alloc::string::String>,
10896    /// Use phone number string for lookup
10897    #[prost(string, optional, tag = "2")]
10898    pub phone_number: ::core::option::Option<::prost::alloc::string::String>,
10899}
10900/// GetPhoneNumberResponse - Response containing the phone number
10901#[derive(Clone, PartialEq, ::prost::Message)]
10902pub struct GetPhoneNumberResponse {
10903    /// The phone number details
10904    #[prost(message, optional, tag = "1")]
10905    pub phone_number: ::core::option::Option<PhoneNumber>,
10906}
10907/// UpdatePhoneNumberRequest - Request to update a phone number
10908#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10909pub struct UpdatePhoneNumberRequest {
10910    /// Use phone number ID for direct lookup
10911    #[prost(string, optional, tag = "1")]
10912    pub id: ::core::option::Option<::prost::alloc::string::String>,
10913    /// Use phone number string for lookup
10914    #[prost(string, optional, tag = "2")]
10915    pub phone_number: ::core::option::Option<::prost::alloc::string::String>,
10916    /// SIP dispatch rule ID to assign to the phone number
10917    #[prost(string, optional, tag = "3")]
10918    pub sip_dispatch_rule_id: ::core::option::Option<::prost::alloc::string::String>,
10919    #[prost(string, optional, tag = "4")]
10920    pub name: ::core::option::Option<::prost::alloc::string::String>,
10921}
10922/// UpdatePhoneNumberResponse - Response containing the updated phone number
10923#[derive(Clone, PartialEq, ::prost::Message)]
10924pub struct UpdatePhoneNumberResponse {
10925    /// The updated phone number details
10926    #[prost(message, optional, tag = "1")]
10927    pub phone_number: ::core::option::Option<PhoneNumber>,
10928}
10929/// ReleasePhoneNumbersRequest - Request to release phone numbers
10930#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10931pub struct ReleasePhoneNumbersRequest {
10932    /// Use phone number IDs for direct lookup
10933    #[prost(string, repeated, tag = "1")]
10934    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10935    /// Use phone number strings for lookup
10936    #[prost(string, repeated, tag = "2")]
10937    pub phone_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10938}
10939/// ReleasePhoneNumbersResponse - Response for releasing phone numbers
10940///
10941/// Empty response - operation completed successfully
10942#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10943pub struct ReleasePhoneNumbersResponse {
10944}
10945/// PhoneNumber - Unified phone number type for inventory and purchased numbers
10946#[derive(Clone, PartialEq, ::prost::Message)]
10947pub struct PhoneNumber {
10948    /// Unique identifier
10949    #[prost(string, tag = "1")]
10950    pub id: ::prost::alloc::string::String,
10951    /// Human-readable name/label for the phone number
10952    #[prost(string, tag = "17")]
10953    pub name: ::prost::alloc::string::String,
10954    /// Phone number in E.164 format (e.g., "+14155552671")
10955    #[prost(string, tag = "2")]
10956    pub e164_format: ::prost::alloc::string::String,
10957    /// Country code (e.g., "US")
10958    #[prost(string, tag = "3")]
10959    pub country_code: ::prost::alloc::string::String,
10960    /// Area code (e.g., "415")
10961    #[prost(string, tag = "4")]
10962    pub area_code: ::prost::alloc::string::String,
10963    /// Number type (mobile, local, toll-free, unknown)
10964    #[prost(enumeration = "PhoneNumberType", tag = "5")]
10965    pub number_type: i32,
10966    /// City/locality (e.g., "San Francisco")
10967    #[prost(string, tag = "6")]
10968    pub locality: ::prost::alloc::string::String,
10969    /// State/region (e.g., "CA")
10970    #[prost(string, tag = "7")]
10971    pub region: ::prost::alloc::string::String,
10972    /// Spam score for fraud detection
10973    #[prost(double, tag = "8")]
10974    pub spam_score: f64,
10975    /// Creation timestamp
10976    #[prost(message, optional, tag = "9")]
10977    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
10978    /// Last update timestamp
10979    #[prost(message, optional, tag = "10")]
10980    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
10981    /// Available capabilities (e.g., "voice", "sms")
10982    #[prost(string, repeated, tag = "11")]
10983    pub capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10984    /// Current status
10985    #[prost(enumeration = "PhoneNumberStatus", tag = "12")]
10986    pub status: i32,
10987    /// Inbound calling status
10988    #[prost(enumeration = "PhoneNumberInboundStatus", tag = "18")]
10989    pub inbound_status: i32,
10990    /// Outbound calling status
10991    #[prost(enumeration = "PhoneNumberOutboundStatus", tag = "19")]
10992    pub outbound_status: i32,
10993    /// Assignment timestamp
10994    #[prost(message, optional, tag = "13")]
10995    pub assigned_at: ::core::option::Option<::pbjson_types::Timestamp>,
10996    /// Release timestamp (if applicable)
10997    #[prost(message, optional, tag = "14")]
10998    pub released_at: ::core::option::Option<::pbjson_types::Timestamp>,
10999    /// Associated SIP dispatch rule ID (deprecated: use sip_dispatch_rule_ids instead)
11000    #[deprecated]
11001    #[prost(string, tag = "15")]
11002    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
11003    /// Associated SIP dispatch rule IDs
11004    #[prost(string, repeated, tag = "16")]
11005    pub sip_dispatch_rule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11006}
11007/// Phone number status enumeration
11008#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11009#[repr(i32)]
11010pub enum PhoneNumberStatus {
11011    /// Default value
11012    Unspecified = 0,
11013    /// Number is active and ready for use
11014    Active = 1,
11015    /// Number is being provisioned
11016    Pending = 2,
11017    /// Number has been released
11018    Released = 3,
11019    /// Number is offline (provider is unreachable)
11020    Offline = 4,
11021}
11022impl PhoneNumberStatus {
11023    /// String value of the enum field names used in the ProtoBuf definition.
11024    ///
11025    /// The values are not transformed in any way and thus are considered stable
11026    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11027    pub fn as_str_name(&self) -> &'static str {
11028        match self {
11029            Self::Unspecified => "PHONE_NUMBER_STATUS_UNSPECIFIED",
11030            Self::Active => "PHONE_NUMBER_STATUS_ACTIVE",
11031            Self::Pending => "PHONE_NUMBER_STATUS_PENDING",
11032            Self::Released => "PHONE_NUMBER_STATUS_RELEASED",
11033            Self::Offline => "PHONE_NUMBER_STATUS_OFFLINE",
11034        }
11035    }
11036    /// Creates an enum from field names used in the ProtoBuf definition.
11037    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11038        match value {
11039            "PHONE_NUMBER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
11040            "PHONE_NUMBER_STATUS_ACTIVE" => Some(Self::Active),
11041            "PHONE_NUMBER_STATUS_PENDING" => Some(Self::Pending),
11042            "PHONE_NUMBER_STATUS_RELEASED" => Some(Self::Released),
11043            "PHONE_NUMBER_STATUS_OFFLINE" => Some(Self::Offline),
11044            _ => None,
11045        }
11046    }
11047}
11048#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11049#[repr(i32)]
11050pub enum PhoneNumberInboundStatus {
11051    /// Default value
11052    PhoneNumberInStatusUnspecified = 0,
11053    /// Number is serving inbound calls
11054    PhoneNumberInStatusActive = 1,
11055    /// Inbound calling is unavailable
11056    PhoneNumberInStatusUnavailable = 2,
11057    /// Number is not serving calls (not associated with dispatch rules)
11058    PhoneNumberInStatusDetached = 3,
11059}
11060impl PhoneNumberInboundStatus {
11061    /// String value of the enum field names used in the ProtoBuf definition.
11062    ///
11063    /// The values are not transformed in any way and thus are considered stable
11064    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11065    pub fn as_str_name(&self) -> &'static str {
11066        match self {
11067            Self::PhoneNumberInStatusUnspecified => "PHONE_NUMBER_IN_STATUS_UNSPECIFIED",
11068            Self::PhoneNumberInStatusActive => "PHONE_NUMBER_IN_STATUS_ACTIVE",
11069            Self::PhoneNumberInStatusUnavailable => "PHONE_NUMBER_IN_STATUS_UNAVAILABLE",
11070            Self::PhoneNumberInStatusDetached => "PHONE_NUMBER_IN_STATUS_DETACHED",
11071        }
11072    }
11073    /// Creates an enum from field names used in the ProtoBuf definition.
11074    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11075        match value {
11076            "PHONE_NUMBER_IN_STATUS_UNSPECIFIED" => Some(Self::PhoneNumberInStatusUnspecified),
11077            "PHONE_NUMBER_IN_STATUS_ACTIVE" => Some(Self::PhoneNumberInStatusActive),
11078            "PHONE_NUMBER_IN_STATUS_UNAVAILABLE" => Some(Self::PhoneNumberInStatusUnavailable),
11079            "PHONE_NUMBER_IN_STATUS_DETACHED" => Some(Self::PhoneNumberInStatusDetached),
11080            _ => None,
11081        }
11082    }
11083}
11084#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11085#[repr(i32)]
11086pub enum PhoneNumberOutboundStatus {
11087    /// Default value
11088    PhoneNumberOutStatusUnspecified = 0,
11089    /// Number is can be used to initiate outbound calls
11090    PhoneNumberOutStatusActive = 1,
11091    /// Outbound calling is unavailable
11092    PhoneNumberOutStatusUnavailable = 2,
11093}
11094impl PhoneNumberOutboundStatus {
11095    /// String value of the enum field names used in the ProtoBuf definition.
11096    ///
11097    /// The values are not transformed in any way and thus are considered stable
11098    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11099    pub fn as_str_name(&self) -> &'static str {
11100        match self {
11101            Self::PhoneNumberOutStatusUnspecified => "PHONE_NUMBER_OUT_STATUS_UNSPECIFIED",
11102            Self::PhoneNumberOutStatusActive => "PHONE_NUMBER_OUT_STATUS_ACTIVE",
11103            Self::PhoneNumberOutStatusUnavailable => "PHONE_NUMBER_OUT_STATUS_UNAVAILABLE",
11104        }
11105    }
11106    /// Creates an enum from field names used in the ProtoBuf definition.
11107    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11108        match value {
11109            "PHONE_NUMBER_OUT_STATUS_UNSPECIFIED" => Some(Self::PhoneNumberOutStatusUnspecified),
11110            "PHONE_NUMBER_OUT_STATUS_ACTIVE" => Some(Self::PhoneNumberOutStatusActive),
11111            "PHONE_NUMBER_OUT_STATUS_UNAVAILABLE" => Some(Self::PhoneNumberOutStatusUnavailable),
11112            _ => None,
11113        }
11114    }
11115}
11116/// Phone number type enumeration
11117#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11118#[repr(i32)]
11119pub enum PhoneNumberType {
11120    /// Default value - unknown or parsing error
11121    Unknown = 0,
11122    /// Mobile phone number
11123    Mobile = 1,
11124    /// Local/fixed line number
11125    Local = 2,
11126    /// Toll-free number
11127    TollFree = 3,
11128}
11129impl PhoneNumberType {
11130    /// String value of the enum field names used in the ProtoBuf definition.
11131    ///
11132    /// The values are not transformed in any way and thus are considered stable
11133    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11134    pub fn as_str_name(&self) -> &'static str {
11135        match self {
11136            Self::Unknown => "PHONE_NUMBER_TYPE_UNKNOWN",
11137            Self::Mobile => "PHONE_NUMBER_TYPE_MOBILE",
11138            Self::Local => "PHONE_NUMBER_TYPE_LOCAL",
11139            Self::TollFree => "PHONE_NUMBER_TYPE_TOLL_FREE",
11140        }
11141    }
11142    /// Creates an enum from field names used in the ProtoBuf definition.
11143    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11144        match value {
11145            "PHONE_NUMBER_TYPE_UNKNOWN" => Some(Self::Unknown),
11146            "PHONE_NUMBER_TYPE_MOBILE" => Some(Self::Mobile),
11147            "PHONE_NUMBER_TYPE_LOCAL" => Some(Self::Local),
11148            "PHONE_NUMBER_TYPE_TOLL_FREE" => Some(Self::TollFree),
11149            _ => None,
11150        }
11151    }
11152}
11153#[derive(Clone, PartialEq, ::prost::Message)]
11154pub struct TokenSourceRequest {
11155    /// The name of the room being requested when generating credentials
11156    #[prost(string, optional, tag = "1")]
11157    pub room_name: ::core::option::Option<::prost::alloc::string::String>,
11158    /// The name of the participant being requested for this client when generating credentials
11159    #[prost(string, optional, tag = "2")]
11160    pub participant_name: ::core::option::Option<::prost::alloc::string::String>,
11161    /// The identity of the participant being requested for this client when generating credentials
11162    #[prost(string, optional, tag = "3")]
11163    pub participant_identity: ::core::option::Option<::prost::alloc::string::String>,
11164    /// Any participant metadata being included along with the credentials generation operation
11165    #[prost(string, optional, tag = "4")]
11166    pub participant_metadata: ::core::option::Option<::prost::alloc::string::String>,
11167    /// Any participant attributes being included along with the credentials generation operation
11168    #[prost(map = "string, string", tag = "5")]
11169    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
11170    /// A RoomConfiguration object can be passed to request extra parameters should be included when
11171    /// generating connection credentials - dispatching agents, defining egress settings, etc
11172    /// More info: <https://docs.livekit.io/home/get-started/authentication/#room-configuration>
11173    #[prost(message, optional, tag = "6")]
11174    pub room_config: ::core::option::Option<RoomConfiguration>,
11175}
11176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11177pub struct TokenSourceResponse {
11178    #[prost(string, tag = "1")]
11179    pub server_url: ::prost::alloc::string::String,
11180    #[prost(string, tag = "2")]
11181    pub participant_token: ::prost::alloc::string::String,
11182}
11183#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11184pub struct GetRemoteHeadersV1Request {
11185    /// list of headers to include
11186    #[prost(string, repeated, tag = "1")]
11187    pub include: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11188    /// list of headers to exclude
11189    #[prost(string, repeated, tag = "2")]
11190    pub exclude: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11191}
11192#[derive(Clone, PartialEq, ::prost::Message)]
11193pub struct GetRemoteHeadersV1Response {
11194    #[prost(map = "string, string", tag = "1")]
11195    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
11196}
11197#[derive(Clone, PartialEq, ::prost::Message)]
11198pub struct EndCallV1Request {
11199    #[prost(map = "string, string", tag = "1")]
11200    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
11201}
11202#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11203pub struct EndCallV1Response {
11204}
11205include!("livekit.serde.rs");
11206// @@protoc_insertion_point(module)