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    /// JSON object of session facts for agent evals, at most 16 KiB. Its schema is
101    /// evalschema/session-summary.schema.json in livekit/cloud-protocol. The collector
102    /// stores it without reading individual keys.
103    #[prost(string, tag = "11")]
104    pub session_summary: ::prost::alloc::string::String,
105}
106//
107// Protocol used to record metrics for a specific session.
108//
109// Clients send their timestamp in their own monotonically increasing time (e.g `performance.now` on JS).
110// These timestamps are then augmented by the SFU to its time base.
111//
112// A metric can be linked to a specific track by setting `track_sid`.
113
114/// index from [0: MAX_LABEL_PREDEFINED_MAX_VALUE) are for predefined labels (`MetricLabel`)
115#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
116#[repr(i32)]
117pub enum MetricLabel {
118    /// time to first token from LLM
119    AgentsLlmTtft = 0,
120    /// time to final transcription
121    AgentsSttTtft = 1,
122    /// time to first byte
123    AgentsTtsTtfb = 2,
124    /// Number of video freezes
125    ClientVideoSubscriberFreezeCount = 3,
126    /// total duration of freezes
127    ClientVideoSubscriberTotalFreezeDuration = 4,
128    /// number of video pauses
129    ClientVideoSubscriberPauseCount = 5,
130    /// total duration of pauses
131    ClientVideoSubscriberTotalPausesDuration = 6,
132    /// number of concealed (synthesized) audio samples
133    ClientAudioSubscriberConcealedSamples = 7,
134    /// number of silent concealed samples
135    ClientAudioSubscriberSilentConcealedSamples = 8,
136    /// number of concealment events
137    ClientAudioSubscriberConcealmentEvents = 9,
138    /// number of interruptions
139    ClientAudioSubscriberInterruptionCount = 10,
140    /// total duration of interruptions
141    ClientAudioSubscriberTotalInterruptionDuration = 11,
142    /// total time spent in jitter buffer
143    ClientSubscriberJitterBufferDelay = 12,
144    /// total time spent in jitter buffer
145    ClientSubscriberJitterBufferEmittedCount = 13,
146    /// total duration spent in bandwidth quality limitation
147    ClientVideoPublisherQualityLimitationDurationBandwidth = 14,
148    /// total duration spent in cpu quality limitation
149    ClientVideoPublisherQualityLimitationDurationCpu = 15,
150    /// total duration spent in other quality limitation
151    ClientVideoPublisherQualityLimitationDurationOther = 16,
152    /// Publisher RTT (participant -> server)
153    PublisherRtt = 17,
154    /// RTT between publisher node and subscriber node (could involve intermedia node(s))
155    ServerMeshRtt = 18,
156    /// Subscribe RTT (server -> participant)
157    SubscriberRtt = 19,
158    PredefinedMaxValue = 4096,
159}
160impl MetricLabel {
161    /// String value of the enum field names used in the ProtoBuf definition.
162    ///
163    /// The values are not transformed in any way and thus are considered stable
164    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
165    pub fn as_str_name(&self) -> &'static str {
166        match self {
167            Self::AgentsLlmTtft => "AGENTS_LLM_TTFT",
168            Self::AgentsSttTtft => "AGENTS_STT_TTFT",
169            Self::AgentsTtsTtfb => "AGENTS_TTS_TTFB",
170            Self::ClientVideoSubscriberFreezeCount => "CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT",
171            Self::ClientVideoSubscriberTotalFreezeDuration => "CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION",
172            Self::ClientVideoSubscriberPauseCount => "CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT",
173            Self::ClientVideoSubscriberTotalPausesDuration => "CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION",
174            Self::ClientAudioSubscriberConcealedSamples => "CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES",
175            Self::ClientAudioSubscriberSilentConcealedSamples => "CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES",
176            Self::ClientAudioSubscriberConcealmentEvents => "CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS",
177            Self::ClientAudioSubscriberInterruptionCount => "CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT",
178            Self::ClientAudioSubscriberTotalInterruptionDuration => "CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION",
179            Self::ClientSubscriberJitterBufferDelay => "CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY",
180            Self::ClientSubscriberJitterBufferEmittedCount => "CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT",
181            Self::ClientVideoPublisherQualityLimitationDurationBandwidth => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH",
182            Self::ClientVideoPublisherQualityLimitationDurationCpu => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU",
183            Self::ClientVideoPublisherQualityLimitationDurationOther => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER",
184            Self::PublisherRtt => "PUBLISHER_RTT",
185            Self::ServerMeshRtt => "SERVER_MESH_RTT",
186            Self::SubscriberRtt => "SUBSCRIBER_RTT",
187            Self::PredefinedMaxValue => "METRIC_LABEL_PREDEFINED_MAX_VALUE",
188        }
189    }
190    /// Creates an enum from field names used in the ProtoBuf definition.
191    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
192        match value {
193            "AGENTS_LLM_TTFT" => Some(Self::AgentsLlmTtft),
194            "AGENTS_STT_TTFT" => Some(Self::AgentsSttTtft),
195            "AGENTS_TTS_TTFB" => Some(Self::AgentsTtsTtfb),
196            "CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT" => Some(Self::ClientVideoSubscriberFreezeCount),
197            "CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION" => Some(Self::ClientVideoSubscriberTotalFreezeDuration),
198            "CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT" => Some(Self::ClientVideoSubscriberPauseCount),
199            "CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION" => Some(Self::ClientVideoSubscriberTotalPausesDuration),
200            "CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES" => Some(Self::ClientAudioSubscriberConcealedSamples),
201            "CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES" => Some(Self::ClientAudioSubscriberSilentConcealedSamples),
202            "CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS" => Some(Self::ClientAudioSubscriberConcealmentEvents),
203            "CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT" => Some(Self::ClientAudioSubscriberInterruptionCount),
204            "CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION" => Some(Self::ClientAudioSubscriberTotalInterruptionDuration),
205            "CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY" => Some(Self::ClientSubscriberJitterBufferDelay),
206            "CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT" => Some(Self::ClientSubscriberJitterBufferEmittedCount),
207            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH" => Some(Self::ClientVideoPublisherQualityLimitationDurationBandwidth),
208            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU" => Some(Self::ClientVideoPublisherQualityLimitationDurationCpu),
209            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER" => Some(Self::ClientVideoPublisherQualityLimitationDurationOther),
210            "PUBLISHER_RTT" => Some(Self::PublisherRtt),
211            "SERVER_MESH_RTT" => Some(Self::ServerMeshRtt),
212            "SUBSCRIBER_RTT" => Some(Self::SubscriberRtt),
213            "METRIC_LABEL_PREDEFINED_MAX_VALUE" => Some(Self::PredefinedMaxValue),
214            _ => None,
215        }
216    }
217}
218#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
219pub struct Pagination {
220    /// list entities which IDs are greater
221    #[prost(string, tag = "1")]
222    pub after_id: ::prost::alloc::string::String,
223    #[prost(int32, tag = "2")]
224    pub limit: i32,
225}
226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
227pub struct TokenPagination {
228    #[prost(string, tag = "1")]
229    pub token: ::prost::alloc::string::String,
230}
231/// ListUpdate is used for updated APIs where 'repeated string' field is modified.
232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
233pub struct ListUpdate {
234    /// set the field to a new list
235    #[prost(string, repeated, tag = "1")]
236    pub set: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
237    /// append items to a list, avoiding duplicates
238    #[prost(string, repeated, tag = "2")]
239    pub add: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
240    /// delete items from a list
241    #[prost(string, repeated, tag = "3")]
242    pub remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
243    /// sets the list to an empty list
244    #[prost(bool, tag = "4")]
245    pub clear: bool,
246}
247#[derive(Clone, PartialEq, ::prost::Message)]
248pub struct Room {
249    #[prost(string, tag = "1")]
250    pub sid: ::prost::alloc::string::String,
251    #[prost(string, tag = "2")]
252    pub name: ::prost::alloc::string::String,
253    #[prost(uint32, tag = "3")]
254    pub empty_timeout: u32,
255    #[prost(uint32, tag = "14")]
256    pub departure_timeout: u32,
257    #[prost(uint32, tag = "4")]
258    pub max_participants: u32,
259    #[prost(int64, tag = "5")]
260    pub creation_time: i64,
261    #[prost(int64, tag = "15")]
262    pub creation_time_ms: i64,
263    #[prost(string, tag = "6")]
264    pub turn_password: ::prost::alloc::string::String,
265    #[prost(message, repeated, tag = "7")]
266    pub enabled_codecs: ::prost::alloc::vec::Vec<Codec>,
267    #[prost(string, tag = "8")]
268    pub metadata: ::prost::alloc::string::String,
269    #[prost(uint32, tag = "9")]
270    pub num_participants: u32,
271    #[prost(uint32, tag = "11")]
272    pub num_publishers: u32,
273    #[prost(bool, tag = "10")]
274    pub active_recording: bool,
275    #[prost(message, optional, tag = "13")]
276    pub version: ::core::option::Option<TimedVersion>,
277}
278#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
279pub struct Codec {
280    #[prost(string, tag = "1")]
281    pub mime: ::prost::alloc::string::String,
282    #[prost(string, tag = "2")]
283    pub fmtp_line: ::prost::alloc::string::String,
284}
285#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
286pub struct PlayoutDelay {
287    #[prost(bool, tag = "1")]
288    pub enabled: bool,
289    #[prost(uint32, tag = "2")]
290    pub min: u32,
291    #[prost(uint32, tag = "3")]
292    pub max: u32,
293}
294#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
295pub struct ParticipantPermission {
296    /// allow participant to subscribe to other tracks in the room
297    #[prost(bool, tag = "1")]
298    pub can_subscribe: bool,
299    /// allow participant to publish new tracks to room
300    #[prost(bool, tag = "2")]
301    pub can_publish: bool,
302    /// allow participant to publish data
303    #[prost(bool, tag = "3")]
304    pub can_publish_data: bool,
305    /// sources that are allowed to be published
306    #[prost(enumeration = "TrackSource", repeated, tag = "9")]
307    pub can_publish_sources: ::prost::alloc::vec::Vec<i32>,
308    /// indicates that it's hidden to others
309    #[prost(bool, tag = "7")]
310    pub hidden: bool,
311    /// indicates it's a recorder instance
312    /// deprecated: use ParticipantInfo.kind instead
313    #[deprecated]
314    #[prost(bool, tag = "8")]
315    pub recorder: bool,
316    /// indicates that participant can update own metadata and attributes
317    #[prost(bool, tag = "10")]
318    pub can_update_metadata: bool,
319    /// indicates that participant is an agent
320    /// deprecated: use ParticipantInfo.kind instead
321    #[deprecated]
322    #[prost(bool, tag = "11")]
323    pub agent: bool,
324    /// if a participant can subscribe to metrics
325    #[prost(bool, tag = "12")]
326    pub can_subscribe_metrics: bool,
327    /// if a participant can manage an agent session via RemoteSession (control and access state)
328    #[prost(bool, tag = "13")]
329    pub can_manage_agent_session: bool,
330}
331#[derive(Clone, PartialEq, ::prost::Message)]
332pub struct ParticipantInfo {
333    #[prost(string, tag = "1")]
334    pub sid: ::prost::alloc::string::String,
335    #[prost(string, tag = "2")]
336    pub identity: ::prost::alloc::string::String,
337    #[prost(enumeration = "participant_info::State", tag = "3")]
338    pub state: i32,
339    #[prost(message, repeated, tag = "4")]
340    pub tracks: ::prost::alloc::vec::Vec<TrackInfo>,
341    #[prost(string, tag = "5")]
342    pub metadata: ::prost::alloc::string::String,
343    /// timestamp when participant joined room, in seconds
344    #[prost(int64, tag = "6")]
345    pub joined_at: i64,
346    /// timestamp when participant joined room, in milliseconds
347    #[prost(int64, tag = "17")]
348    pub joined_at_ms: i64,
349    #[prost(string, tag = "9")]
350    pub name: ::prost::alloc::string::String,
351    #[prost(uint32, tag = "10")]
352    pub version: u32,
353    #[prost(message, optional, tag = "11")]
354    pub permission: ::core::option::Option<ParticipantPermission>,
355    #[prost(string, tag = "12")]
356    pub region: ::prost::alloc::string::String,
357    /// indicates the participant has an active publisher connection
358    /// and can publish to the server
359    #[prost(bool, tag = "13")]
360    pub is_publisher: bool,
361    #[prost(enumeration = "participant_info::Kind", tag = "14")]
362    pub kind: i32,
363    #[prost(map = "string, string", tag = "15")]
364    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
365    #[prost(enumeration = "DisconnectReason", tag = "16")]
366    pub disconnect_reason: i32,
367    #[prost(enumeration = "participant_info::KindDetail", repeated, tag = "18")]
368    pub kind_details: ::prost::alloc::vec::Vec<i32>,
369    #[prost(message, repeated, tag = "19")]
370    pub data_tracks: ::prost::alloc::vec::Vec<DataTrackInfo>,
371    /// protocol version used for client feature compatibility
372    #[prost(int32, tag = "20")]
373    pub client_protocol: i32,
374    /// capabilities the participant's client advertises, mirrored from ClientInfo.
375    /// Lets other participants perform client-side feature detection.
376    #[prost(enumeration = "client_info::Capability", repeated, tag = "21")]
377    pub capabilities: ::prost::alloc::vec::Vec<i32>,
378}
379/// Nested message and enum types in `ParticipantInfo`.
380pub mod participant_info {
381    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
382    #[repr(i32)]
383    pub enum State {
384        /// websocket' connected, but not offered yet
385        Joining = 0,
386        /// server received client offer
387        Joined = 1,
388        /// ICE connectivity established
389        Active = 2,
390        /// WS disconnected
391        Disconnected = 3,
392    }
393    impl State {
394        /// String value of the enum field names used in the ProtoBuf definition.
395        ///
396        /// The values are not transformed in any way and thus are considered stable
397        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
398        pub fn as_str_name(&self) -> &'static str {
399            match self {
400                Self::Joining => "JOINING",
401                Self::Joined => "JOINED",
402                Self::Active => "ACTIVE",
403                Self::Disconnected => "DISCONNECTED",
404            }
405        }
406        /// Creates an enum from field names used in the ProtoBuf definition.
407        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
408            match value {
409                "JOINING" => Some(Self::Joining),
410                "JOINED" => Some(Self::Joined),
411                "ACTIVE" => Some(Self::Active),
412                "DISCONNECTED" => Some(Self::Disconnected),
413                _ => None,
414            }
415        }
416    }
417    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
418    #[repr(i32)]
419    pub enum Kind {
420        /// standard participants, e.g. web clients
421        Standard = 0,
422        /// only ingests streams
423        Ingress = 1,
424        /// only consumes streams
425        Egress = 2,
426        /// SIP participants
427        Sip = 3,
428        /// LiveKit agents
429        Agent = 4,
430        /// Connectors participants
431        Connector = 7,
432        /// Bridge participants
433        ///
434        /// NEXT_ID: 9
435        Bridge = 8,
436    }
437    impl Kind {
438        /// String value of the enum field names used in the ProtoBuf definition.
439        ///
440        /// The values are not transformed in any way and thus are considered stable
441        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
442        pub fn as_str_name(&self) -> &'static str {
443            match self {
444                Self::Standard => "STANDARD",
445                Self::Ingress => "INGRESS",
446                Self::Egress => "EGRESS",
447                Self::Sip => "SIP",
448                Self::Agent => "AGENT",
449                Self::Connector => "CONNECTOR",
450                Self::Bridge => "BRIDGE",
451            }
452        }
453        /// Creates an enum from field names used in the ProtoBuf definition.
454        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
455            match value {
456                "STANDARD" => Some(Self::Standard),
457                "INGRESS" => Some(Self::Ingress),
458                "EGRESS" => Some(Self::Egress),
459                "SIP" => Some(Self::Sip),
460                "AGENT" => Some(Self::Agent),
461                "CONNECTOR" => Some(Self::Connector),
462                "BRIDGE" => Some(Self::Bridge),
463                _ => None,
464            }
465        }
466    }
467    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
468    #[repr(i32)]
469    pub enum KindDetail {
470        CloudAgent = 0,
471        Forwarded = 1,
472        ConnectorWhatsapp = 2,
473        ConnectorTwilio = 3,
474        BridgeRtsp = 4,
475        /// NEXT_ID: 6
476        Simulation = 5,
477    }
478    impl KindDetail {
479        /// String value of the enum field names used in the ProtoBuf definition.
480        ///
481        /// The values are not transformed in any way and thus are considered stable
482        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
483        pub fn as_str_name(&self) -> &'static str {
484            match self {
485                Self::CloudAgent => "CLOUD_AGENT",
486                Self::Forwarded => "FORWARDED",
487                Self::ConnectorWhatsapp => "CONNECTOR_WHATSAPP",
488                Self::ConnectorTwilio => "CONNECTOR_TWILIO",
489                Self::BridgeRtsp => "BRIDGE_RTSP",
490                Self::Simulation => "SIMULATION",
491            }
492        }
493        /// Creates an enum from field names used in the ProtoBuf definition.
494        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
495            match value {
496                "CLOUD_AGENT" => Some(Self::CloudAgent),
497                "FORWARDED" => Some(Self::Forwarded),
498                "CONNECTOR_WHATSAPP" => Some(Self::ConnectorWhatsapp),
499                "CONNECTOR_TWILIO" => Some(Self::ConnectorTwilio),
500                "BRIDGE_RTSP" => Some(Self::BridgeRtsp),
501                "SIMULATION" => Some(Self::Simulation),
502                _ => None,
503            }
504        }
505    }
506}
507#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
508pub struct Encryption {
509}
510/// Nested message and enum types in `Encryption`.
511pub mod encryption {
512    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
513    #[repr(i32)]
514    pub enum Type {
515        None = 0,
516        Gcm = 1,
517        Custom = 2,
518    }
519    impl Type {
520        /// String value of the enum field names used in the ProtoBuf definition.
521        ///
522        /// The values are not transformed in any way and thus are considered stable
523        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
524        pub fn as_str_name(&self) -> &'static str {
525            match self {
526                Self::None => "NONE",
527                Self::Gcm => "GCM",
528                Self::Custom => "CUSTOM",
529            }
530        }
531        /// Creates an enum from field names used in the ProtoBuf definition.
532        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
533            match value {
534                "NONE" => Some(Self::None),
535                "GCM" => Some(Self::Gcm),
536                "CUSTOM" => Some(Self::Custom),
537                _ => None,
538            }
539        }
540    }
541}
542#[derive(Clone, PartialEq, ::prost::Message)]
543pub struct SimulcastCodecInfo {
544    #[prost(string, tag = "1")]
545    pub mime_type: ::prost::alloc::string::String,
546    #[prost(string, tag = "2")]
547    pub mid: ::prost::alloc::string::String,
548    #[prost(string, tag = "3")]
549    pub cid: ::prost::alloc::string::String,
550    #[prost(message, repeated, tag = "4")]
551    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
552    #[prost(enumeration = "video_layer::Mode", tag = "5")]
553    pub video_layer_mode: i32,
554    /// cid (client side id for track) could be different between
555    /// signalling (AddTrackRequest) and SDP offer. This field
556    /// will be populated only if it is different to avoid
557    /// duplication and keep the representation concise.
558    #[prost(string, tag = "6")]
559    pub sdp_cid: ::prost::alloc::string::String,
560}
561#[derive(Clone, PartialEq, ::prost::Message)]
562pub struct TrackInfo {
563    #[prost(string, tag = "1")]
564    pub sid: ::prost::alloc::string::String,
565    #[prost(enumeration = "TrackType", tag = "2")]
566    pub r#type: i32,
567    #[prost(string, tag = "3")]
568    pub name: ::prost::alloc::string::String,
569    #[prost(bool, tag = "4")]
570    pub muted: bool,
571    /// original width of video (unset for audio)
572    /// clients may receive a lower resolution version with simulcast
573    #[prost(uint32, tag = "5")]
574    pub width: u32,
575    /// original height of video (unset for audio)
576    #[prost(uint32, tag = "6")]
577    pub height: u32,
578    /// true if track is simulcasted
579    ///
580    /// see `video_layer_mode` in `codecs`
581    #[deprecated]
582    #[prost(bool, tag = "7")]
583    pub simulcast: bool,
584    /// true if DTX (Discontinuous Transmission) is disabled for audio
585    ///
586    /// deprecated in favor of `audio_features`
587    #[deprecated]
588    #[prost(bool, tag = "8")]
589    pub disable_dtx: bool,
590    /// source of media
591    #[prost(enumeration = "TrackSource", tag = "9")]
592    pub source: i32,
593    /// see `codecs` for layers of individual codec
594    #[deprecated]
595    #[prost(message, repeated, tag = "10")]
596    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
597    /// mime type of codec
598    #[prost(string, tag = "11")]
599    pub mime_type: ::prost::alloc::string::String,
600    #[prost(string, tag = "12")]
601    pub mid: ::prost::alloc::string::String,
602    #[prost(message, repeated, tag = "13")]
603    pub codecs: ::prost::alloc::vec::Vec<SimulcastCodecInfo>,
604    /// deprecated in favor of `audio_features`
605    #[deprecated]
606    #[prost(bool, tag = "14")]
607    pub stereo: bool,
608    /// true if RED (Redundant Encoding) is disabled for audio
609    #[prost(bool, tag = "15")]
610    pub disable_red: bool,
611    #[prost(enumeration = "encryption::Type", tag = "16")]
612    pub encryption: i32,
613    #[prost(string, tag = "17")]
614    pub stream: ::prost::alloc::string::String,
615    #[prost(message, optional, tag = "18")]
616    pub version: ::core::option::Option<TimedVersion>,
617    #[prost(enumeration = "AudioTrackFeature", repeated, tag = "19")]
618    pub audio_features: ::prost::alloc::vec::Vec<i32>,
619    #[prost(enumeration = "BackupCodecPolicy", tag = "20")]
620    pub backup_codec_policy: i32,
621    #[prost(enumeration = "PacketTrailerFeature", repeated, tag = "21")]
622    pub packet_trailer_features: ::prost::alloc::vec::Vec<i32>,
623}
624#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
625pub struct DataTrackInfo {
626    /// Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.
627    #[prost(uint32, tag = "1")]
628    pub pub_handle: u32,
629    /// Server-assigned track identifier.
630    #[prost(string, tag = "2")]
631    pub sid: ::prost::alloc::string::String,
632    /// Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.
633    #[prost(string, tag = "3")]
634    pub name: ::prost::alloc::string::String,
635    /// Method used for end-to-end encryption (E2EE) on packet payloads.
636    #[prost(enumeration = "encryption::Type", tag = "4")]
637    pub encryption: i32,
638    /// Encoding for frame payloads on this track. If unspecified, the track is untyped.
639    #[prost(message, optional, tag = "5")]
640    pub frame_encoding: ::core::option::Option<DataTrackFrameEncoding>,
641    /// ID of the schema used by frames on this track if the track is typed.
642    #[prost(message, optional, tag = "6")]
643    pub schema: ::core::option::Option<DataTrackSchemaId>,
644}
645/// Encoding for frame payloads.
646#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
647pub struct DataTrackFrameEncoding {
648    #[prost(oneof = "data_track_frame_encoding::Value", tags = "1, 2")]
649    pub value: ::core::option::Option<data_track_frame_encoding::Value>,
650}
651/// Nested message and enum types in `DataTrackFrameEncoding`.
652pub mod data_track_frame_encoding {
653    /// Well-known encoding for frame payloads.
654    ///
655    /// Mirrors the well-known message encodings from the MCAP spec:
656    /// <https://mcap.dev/spec/registry#message-encodings>
657    ///
658    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
659    #[repr(i32)]
660    pub enum WellKnownFrameEncoding {
661        Unspecified = 0,
662        /// ROS 1: must be described by `ROS1_MSG` schema encoding.
663        Ros1 = 1,
664        /// CDR: must be described by `ROS2_MSG`, `ROS2_IDL`, or `OMG_IDL` schema encoding.
665        Cdr = 2,
666        /// Protocol Buffer: must be described by `PROTOBUF` schema encoding.
667        Protobuf = 3,
668        /// FlatBuffer: must be described by `FLATBUFFER` schema encoding.
669        Flatbuffer = 4,
670        /// CBOR: self-describing.
671        Cbor = 5,
672        /// MessagePack: self-describing.
673        Msgpack = 6,
674        /// JSON: self-describing or described by `JSON_SCHEMA` schema encoding.
675        Json = 7,
676    }
677    impl WellKnownFrameEncoding {
678        /// String value of the enum field names used in the ProtoBuf definition.
679        ///
680        /// The values are not transformed in any way and thus are considered stable
681        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
682        pub fn as_str_name(&self) -> &'static str {
683            match self {
684                Self::Unspecified => "WELL_KNOWN_FRAME_ENCODING_UNSPECIFIED",
685                Self::Ros1 => "WELL_KNOWN_FRAME_ENCODING_ROS1",
686                Self::Cdr => "WELL_KNOWN_FRAME_ENCODING_CDR",
687                Self::Protobuf => "WELL_KNOWN_FRAME_ENCODING_PROTOBUF",
688                Self::Flatbuffer => "WELL_KNOWN_FRAME_ENCODING_FLATBUFFER",
689                Self::Cbor => "WELL_KNOWN_FRAME_ENCODING_CBOR",
690                Self::Msgpack => "WELL_KNOWN_FRAME_ENCODING_MSGPACK",
691                Self::Json => "WELL_KNOWN_FRAME_ENCODING_JSON",
692            }
693        }
694        /// Creates an enum from field names used in the ProtoBuf definition.
695        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
696            match value {
697                "WELL_KNOWN_FRAME_ENCODING_UNSPECIFIED" => Some(Self::Unspecified),
698                "WELL_KNOWN_FRAME_ENCODING_ROS1" => Some(Self::Ros1),
699                "WELL_KNOWN_FRAME_ENCODING_CDR" => Some(Self::Cdr),
700                "WELL_KNOWN_FRAME_ENCODING_PROTOBUF" => Some(Self::Protobuf),
701                "WELL_KNOWN_FRAME_ENCODING_FLATBUFFER" => Some(Self::Flatbuffer),
702                "WELL_KNOWN_FRAME_ENCODING_CBOR" => Some(Self::Cbor),
703                "WELL_KNOWN_FRAME_ENCODING_MSGPACK" => Some(Self::Msgpack),
704                "WELL_KNOWN_FRAME_ENCODING_JSON" => Some(Self::Json),
705                _ => None,
706            }
707        }
708    }
709    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
710    pub enum Value {
711        #[prost(enumeration = "WellKnownFrameEncoding", tag = "1")]
712        WellKnown(i32),
713        /// Identifier of a custom encoding not covered by the well-known cases.
714        /// This must be non-empty and no longer than 32 characters.
715        #[prost(string, tag = "2")]
716        Custom(::prost::alloc::string::String),
717    }
718}
719/// Encoding for schema definition.
720#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
721pub struct DataTrackSchemaEncoding {
722    #[prost(oneof = "data_track_schema_encoding::Value", tags = "1, 2")]
723    pub value: ::core::option::Option<data_track_schema_encoding::Value>,
724}
725/// Nested message and enum types in `DataTrackSchemaEncoding`.
726pub mod data_track_schema_encoding {
727    /// Well-known encoding for schema definition.
728    ///
729    /// Mirrors the well-known schema encodings from the MCAP spec:
730    /// <https://mcap.dev/spec/registry#schema-encodings>
731    ///
732    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
733    #[repr(i32)]
734    pub enum WellKnownSchemaEncoding {
735        Unspecified = 0,
736        /// Protocol Buffer IDL: describes `PROTOBUF` frame encoding.
737        Protobuf = 1,
738        /// FlatBuffer IDL: describes `FLATBUFFER` frame encoding.
739        Flatbuffer = 2,
740        /// ROS 1 Message: describes `ROS1` frame encoding.
741        Ros1Msg = 3,
742        /// ROS 2 Message: describes `CDR` frame encoding.
743        Ros2Msg = 4,
744        /// ROS 2 IDL: describes `CDR` frame encoding.
745        Ros2Idl = 5,
746        /// OMG IDL: describes `CDR` frame encoding.
747        OmgIdl = 6,
748        /// JSON Schema: describes `JSON` frame encoding.
749        JsonSchema = 7,
750    }
751    impl WellKnownSchemaEncoding {
752        /// String value of the enum field names used in the ProtoBuf definition.
753        ///
754        /// The values are not transformed in any way and thus are considered stable
755        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
756        pub fn as_str_name(&self) -> &'static str {
757            match self {
758                Self::Unspecified => "WELL_KNOWN_SCHEMA_ENCODING_UNSPECIFIED",
759                Self::Protobuf => "WELL_KNOWN_SCHEMA_ENCODING_PROTOBUF",
760                Self::Flatbuffer => "WELL_KNOWN_SCHEMA_ENCODING_FLATBUFFER",
761                Self::Ros1Msg => "WELL_KNOWN_SCHEMA_ENCODING_ROS1_MSG",
762                Self::Ros2Msg => "WELL_KNOWN_SCHEMA_ENCODING_ROS2_MSG",
763                Self::Ros2Idl => "WELL_KNOWN_SCHEMA_ENCODING_ROS2_IDL",
764                Self::OmgIdl => "WELL_KNOWN_SCHEMA_ENCODING_OMG_IDL",
765                Self::JsonSchema => "WELL_KNOWN_SCHEMA_ENCODING_JSON_SCHEMA",
766            }
767        }
768        /// Creates an enum from field names used in the ProtoBuf definition.
769        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
770            match value {
771                "WELL_KNOWN_SCHEMA_ENCODING_UNSPECIFIED" => Some(Self::Unspecified),
772                "WELL_KNOWN_SCHEMA_ENCODING_PROTOBUF" => Some(Self::Protobuf),
773                "WELL_KNOWN_SCHEMA_ENCODING_FLATBUFFER" => Some(Self::Flatbuffer),
774                "WELL_KNOWN_SCHEMA_ENCODING_ROS1_MSG" => Some(Self::Ros1Msg),
775                "WELL_KNOWN_SCHEMA_ENCODING_ROS2_MSG" => Some(Self::Ros2Msg),
776                "WELL_KNOWN_SCHEMA_ENCODING_ROS2_IDL" => Some(Self::Ros2Idl),
777                "WELL_KNOWN_SCHEMA_ENCODING_OMG_IDL" => Some(Self::OmgIdl),
778                "WELL_KNOWN_SCHEMA_ENCODING_JSON_SCHEMA" => Some(Self::JsonSchema),
779                _ => None,
780            }
781        }
782    }
783    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
784    pub enum Value {
785        #[prost(enumeration = "WellKnownSchemaEncoding", tag = "1")]
786        WellKnown(i32),
787        /// Identifier of a custom encoding not covered by the well-known cases.
788        /// This must be non-empty and no longer than 32 characters.
789        #[prost(string, tag = "2")]
790        Custom(::prost::alloc::string::String),
791    }
792}
793/// Identifier for a data track schema.
794///
795/// Schemas with the same name but different encodings are distinct.
796///
797#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
798pub struct DataTrackSchemaId {
799    /// This must be non-empty and no longer than 256 characters.
800    #[prost(string, tag = "1")]
801    pub name: ::prost::alloc::string::String,
802    #[prost(message, optional, tag = "2")]
803    pub encoding: ::core::option::Option<DataTrackSchemaEncoding>,
804}
805#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
806pub struct DataTrackExtensionParticipantSid {
807    #[prost(enumeration = "DataTrackExtensionId", tag = "1")]
808    pub id: i32,
809    #[prost(string, tag = "2")]
810    pub participant_sid: ::prost::alloc::string::String,
811}
812#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
813pub struct DataTrackSubscriptionOptions {
814    /// Rate in frames per second (FPS) the subscriber wants to receive frames at.
815    /// If omitted, the subscriber defaults to the publisher's fps
816    #[prost(uint32, optional, tag = "1")]
817    pub target_fps: ::core::option::Option<u32>,
818}
819/// Key used to uniquely identify a data blob for storage and retrieval.
820#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
821pub struct DataBlobKey {
822    #[prost(oneof = "data_blob_key::Key", tags = "1, 2")]
823    pub key: ::core::option::Option<data_blob_key::Key>,
824}
825/// Nested message and enum types in `DataBlobKey`.
826pub mod data_blob_key {
827    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
828    pub enum Key {
829        /// Generic string key, blob contains arbitrary data.
830        #[prost(string, tag = "1")]
831        Generic(::prost::alloc::string::String),
832        /// Data track schema identifier, blob contains schema definition.
833        #[prost(message, tag = "2")]
834        SchemaId(super::DataTrackSchemaId),
835    }
836}
837/// A blob of data stored in a room identified by a unique key.
838#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
839pub struct DataBlob {
840    /// Unique key the data blob is identified by.
841    #[prost(message, optional, tag = "1")]
842    pub key: ::core::option::Option<DataBlobKey>,
843    /// Contents of the data blob. This must not exceed 50 KB.
844    #[prost(bytes = "vec", tag = "2")]
845    pub contents: ::prost::alloc::vec::Vec<u8>,
846}
847/// provide information about available spatial layers
848#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
849pub struct VideoLayer {
850    /// for tracks with a single layer, this should be HIGH
851    #[prost(enumeration = "VideoQuality", tag = "1")]
852    pub quality: i32,
853    #[prost(uint32, tag = "2")]
854    pub width: u32,
855    #[prost(uint32, tag = "3")]
856    pub height: u32,
857    /// target bitrate in bit per second (bps), server will measure actual
858    #[prost(uint32, tag = "4")]
859    pub bitrate: u32,
860    #[prost(uint32, tag = "5")]
861    pub ssrc: u32,
862    #[prost(int32, tag = "6")]
863    pub spatial_layer: i32,
864    #[prost(string, tag = "7")]
865    pub rid: ::prost::alloc::string::String,
866    #[prost(uint32, tag = "8")]
867    pub repair_ssrc: u32,
868}
869/// Nested message and enum types in `VideoLayer`.
870pub mod video_layer {
871    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
872    #[repr(i32)]
873    pub enum Mode {
874        Unused = 0,
875        OneSpatialLayerPerStream = 1,
876        MultipleSpatialLayersPerStream = 2,
877        OneSpatialLayerPerStreamIncompleteRtcpSr = 3,
878    }
879    impl Mode {
880        /// String value of the enum field names used in the ProtoBuf definition.
881        ///
882        /// The values are not transformed in any way and thus are considered stable
883        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
884        pub fn as_str_name(&self) -> &'static str {
885            match self {
886                Self::Unused => "MODE_UNUSED",
887                Self::OneSpatialLayerPerStream => "ONE_SPATIAL_LAYER_PER_STREAM",
888                Self::MultipleSpatialLayersPerStream => "MULTIPLE_SPATIAL_LAYERS_PER_STREAM",
889                Self::OneSpatialLayerPerStreamIncompleteRtcpSr => "ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR",
890            }
891        }
892        /// Creates an enum from field names used in the ProtoBuf definition.
893        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
894            match value {
895                "MODE_UNUSED" => Some(Self::Unused),
896                "ONE_SPATIAL_LAYER_PER_STREAM" => Some(Self::OneSpatialLayerPerStream),
897                "MULTIPLE_SPATIAL_LAYERS_PER_STREAM" => Some(Self::MultipleSpatialLayersPerStream),
898                "ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR" => Some(Self::OneSpatialLayerPerStreamIncompleteRtcpSr),
899                _ => None,
900            }
901        }
902    }
903}
904/// new DataPacket API
905#[derive(Clone, PartialEq, ::prost::Message)]
906pub struct DataPacket {
907    #[deprecated]
908    #[prost(enumeration = "data_packet::Kind", tag = "1")]
909    pub kind: i32,
910    /// participant identity of user that sent the message
911    #[prost(string, tag = "4")]
912    pub participant_identity: ::prost::alloc::string::String,
913    /// identities of participants who will receive the message (sent to all by default)
914    #[prost(string, repeated, tag = "5")]
915    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
916    /// sequence number of reliable packet
917    #[prost(uint32, tag = "16")]
918    pub sequence: u32,
919    /// sid of the user that sent the message
920    #[prost(string, tag = "17")]
921    pub participant_sid: ::prost::alloc::string::String,
922    #[prost(oneof = "data_packet::Value", tags = "2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18")]
923    pub value: ::core::option::Option<data_packet::Value>,
924}
925/// Nested message and enum types in `DataPacket`.
926pub mod data_packet {
927    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
928    #[repr(i32)]
929    pub enum Kind {
930        Reliable = 0,
931        Lossy = 1,
932    }
933    impl Kind {
934        /// String value of the enum field names used in the ProtoBuf definition.
935        ///
936        /// The values are not transformed in any way and thus are considered stable
937        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
938        pub fn as_str_name(&self) -> &'static str {
939            match self {
940                Self::Reliable => "RELIABLE",
941                Self::Lossy => "LOSSY",
942            }
943        }
944        /// Creates an enum from field names used in the ProtoBuf definition.
945        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
946            match value {
947                "RELIABLE" => Some(Self::Reliable),
948                "LOSSY" => Some(Self::Lossy),
949                _ => None,
950            }
951        }
952    }
953    #[derive(Clone, PartialEq, ::prost::Oneof)]
954    pub enum Value {
955        #[prost(message, tag = "2")]
956        User(super::UserPacket),
957        #[deprecated]
958        #[prost(message, tag = "3")]
959        Speaker(super::ActiveSpeakerUpdate),
960        #[prost(message, tag = "6")]
961        SipDtmf(super::SipDtmf),
962        #[prost(message, tag = "7")]
963        Transcription(super::Transcription),
964        #[prost(message, tag = "8")]
965        Metrics(super::MetricsBatch),
966        #[prost(message, tag = "9")]
967        ChatMessage(super::ChatMessage),
968        #[prost(message, tag = "10")]
969        RpcRequest(super::RpcRequest),
970        #[prost(message, tag = "11")]
971        RpcAck(super::RpcAck),
972        #[prost(message, tag = "12")]
973        RpcResponse(super::RpcResponse),
974        #[prost(message, tag = "13")]
975        StreamHeader(super::data_stream::Header),
976        #[prost(message, tag = "14")]
977        StreamChunk(super::data_stream::Chunk),
978        #[prost(message, tag = "15")]
979        StreamTrailer(super::data_stream::Trailer),
980        #[prost(message, tag = "18")]
981        EncryptedPacket(super::EncryptedPacket),
982    }
983}
984#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
985pub struct EncryptedPacket {
986    #[prost(enumeration = "encryption::Type", tag = "1")]
987    pub encryption_type: i32,
988    #[prost(bytes = "vec", tag = "2")]
989    pub iv: ::prost::alloc::vec::Vec<u8>,
990    #[prost(uint32, tag = "3")]
991    pub key_index: u32,
992    /// This is an encrypted EncryptedPacketPayload message representation
993    #[prost(bytes = "vec", tag = "4")]
994    pub encrypted_value: ::prost::alloc::vec::Vec<u8>,
995}
996#[derive(Clone, PartialEq, ::prost::Message)]
997pub struct EncryptedPacketPayload {
998    #[prost(oneof = "encrypted_packet_payload::Value", tags = "1, 3, 4, 5, 6, 7, 8, 9")]
999    pub value: ::core::option::Option<encrypted_packet_payload::Value>,
1000}
1001/// Nested message and enum types in `EncryptedPacketPayload`.
1002pub mod encrypted_packet_payload {
1003    #[derive(Clone, PartialEq, ::prost::Oneof)]
1004    pub enum Value {
1005        #[prost(message, tag = "1")]
1006        User(super::UserPacket),
1007        #[prost(message, tag = "3")]
1008        ChatMessage(super::ChatMessage),
1009        #[prost(message, tag = "4")]
1010        RpcRequest(super::RpcRequest),
1011        #[prost(message, tag = "5")]
1012        RpcAck(super::RpcAck),
1013        #[prost(message, tag = "6")]
1014        RpcResponse(super::RpcResponse),
1015        #[prost(message, tag = "7")]
1016        StreamHeader(super::data_stream::Header),
1017        #[prost(message, tag = "8")]
1018        StreamChunk(super::data_stream::Chunk),
1019        #[prost(message, tag = "9")]
1020        StreamTrailer(super::data_stream::Trailer),
1021    }
1022}
1023#[derive(Clone, PartialEq, ::prost::Message)]
1024pub struct ActiveSpeakerUpdate {
1025    #[prost(message, repeated, tag = "1")]
1026    pub speakers: ::prost::alloc::vec::Vec<SpeakerInfo>,
1027}
1028#[derive(Clone, PartialEq, ::prost::Message)]
1029pub struct SpeakerInfo {
1030    #[prost(string, tag = "1")]
1031    pub sid: ::prost::alloc::string::String,
1032    /// audio level, 0-1.0, 1 is loudest
1033    #[prost(float, tag = "2")]
1034    pub level: f32,
1035    /// true if speaker is currently active
1036    #[prost(bool, tag = "3")]
1037    pub active: bool,
1038}
1039#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1040pub struct UserPacket {
1041    /// participant ID of user that sent the message
1042    #[deprecated]
1043    #[prost(string, tag = "1")]
1044    pub participant_sid: ::prost::alloc::string::String,
1045    #[deprecated]
1046    #[prost(string, tag = "5")]
1047    pub participant_identity: ::prost::alloc::string::String,
1048    /// user defined payload
1049    #[prost(bytes = "vec", tag = "2")]
1050    pub payload: ::prost::alloc::vec::Vec<u8>,
1051    /// the ID of the participants who will receive the message (sent to all by default)
1052    #[deprecated]
1053    #[prost(string, repeated, tag = "3")]
1054    pub destination_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1055    /// identities of participants who will receive the message (sent to all by default)
1056    #[deprecated]
1057    #[prost(string, repeated, tag = "6")]
1058    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1059    /// topic under which the message was published
1060    #[prost(string, optional, tag = "4")]
1061    pub topic: ::core::option::Option<::prost::alloc::string::String>,
1062    /// Unique ID to identify the message
1063    #[prost(string, optional, tag = "8")]
1064    pub id: ::core::option::Option<::prost::alloc::string::String>,
1065    /// start and end time allow relating the message to specific media time
1066    #[prost(uint64, optional, tag = "9")]
1067    pub start_time: ::core::option::Option<u64>,
1068    #[prost(uint64, optional, tag = "10")]
1069    pub end_time: ::core::option::Option<u64>,
1070    /// added by SDK to enable de-duping of messages, for INTERNAL USE ONLY
1071    #[prost(bytes = "vec", tag = "11")]
1072    pub nonce: ::prost::alloc::vec::Vec<u8>,
1073}
1074#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1075pub struct SipDtmf {
1076    #[prost(uint32, tag = "3")]
1077    pub code: u32,
1078    #[prost(string, tag = "4")]
1079    pub digit: ::prost::alloc::string::String,
1080}
1081#[derive(Clone, PartialEq, ::prost::Message)]
1082pub struct Transcription {
1083    /// Participant that got its speech transcribed
1084    #[prost(string, tag = "2")]
1085    pub transcribed_participant_identity: ::prost::alloc::string::String,
1086    #[prost(string, tag = "3")]
1087    pub track_id: ::prost::alloc::string::String,
1088    #[prost(message, repeated, tag = "4")]
1089    pub segments: ::prost::alloc::vec::Vec<TranscriptionSegment>,
1090}
1091#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1092pub struct TranscriptionSegment {
1093    #[prost(string, tag = "1")]
1094    pub id: ::prost::alloc::string::String,
1095    #[prost(string, tag = "2")]
1096    pub text: ::prost::alloc::string::String,
1097    #[prost(uint64, tag = "3")]
1098    pub start_time: u64,
1099    #[prost(uint64, tag = "4")]
1100    pub end_time: u64,
1101    #[prost(bool, tag = "5")]
1102    pub r#final: bool,
1103    #[prost(string, tag = "6")]
1104    pub language: ::prost::alloc::string::String,
1105}
1106#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1107pub struct ChatMessage {
1108    /// uuid
1109    #[prost(string, tag = "1")]
1110    pub id: ::prost::alloc::string::String,
1111    #[prost(int64, tag = "2")]
1112    pub timestamp: i64,
1113    /// populated only if the intent is to edit/update an existing message
1114    #[prost(int64, optional, tag = "3")]
1115    pub edit_timestamp: ::core::option::Option<i64>,
1116    #[prost(string, tag = "4")]
1117    pub message: ::prost::alloc::string::String,
1118    /// true to remove message
1119    #[prost(bool, tag = "5")]
1120    pub deleted: bool,
1121    /// true if the chat message has been generated by an agent from a participant's audio transcription
1122    #[prost(bool, tag = "6")]
1123    pub generated: bool,
1124}
1125#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1126pub struct RpcRequest {
1127    #[prost(string, tag = "1")]
1128    pub id: ::prost::alloc::string::String,
1129    #[prost(string, tag = "2")]
1130    pub method: ::prost::alloc::string::String,
1131    #[prost(string, tag = "3")]
1132    pub payload: ::prost::alloc::string::String,
1133    #[prost(uint32, tag = "4")]
1134    pub response_timeout_ms: u32,
1135    #[prost(uint32, tag = "5")]
1136    pub version: u32,
1137    /// Compressed payload data. When set, this field is used instead of `payload`.
1138    #[prost(bytes = "vec", tag = "6")]
1139    pub compressed_payload: ::prost::alloc::vec::Vec<u8>,
1140}
1141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1142pub struct RpcAck {
1143    #[prost(string, tag = "1")]
1144    pub request_id: ::prost::alloc::string::String,
1145}
1146#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1147pub struct RpcResponse {
1148    #[prost(string, tag = "1")]
1149    pub request_id: ::prost::alloc::string::String,
1150    #[prost(oneof = "rpc_response::Value", tags = "2, 3, 4")]
1151    pub value: ::core::option::Option<rpc_response::Value>,
1152}
1153/// Nested message and enum types in `RpcResponse`.
1154pub mod rpc_response {
1155    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1156    pub enum Value {
1157        #[prost(string, tag = "2")]
1158        Payload(::prost::alloc::string::String),
1159        #[prost(message, tag = "3")]
1160        Error(super::RpcError),
1161        /// Compressed payload data. When set, this field is used instead of `payload`.
1162        #[prost(bytes, tag = "4")]
1163        CompressedPayload(::prost::alloc::vec::Vec<u8>),
1164    }
1165}
1166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1167pub struct RpcError {
1168    #[prost(uint32, tag = "1")]
1169    pub code: u32,
1170    #[prost(string, tag = "2")]
1171    pub message: ::prost::alloc::string::String,
1172    #[prost(string, tag = "3")]
1173    pub data: ::prost::alloc::string::String,
1174}
1175#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1176pub struct ParticipantTracks {
1177    /// participant ID of participant to whom the tracks belong
1178    #[prost(string, tag = "1")]
1179    pub participant_sid: ::prost::alloc::string::String,
1180    #[prost(string, repeated, tag = "2")]
1181    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1182}
1183/// details about the server
1184#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1185pub struct ServerInfo {
1186    #[prost(enumeration = "server_info::Edition", tag = "1")]
1187    pub edition: i32,
1188    #[prost(string, tag = "2")]
1189    pub version: ::prost::alloc::string::String,
1190    #[prost(int32, tag = "3")]
1191    pub protocol: i32,
1192    #[prost(string, tag = "4")]
1193    pub region: ::prost::alloc::string::String,
1194    #[prost(string, tag = "5")]
1195    pub node_id: ::prost::alloc::string::String,
1196    /// additional debugging information. sent only if server is in development mode
1197    #[prost(string, tag = "6")]
1198    pub debug_info: ::prost::alloc::string::String,
1199    #[prost(int32, tag = "7")]
1200    pub agent_protocol: i32,
1201}
1202/// Nested message and enum types in `ServerInfo`.
1203pub mod server_info {
1204    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1205    #[repr(i32)]
1206    pub enum Edition {
1207        Standard = 0,
1208        Cloud = 1,
1209    }
1210    impl Edition {
1211        /// String value of the enum field names used in the ProtoBuf definition.
1212        ///
1213        /// The values are not transformed in any way and thus are considered stable
1214        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1215        pub fn as_str_name(&self) -> &'static str {
1216            match self {
1217                Self::Standard => "Standard",
1218                Self::Cloud => "Cloud",
1219            }
1220        }
1221        /// Creates an enum from field names used in the ProtoBuf definition.
1222        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1223            match value {
1224                "Standard" => Some(Self::Standard),
1225                "Cloud" => Some(Self::Cloud),
1226                _ => None,
1227            }
1228        }
1229    }
1230}
1231/// details about the client
1232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1233pub struct ClientInfo {
1234    #[prost(enumeration = "client_info::Sdk", tag = "1")]
1235    pub sdk: i32,
1236    #[prost(string, tag = "2")]
1237    pub version: ::prost::alloc::string::String,
1238    #[prost(int32, tag = "3")]
1239    pub protocol: i32,
1240    #[prost(string, tag = "4")]
1241    pub os: ::prost::alloc::string::String,
1242    #[prost(string, tag = "5")]
1243    pub os_version: ::prost::alloc::string::String,
1244    #[prost(string, tag = "6")]
1245    pub device_model: ::prost::alloc::string::String,
1246    #[prost(string, tag = "7")]
1247    pub browser: ::prost::alloc::string::String,
1248    #[prost(string, tag = "8")]
1249    pub browser_version: ::prost::alloc::string::String,
1250    #[prost(string, tag = "9")]
1251    pub address: ::prost::alloc::string::String,
1252    /// wifi, wired, cellular, vpn, empty if not known
1253    #[prost(string, tag = "10")]
1254    pub network: ::prost::alloc::string::String,
1255    /// comma separated list of additional LiveKit SDKs in use of this client, with versions
1256    /// e.g. "components-js:1.2.3,track-processors-js:1.2.3"
1257    #[prost(string, tag = "11")]
1258    pub other_sdks: ::prost::alloc::string::String,
1259    /// client protocol version
1260    #[prost(int32, tag = "12")]
1261    pub client_protocol: i32,
1262    /// capabilities the client advertises. Populated automatically by each SDK;
1263    /// not a user-configurable setting.
1264    #[prost(enumeration = "client_info::Capability", repeated, tag = "13")]
1265    pub capabilities: ::prost::alloc::vec::Vec<i32>,
1266}
1267/// Nested message and enum types in `ClientInfo`.
1268pub mod client_info {
1269    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1270    #[repr(i32)]
1271    pub enum Sdk {
1272        Unknown = 0,
1273        Js = 1,
1274        Swift = 2,
1275        Android = 3,
1276        Flutter = 4,
1277        Go = 5,
1278        Unity = 6,
1279        ReactNative = 7,
1280        Rust = 8,
1281        Python = 9,
1282        Cpp = 10,
1283        UnityWeb = 11,
1284        Node = 12,
1285        Unreal = 13,
1286        Esp32 = 14,
1287        Dotnet = 15,
1288    }
1289    impl Sdk {
1290        /// String value of the enum field names used in the ProtoBuf definition.
1291        ///
1292        /// The values are not transformed in any way and thus are considered stable
1293        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1294        pub fn as_str_name(&self) -> &'static str {
1295            match self {
1296                Self::Unknown => "UNKNOWN",
1297                Self::Js => "JS",
1298                Self::Swift => "SWIFT",
1299                Self::Android => "ANDROID",
1300                Self::Flutter => "FLUTTER",
1301                Self::Go => "GO",
1302                Self::Unity => "UNITY",
1303                Self::ReactNative => "REACT_NATIVE",
1304                Self::Rust => "RUST",
1305                Self::Python => "PYTHON",
1306                Self::Cpp => "CPP",
1307                Self::UnityWeb => "UNITY_WEB",
1308                Self::Node => "NODE",
1309                Self::Unreal => "UNREAL",
1310                Self::Esp32 => "ESP32",
1311                Self::Dotnet => "DOTNET",
1312            }
1313        }
1314        /// Creates an enum from field names used in the ProtoBuf definition.
1315        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1316            match value {
1317                "UNKNOWN" => Some(Self::Unknown),
1318                "JS" => Some(Self::Js),
1319                "SWIFT" => Some(Self::Swift),
1320                "ANDROID" => Some(Self::Android),
1321                "FLUTTER" => Some(Self::Flutter),
1322                "GO" => Some(Self::Go),
1323                "UNITY" => Some(Self::Unity),
1324                "REACT_NATIVE" => Some(Self::ReactNative),
1325                "RUST" => Some(Self::Rust),
1326                "PYTHON" => Some(Self::Python),
1327                "CPP" => Some(Self::Cpp),
1328                "UNITY_WEB" => Some(Self::UnityWeb),
1329                "NODE" => Some(Self::Node),
1330                "UNREAL" => Some(Self::Unreal),
1331                "ESP32" => Some(Self::Esp32),
1332                "DOTNET" => Some(Self::Dotnet),
1333                _ => None,
1334            }
1335        }
1336    }
1337    /// Optional capabilities advertised by the client at connect time. The SFU
1338    /// uses these flags to decide whether to enable features that require
1339    /// client-side support (e.g. passing RTP packet trailers through to the
1340    /// subscriber instead of stripping them).
1341    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1342    #[repr(i32)]
1343    pub enum Capability {
1344        CapUnused = 0,
1345        CapPacketTrailer = 1,
1346        CapCompressionDeflateRaw = 2,
1347    }
1348    impl Capability {
1349        /// String value of the enum field names used in the ProtoBuf definition.
1350        ///
1351        /// The values are not transformed in any way and thus are considered stable
1352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1353        pub fn as_str_name(&self) -> &'static str {
1354            match self {
1355                Self::CapUnused => "CAP_UNUSED",
1356                Self::CapPacketTrailer => "CAP_PACKET_TRAILER",
1357                Self::CapCompressionDeflateRaw => "CAP_COMPRESSION_DEFLATE_RAW",
1358            }
1359        }
1360        /// Creates an enum from field names used in the ProtoBuf definition.
1361        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1362            match value {
1363                "CAP_UNUSED" => Some(Self::CapUnused),
1364                "CAP_PACKET_TRAILER" => Some(Self::CapPacketTrailer),
1365                "CAP_COMPRESSION_DEFLATE_RAW" => Some(Self::CapCompressionDeflateRaw),
1366                _ => None,
1367            }
1368        }
1369    }
1370}
1371/// server provided client configuration
1372#[derive(Clone, PartialEq, ::prost::Message)]
1373pub struct ClientConfiguration {
1374    #[prost(message, optional, tag = "1")]
1375    pub video: ::core::option::Option<VideoConfiguration>,
1376    #[prost(message, optional, tag = "2")]
1377    pub screen: ::core::option::Option<VideoConfiguration>,
1378    #[prost(enumeration = "ClientConfigSetting", tag = "3")]
1379    pub resume_connection: i32,
1380    #[prost(message, optional, tag = "4")]
1381    pub disabled_codecs: ::core::option::Option<DisabledCodecs>,
1382    #[prost(enumeration = "ClientConfigSetting", tag = "5")]
1383    pub force_relay: i32,
1384}
1385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1386pub struct VideoConfiguration {
1387    #[prost(enumeration = "ClientConfigSetting", tag = "1")]
1388    pub hardware_encoder: i32,
1389}
1390#[derive(Clone, PartialEq, ::prost::Message)]
1391pub struct DisabledCodecs {
1392    /// disabled for both publish and subscribe
1393    #[prost(message, repeated, tag = "1")]
1394    pub codecs: ::prost::alloc::vec::Vec<Codec>,
1395    /// only disable for publish
1396    #[prost(message, repeated, tag = "2")]
1397    pub publish: ::prost::alloc::vec::Vec<Codec>,
1398}
1399#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1400pub struct RtpDrift {
1401    #[prost(message, optional, tag = "1")]
1402    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
1403    #[prost(message, optional, tag = "2")]
1404    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
1405    #[prost(double, tag = "3")]
1406    pub duration: f64,
1407    #[prost(uint64, tag = "4")]
1408    pub start_timestamp: u64,
1409    #[prost(uint64, tag = "5")]
1410    pub end_timestamp: u64,
1411    #[prost(uint64, tag = "6")]
1412    pub rtp_clock_ticks: u64,
1413    #[prost(int64, tag = "7")]
1414    pub drift_samples: i64,
1415    #[prost(double, tag = "8")]
1416    pub drift_ms: f64,
1417    #[prost(double, tag = "9")]
1418    pub clock_rate: f64,
1419}
1420#[derive(Clone, PartialEq, ::prost::Message)]
1421pub struct RtpStats {
1422    #[prost(message, optional, tag = "1")]
1423    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
1424    #[prost(message, optional, tag = "2")]
1425    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
1426    #[prost(double, tag = "3")]
1427    pub duration: f64,
1428    #[prost(uint32, tag = "4")]
1429    pub packets: u32,
1430    #[prost(double, tag = "5")]
1431    pub packet_rate: f64,
1432    #[prost(uint64, tag = "6")]
1433    pub bytes: u64,
1434    #[prost(uint64, tag = "39")]
1435    pub header_bytes: u64,
1436    #[prost(double, tag = "7")]
1437    pub bitrate: f64,
1438    #[prost(uint32, tag = "8")]
1439    pub packets_lost: u32,
1440    #[prost(double, tag = "9")]
1441    pub packet_loss_rate: f64,
1442    #[prost(float, tag = "10")]
1443    pub packet_loss_percentage: f32,
1444    #[prost(uint32, tag = "11")]
1445    pub packets_duplicate: u32,
1446    #[prost(double, tag = "12")]
1447    pub packet_duplicate_rate: f64,
1448    #[prost(uint64, tag = "13")]
1449    pub bytes_duplicate: u64,
1450    #[prost(uint64, tag = "40")]
1451    pub header_bytes_duplicate: u64,
1452    #[prost(double, tag = "14")]
1453    pub bitrate_duplicate: f64,
1454    #[prost(uint32, tag = "15")]
1455    pub packets_padding: u32,
1456    #[prost(double, tag = "16")]
1457    pub packet_padding_rate: f64,
1458    #[prost(uint64, tag = "17")]
1459    pub bytes_padding: u64,
1460    #[prost(uint64, tag = "41")]
1461    pub header_bytes_padding: u64,
1462    #[prost(double, tag = "18")]
1463    pub bitrate_padding: f64,
1464    #[prost(uint32, tag = "19")]
1465    pub packets_out_of_order: u32,
1466    #[prost(uint32, tag = "20")]
1467    pub frames: u32,
1468    #[prost(double, tag = "21")]
1469    pub frame_rate: f64,
1470    #[prost(double, tag = "22")]
1471    pub jitter_current: f64,
1472    #[prost(double, tag = "23")]
1473    pub jitter_max: f64,
1474    #[prost(map = "int32, uint32", tag = "24")]
1475    pub gap_histogram: ::std::collections::HashMap<i32, u32>,
1476    #[prost(uint32, tag = "25")]
1477    pub nacks: u32,
1478    #[prost(uint32, tag = "37")]
1479    pub nack_acks: u32,
1480    #[prost(uint32, tag = "26")]
1481    pub nack_misses: u32,
1482    #[prost(uint32, tag = "38")]
1483    pub nack_repeated: u32,
1484    #[prost(uint32, tag = "27")]
1485    pub plis: u32,
1486    #[prost(message, optional, tag = "28")]
1487    pub last_pli: ::core::option::Option<::pbjson_types::Timestamp>,
1488    #[prost(uint32, tag = "29")]
1489    pub firs: u32,
1490    #[prost(message, optional, tag = "30")]
1491    pub last_fir: ::core::option::Option<::pbjson_types::Timestamp>,
1492    #[prost(uint32, tag = "31")]
1493    pub rtt_current: u32,
1494    #[prost(uint32, tag = "32")]
1495    pub rtt_max: u32,
1496    #[prost(uint32, tag = "33")]
1497    pub key_frames: u32,
1498    #[prost(message, optional, tag = "34")]
1499    pub last_key_frame: ::core::option::Option<::pbjson_types::Timestamp>,
1500    #[prost(uint32, tag = "35")]
1501    pub layer_lock_plis: u32,
1502    #[prost(message, optional, tag = "36")]
1503    pub last_layer_lock_pli: ::core::option::Option<::pbjson_types::Timestamp>,
1504    #[prost(message, optional, tag = "44")]
1505    pub packet_drift: ::core::option::Option<RtpDrift>,
1506    #[prost(message, optional, tag = "45")]
1507    pub ntp_report_drift: ::core::option::Option<RtpDrift>,
1508    #[prost(message, optional, tag = "46")]
1509    pub rebased_report_drift: ::core::option::Option<RtpDrift>,
1510    #[prost(message, optional, tag = "47")]
1511    pub received_report_drift: ::core::option::Option<RtpDrift>,
1512    #[prost(uint32, tag = "48")]
1513    pub fec_packets: u32,
1514    #[prost(uint64, tag = "49")]
1515    pub fec_bytes: u64,
1516    #[prost(uint32, tag = "50")]
1517    pub fec_packets_discarded: u32,
1518    /// NEXT_ID: 52
1519    #[prost(uint32, tag = "51")]
1520    pub fec_packets_recovered: u32,
1521}
1522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1523pub struct RtcpSenderReportState {
1524    #[prost(uint32, tag = "1")]
1525    pub rtp_timestamp: u32,
1526    #[prost(uint64, tag = "2")]
1527    pub rtp_timestamp_ext: u64,
1528    #[prost(uint64, tag = "3")]
1529    pub ntp_timestamp: u64,
1530    /// time at which this happened
1531    #[prost(int64, tag = "4")]
1532    pub at: i64,
1533    #[prost(int64, tag = "5")]
1534    pub at_adjusted: i64,
1535    #[prost(uint32, tag = "6")]
1536    pub packets: u32,
1537    #[prost(uint64, tag = "7")]
1538    pub octets: u64,
1539}
1540#[derive(Clone, PartialEq, ::prost::Message)]
1541pub struct RtpForwarderState {
1542    #[prost(bool, tag = "1")]
1543    pub started: bool,
1544    #[prost(int32, tag = "2")]
1545    pub reference_layer_spatial: i32,
1546    #[prost(int64, tag = "3")]
1547    pub pre_start_time: i64,
1548    #[prost(uint64, tag = "4")]
1549    pub ext_first_timestamp: u64,
1550    #[prost(uint64, tag = "5")]
1551    pub dummy_start_timestamp_offset: u64,
1552    #[prost(message, optional, tag = "6")]
1553    pub rtp_munger: ::core::option::Option<RtpMungerState>,
1554    #[prost(message, repeated, tag = "8")]
1555    pub sender_report_state: ::prost::alloc::vec::Vec<RtcpSenderReportState>,
1556    #[prost(message, optional, tag = "9")]
1557    pub dependency_descriptor_forwarder: ::core::option::Option<DependencyDescriptorForwarderState>,
1558    #[prost(oneof = "rtp_forwarder_state::CodecMunger", tags = "7")]
1559    pub codec_munger: ::core::option::Option<rtp_forwarder_state::CodecMunger>,
1560}
1561/// Nested message and enum types in `RTPForwarderState`.
1562pub mod rtp_forwarder_state {
1563    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
1564    pub enum CodecMunger {
1565        #[prost(message, tag = "7")]
1566        Vp8Munger(super::Vp8MungerState),
1567    }
1568}
1569/// State of a forwarder that writes the dependency descriptor for the subscriber, so
1570/// its frame numbers continue on a migrated subscriber.
1571#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1572pub struct DependencyDescriptorForwarderState {
1573    /// highest extended frame number sent to the subscriber
1574    #[prost(uint64, tag = "1")]
1575    pub ext_last_frame_number: u64,
1576}
1577#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1578pub struct RtpMungerState {
1579    #[prost(uint64, tag = "1")]
1580    pub ext_last_sequence_number: u64,
1581    #[prost(uint64, tag = "2")]
1582    pub ext_second_last_sequence_number: u64,
1583    #[prost(uint64, tag = "3")]
1584    pub ext_last_timestamp: u64,
1585    #[prost(uint64, tag = "4")]
1586    pub ext_second_last_timestamp: u64,
1587    #[prost(bool, tag = "5")]
1588    pub last_marker: bool,
1589    #[prost(bool, tag = "6")]
1590    pub second_last_marker: bool,
1591}
1592#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1593pub struct Vp8MungerState {
1594    #[prost(int32, tag = "1")]
1595    pub ext_last_picture_id: i32,
1596    #[prost(bool, tag = "2")]
1597    pub picture_id_used: bool,
1598    #[prost(uint32, tag = "3")]
1599    pub last_tl0_pic_idx: u32,
1600    #[prost(bool, tag = "4")]
1601    pub tl0_pic_idx_used: bool,
1602    #[prost(bool, tag = "5")]
1603    pub tid_used: bool,
1604    #[prost(uint32, tag = "6")]
1605    pub last_key_idx: u32,
1606    #[prost(bool, tag = "7")]
1607    pub key_idx_used: bool,
1608}
1609#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1610pub struct TimedVersion {
1611    #[prost(int64, tag = "1")]
1612    pub unix_micro: i64,
1613    #[prost(int32, tag = "2")]
1614    pub ticks: i32,
1615}
1616#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1617pub struct DataStream {
1618}
1619/// Nested message and enum types in `DataStream`.
1620pub mod data_stream {
1621    /// header properties specific to text streams
1622    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1623    pub struct TextHeader {
1624        #[prost(enumeration = "OperationType", tag = "1")]
1625        pub operation_type: i32,
1626        /// Optional: Version for updates/edits
1627        #[prost(int32, tag = "2")]
1628        pub version: i32,
1629        /// Optional: Reply to specific message
1630        #[prost(string, tag = "3")]
1631        pub reply_to_stream_id: ::prost::alloc::string::String,
1632        /// file attachments for text streams
1633        #[prost(string, repeated, tag = "4")]
1634        pub attached_stream_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1635        /// true if the text has been generated by an agent from a participant's audio transcription
1636        #[prost(bool, tag = "5")]
1637        pub generated: bool,
1638    }
1639    /// header properties specific to byte or file streams
1640    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1641    pub struct ByteHeader {
1642        #[prost(string, tag = "1")]
1643        pub name: ::prost::alloc::string::String,
1644    }
1645    /// main DataStream.Header that contains a oneof for specific headers
1646    #[derive(Clone, PartialEq, ::prost::Message)]
1647    pub struct Header {
1648        /// unique identifier for this data stream
1649        #[prost(string, tag = "1")]
1650        pub stream_id: ::prost::alloc::string::String,
1651        /// using int64 for Unix timestamp
1652        #[prost(int64, tag = "2")]
1653        pub timestamp: i64,
1654        #[prost(string, tag = "3")]
1655        pub topic: ::prost::alloc::string::String,
1656        #[prost(string, tag = "4")]
1657        pub mime_type: ::prost::alloc::string::String,
1658        /// only populated for finite streams, if it's a stream of unknown size this stays empty
1659        #[prost(uint64, optional, tag = "5")]
1660        pub total_length: ::core::option::Option<u64>,
1661        ///   this is set on the DataPacket
1662        #[deprecated]
1663        #[prost(enumeration = "super::encryption::Type", tag = "7")]
1664        pub encryption_type: i32,
1665        /// user defined attributes map that can carry additional info
1666        #[prost(map = "string, string", tag = "8")]
1667        pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1668        /// Optional inline content so that a data stream can be sent as a single packet for short payloads.
1669        ///
1670        /// content as binary (bytes)
1671        #[prost(bytes = "vec", optional, tag = "11")]
1672        pub inline_content: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1673        #[prost(enumeration = "CompressionType", tag = "12")]
1674        pub compression: i32,
1675        /// oneof to choose between specific header types
1676        #[prost(oneof = "header::ContentHeader", tags = "9, 10")]
1677        pub content_header: ::core::option::Option<header::ContentHeader>,
1678    }
1679    /// Nested message and enum types in `Header`.
1680    pub mod header {
1681        /// oneof to choose between specific header types
1682        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1683        pub enum ContentHeader {
1684            #[prost(message, tag = "9")]
1685            TextHeader(super::TextHeader),
1686            #[prost(message, tag = "10")]
1687            ByteHeader(super::ByteHeader),
1688        }
1689    }
1690    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1691    pub struct Chunk {
1692        /// unique identifier for this data stream to map it to the correct header
1693        #[prost(string, tag = "1")]
1694        pub stream_id: ::prost::alloc::string::String,
1695        #[prost(uint64, tag = "2")]
1696        pub chunk_index: u64,
1697        /// content as binary (bytes)
1698        #[prost(bytes = "vec", tag = "3")]
1699        pub content: ::prost::alloc::vec::Vec<u8>,
1700        /// a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced
1701        #[prost(int32, tag = "4")]
1702        pub version: i32,
1703        /// this is set on the DataPacket
1704        #[deprecated]
1705        #[prost(bytes = "vec", optional, tag = "5")]
1706        pub iv: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1707    }
1708    #[derive(Clone, PartialEq, ::prost::Message)]
1709    pub struct Trailer {
1710        /// unique identifier for this data stream
1711        #[prost(string, tag = "1")]
1712        pub stream_id: ::prost::alloc::string::String,
1713        /// reason why the stream was closed (could contain "error" / "interrupted" / empty for expected end)
1714        #[prost(string, tag = "2")]
1715        pub reason: ::prost::alloc::string::String,
1716        /// finalizing updates for the stream, can also include additional insights for errors or endTime for transcription
1717        #[prost(map = "string, string", tag = "3")]
1718        pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1719    }
1720    /// enum for operation types (specific to TextHeader)
1721    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1722    #[repr(i32)]
1723    pub enum OperationType {
1724        Create = 0,
1725        Update = 1,
1726        Delete = 2,
1727        Reaction = 3,
1728    }
1729    impl OperationType {
1730        /// String value of the enum field names used in the ProtoBuf definition.
1731        ///
1732        /// The values are not transformed in any way and thus are considered stable
1733        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1734        pub fn as_str_name(&self) -> &'static str {
1735            match self {
1736                Self::Create => "CREATE",
1737                Self::Update => "UPDATE",
1738                Self::Delete => "DELETE",
1739                Self::Reaction => "REACTION",
1740            }
1741        }
1742        /// Creates an enum from field names used in the ProtoBuf definition.
1743        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1744            match value {
1745                "CREATE" => Some(Self::Create),
1746                "UPDATE" => Some(Self::Update),
1747                "DELETE" => Some(Self::Delete),
1748                "REACTION" => Some(Self::Reaction),
1749                _ => None,
1750            }
1751        }
1752    }
1753    /// The compression type of the whole data stream
1754    ///
1755    /// This will only get populated when send to participants with a
1756    /// client protocol >= 2 which advertise a client capability of CAP_COMPRESSION_DEFLATE_RAW
1757    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1758    #[repr(i32)]
1759    pub enum CompressionType {
1760        None = 0,
1761        /// DEFLATE_RAW = DEFLATE without header+checksum/trailer
1762        DeflateRaw = 1,
1763    }
1764    impl CompressionType {
1765        /// String value of the enum field names used in the ProtoBuf definition.
1766        ///
1767        /// The values are not transformed in any way and thus are considered stable
1768        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1769        pub fn as_str_name(&self) -> &'static str {
1770            match self {
1771                Self::None => "NONE",
1772                Self::DeflateRaw => "DEFLATE_RAW",
1773            }
1774        }
1775        /// Creates an enum from field names used in the ProtoBuf definition.
1776        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1777            match value {
1778                "NONE" => Some(Self::None),
1779                "DEFLATE_RAW" => Some(Self::DeflateRaw),
1780                _ => None,
1781            }
1782        }
1783    }
1784}
1785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1786pub struct FilterParams {
1787    #[prost(string, repeated, tag = "1")]
1788    pub include_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1789    #[prost(string, repeated, tag = "2")]
1790    pub exclude_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1791}
1792#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1793pub struct WebhookConfig {
1794    #[prost(string, tag = "1")]
1795    pub url: ::prost::alloc::string::String,
1796    #[prost(string, tag = "2")]
1797    pub signing_key: ::prost::alloc::string::String,
1798    #[prost(message, optional, tag = "3")]
1799    pub filter_params: ::core::option::Option<FilterParams>,
1800}
1801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1802pub struct SubscribedAudioCodec {
1803    #[prost(string, tag = "1")]
1804    pub codec: ::prost::alloc::string::String,
1805    #[prost(bool, tag = "2")]
1806    pub enabled: bool,
1807}
1808#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1809#[repr(i32)]
1810pub enum AudioCodec {
1811    DefaultAc = 0,
1812    Opus = 1,
1813    Aac = 2,
1814    AcMp3 = 3,
1815}
1816impl AudioCodec {
1817    /// String value of the enum field names used in the ProtoBuf definition.
1818    ///
1819    /// The values are not transformed in any way and thus are considered stable
1820    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1821    pub fn as_str_name(&self) -> &'static str {
1822        match self {
1823            Self::DefaultAc => "DEFAULT_AC",
1824            Self::Opus => "OPUS",
1825            Self::Aac => "AAC",
1826            Self::AcMp3 => "AC_MP3",
1827        }
1828    }
1829    /// Creates an enum from field names used in the ProtoBuf definition.
1830    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1831        match value {
1832            "DEFAULT_AC" => Some(Self::DefaultAc),
1833            "OPUS" => Some(Self::Opus),
1834            "AAC" => Some(Self::Aac),
1835            "AC_MP3" => Some(Self::AcMp3),
1836            _ => None,
1837        }
1838    }
1839}
1840#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1841#[repr(i32)]
1842pub enum VideoCodec {
1843    DefaultVc = 0,
1844    H264Baseline = 1,
1845    H264Main = 2,
1846    H264High = 3,
1847    Vp8 = 4,
1848}
1849impl VideoCodec {
1850    /// String value of the enum field names used in the ProtoBuf definition.
1851    ///
1852    /// The values are not transformed in any way and thus are considered stable
1853    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1854    pub fn as_str_name(&self) -> &'static str {
1855        match self {
1856            Self::DefaultVc => "DEFAULT_VC",
1857            Self::H264Baseline => "H264_BASELINE",
1858            Self::H264Main => "H264_MAIN",
1859            Self::H264High => "H264_HIGH",
1860            Self::Vp8 => "VP8",
1861        }
1862    }
1863    /// Creates an enum from field names used in the ProtoBuf definition.
1864    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1865        match value {
1866            "DEFAULT_VC" => Some(Self::DefaultVc),
1867            "H264_BASELINE" => Some(Self::H264Baseline),
1868            "H264_MAIN" => Some(Self::H264Main),
1869            "H264_HIGH" => Some(Self::H264High),
1870            "VP8" => Some(Self::Vp8),
1871            _ => None,
1872        }
1873    }
1874}
1875#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1876#[repr(i32)]
1877pub enum ImageCodec {
1878    IcDefault = 0,
1879    IcJpeg = 1,
1880}
1881impl ImageCodec {
1882    /// String value of the enum field names used in the ProtoBuf definition.
1883    ///
1884    /// The values are not transformed in any way and thus are considered stable
1885    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1886    pub fn as_str_name(&self) -> &'static str {
1887        match self {
1888            Self::IcDefault => "IC_DEFAULT",
1889            Self::IcJpeg => "IC_JPEG",
1890        }
1891    }
1892    /// Creates an enum from field names used in the ProtoBuf definition.
1893    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1894        match value {
1895            "IC_DEFAULT" => Some(Self::IcDefault),
1896            "IC_JPEG" => Some(Self::IcJpeg),
1897            _ => None,
1898        }
1899    }
1900}
1901/// Policy for publisher to handle subscribers that are unable to support the primary codec of a track
1902#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1903#[repr(i32)]
1904pub enum BackupCodecPolicy {
1905    /// default behavior, the track prefer to regress to backup codec and all subscribers will receive the backup codec,
1906    /// the sfu will try to regress codec if possible but not assured.
1907    PreferRegression = 0,
1908    /// encoding/send the primary and backup codec simultaneously
1909    Simulcast = 1,
1910    /// force the track to regress to backup codec, this option can be used in video conference or the publisher has limited bandwidth/encoding power
1911    Regression = 2,
1912}
1913impl BackupCodecPolicy {
1914    /// String value of the enum field names used in the ProtoBuf definition.
1915    ///
1916    /// The values are not transformed in any way and thus are considered stable
1917    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1918    pub fn as_str_name(&self) -> &'static str {
1919        match self {
1920            Self::PreferRegression => "PREFER_REGRESSION",
1921            Self::Simulcast => "SIMULCAST",
1922            Self::Regression => "REGRESSION",
1923        }
1924    }
1925    /// Creates an enum from field names used in the ProtoBuf definition.
1926    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1927        match value {
1928            "PREFER_REGRESSION" => Some(Self::PreferRegression),
1929            "SIMULCAST" => Some(Self::Simulcast),
1930            "REGRESSION" => Some(Self::Regression),
1931            _ => None,
1932        }
1933    }
1934}
1935#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1936#[repr(i32)]
1937pub enum TrackType {
1938    Audio = 0,
1939    Video = 1,
1940    Data = 2,
1941}
1942impl TrackType {
1943    /// String value of the enum field names used in the ProtoBuf definition.
1944    ///
1945    /// The values are not transformed in any way and thus are considered stable
1946    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1947    pub fn as_str_name(&self) -> &'static str {
1948        match self {
1949            Self::Audio => "AUDIO",
1950            Self::Video => "VIDEO",
1951            Self::Data => "DATA",
1952        }
1953    }
1954    /// Creates an enum from field names used in the ProtoBuf definition.
1955    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1956        match value {
1957            "AUDIO" => Some(Self::Audio),
1958            "VIDEO" => Some(Self::Video),
1959            "DATA" => Some(Self::Data),
1960            _ => None,
1961        }
1962    }
1963}
1964#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1965#[repr(i32)]
1966pub enum TrackSource {
1967    Unknown = 0,
1968    Camera = 1,
1969    Microphone = 2,
1970    ScreenShare = 3,
1971    ScreenShareAudio = 4,
1972}
1973impl TrackSource {
1974    /// String value of the enum field names used in the ProtoBuf definition.
1975    ///
1976    /// The values are not transformed in any way and thus are considered stable
1977    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1978    pub fn as_str_name(&self) -> &'static str {
1979        match self {
1980            Self::Unknown => "UNKNOWN",
1981            Self::Camera => "CAMERA",
1982            Self::Microphone => "MICROPHONE",
1983            Self::ScreenShare => "SCREEN_SHARE",
1984            Self::ScreenShareAudio => "SCREEN_SHARE_AUDIO",
1985        }
1986    }
1987    /// Creates an enum from field names used in the ProtoBuf definition.
1988    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1989        match value {
1990            "UNKNOWN" => Some(Self::Unknown),
1991            "CAMERA" => Some(Self::Camera),
1992            "MICROPHONE" => Some(Self::Microphone),
1993            "SCREEN_SHARE" => Some(Self::ScreenShare),
1994            "SCREEN_SHARE_AUDIO" => Some(Self::ScreenShareAudio),
1995            _ => None,
1996        }
1997    }
1998}
1999#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2000#[repr(i32)]
2001pub enum DataTrackExtensionId {
2002    DteiInvalid = 0,
2003    DteiE2ee = 1,
2004    DteiUserTimestamp = 2,
2005    DteiParticipantSid = 255,
2006}
2007impl DataTrackExtensionId {
2008    /// String value of the enum field names used in the ProtoBuf definition.
2009    ///
2010    /// The values are not transformed in any way and thus are considered stable
2011    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2012    pub fn as_str_name(&self) -> &'static str {
2013        match self {
2014            Self::DteiInvalid => "DTEI_INVALID",
2015            Self::DteiE2ee => "DTEI_E2EE",
2016            Self::DteiUserTimestamp => "DTEI_USER_TIMESTAMP",
2017            Self::DteiParticipantSid => "DTEI_PARTICIPANT_SID",
2018        }
2019    }
2020    /// Creates an enum from field names used in the ProtoBuf definition.
2021    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2022        match value {
2023            "DTEI_INVALID" => Some(Self::DteiInvalid),
2024            "DTEI_E2EE" => Some(Self::DteiE2ee),
2025            "DTEI_USER_TIMESTAMP" => Some(Self::DteiUserTimestamp),
2026            "DTEI_PARTICIPANT_SID" => Some(Self::DteiParticipantSid),
2027            _ => None,
2028        }
2029    }
2030}
2031#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2032#[repr(i32)]
2033pub enum VideoQuality {
2034    Low = 0,
2035    Medium = 1,
2036    High = 2,
2037    Off = 3,
2038}
2039impl VideoQuality {
2040    /// String value of the enum field names used in the ProtoBuf definition.
2041    ///
2042    /// The values are not transformed in any way and thus are considered stable
2043    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2044    pub fn as_str_name(&self) -> &'static str {
2045        match self {
2046            Self::Low => "LOW",
2047            Self::Medium => "MEDIUM",
2048            Self::High => "HIGH",
2049            Self::Off => "OFF",
2050        }
2051    }
2052    /// Creates an enum from field names used in the ProtoBuf definition.
2053    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2054        match value {
2055            "LOW" => Some(Self::Low),
2056            "MEDIUM" => Some(Self::Medium),
2057            "HIGH" => Some(Self::High),
2058            "OFF" => Some(Self::Off),
2059            _ => None,
2060        }
2061    }
2062}
2063#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2064#[repr(i32)]
2065pub enum ConnectionQuality {
2066    Poor = 0,
2067    Good = 1,
2068    Excellent = 2,
2069    Lost = 3,
2070}
2071impl ConnectionQuality {
2072    /// String value of the enum field names used in the ProtoBuf definition.
2073    ///
2074    /// The values are not transformed in any way and thus are considered stable
2075    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2076    pub fn as_str_name(&self) -> &'static str {
2077        match self {
2078            Self::Poor => "POOR",
2079            Self::Good => "GOOD",
2080            Self::Excellent => "EXCELLENT",
2081            Self::Lost => "LOST",
2082        }
2083    }
2084    /// Creates an enum from field names used in the ProtoBuf definition.
2085    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2086        match value {
2087            "POOR" => Some(Self::Poor),
2088            "GOOD" => Some(Self::Good),
2089            "EXCELLENT" => Some(Self::Excellent),
2090            "LOST" => Some(Self::Lost),
2091            _ => None,
2092        }
2093    }
2094}
2095#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2096#[repr(i32)]
2097pub enum ClientConfigSetting {
2098    Unset = 0,
2099    Disabled = 1,
2100    Enabled = 2,
2101}
2102impl ClientConfigSetting {
2103    /// String value of the enum field names used in the ProtoBuf definition.
2104    ///
2105    /// The values are not transformed in any way and thus are considered stable
2106    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2107    pub fn as_str_name(&self) -> &'static str {
2108        match self {
2109            Self::Unset => "UNSET",
2110            Self::Disabled => "DISABLED",
2111            Self::Enabled => "ENABLED",
2112        }
2113    }
2114    /// Creates an enum from field names used in the ProtoBuf definition.
2115    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2116        match value {
2117            "UNSET" => Some(Self::Unset),
2118            "DISABLED" => Some(Self::Disabled),
2119            "ENABLED" => Some(Self::Enabled),
2120            _ => None,
2121        }
2122    }
2123}
2124#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2125#[repr(i32)]
2126pub enum DisconnectReason {
2127    UnknownReason = 0,
2128    /// the client initiated the disconnect
2129    ClientInitiated = 1,
2130    /// another participant with the same identity has joined the room
2131    DuplicateIdentity = 2,
2132    /// the server instance is shutting down
2133    ServerShutdown = 3,
2134    /// RoomService.RemoveParticipant was called
2135    ParticipantRemoved = 4,
2136    /// RoomService.DeleteRoom was called
2137    RoomDeleted = 5,
2138    /// the client is attempting to resume a session, but server is not aware of it
2139    StateMismatch = 6,
2140    /// client was unable to connect fully
2141    JoinFailure = 7,
2142    /// Cloud-only, the server requested Participant to migrate the connection elsewhere
2143    Migration = 8,
2144    /// the signal websocket was closed unexpectedly
2145    SignalClose = 9,
2146    /// the room was closed, due to all Standard and Ingress participants having left
2147    RoomClosed = 10,
2148    /// SIP callee did not respond in time
2149    UserUnavailable = 11,
2150    /// SIP callee rejected the call (busy)
2151    UserRejected = 12,
2152    /// SIP protocol failure or unexpected response
2153    SipTrunkFailure = 13,
2154    /// server timed out a participant session
2155    ConnectionTimeout = 14,
2156    /// media stream failure or media timeout
2157    MediaFailure = 15,
2158    /// agent encountered an error
2159    AgentError = 16,
2160}
2161impl DisconnectReason {
2162    /// String value of the enum field names used in the ProtoBuf definition.
2163    ///
2164    /// The values are not transformed in any way and thus are considered stable
2165    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2166    pub fn as_str_name(&self) -> &'static str {
2167        match self {
2168            Self::UnknownReason => "UNKNOWN_REASON",
2169            Self::ClientInitiated => "CLIENT_INITIATED",
2170            Self::DuplicateIdentity => "DUPLICATE_IDENTITY",
2171            Self::ServerShutdown => "SERVER_SHUTDOWN",
2172            Self::ParticipantRemoved => "PARTICIPANT_REMOVED",
2173            Self::RoomDeleted => "ROOM_DELETED",
2174            Self::StateMismatch => "STATE_MISMATCH",
2175            Self::JoinFailure => "JOIN_FAILURE",
2176            Self::Migration => "MIGRATION",
2177            Self::SignalClose => "SIGNAL_CLOSE",
2178            Self::RoomClosed => "ROOM_CLOSED",
2179            Self::UserUnavailable => "USER_UNAVAILABLE",
2180            Self::UserRejected => "USER_REJECTED",
2181            Self::SipTrunkFailure => "SIP_TRUNK_FAILURE",
2182            Self::ConnectionTimeout => "CONNECTION_TIMEOUT",
2183            Self::MediaFailure => "MEDIA_FAILURE",
2184            Self::AgentError => "AGENT_ERROR",
2185        }
2186    }
2187    /// Creates an enum from field names used in the ProtoBuf definition.
2188    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2189        match value {
2190            "UNKNOWN_REASON" => Some(Self::UnknownReason),
2191            "CLIENT_INITIATED" => Some(Self::ClientInitiated),
2192            "DUPLICATE_IDENTITY" => Some(Self::DuplicateIdentity),
2193            "SERVER_SHUTDOWN" => Some(Self::ServerShutdown),
2194            "PARTICIPANT_REMOVED" => Some(Self::ParticipantRemoved),
2195            "ROOM_DELETED" => Some(Self::RoomDeleted),
2196            "STATE_MISMATCH" => Some(Self::StateMismatch),
2197            "JOIN_FAILURE" => Some(Self::JoinFailure),
2198            "MIGRATION" => Some(Self::Migration),
2199            "SIGNAL_CLOSE" => Some(Self::SignalClose),
2200            "ROOM_CLOSED" => Some(Self::RoomClosed),
2201            "USER_UNAVAILABLE" => Some(Self::UserUnavailable),
2202            "USER_REJECTED" => Some(Self::UserRejected),
2203            "SIP_TRUNK_FAILURE" => Some(Self::SipTrunkFailure),
2204            "CONNECTION_TIMEOUT" => Some(Self::ConnectionTimeout),
2205            "MEDIA_FAILURE" => Some(Self::MediaFailure),
2206            "AGENT_ERROR" => Some(Self::AgentError),
2207            _ => None,
2208        }
2209    }
2210}
2211/// why a room ended, reported on room-ended telemetry
2212#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2213#[repr(i32)]
2214pub enum RoomEndReason {
2215    RoomEndUnknown = 0,
2216    /// RoomService.DeleteRoom was called
2217    RoomEndApiDelete = 1,
2218    /// the room sat empty past its empty or departure timeout
2219    RoomEndIdleTimeout = 2,
2220    /// the server instance is shutting down
2221    RoomEndServerShutdown = 3,
2222    /// the room was restarted or replaced elsewhere
2223    RoomEndSuperseded = 4,
2224    /// the room failed to finish opening
2225    RoomEndOpenFailed = 5,
2226}
2227impl RoomEndReason {
2228    /// String value of the enum field names used in the ProtoBuf definition.
2229    ///
2230    /// The values are not transformed in any way and thus are considered stable
2231    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2232    pub fn as_str_name(&self) -> &'static str {
2233        match self {
2234            Self::RoomEndUnknown => "ROOM_END_UNKNOWN",
2235            Self::RoomEndApiDelete => "ROOM_END_API_DELETE",
2236            Self::RoomEndIdleTimeout => "ROOM_END_IDLE_TIMEOUT",
2237            Self::RoomEndServerShutdown => "ROOM_END_SERVER_SHUTDOWN",
2238            Self::RoomEndSuperseded => "ROOM_END_SUPERSEDED",
2239            Self::RoomEndOpenFailed => "ROOM_END_OPEN_FAILED",
2240        }
2241    }
2242    /// Creates an enum from field names used in the ProtoBuf definition.
2243    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2244        match value {
2245            "ROOM_END_UNKNOWN" => Some(Self::RoomEndUnknown),
2246            "ROOM_END_API_DELETE" => Some(Self::RoomEndApiDelete),
2247            "ROOM_END_IDLE_TIMEOUT" => Some(Self::RoomEndIdleTimeout),
2248            "ROOM_END_SERVER_SHUTDOWN" => Some(Self::RoomEndServerShutdown),
2249            "ROOM_END_SUPERSEDED" => Some(Self::RoomEndSuperseded),
2250            "ROOM_END_OPEN_FAILED" => Some(Self::RoomEndOpenFailed),
2251            _ => None,
2252        }
2253    }
2254}
2255#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2256#[repr(i32)]
2257pub enum ReconnectReason {
2258    RrUnknown = 0,
2259    RrSignalDisconnected = 1,
2260    RrPublisherFailed = 2,
2261    RrSubscriberFailed = 3,
2262    RrSwitchCandidate = 4,
2263}
2264impl ReconnectReason {
2265    /// String value of the enum field names used in the ProtoBuf definition.
2266    ///
2267    /// The values are not transformed in any way and thus are considered stable
2268    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2269    pub fn as_str_name(&self) -> &'static str {
2270        match self {
2271            Self::RrUnknown => "RR_UNKNOWN",
2272            Self::RrSignalDisconnected => "RR_SIGNAL_DISCONNECTED",
2273            Self::RrPublisherFailed => "RR_PUBLISHER_FAILED",
2274            Self::RrSubscriberFailed => "RR_SUBSCRIBER_FAILED",
2275            Self::RrSwitchCandidate => "RR_SWITCH_CANDIDATE",
2276        }
2277    }
2278    /// Creates an enum from field names used in the ProtoBuf definition.
2279    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2280        match value {
2281            "RR_UNKNOWN" => Some(Self::RrUnknown),
2282            "RR_SIGNAL_DISCONNECTED" => Some(Self::RrSignalDisconnected),
2283            "RR_PUBLISHER_FAILED" => Some(Self::RrPublisherFailed),
2284            "RR_SUBSCRIBER_FAILED" => Some(Self::RrSubscriberFailed),
2285            "RR_SWITCH_CANDIDATE" => Some(Self::RrSwitchCandidate),
2286            _ => None,
2287        }
2288    }
2289}
2290#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2291#[repr(i32)]
2292pub enum SubscriptionError {
2293    SeUnknown = 0,
2294    SeCodecUnsupported = 1,
2295    SeTrackNotfound = 2,
2296}
2297impl SubscriptionError {
2298    /// String value of the enum field names used in the ProtoBuf definition.
2299    ///
2300    /// The values are not transformed in any way and thus are considered stable
2301    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2302    pub fn as_str_name(&self) -> &'static str {
2303        match self {
2304            Self::SeUnknown => "SE_UNKNOWN",
2305            Self::SeCodecUnsupported => "SE_CODEC_UNSUPPORTED",
2306            Self::SeTrackNotfound => "SE_TRACK_NOTFOUND",
2307        }
2308    }
2309    /// Creates an enum from field names used in the ProtoBuf definition.
2310    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2311        match value {
2312            "SE_UNKNOWN" => Some(Self::SeUnknown),
2313            "SE_CODEC_UNSUPPORTED" => Some(Self::SeCodecUnsupported),
2314            "SE_TRACK_NOTFOUND" => Some(Self::SeTrackNotfound),
2315            _ => None,
2316        }
2317    }
2318}
2319#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2320#[repr(i32)]
2321pub enum AudioTrackFeature {
2322    TfStereo = 0,
2323    TfNoDtx = 1,
2324    TfAutoGainControl = 2,
2325    TfEchoCancellation = 3,
2326    TfNoiseSuppression = 4,
2327    TfEnhancedNoiseCancellation = 5,
2328    /// client will buffer audio once available and send it to the server via bytes stream once connected
2329    TfPreconnectBuffer = 6,
2330}
2331impl AudioTrackFeature {
2332    /// String value of the enum field names used in the ProtoBuf definition.
2333    ///
2334    /// The values are not transformed in any way and thus are considered stable
2335    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2336    pub fn as_str_name(&self) -> &'static str {
2337        match self {
2338            Self::TfStereo => "TF_STEREO",
2339            Self::TfNoDtx => "TF_NO_DTX",
2340            Self::TfAutoGainControl => "TF_AUTO_GAIN_CONTROL",
2341            Self::TfEchoCancellation => "TF_ECHO_CANCELLATION",
2342            Self::TfNoiseSuppression => "TF_NOISE_SUPPRESSION",
2343            Self::TfEnhancedNoiseCancellation => "TF_ENHANCED_NOISE_CANCELLATION",
2344            Self::TfPreconnectBuffer => "TF_PRECONNECT_BUFFER",
2345        }
2346    }
2347    /// Creates an enum from field names used in the ProtoBuf definition.
2348    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2349        match value {
2350            "TF_STEREO" => Some(Self::TfStereo),
2351            "TF_NO_DTX" => Some(Self::TfNoDtx),
2352            "TF_AUTO_GAIN_CONTROL" => Some(Self::TfAutoGainControl),
2353            "TF_ECHO_CANCELLATION" => Some(Self::TfEchoCancellation),
2354            "TF_NOISE_SUPPRESSION" => Some(Self::TfNoiseSuppression),
2355            "TF_ENHANCED_NOISE_CANCELLATION" => Some(Self::TfEnhancedNoiseCancellation),
2356            "TF_PRECONNECT_BUFFER" => Some(Self::TfPreconnectBuffer),
2357            _ => None,
2358        }
2359    }
2360}
2361#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2362#[repr(i32)]
2363pub enum PacketTrailerFeature {
2364    PtfUserTimestamp = 0,
2365    PtfFrameId = 1,
2366    PtfUserData = 2,
2367}
2368impl PacketTrailerFeature {
2369    /// String value of the enum field names used in the ProtoBuf definition.
2370    ///
2371    /// The values are not transformed in any way and thus are considered stable
2372    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2373    pub fn as_str_name(&self) -> &'static str {
2374        match self {
2375            Self::PtfUserTimestamp => "PTF_USER_TIMESTAMP",
2376            Self::PtfFrameId => "PTF_FRAME_ID",
2377            Self::PtfUserData => "PTF_USER_DATA",
2378        }
2379    }
2380    /// Creates an enum from field names used in the ProtoBuf definition.
2381    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2382        match value {
2383            "PTF_USER_TIMESTAMP" => Some(Self::PtfUserTimestamp),
2384            "PTF_FRAME_ID" => Some(Self::PtfFrameId),
2385            "PTF_USER_DATA" => Some(Self::PtfUserData),
2386            _ => None,
2387        }
2388    }
2389}
2390// --- Core Request ---
2391
2392#[derive(Clone, PartialEq, ::prost::Message)]
2393pub struct StartEgressRequest {
2394    #[prost(string, tag = "1")]
2395    pub room_name: ::prost::alloc::string::String,
2396    /// At least one required
2397    #[prost(message, repeated, tag = "7")]
2398    pub outputs: ::prost::alloc::vec::Vec<Output>,
2399    /// Request-level storage default
2400    #[prost(message, optional, tag = "8")]
2401    pub storage: ::core::option::Option<StorageConfig>,
2402    /// Optional additional webhook config
2403    #[prost(message, repeated, tag = "9")]
2404    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
2405    #[prost(oneof = "start_egress_request::Source", tags = "2, 3, 4")]
2406    pub source: ::core::option::Option<start_egress_request::Source>,
2407    /// Optional — default H264_720P_30
2408    #[prost(oneof = "start_egress_request::Encoding", tags = "5, 6")]
2409    pub encoding: ::core::option::Option<start_egress_request::Encoding>,
2410}
2411/// Nested message and enum types in `StartEgressRequest`.
2412pub mod start_egress_request {
2413    #[derive(Clone, PartialEq, ::prost::Oneof)]
2414    pub enum Source {
2415        #[prost(message, tag = "2")]
2416        Template(super::TemplateSource),
2417        #[prost(message, tag = "3")]
2418        Web(super::WebSource),
2419        #[prost(message, tag = "4")]
2420        Media(super::MediaSource),
2421    }
2422    /// Optional — default H264_720P_30
2423    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
2424    pub enum Encoding {
2425        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "5")]
2426        Preset(i32),
2427        #[prost(message, tag = "6")]
2428        Advanced(super::EncodingOptions),
2429    }
2430}
2431// --- Source Types ---
2432
2433/// Room composite recording via layout template.
2434/// Service generates token, constructs recorder URL, awaits start signal.
2435#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2436pub struct TemplateSource {
2437    #[prost(string, tag = "1")]
2438    pub layout: ::prost::alloc::string::String,
2439    #[prost(bool, tag = "2")]
2440    pub audio_only: bool,
2441    #[prost(bool, tag = "3")]
2442    pub video_only: bool,
2443    #[prost(string, tag = "4")]
2444    pub custom_base_url: ::prost::alloc::string::String,
2445}
2446/// Record a custom URL via headless browser.
2447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2448pub struct WebSource {
2449    #[prost(string, tag = "1")]
2450    pub url: ::prost::alloc::string::String,
2451    #[prost(bool, tag = "2")]
2452    pub audio_only: bool,
2453    #[prost(bool, tag = "3")]
2454    pub video_only: bool,
2455    #[prost(bool, tag = "4")]
2456    pub await_start_signal: bool,
2457}
2458/// Capture tracks directly from a room via SDK.
2459/// Unifies deprecated Participant, TrackComposite, and Track egress.
2460#[derive(Clone, PartialEq, ::prost::Message)]
2461pub struct MediaSource {
2462    #[prost(message, optional, tag = "3")]
2463    pub audio: ::core::option::Option<AudioConfig>,
2464    #[prost(message, optional, tag = "4")]
2465    pub data: ::core::option::Option<DataConfig>,
2466    #[prost(oneof = "media_source::Video", tags = "1, 2, 5")]
2467    pub video: ::core::option::Option<media_source::Video>,
2468}
2469/// Nested message and enum types in `MediaSource`.
2470pub mod media_source {
2471    #[derive(Clone, PartialEq, ::prost::Oneof)]
2472    pub enum Video {
2473        #[prost(string, tag = "1")]
2474        VideoTrackId(::prost::alloc::string::String),
2475        #[prost(message, tag = "2")]
2476        ParticipantVideo(super::ParticipantVideo),
2477        /// Multiple independent video tracks; requires an MCAP file output
2478        #[prost(message, tag = "5")]
2479        Videos(super::VideoConfig),
2480    }
2481}
2482// --- Video Configuration ---
2483
2484#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2485pub struct ParticipantVideo {
2486    #[prost(string, tag = "1")]
2487    pub identity: ::prost::alloc::string::String,
2488    #[prost(bool, tag = "2")]
2489    pub prefer_screen_share: bool,
2490}
2491#[derive(Clone, PartialEq, ::prost::Message)]
2492pub struct VideoConfig {
2493    #[prost(bool, tag = "1")]
2494    pub capture_all: bool,
2495    #[prost(message, repeated, tag = "2")]
2496    pub selectors: ::prost::alloc::vec::Vec<VideoSelector>,
2497}
2498#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2499pub struct VideoSelector {
2500    /// Narrows the match to tracks with this name; alone, matches it from any participant
2501    #[prost(string, tag = "3")]
2502    pub track_name: ::prost::alloc::string::String,
2503    /// Drop matching tracks, overriding capture_all and other matches
2504    #[prost(bool, tag = "4")]
2505    pub exclude: bool,
2506    #[prost(oneof = "video_selector::Match", tags = "1, 2")]
2507    pub r#match: ::core::option::Option<video_selector::Match>,
2508}
2509/// Nested message and enum types in `VideoSelector`.
2510pub mod video_selector {
2511    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2512    pub enum Match {
2513        #[prost(string, tag = "1")]
2514        TrackId(::prost::alloc::string::String),
2515        #[prost(string, tag = "2")]
2516        ParticipantIdentity(::prost::alloc::string::String),
2517    }
2518}
2519// --- Audio Configuration ---
2520
2521/// Unified audio selection and channel routing.
2522/// Each route specifies both which audio to capture and which channel to output to.
2523#[derive(Clone, PartialEq, ::prost::Message)]
2524pub struct AudioConfig {
2525    /// If true, all unmatched audio is recorded to both channels
2526    #[prost(bool, tag = "1")]
2527    pub capture_all: bool,
2528    #[prost(message, repeated, tag = "2")]
2529    pub routes: ::prost::alloc::vec::Vec<AudioRoute>,
2530}
2531#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2532pub struct AudioRoute {
2533    /// Narrows the match to tracks with this name; alone, matches it from any participant
2534    #[prost(string, tag = "5")]
2535    pub track_name: ::prost::alloc::string::String,
2536    /// Drop matching tracks, overriding capture_all and other routes
2537    #[prost(bool, tag = "6")]
2538    pub exclude: bool,
2539    #[prost(enumeration = "AudioChannel", tag = "4")]
2540    pub channel: i32,
2541    #[prost(oneof = "audio_route::Match", tags = "1, 2, 3")]
2542    pub r#match: ::core::option::Option<audio_route::Match>,
2543}
2544/// Nested message and enum types in `AudioRoute`.
2545pub mod audio_route {
2546    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2547    pub enum Match {
2548        #[prost(string, tag = "1")]
2549        TrackId(::prost::alloc::string::String),
2550        #[prost(string, tag = "2")]
2551        ParticipantIdentity(::prost::alloc::string::String),
2552        #[prost(enumeration = "super::participant_info::Kind", tag = "3")]
2553        ParticipantKind(i32),
2554    }
2555}
2556// --- Data Track Configuration ---
2557
2558#[derive(Clone, PartialEq, ::prost::Message)]
2559pub struct DataConfig {
2560    #[prost(bool, tag = "1")]
2561    pub capture_all: bool,
2562    #[prost(message, repeated, tag = "2")]
2563    pub selectors: ::prost::alloc::vec::Vec<DataSelector>,
2564}
2565#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2566pub struct DataSelector {
2567    /// Narrows the match to tracks with this name; alone, matches it from any participant
2568    #[prost(string, tag = "3")]
2569    pub track_name: ::prost::alloc::string::String,
2570    /// Drop matching tracks, overriding capture_all and other matches
2571    #[prost(bool, tag = "4")]
2572    pub exclude: bool,
2573    #[prost(oneof = "data_selector::Match", tags = "1, 2")]
2574    pub r#match: ::core::option::Option<data_selector::Match>,
2575}
2576/// Nested message and enum types in `DataSelector`.
2577pub mod data_selector {
2578    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2579    pub enum Match {
2580        #[prost(string, tag = "1")]
2581        TrackId(::prost::alloc::string::String),
2582        #[prost(string, tag = "2")]
2583        ParticipantIdentity(::prost::alloc::string::String),
2584    }
2585}
2586#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2587pub struct EncodingOptions {
2588    /// (default 1920)
2589    #[prost(int32, tag = "1")]
2590    pub width: i32,
2591    /// (default 1080)
2592    #[prost(int32, tag = "2")]
2593    pub height: i32,
2594    /// (default 24)
2595    #[prost(int32, tag = "3")]
2596    pub depth: i32,
2597    /// (default 30)
2598    #[prost(int32, tag = "4")]
2599    pub framerate: i32,
2600    /// (default OPUS)
2601    #[prost(enumeration = "AudioCodec", tag = "5")]
2602    pub audio_codec: i32,
2603    /// (default 128)
2604    #[prost(int32, tag = "6")]
2605    pub audio_bitrate: i32,
2606    /// (default 44100)
2607    #[prost(int32, tag = "7")]
2608    pub audio_frequency: i32,
2609    /// (default H264_MAIN)
2610    #[prost(enumeration = "VideoCodec", tag = "8")]
2611    pub video_codec: i32,
2612    /// (default 4500)
2613    #[prost(int32, tag = "9")]
2614    pub video_bitrate: i32,
2615    /// in seconds (default 4s for streaming, segment duration for segmented output, encoder default for files)
2616    #[prost(double, tag = "10")]
2617    pub key_frame_interval: f64,
2618    /// --- Deprecated ---
2619    ///
2620    /// quality setting on audio encoder
2621    #[deprecated]
2622    #[prost(int32, tag = "11")]
2623    pub audio_quality: i32,
2624    /// quality setting on video encoder
2625    #[deprecated]
2626    #[prost(int32, tag = "12")]
2627    pub video_quality: i32,
2628}
2629// --- Output Types ---
2630
2631#[derive(Clone, PartialEq, ::prost::Message)]
2632pub struct Output {
2633    /// Per-output storage override (falls back to request, then server)
2634    #[prost(message, optional, tag = "6")]
2635    pub storage: ::core::option::Option<StorageConfig>,
2636    #[prost(oneof = "output::Config", tags = "1, 2, 3, 4")]
2637    pub config: ::core::option::Option<output::Config>,
2638}
2639/// Nested message and enum types in `Output`.
2640pub mod output {
2641    #[derive(Clone, PartialEq, ::prost::Oneof)]
2642    pub enum Config {
2643        #[prost(message, tag = "1")]
2644        File(super::FileOutput),
2645        #[prost(message, tag = "2")]
2646        Stream(super::StreamOutput),
2647        #[prost(message, tag = "3")]
2648        Segments(super::SegmentedFileOutput),
2649        /// TODO: DataOutput data = 5;
2650        #[prost(message, tag = "4")]
2651        Images(super::ImageOutput),
2652    }
2653}
2654/// Unified file output — replaces v1 EncodedFileOutput and DirectFileOutput.
2655/// Whether transcoded depends on encoding options on the request.
2656#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2657pub struct FileOutput {
2658    #[prost(enumeration = "EncodedFileType", tag = "1")]
2659    pub file_type: i32,
2660    #[prost(string, tag = "2")]
2661    pub filepath: ::prost::alloc::string::String,
2662    #[prost(bool, tag = "3")]
2663    pub disable_manifest: bool,
2664}
2665#[derive(Clone, PartialEq, ::prost::Message)]
2666pub struct StreamOutput {
2667    /// required
2668    #[prost(enumeration = "StreamProtocol", tag = "1")]
2669    pub protocol: i32,
2670    /// urls or destinations required
2671    #[prost(string, repeated, tag = "2")]
2672    pub urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2673    /// urls or destinations required
2674    #[prost(message, repeated, tag = "3")]
2675    pub destinations: ::prost::alloc::vec::Vec<StreamDestination>,
2676}
2677#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2678pub struct StreamDestination {
2679    /// required
2680    #[prost(string, tag = "1")]
2681    pub id: ::prost::alloc::string::String,
2682    /// required
2683    #[prost(string, tag = "2")]
2684    pub url: ::prost::alloc::string::String,
2685}
2686/// Used to generate HLS segments or other kind of segmented output
2687#[derive(Clone, PartialEq, ::prost::Message)]
2688pub struct SegmentedFileOutput {
2689    /// (optional)
2690    #[prost(enumeration = "SegmentedFileProtocol", tag = "1")]
2691    pub protocol: i32,
2692    /// (optional)
2693    #[prost(string, tag = "2")]
2694    pub filename_prefix: ::prost::alloc::string::String,
2695    /// (optional)
2696    #[prost(string, tag = "3")]
2697    pub playlist_name: ::prost::alloc::string::String,
2698    /// (optional, disabled if not provided). Path of a live playlist
2699    #[prost(string, tag = "11")]
2700    pub live_playlist_name: ::prost::alloc::string::String,
2701    /// in seconds (optional)
2702    #[prost(uint32, tag = "4")]
2703    pub segment_duration: u32,
2704    /// (optional, default INDEX)
2705    #[prost(enumeration = "SegmentedFileSuffix", tag = "10")]
2706    pub filename_suffix: i32,
2707    /// disable upload of manifest file (default false)
2708    #[prost(bool, tag = "8")]
2709    pub disable_manifest: bool,
2710    /// TODO: deprecate
2711    #[prost(oneof = "segmented_file_output::Output", tags = "5, 6, 7, 9")]
2712    pub output: ::core::option::Option<segmented_file_output::Output>,
2713}
2714/// Nested message and enum types in `SegmentedFileOutput`.
2715pub mod segmented_file_output {
2716    /// TODO: deprecate
2717    #[derive(Clone, PartialEq, ::prost::Oneof)]
2718    pub enum Output {
2719        #[prost(message, tag = "5")]
2720        S3(super::S3Upload),
2721        #[prost(message, tag = "6")]
2722        Gcp(super::GcpUpload),
2723        #[prost(message, tag = "7")]
2724        Azure(super::AzureBlobUpload),
2725        #[prost(message, tag = "9")]
2726        AliOss(super::AliOssUpload),
2727    }
2728}
2729/// Capture images at a specified interval
2730#[derive(Clone, PartialEq, ::prost::Message)]
2731pub struct ImageOutput {
2732    /// in seconds (required)
2733    #[prost(uint32, tag = "1")]
2734    pub capture_interval: u32,
2735    /// (optional, defaults to track width)
2736    #[prost(int32, tag = "2")]
2737    pub width: i32,
2738    /// (optional, defaults to track height)
2739    #[prost(int32, tag = "3")]
2740    pub height: i32,
2741    /// (optional)
2742    #[prost(string, tag = "4")]
2743    pub filename_prefix: ::prost::alloc::string::String,
2744    /// (optional, default INDEX)
2745    #[prost(enumeration = "ImageFileSuffix", tag = "5")]
2746    pub filename_suffix: i32,
2747    /// (optional)
2748    #[prost(enumeration = "ImageCodec", tag = "6")]
2749    pub image_codec: i32,
2750    /// disable upload of manifest file (default false)
2751    #[prost(bool, tag = "7")]
2752    pub disable_manifest: bool,
2753    /// TODO: deprecate
2754    #[prost(oneof = "image_output::Output", tags = "8, 9, 10, 11")]
2755    pub output: ::core::option::Option<image_output::Output>,
2756}
2757/// Nested message and enum types in `ImageOutput`.
2758pub mod image_output {
2759    /// TODO: deprecate
2760    #[derive(Clone, PartialEq, ::prost::Oneof)]
2761    pub enum Output {
2762        #[prost(message, tag = "8")]
2763        S3(super::S3Upload),
2764        #[prost(message, tag = "9")]
2765        Gcp(super::GcpUpload),
2766        #[prost(message, tag = "10")]
2767        Azure(super::AzureBlobUpload),
2768        #[prost(message, tag = "11")]
2769        AliOss(super::AliOssUpload),
2770    }
2771}
2772// --- Storage ---
2773
2774#[derive(Clone, PartialEq, ::prost::Message)]
2775pub struct StorageConfig {
2776    #[prost(oneof = "storage_config::Provider", tags = "1, 2, 3, 4")]
2777    pub provider: ::core::option::Option<storage_config::Provider>,
2778}
2779/// Nested message and enum types in `StorageConfig`.
2780pub mod storage_config {
2781    #[derive(Clone, PartialEq, ::prost::Oneof)]
2782    pub enum Provider {
2783        #[prost(message, tag = "1")]
2784        S3(super::S3Upload),
2785        #[prost(message, tag = "2")]
2786        Gcp(super::GcpUpload),
2787        #[prost(message, tag = "3")]
2788        Azure(super::AzureBlobUpload),
2789        #[prost(message, tag = "4")]
2790        AliOss(super::AliOssUpload),
2791    }
2792}
2793#[derive(Clone, PartialEq, ::prost::Message)]
2794pub struct S3Upload {
2795    #[prost(string, tag = "1")]
2796    pub access_key: ::prost::alloc::string::String,
2797    #[prost(string, tag = "2")]
2798    pub secret: ::prost::alloc::string::String,
2799    #[prost(string, tag = "11")]
2800    pub session_token: ::prost::alloc::string::String,
2801    /// 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
2802    #[prost(string, tag = "12")]
2803    pub assume_role_arn: ::prost::alloc::string::String,
2804    /// ExternalID to use when assuming role for upload
2805    #[prost(string, tag = "13")]
2806    pub assume_role_external_id: ::prost::alloc::string::String,
2807    #[prost(string, tag = "3")]
2808    pub region: ::prost::alloc::string::String,
2809    #[prost(string, tag = "4")]
2810    pub endpoint: ::prost::alloc::string::String,
2811    #[prost(string, tag = "5")]
2812    pub bucket: ::prost::alloc::string::String,
2813    #[prost(bool, tag = "6")]
2814    pub force_path_style: bool,
2815    #[prost(map = "string, string", tag = "7")]
2816    pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2817    #[prost(string, tag = "8")]
2818    pub tagging: ::prost::alloc::string::String,
2819    /// Content-Disposition header
2820    #[prost(string, tag = "9")]
2821    pub content_disposition: ::prost::alloc::string::String,
2822    #[prost(message, optional, tag = "10")]
2823    pub proxy: ::core::option::Option<ProxyConfig>,
2824}
2825#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2826pub struct GcpUpload {
2827    /// service account credentials serialized in JSON "credentials.json"
2828    #[prost(string, tag = "1")]
2829    pub credentials: ::prost::alloc::string::String,
2830    #[prost(string, tag = "2")]
2831    pub bucket: ::prost::alloc::string::String,
2832    #[prost(message, optional, tag = "3")]
2833    pub proxy: ::core::option::Option<ProxyConfig>,
2834}
2835#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2836pub struct AzureBlobUpload {
2837    #[prost(string, tag = "1")]
2838    pub account_name: ::prost::alloc::string::String,
2839    #[prost(string, tag = "2")]
2840    pub account_key: ::prost::alloc::string::String,
2841    #[prost(string, tag = "3")]
2842    pub container_name: ::prost::alloc::string::String,
2843}
2844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2845pub struct AliOssUpload {
2846    #[prost(string, tag = "1")]
2847    pub access_key: ::prost::alloc::string::String,
2848    #[prost(string, tag = "2")]
2849    pub secret: ::prost::alloc::string::String,
2850    #[prost(string, tag = "3")]
2851    pub region: ::prost::alloc::string::String,
2852    #[prost(string, tag = "4")]
2853    pub endpoint: ::prost::alloc::string::String,
2854    #[prost(string, tag = "5")]
2855    pub bucket: ::prost::alloc::string::String,
2856}
2857#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2858pub struct ProxyConfig {
2859    #[prost(string, tag = "1")]
2860    pub url: ::prost::alloc::string::String,
2861    #[prost(string, tag = "2")]
2862    pub username: ::prost::alloc::string::String,
2863    #[prost(string, tag = "3")]
2864    pub password: ::prost::alloc::string::String,
2865}
2866// --- Control RPCs ---
2867
2868#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2869pub struct ListEgressRequest {
2870    /// (optional, filter by room name)
2871    #[prost(string, tag = "1")]
2872    pub room_name: ::prost::alloc::string::String,
2873    /// (optional, filter by egress ID)
2874    #[prost(string, tag = "2")]
2875    pub egress_id: ::prost::alloc::string::String,
2876    /// (optional, list active egress only)
2877    #[prost(bool, tag = "3")]
2878    pub active: bool,
2879    /// next field id: 5
2880    #[prost(message, optional, tag = "4")]
2881    pub page_token: ::core::option::Option<TokenPagination>,
2882}
2883#[derive(Clone, PartialEq, ::prost::Message)]
2884pub struct ListEgressResponse {
2885    #[prost(message, repeated, tag = "1")]
2886    pub items: ::prost::alloc::vec::Vec<EgressInfo>,
2887    /// next field id: 3
2888    #[prost(message, optional, tag = "2")]
2889    pub next_page_token: ::core::option::Option<TokenPagination>,
2890}
2891#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2892pub struct StopEgressRequest {
2893    #[prost(string, tag = "1")]
2894    pub egress_id: ::prost::alloc::string::String,
2895}
2896// --- Egress Info ---
2897
2898#[derive(Clone, PartialEq, ::prost::Message)]
2899pub struct EgressInfo {
2900    #[prost(string, tag = "1")]
2901    pub egress_id: ::prost::alloc::string::String,
2902    #[prost(string, tag = "2")]
2903    pub room_id: ::prost::alloc::string::String,
2904    #[prost(string, tag = "13")]
2905    pub room_name: ::prost::alloc::string::String,
2906    #[prost(enumeration = "EgressSourceType", tag = "26")]
2907    pub source_type: i32,
2908    #[prost(enumeration = "EgressStatus", tag = "3")]
2909    pub status: i32,
2910    #[prost(int64, tag = "10")]
2911    pub started_at: i64,
2912    #[prost(int64, tag = "11")]
2913    pub ended_at: i64,
2914    #[prost(int64, tag = "18")]
2915    pub updated_at: i64,
2916    #[prost(message, repeated, tag = "15")]
2917    pub stream_results: ::prost::alloc::vec::Vec<StreamInfo>,
2918    #[prost(message, repeated, tag = "16")]
2919    pub file_results: ::prost::alloc::vec::Vec<FileInfo>,
2920    #[prost(message, repeated, tag = "17")]
2921    pub segment_results: ::prost::alloc::vec::Vec<SegmentsInfo>,
2922    #[prost(message, repeated, tag = "20")]
2923    pub image_results: ::prost::alloc::vec::Vec<ImagesInfo>,
2924    #[prost(string, tag = "9")]
2925    pub error: ::prost::alloc::string::String,
2926    #[prost(int32, tag = "22")]
2927    pub error_code: i32,
2928    #[prost(string, tag = "21")]
2929    pub details: ::prost::alloc::string::String,
2930    #[prost(string, tag = "23")]
2931    pub manifest_location: ::prost::alloc::string::String,
2932    #[prost(bool, tag = "25")]
2933    pub backup_storage_used: bool,
2934    #[prost(int32, tag = "27")]
2935    pub retry_count: i32,
2936    #[prost(oneof = "egress_info::Request", tags = "29, 30, 4, 14, 19, 5, 6")]
2937    pub request: ::core::option::Option<egress_info::Request>,
2938    // next ID: 31
2939
2940    /// --- Deprecated ---
2941    #[prost(oneof = "egress_info::Result", tags = "7, 8, 12")]
2942    pub result: ::core::option::Option<egress_info::Result>,
2943}
2944/// Nested message and enum types in `EgressInfo`.
2945pub mod egress_info {
2946    #[derive(Clone, PartialEq, ::prost::Oneof)]
2947    pub enum Request {
2948        #[prost(message, tag = "29")]
2949        Egress(super::StartEgressRequest),
2950        #[prost(message, tag = "30")]
2951        Replay(super::ExportReplayRequest),
2952        /// TODO: deprecate
2953        #[prost(message, tag = "4")]
2954        RoomComposite(super::RoomCompositeEgressRequest),
2955        #[prost(message, tag = "14")]
2956        Web(super::WebEgressRequest),
2957        #[prost(message, tag = "19")]
2958        Participant(super::ParticipantEgressRequest),
2959        #[prost(message, tag = "5")]
2960        TrackComposite(super::TrackCompositeEgressRequest),
2961        #[prost(message, tag = "6")]
2962        Track(super::TrackEgressRequest),
2963    }
2964    // next ID: 31
2965
2966    /// --- Deprecated ---
2967    #[derive(Clone, PartialEq, ::prost::Oneof)]
2968    pub enum Result {
2969        #[deprecated]
2970        #[prost(message, tag = "7")]
2971        Stream(super::StreamInfoList),
2972        #[deprecated]
2973        #[prost(message, tag = "8")]
2974        File(super::FileInfo),
2975        #[deprecated]
2976        #[prost(message, tag = "12")]
2977        Segments(super::SegmentsInfo),
2978    }
2979}
2980#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2981pub struct StreamInfo {
2982    #[prost(string, tag = "1")]
2983    pub url: ::prost::alloc::string::String,
2984    #[prost(int64, tag = "2")]
2985    pub started_at: i64,
2986    #[prost(int64, tag = "3")]
2987    pub ended_at: i64,
2988    #[prost(int64, tag = "4")]
2989    pub duration: i64,
2990    #[prost(enumeration = "stream_info::Status", tag = "5")]
2991    pub status: i32,
2992    #[prost(string, tag = "6")]
2993    pub error: ::prost::alloc::string::String,
2994    #[prost(int64, tag = "7")]
2995    pub last_retry_at: i64,
2996    #[prost(uint32, tag = "8")]
2997    pub retries: u32,
2998    /// StreamDestination.id this stream was started from; empty for plain urls
2999    #[prost(string, tag = "9")]
3000    pub id: ::prost::alloc::string::String,
3001}
3002/// Nested message and enum types in `StreamInfo`.
3003pub mod stream_info {
3004    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3005    #[repr(i32)]
3006    pub enum Status {
3007        Active = 0,
3008        Finished = 1,
3009        Failed = 2,
3010    }
3011    impl Status {
3012        /// String value of the enum field names used in the ProtoBuf definition.
3013        ///
3014        /// The values are not transformed in any way and thus are considered stable
3015        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3016        pub fn as_str_name(&self) -> &'static str {
3017            match self {
3018                Self::Active => "ACTIVE",
3019                Self::Finished => "FINISHED",
3020                Self::Failed => "FAILED",
3021            }
3022        }
3023        /// Creates an enum from field names used in the ProtoBuf definition.
3024        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3025            match value {
3026                "ACTIVE" => Some(Self::Active),
3027                "FINISHED" => Some(Self::Finished),
3028                "FAILED" => Some(Self::Failed),
3029                _ => None,
3030            }
3031        }
3032    }
3033}
3034#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3035pub struct FileInfo {
3036    #[prost(string, tag = "1")]
3037    pub filename: ::prost::alloc::string::String,
3038    #[prost(int64, tag = "2")]
3039    pub started_at: i64,
3040    #[prost(int64, tag = "3")]
3041    pub ended_at: i64,
3042    #[prost(int64, tag = "6")]
3043    pub duration: i64,
3044    #[prost(int64, tag = "4")]
3045    pub size: i64,
3046    #[prost(string, tag = "5")]
3047    pub location: ::prost::alloc::string::String,
3048}
3049#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3050pub struct SegmentsInfo {
3051    #[prost(string, tag = "1")]
3052    pub playlist_name: ::prost::alloc::string::String,
3053    #[prost(string, tag = "8")]
3054    pub live_playlist_name: ::prost::alloc::string::String,
3055    #[prost(int64, tag = "2")]
3056    pub duration: i64,
3057    #[prost(int64, tag = "3")]
3058    pub size: i64,
3059    #[prost(string, tag = "4")]
3060    pub playlist_location: ::prost::alloc::string::String,
3061    #[prost(string, tag = "9")]
3062    pub live_playlist_location: ::prost::alloc::string::String,
3063    #[prost(int64, tag = "5")]
3064    pub segment_count: i64,
3065    #[prost(int64, tag = "6")]
3066    pub started_at: i64,
3067    #[prost(int64, tag = "7")]
3068    pub ended_at: i64,
3069}
3070#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3071pub struct ImagesInfo {
3072    #[prost(string, tag = "4")]
3073    pub filename_prefix: ::prost::alloc::string::String,
3074    #[prost(int64, tag = "1")]
3075    pub image_count: i64,
3076    #[prost(int64, tag = "2")]
3077    pub started_at: i64,
3078    #[prost(int64, tag = "3")]
3079    pub ended_at: i64,
3080}
3081// --- Auto Egress ---
3082
3083#[derive(Clone, PartialEq, ::prost::Message)]
3084pub struct AutoParticipantEgress {
3085    #[prost(message, repeated, tag = "3")]
3086    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3087    #[prost(message, repeated, tag = "4")]
3088    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3089    #[prost(oneof = "auto_participant_egress::Options", tags = "1, 2")]
3090    pub options: ::core::option::Option<auto_participant_egress::Options>,
3091}
3092/// Nested message and enum types in `AutoParticipantEgress`.
3093pub mod auto_participant_egress {
3094    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3095    pub enum Options {
3096        /// (default H264_720P_30)
3097        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "1")]
3098        Preset(i32),
3099        /// (optional)
3100        #[prost(message, tag = "2")]
3101        Advanced(super::EncodingOptions),
3102    }
3103}
3104#[derive(Clone, PartialEq, ::prost::Message)]
3105pub struct AutoTrackEgress {
3106    /// see docs for templating (default {track_id}-{time})
3107    #[prost(string, tag = "1")]
3108    pub filepath: ::prost::alloc::string::String,
3109    /// disables upload of json manifest file (default false)
3110    #[prost(bool, tag = "5")]
3111    pub disable_manifest: bool,
3112    #[prost(oneof = "auto_track_egress::Output", tags = "2, 3, 4, 6")]
3113    pub output: ::core::option::Option<auto_track_egress::Output>,
3114}
3115/// Nested message and enum types in `AutoTrackEgress`.
3116pub mod auto_track_egress {
3117    #[derive(Clone, PartialEq, ::prost::Oneof)]
3118    pub enum Output {
3119        #[prost(message, tag = "2")]
3120        S3(super::S3Upload),
3121        #[prost(message, tag = "3")]
3122        Gcp(super::GcpUpload),
3123        #[prost(message, tag = "4")]
3124        Azure(super::AzureBlobUpload),
3125        #[prost(message, tag = "6")]
3126        AliOss(super::AliOssUpload),
3127    }
3128}
3129// --- Replay Export (message only — RPC defined in cloud_replay.proto) ---
3130
3131#[derive(Clone, PartialEq, ::prost::Message)]
3132pub struct ExportReplayRequest {
3133    #[prost(string, tag = "1")]
3134    pub replay_id: ::prost::alloc::string::String,
3135    #[prost(int64, tag = "2")]
3136    pub start_offset_ms: i64,
3137    #[prost(int64, tag = "3")]
3138    pub end_offset_ms: i64,
3139    #[prost(message, repeated, tag = "9")]
3140    pub outputs: ::prost::alloc::vec::Vec<Output>,
3141    #[prost(message, optional, tag = "10")]
3142    pub storage: ::core::option::Option<StorageConfig>,
3143    #[prost(message, repeated, tag = "11")]
3144    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3145    #[prost(oneof = "export_replay_request::Source", tags = "4, 5, 6")]
3146    pub source: ::core::option::Option<export_replay_request::Source>,
3147    #[prost(oneof = "export_replay_request::Encoding", tags = "7, 8")]
3148    pub encoding: ::core::option::Option<export_replay_request::Encoding>,
3149}
3150/// Nested message and enum types in `ExportReplayRequest`.
3151pub mod export_replay_request {
3152    #[derive(Clone, PartialEq, ::prost::Oneof)]
3153    pub enum Source {
3154        #[prost(message, tag = "4")]
3155        Template(super::TemplateSource),
3156        #[prost(message, tag = "5")]
3157        Web(super::WebSource),
3158        #[prost(message, tag = "6")]
3159        Media(super::MediaSource),
3160    }
3161    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3162    pub enum Encoding {
3163        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "7")]
3164        Preset(i32),
3165        #[prost(message, tag = "8")]
3166        Advanced(super::EncodingOptions),
3167    }
3168}
3169// TODO: deprecate --- V1 ---
3170
3171#[derive(Clone, PartialEq, ::prost::Message)]
3172pub struct RoomCompositeEgressRequest {
3173    #[prost(string, tag = "1")]
3174    pub room_name: ::prost::alloc::string::String,
3175    #[prost(string, tag = "2")]
3176    pub layout: ::prost::alloc::string::String,
3177    #[prost(bool, tag = "3")]
3178    pub audio_only: bool,
3179    #[prost(enumeration = "AudioMixing", tag = "15")]
3180    pub audio_mixing: i32,
3181    #[prost(bool, tag = "4")]
3182    pub video_only: bool,
3183    #[prost(string, tag = "5")]
3184    pub custom_base_url: ::prost::alloc::string::String,
3185    #[prost(message, repeated, tag = "11")]
3186    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3187    #[prost(message, repeated, tag = "12")]
3188    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3189    #[prost(message, repeated, tag = "13")]
3190    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3191    #[prost(message, repeated, tag = "14")]
3192    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3193    #[prost(message, repeated, tag = "16")]
3194    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3195    #[prost(oneof = "room_composite_egress_request::Output", tags = "6, 7, 10")]
3196    pub output: ::core::option::Option<room_composite_egress_request::Output>,
3197    #[prost(oneof = "room_composite_egress_request::Options", tags = "8, 9")]
3198    pub options: ::core::option::Option<room_composite_egress_request::Options>,
3199}
3200/// Nested message and enum types in `RoomCompositeEgressRequest`.
3201pub mod room_composite_egress_request {
3202    #[derive(Clone, PartialEq, ::prost::Oneof)]
3203    pub enum Output {
3204        #[deprecated]
3205        #[prost(message, tag = "6")]
3206        File(super::EncodedFileOutput),
3207        #[deprecated]
3208        #[prost(message, tag = "7")]
3209        Stream(super::StreamOutput),
3210        #[deprecated]
3211        #[prost(message, tag = "10")]
3212        Segments(super::SegmentedFileOutput),
3213    }
3214    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3215    pub enum Options {
3216        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "8")]
3217        Preset(i32),
3218        #[prost(message, tag = "9")]
3219        Advanced(super::EncodingOptions),
3220    }
3221}
3222#[derive(Clone, PartialEq, ::prost::Message)]
3223pub struct WebEgressRequest {
3224    #[prost(string, tag = "1")]
3225    pub url: ::prost::alloc::string::String,
3226    #[prost(bool, tag = "2")]
3227    pub audio_only: bool,
3228    #[prost(bool, tag = "3")]
3229    pub video_only: bool,
3230    #[prost(bool, tag = "12")]
3231    pub await_start_signal: bool,
3232    #[prost(message, repeated, tag = "9")]
3233    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3234    #[prost(message, repeated, tag = "10")]
3235    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3236    #[prost(message, repeated, tag = "11")]
3237    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3238    #[prost(message, repeated, tag = "13")]
3239    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3240    #[prost(message, repeated, tag = "14")]
3241    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3242    #[prost(oneof = "web_egress_request::Output", tags = "4, 5, 6")]
3243    pub output: ::core::option::Option<web_egress_request::Output>,
3244    #[prost(oneof = "web_egress_request::Options", tags = "7, 8")]
3245    pub options: ::core::option::Option<web_egress_request::Options>,
3246}
3247/// Nested message and enum types in `WebEgressRequest`.
3248pub mod web_egress_request {
3249    #[derive(Clone, PartialEq, ::prost::Oneof)]
3250    pub enum Output {
3251        #[deprecated]
3252        #[prost(message, tag = "4")]
3253        File(super::EncodedFileOutput),
3254        #[deprecated]
3255        #[prost(message, tag = "5")]
3256        Stream(super::StreamOutput),
3257        #[deprecated]
3258        #[prost(message, tag = "6")]
3259        Segments(super::SegmentedFileOutput),
3260    }
3261    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3262    pub enum Options {
3263        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "7")]
3264        Preset(i32),
3265        #[prost(message, tag = "8")]
3266        Advanced(super::EncodingOptions),
3267    }
3268}
3269#[derive(Clone, PartialEq, ::prost::Message)]
3270pub struct ParticipantEgressRequest {
3271    #[prost(string, tag = "1")]
3272    pub room_name: ::prost::alloc::string::String,
3273    #[prost(string, tag = "2")]
3274    pub identity: ::prost::alloc::string::String,
3275    #[prost(bool, tag = "3")]
3276    pub screen_share: bool,
3277    #[prost(message, repeated, tag = "6")]
3278    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3279    #[prost(message, repeated, tag = "7")]
3280    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3281    #[prost(message, repeated, tag = "8")]
3282    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3283    #[prost(message, repeated, tag = "9")]
3284    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3285    #[prost(message, repeated, tag = "10")]
3286    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3287    #[prost(oneof = "participant_egress_request::Options", tags = "4, 5")]
3288    pub options: ::core::option::Option<participant_egress_request::Options>,
3289}
3290/// Nested message and enum types in `ParticipantEgressRequest`.
3291pub mod participant_egress_request {
3292    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3293    pub enum Options {
3294        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "4")]
3295        Preset(i32),
3296        #[prost(message, tag = "5")]
3297        Advanced(super::EncodingOptions),
3298    }
3299}
3300#[derive(Clone, PartialEq, ::prost::Message)]
3301pub struct TrackCompositeEgressRequest {
3302    #[prost(string, tag = "1")]
3303    pub room_name: ::prost::alloc::string::String,
3304    #[prost(string, tag = "2")]
3305    pub audio_track_id: ::prost::alloc::string::String,
3306    #[prost(string, tag = "3")]
3307    pub video_track_id: ::prost::alloc::string::String,
3308    #[prost(message, repeated, tag = "11")]
3309    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
3310    #[prost(message, repeated, tag = "12")]
3311    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
3312    #[prost(message, repeated, tag = "13")]
3313    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
3314    #[prost(message, repeated, tag = "14")]
3315    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
3316    #[prost(message, repeated, tag = "15")]
3317    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3318    #[prost(oneof = "track_composite_egress_request::Output", tags = "4, 5, 8")]
3319    pub output: ::core::option::Option<track_composite_egress_request::Output>,
3320    #[prost(oneof = "track_composite_egress_request::Options", tags = "6, 7")]
3321    pub options: ::core::option::Option<track_composite_egress_request::Options>,
3322}
3323/// Nested message and enum types in `TrackCompositeEgressRequest`.
3324pub mod track_composite_egress_request {
3325    #[derive(Clone, PartialEq, ::prost::Oneof)]
3326    pub enum Output {
3327        #[deprecated]
3328        #[prost(message, tag = "4")]
3329        File(super::EncodedFileOutput),
3330        #[deprecated]
3331        #[prost(message, tag = "5")]
3332        Stream(super::StreamOutput),
3333        #[deprecated]
3334        #[prost(message, tag = "8")]
3335        Segments(super::SegmentedFileOutput),
3336    }
3337    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
3338    pub enum Options {
3339        #[prost(enumeration = "super::EncodingOptionsPreset", tag = "6")]
3340        Preset(i32),
3341        #[prost(message, tag = "7")]
3342        Advanced(super::EncodingOptions),
3343    }
3344}
3345#[derive(Clone, PartialEq, ::prost::Message)]
3346pub struct TrackEgressRequest {
3347    #[prost(string, tag = "1")]
3348    pub room_name: ::prost::alloc::string::String,
3349    #[prost(string, tag = "2")]
3350    pub track_id: ::prost::alloc::string::String,
3351    #[prost(message, repeated, tag = "5")]
3352    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
3353    #[prost(oneof = "track_egress_request::Output", tags = "3, 4")]
3354    pub output: ::core::option::Option<track_egress_request::Output>,
3355}
3356/// Nested message and enum types in `TrackEgressRequest`.
3357pub mod track_egress_request {
3358    #[derive(Clone, PartialEq, ::prost::Oneof)]
3359    pub enum Output {
3360        #[prost(message, tag = "3")]
3361        File(super::DirectFileOutput),
3362        #[prost(string, tag = "4")]
3363        WebsocketUrl(::prost::alloc::string::String),
3364    }
3365}
3366#[derive(Clone, PartialEq, ::prost::Message)]
3367pub struct DirectFileOutput {
3368    #[prost(string, tag = "1")]
3369    pub filepath: ::prost::alloc::string::String,
3370    #[prost(bool, tag = "5")]
3371    pub disable_manifest: bool,
3372    #[prost(oneof = "direct_file_output::Output", tags = "2, 3, 4, 6")]
3373    pub output: ::core::option::Option<direct_file_output::Output>,
3374}
3375/// Nested message and enum types in `DirectFileOutput`.
3376pub mod direct_file_output {
3377    #[derive(Clone, PartialEq, ::prost::Oneof)]
3378    pub enum Output {
3379        #[prost(message, tag = "2")]
3380        S3(super::S3Upload),
3381        #[prost(message, tag = "3")]
3382        Gcp(super::GcpUpload),
3383        #[prost(message, tag = "4")]
3384        Azure(super::AzureBlobUpload),
3385        #[prost(message, tag = "6")]
3386        AliOss(super::AliOssUpload),
3387    }
3388}
3389#[derive(Clone, PartialEq, ::prost::Message)]
3390pub struct EncodedFileOutput {
3391    #[prost(enumeration = "EncodedFileType", tag = "1")]
3392    pub file_type: i32,
3393    #[prost(string, tag = "2")]
3394    pub filepath: ::prost::alloc::string::String,
3395    #[prost(bool, tag = "6")]
3396    pub disable_manifest: bool,
3397    #[prost(oneof = "encoded_file_output::Output", tags = "3, 4, 5, 7")]
3398    pub output: ::core::option::Option<encoded_file_output::Output>,
3399}
3400/// Nested message and enum types in `EncodedFileOutput`.
3401pub mod encoded_file_output {
3402    #[derive(Clone, PartialEq, ::prost::Oneof)]
3403    pub enum Output {
3404        #[prost(message, tag = "3")]
3405        S3(super::S3Upload),
3406        #[prost(message, tag = "4")]
3407        Gcp(super::GcpUpload),
3408        #[prost(message, tag = "5")]
3409        Azure(super::AzureBlobUpload),
3410        #[prost(message, tag = "7")]
3411        AliOss(super::AliOssUpload),
3412    }
3413}
3414#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3415pub struct UpdateLayoutRequest {
3416    #[prost(string, tag = "1")]
3417    pub egress_id: ::prost::alloc::string::String,
3418    #[prost(string, tag = "2")]
3419    pub layout: ::prost::alloc::string::String,
3420}
3421#[derive(Clone, PartialEq, ::prost::Message)]
3422pub struct UpdateStreamRequest {
3423    #[prost(string, tag = "1")]
3424    pub egress_id: ::prost::alloc::string::String,
3425    #[prost(string, repeated, tag = "2")]
3426    pub add_output_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3427    #[prost(string, repeated, tag = "3")]
3428    pub remove_output_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3429    #[prost(message, repeated, tag = "4")]
3430    pub add_destinations: ::prost::alloc::vec::Vec<StreamDestination>,
3431}
3432#[derive(Clone, PartialEq, ::prost::Message)]
3433pub struct StreamInfoList {
3434    #[prost(message, repeated, tag = "1")]
3435    pub info: ::prost::alloc::vec::Vec<StreamInfo>,
3436}
3437#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3438#[repr(i32)]
3439pub enum AudioChannel {
3440    Both = 0,
3441    Left = 1,
3442    Right = 2,
3443}
3444impl AudioChannel {
3445    /// String value of the enum field names used in the ProtoBuf definition.
3446    ///
3447    /// The values are not transformed in any way and thus are considered stable
3448    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3449    pub fn as_str_name(&self) -> &'static str {
3450        match self {
3451            Self::Both => "AUDIO_CHANNEL_BOTH",
3452            Self::Left => "AUDIO_CHANNEL_LEFT",
3453            Self::Right => "AUDIO_CHANNEL_RIGHT",
3454        }
3455    }
3456    /// Creates an enum from field names used in the ProtoBuf definition.
3457    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3458        match value {
3459            "AUDIO_CHANNEL_BOTH" => Some(Self::Both),
3460            "AUDIO_CHANNEL_LEFT" => Some(Self::Left),
3461            "AUDIO_CHANNEL_RIGHT" => Some(Self::Right),
3462            _ => None,
3463        }
3464    }
3465}
3466// --- Encoding ---
3467
3468#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3469#[repr(i32)]
3470pub enum EncodingOptionsPreset {
3471    ///   1280x720, 30fps, 3000kpbs, H.264_MAIN / OPUS
3472    H264720p30 = 0,
3473    ///   1280x720, 60fps, 4500kbps, H.264_MAIN / OPUS
3474    H264720p60 = 1,
3475    /// 1920x1080, 30fps, 4500kbps, H.264_MAIN / OPUS
3476    H2641080p30 = 2,
3477    /// 1920x1080, 60fps, 6000kbps, H.264_MAIN / OPUS
3478    H2641080p60 = 3,
3479    ///   720x1280, 30fps, 3000kpbs, H.264_MAIN / OPUS
3480    PortraitH264720p30 = 4,
3481    ///   720x1280, 60fps, 4500kbps, H.264_MAIN / OPUS
3482    PortraitH264720p60 = 5,
3483    /// 1080x1920, 30fps, 4500kbps, H.264_MAIN / OPUS
3484    PortraitH2641080p30 = 6,
3485    /// 1080x1920, 60fps, 6000kbps, H.264_MAIN / OPUS
3486    PortraitH2641080p60 = 7,
3487    /// Skip transcoding. Valid only when specifying a single track with MediaSource
3488    Passthrough = 8,
3489}
3490impl EncodingOptionsPreset {
3491    /// String value of the enum field names used in the ProtoBuf definition.
3492    ///
3493    /// The values are not transformed in any way and thus are considered stable
3494    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3495    pub fn as_str_name(&self) -> &'static str {
3496        match self {
3497            Self::H264720p30 => "H264_720P_30",
3498            Self::H264720p60 => "H264_720P_60",
3499            Self::H2641080p30 => "H264_1080P_30",
3500            Self::H2641080p60 => "H264_1080P_60",
3501            Self::PortraitH264720p30 => "PORTRAIT_H264_720P_30",
3502            Self::PortraitH264720p60 => "PORTRAIT_H264_720P_60",
3503            Self::PortraitH2641080p30 => "PORTRAIT_H264_1080P_30",
3504            Self::PortraitH2641080p60 => "PORTRAIT_H264_1080P_60",
3505            Self::Passthrough => "PASSTHROUGH",
3506        }
3507    }
3508    /// Creates an enum from field names used in the ProtoBuf definition.
3509    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3510        match value {
3511            "H264_720P_30" => Some(Self::H264720p30),
3512            "H264_720P_60" => Some(Self::H264720p60),
3513            "H264_1080P_30" => Some(Self::H2641080p30),
3514            "H264_1080P_60" => Some(Self::H2641080p60),
3515            "PORTRAIT_H264_720P_30" => Some(Self::PortraitH264720p30),
3516            "PORTRAIT_H264_720P_60" => Some(Self::PortraitH264720p60),
3517            "PORTRAIT_H264_1080P_30" => Some(Self::PortraitH2641080p30),
3518            "PORTRAIT_H264_1080P_60" => Some(Self::PortraitH2641080p60),
3519            "PASSTHROUGH" => Some(Self::Passthrough),
3520            _ => None,
3521        }
3522    }
3523}
3524#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3525#[repr(i32)]
3526pub enum EncodedFileType {
3527    /// file type chosen based on codecs
3528    DefaultFiletype = 0,
3529    Mp4 = 1,
3530    Ogg = 2,
3531    Mp3 = 3,
3532    /// One channel per captured track
3533    Mcap = 4,
3534}
3535impl EncodedFileType {
3536    /// String value of the enum field names used in the ProtoBuf definition.
3537    ///
3538    /// The values are not transformed in any way and thus are considered stable
3539    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3540    pub fn as_str_name(&self) -> &'static str {
3541        match self {
3542            Self::DefaultFiletype => "DEFAULT_FILETYPE",
3543            Self::Mp4 => "MP4",
3544            Self::Ogg => "OGG",
3545            Self::Mp3 => "MP3",
3546            Self::Mcap => "MCAP",
3547        }
3548    }
3549    /// Creates an enum from field names used in the ProtoBuf definition.
3550    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3551        match value {
3552            "DEFAULT_FILETYPE" => Some(Self::DefaultFiletype),
3553            "MP4" => Some(Self::Mp4),
3554            "OGG" => Some(Self::Ogg),
3555            "MP3" => Some(Self::Mp3),
3556            "MCAP" => Some(Self::Mcap),
3557            _ => None,
3558        }
3559    }
3560}
3561#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3562#[repr(i32)]
3563pub enum StreamProtocol {
3564    /// protocol chosen based on urls
3565    DefaultProtocol = 0,
3566    Rtmp = 1,
3567    Srt = 2,
3568    Websocket = 3,
3569}
3570impl StreamProtocol {
3571    /// String value of the enum field names used in the ProtoBuf definition.
3572    ///
3573    /// The values are not transformed in any way and thus are considered stable
3574    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3575    pub fn as_str_name(&self) -> &'static str {
3576        match self {
3577            Self::DefaultProtocol => "DEFAULT_PROTOCOL",
3578            Self::Rtmp => "RTMP",
3579            Self::Srt => "SRT",
3580            Self::Websocket => "WEBSOCKET",
3581        }
3582    }
3583    /// Creates an enum from field names used in the ProtoBuf definition.
3584    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3585        match value {
3586            "DEFAULT_PROTOCOL" => Some(Self::DefaultProtocol),
3587            "RTMP" => Some(Self::Rtmp),
3588            "SRT" => Some(Self::Srt),
3589            "WEBSOCKET" => Some(Self::Websocket),
3590            _ => None,
3591        }
3592    }
3593}
3594#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3595#[repr(i32)]
3596pub enum SegmentedFileProtocol {
3597    DefaultSegmentedFileProtocol = 0,
3598    /// MPEG-TS segments
3599    HlsProtocol = 1,
3600    /// fragmented MP4 segments
3601    HlsFmp4Protocol = 2,
3602}
3603impl SegmentedFileProtocol {
3604    /// String value of the enum field names used in the ProtoBuf definition.
3605    ///
3606    /// The values are not transformed in any way and thus are considered stable
3607    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3608    pub fn as_str_name(&self) -> &'static str {
3609        match self {
3610            Self::DefaultSegmentedFileProtocol => "DEFAULT_SEGMENTED_FILE_PROTOCOL",
3611            Self::HlsProtocol => "HLS_PROTOCOL",
3612            Self::HlsFmp4Protocol => "HLS_FMP4_PROTOCOL",
3613        }
3614    }
3615    /// Creates an enum from field names used in the ProtoBuf definition.
3616    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3617        match value {
3618            "DEFAULT_SEGMENTED_FILE_PROTOCOL" => Some(Self::DefaultSegmentedFileProtocol),
3619            "HLS_PROTOCOL" => Some(Self::HlsProtocol),
3620            "HLS_FMP4_PROTOCOL" => Some(Self::HlsFmp4Protocol),
3621            _ => None,
3622        }
3623    }
3624}
3625#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3626#[repr(i32)]
3627pub enum SegmentedFileSuffix {
3628    Index = 0,
3629    Timestamp = 1,
3630}
3631impl SegmentedFileSuffix {
3632    /// String value of the enum field names used in the ProtoBuf definition.
3633    ///
3634    /// The values are not transformed in any way and thus are considered stable
3635    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3636    pub fn as_str_name(&self) -> &'static str {
3637        match self {
3638            Self::Index => "INDEX",
3639            Self::Timestamp => "TIMESTAMP",
3640        }
3641    }
3642    /// Creates an enum from field names used in the ProtoBuf definition.
3643    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3644        match value {
3645            "INDEX" => Some(Self::Index),
3646            "TIMESTAMP" => Some(Self::Timestamp),
3647            _ => None,
3648        }
3649    }
3650}
3651#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3652#[repr(i32)]
3653pub enum ImageFileSuffix {
3654    ImageSuffixIndex = 0,
3655    ImageSuffixTimestamp = 1,
3656    /// Do not append any suffix and overwrite the existing image with the latest
3657    ImageSuffixNoneOverwrite = 2,
3658}
3659impl ImageFileSuffix {
3660    /// String value of the enum field names used in the ProtoBuf definition.
3661    ///
3662    /// The values are not transformed in any way and thus are considered stable
3663    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3664    pub fn as_str_name(&self) -> &'static str {
3665        match self {
3666            Self::ImageSuffixIndex => "IMAGE_SUFFIX_INDEX",
3667            Self::ImageSuffixTimestamp => "IMAGE_SUFFIX_TIMESTAMP",
3668            Self::ImageSuffixNoneOverwrite => "IMAGE_SUFFIX_NONE_OVERWRITE",
3669        }
3670    }
3671    /// Creates an enum from field names used in the ProtoBuf definition.
3672    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3673        match value {
3674            "IMAGE_SUFFIX_INDEX" => Some(Self::ImageSuffixIndex),
3675            "IMAGE_SUFFIX_TIMESTAMP" => Some(Self::ImageSuffixTimestamp),
3676            "IMAGE_SUFFIX_NONE_OVERWRITE" => Some(Self::ImageSuffixNoneOverwrite),
3677            _ => None,
3678        }
3679    }
3680}
3681#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3682#[repr(i32)]
3683pub enum EgressSourceType {
3684    Web = 0,
3685    Sdk = 1,
3686}
3687impl EgressSourceType {
3688    /// String value of the enum field names used in the ProtoBuf definition.
3689    ///
3690    /// The values are not transformed in any way and thus are considered stable
3691    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3692    pub fn as_str_name(&self) -> &'static str {
3693        match self {
3694            Self::Web => "EGRESS_SOURCE_TYPE_WEB",
3695            Self::Sdk => "EGRESS_SOURCE_TYPE_SDK",
3696        }
3697    }
3698    /// Creates an enum from field names used in the ProtoBuf definition.
3699    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3700        match value {
3701            "EGRESS_SOURCE_TYPE_WEB" => Some(Self::Web),
3702            "EGRESS_SOURCE_TYPE_SDK" => Some(Self::Sdk),
3703            _ => None,
3704        }
3705    }
3706}
3707#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3708#[repr(i32)]
3709pub enum EgressStatus {
3710    EgressStarting = 0,
3711    EgressActive = 1,
3712    EgressEnding = 2,
3713    EgressComplete = 3,
3714    EgressFailed = 4,
3715    EgressAborted = 5,
3716    EgressLimitReached = 6,
3717}
3718impl EgressStatus {
3719    /// String value of the enum field names used in the ProtoBuf definition.
3720    ///
3721    /// The values are not transformed in any way and thus are considered stable
3722    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3723    pub fn as_str_name(&self) -> &'static str {
3724        match self {
3725            Self::EgressStarting => "EGRESS_STARTING",
3726            Self::EgressActive => "EGRESS_ACTIVE",
3727            Self::EgressEnding => "EGRESS_ENDING",
3728            Self::EgressComplete => "EGRESS_COMPLETE",
3729            Self::EgressFailed => "EGRESS_FAILED",
3730            Self::EgressAborted => "EGRESS_ABORTED",
3731            Self::EgressLimitReached => "EGRESS_LIMIT_REACHED",
3732        }
3733    }
3734    /// Creates an enum from field names used in the ProtoBuf definition.
3735    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3736        match value {
3737            "EGRESS_STARTING" => Some(Self::EgressStarting),
3738            "EGRESS_ACTIVE" => Some(Self::EgressActive),
3739            "EGRESS_ENDING" => Some(Self::EgressEnding),
3740            "EGRESS_COMPLETE" => Some(Self::EgressComplete),
3741            "EGRESS_FAILED" => Some(Self::EgressFailed),
3742            "EGRESS_ABORTED" => Some(Self::EgressAborted),
3743            "EGRESS_LIMIT_REACHED" => Some(Self::EgressLimitReached),
3744            _ => None,
3745        }
3746    }
3747}
3748#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3749#[repr(i32)]
3750pub enum AudioMixing {
3751    DefaultMixing = 0,
3752    DualChannelAgent = 1,
3753    DualChannelAlternate = 2,
3754}
3755impl AudioMixing {
3756    /// String value of the enum field names used in the ProtoBuf definition.
3757    ///
3758    /// The values are not transformed in any way and thus are considered stable
3759    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3760    pub fn as_str_name(&self) -> &'static str {
3761        match self {
3762            Self::DefaultMixing => "DEFAULT_MIXING",
3763            Self::DualChannelAgent => "DUAL_CHANNEL_AGENT",
3764            Self::DualChannelAlternate => "DUAL_CHANNEL_ALTERNATE",
3765        }
3766    }
3767    /// Creates an enum from field names used in the ProtoBuf definition.
3768    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3769        match value {
3770            "DEFAULT_MIXING" => Some(Self::DefaultMixing),
3771            "DUAL_CHANNEL_AGENT" => Some(Self::DualChannelAgent),
3772            "DUAL_CHANNEL_ALTERNATE" => Some(Self::DualChannelAlternate),
3773            _ => None,
3774        }
3775    }
3776}
3777#[derive(Clone, PartialEq, ::prost::Message)]
3778pub struct SignalRequest {
3779    #[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")]
3780    pub message: ::core::option::Option<signal_request::Message>,
3781}
3782/// Nested message and enum types in `SignalRequest`.
3783pub mod signal_request {
3784    #[derive(Clone, PartialEq, ::prost::Oneof)]
3785    pub enum Message {
3786        /// participant offer for publisher
3787        #[prost(message, tag = "1")]
3788        Offer(super::SessionDescription),
3789        /// participant answering subscriber offer
3790        #[prost(message, tag = "2")]
3791        Answer(super::SessionDescription),
3792        #[prost(message, tag = "3")]
3793        Trickle(super::TrickleRequest),
3794        #[prost(message, tag = "4")]
3795        AddTrack(super::AddTrackRequest),
3796        /// mute the participant's published tracks
3797        #[prost(message, tag = "5")]
3798        Mute(super::MuteTrackRequest),
3799        /// Subscribe or unsubscribe from tracks
3800        #[prost(message, tag = "6")]
3801        Subscription(super::UpdateSubscription),
3802        /// Update settings of subscribed tracks
3803        #[prost(message, tag = "7")]
3804        TrackSetting(super::UpdateTrackSettings),
3805        /// Immediately terminate session
3806        #[prost(message, tag = "8")]
3807        Leave(super::LeaveRequest),
3808        /// Update published video layers
3809        #[deprecated]
3810        #[prost(message, tag = "10")]
3811        UpdateLayers(super::UpdateVideoLayers),
3812        /// Update subscriber permissions
3813        #[prost(message, tag = "11")]
3814        SubscriptionPermission(super::SubscriptionPermission),
3815        /// sync client's subscribe state to server during reconnect
3816        #[prost(message, tag = "12")]
3817        SyncState(super::SyncState),
3818        /// Simulate conditions, for client validations
3819        #[prost(message, tag = "13")]
3820        Simulate(super::SimulateScenario),
3821        /// client triggered ping to server
3822        ///
3823        /// deprecated by ping_req (message Ping)
3824        #[prost(int64, tag = "14")]
3825        Ping(i64),
3826        /// update a participant's own metadata, name, or attributes
3827        /// requires canUpdateOwnParticipantMetadata permission
3828        #[prost(message, tag = "15")]
3829        UpdateMetadata(super::UpdateParticipantMetadata),
3830        #[prost(message, tag = "16")]
3831        PingReq(super::Ping),
3832        /// Update local audio track settings
3833        #[prost(message, tag = "17")]
3834        UpdateAudioTrack(super::UpdateLocalAudioTrack),
3835        /// Update local video track settings
3836        #[prost(message, tag = "18")]
3837        UpdateVideoTrack(super::UpdateLocalVideoTrack),
3838        /// Publish a data track
3839        #[prost(message, tag = "19")]
3840        PublishDataTrackRequest(super::PublishDataTrackRequest),
3841        /// Unpublish a data track
3842        #[prost(message, tag = "20")]
3843        UnpublishDataTrackRequest(super::UnpublishDataTrackRequest),
3844        /// Update subscription state for one or more data tracks
3845        #[prost(message, tag = "21")]
3846        UpdateDataSubscription(super::UpdateDataSubscription),
3847        /// Store a data blob.
3848        #[prost(message, tag = "22")]
3849        StoreDataBlobRequest(super::StoreDataBlobRequest),
3850        /// Retrieve a stored data blob.
3851        #[prost(message, tag = "23")]
3852        GetDataBlobRequest(super::GetDataBlobRequest),
3853    }
3854}
3855#[derive(Clone, PartialEq, ::prost::Message)]
3856pub struct SignalResponse {
3857    #[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")]
3858    pub message: ::core::option::Option<signal_response::Message>,
3859}
3860/// Nested message and enum types in `SignalResponse`.
3861pub mod signal_response {
3862    #[derive(Clone, PartialEq, ::prost::Oneof)]
3863    pub enum Message {
3864        /// sent when join is accepted
3865        #[prost(message, tag = "1")]
3866        Join(super::JoinResponse),
3867        /// sent when server answers publisher
3868        #[prost(message, tag = "2")]
3869        Answer(super::SessionDescription),
3870        /// sent when server is sending subscriber an offer
3871        #[prost(message, tag = "3")]
3872        Offer(super::SessionDescription),
3873        /// sent when an ICE candidate is available
3874        #[prost(message, tag = "4")]
3875        Trickle(super::TrickleRequest),
3876        /// sent when participants in the room has changed
3877        #[prost(message, tag = "5")]
3878        Update(super::ParticipantUpdate),
3879        /// sent to the participant when their track has been published
3880        #[prost(message, tag = "6")]
3881        TrackPublished(super::TrackPublishedResponse),
3882        /// Immediately terminate session
3883        #[prost(message, tag = "8")]
3884        Leave(super::LeaveRequest),
3885        /// server initiated mute
3886        #[prost(message, tag = "9")]
3887        Mute(super::MuteTrackRequest),
3888        /// indicates changes to speaker status, including when they've gone to not speaking
3889        #[prost(message, tag = "10")]
3890        SpeakersChanged(super::SpeakersChanged),
3891        /// sent when metadata of the room has changed
3892        #[prost(message, tag = "11")]
3893        RoomUpdate(super::RoomUpdate),
3894        /// when connection quality changed
3895        #[prost(message, tag = "12")]
3896        ConnectionQuality(super::ConnectionQualityUpdate),
3897        /// when streamed tracks state changed, used to notify when any of the streams were paused due to
3898        /// congestion
3899        #[prost(message, tag = "13")]
3900        StreamStateUpdate(super::StreamStateUpdate),
3901        /// when max subscribe quality changed, used by dynamic broadcasting to disable unused layers
3902        #[prost(message, tag = "14")]
3903        SubscribedQualityUpdate(super::SubscribedQualityUpdate),
3904        /// when subscription permission changed
3905        #[prost(message, tag = "15")]
3906        SubscriptionPermissionUpdate(super::SubscriptionPermissionUpdate),
3907        /// update the token the client was using, to prevent an active client from using an expired token
3908        #[prost(string, tag = "16")]
3909        RefreshToken(::prost::alloc::string::String),
3910        /// server initiated track unpublish
3911        #[prost(message, tag = "17")]
3912        TrackUnpublished(super::TrackUnpublishedResponse),
3913        /// respond to ping
3914        ///
3915        /// deprecated by pong_resp (message Pong)
3916        #[prost(int64, tag = "18")]
3917        Pong(i64),
3918        /// sent when client reconnects
3919        #[prost(message, tag = "19")]
3920        Reconnect(super::ReconnectResponse),
3921        /// respond to Ping
3922        #[prost(message, tag = "20")]
3923        PongResp(super::Pong),
3924        /// Subscription response, client should not expect any media from this subscription if it fails
3925        #[prost(message, tag = "21")]
3926        SubscriptionResponse(super::SubscriptionResponse),
3927        /// Response relating to user inititated requests that carry a `request_id`
3928        #[prost(message, tag = "22")]
3929        RequestResponse(super::RequestResponse),
3930        /// notify to the publisher when a published track has been subscribed for the first time
3931        #[prost(message, tag = "23")]
3932        TrackSubscribed(super::TrackSubscribed),
3933        /// notify to the participant when they have been moved to a new room
3934        #[prost(message, tag = "24")]
3935        RoomMoved(super::RoomMovedResponse),
3936        /// notify number of required media sections to satisfy subscribed tracks
3937        #[prost(message, tag = "25")]
3938        MediaSectionsRequirement(super::MediaSectionsRequirement),
3939        /// when audio subscription changes, used to enable simulcasting of audio codecs based on subscriptions
3940        #[prost(message, tag = "26")]
3941        SubscribedAudioCodecUpdate(super::SubscribedAudioCodecUpdate),
3942        /// Sent in response to `PublishDataTrackRequest`.
3943        #[prost(message, tag = "27")]
3944        PublishDataTrackResponse(super::PublishDataTrackResponse),
3945        /// Sent in response to `UnpublishDataTrackRequest` or SFU-initiated unpublish.
3946        #[prost(message, tag = "28")]
3947        UnpublishDataTrackResponse(super::UnpublishDataTrackResponse),
3948        /// Sent to data track subscribers to provide mapping from track SIDs to handles.
3949        #[prost(message, tag = "29")]
3950        DataTrackSubscriberHandles(super::DataTrackSubscriberHandles),
3951        /// Sent in response to `StoreDataBlobRequest`.
3952        #[prost(message, tag = "30")]
3953        StoreDataBlobResponse(super::StoreDataBlobResponse),
3954        /// Sent in response to `GetDataBlobRequest`.
3955        #[prost(message, tag = "31")]
3956        GetDataBlobResponse(super::GetDataBlobResponse),
3957    }
3958}
3959#[derive(Clone, PartialEq, ::prost::Message)]
3960pub struct SimulcastCodec {
3961    #[prost(string, tag = "1")]
3962    pub codec: ::prost::alloc::string::String,
3963    #[prost(string, tag = "2")]
3964    pub cid: ::prost::alloc::string::String,
3965    #[prost(message, repeated, tag = "4")]
3966    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
3967    #[prost(enumeration = "video_layer::Mode", tag = "5")]
3968    pub video_layer_mode: i32,
3969}
3970#[derive(Clone, PartialEq, ::prost::Message)]
3971pub struct AddTrackRequest {
3972    /// client ID of track, to match it when RTC track is received
3973    #[prost(string, tag = "1")]
3974    pub cid: ::prost::alloc::string::String,
3975    #[prost(string, tag = "2")]
3976    pub name: ::prost::alloc::string::String,
3977    #[prost(enumeration = "TrackType", tag = "3")]
3978    pub r#type: i32,
3979    #[prost(uint32, tag = "4")]
3980    pub width: u32,
3981    #[prost(uint32, tag = "5")]
3982    pub height: u32,
3983    /// true to add track and initialize to muted
3984    #[prost(bool, tag = "6")]
3985    pub muted: bool,
3986    /// true if DTX (Discontinuous Transmission) is disabled for audio
3987    ///
3988    /// deprecated in favor of audio_features
3989    #[deprecated]
3990    #[prost(bool, tag = "7")]
3991    pub disable_dtx: bool,
3992    #[prost(enumeration = "TrackSource", tag = "8")]
3993    pub source: i32,
3994    #[prost(message, repeated, tag = "9")]
3995    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
3996    #[prost(message, repeated, tag = "10")]
3997    pub simulcast_codecs: ::prost::alloc::vec::Vec<SimulcastCodec>,
3998    /// server ID of track, publish new codec to exist track
3999    #[prost(string, tag = "11")]
4000    pub sid: ::prost::alloc::string::String,
4001    /// deprecated in favor of audio_features
4002    #[deprecated]
4003    #[prost(bool, tag = "12")]
4004    pub stereo: bool,
4005    /// true if RED (Redundant Encoding) is disabled for audio
4006    #[prost(bool, tag = "13")]
4007    pub disable_red: bool,
4008    #[prost(enumeration = "encryption::Type", tag = "14")]
4009    pub encryption: i32,
4010    /// which stream the track belongs to, used to group tracks together.
4011    /// if not specified, server will infer it from track source to bundle camera/microphone, screenshare/audio together
4012    #[prost(string, tag = "15")]
4013    pub stream: ::prost::alloc::string::String,
4014    #[prost(enumeration = "BackupCodecPolicy", tag = "16")]
4015    pub backup_codec_policy: i32,
4016    #[prost(enumeration = "AudioTrackFeature", repeated, tag = "17")]
4017    pub audio_features: ::prost::alloc::vec::Vec<i32>,
4018    #[prost(enumeration = "PacketTrailerFeature", repeated, tag = "18")]
4019    pub packet_trailer_features: ::prost::alloc::vec::Vec<i32>,
4020}
4021#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4022pub struct PublishDataTrackRequest {
4023    /// Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.
4024    /// This must be non-zero and unique for each data track published by the publisher.
4025    #[prost(uint32, tag = "1")]
4026    pub pub_handle: u32,
4027    /// Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.
4028    /// This must be non-empty and no longer than 256 characters.
4029    #[prost(string, tag = "2")]
4030    pub name: ::prost::alloc::string::String,
4031    /// Method used for end-to-end encryption (E2EE) on frame payloads.
4032    #[prost(enumeration = "encryption::Type", tag = "3")]
4033    pub encryption: i32,
4034    /// Encoding for frame payloads on this track. If unspecified, the track is untyped.
4035    #[prost(message, optional, tag = "4")]
4036    pub frame_encoding: ::core::option::Option<DataTrackFrameEncoding>,
4037    /// ID of the schema used by frames on this track if the track is typed.
4038    /// If set, the associated schema must be stored with `StoreDataBlobRequest`.
4039    #[prost(message, optional, tag = "5")]
4040    pub schema: ::core::option::Option<DataTrackSchemaId>,
4041}
4042#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4043pub struct PublishDataTrackResponse {
4044    /// Information about the published track.
4045    #[prost(message, optional, tag = "1")]
4046    pub info: ::core::option::Option<DataTrackInfo>,
4047}
4048#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4049pub struct UnpublishDataTrackRequest {
4050    /// Publisher handle of the track to unpublish.
4051    #[prost(uint32, tag = "1")]
4052    pub pub_handle: u32,
4053}
4054#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4055pub struct UnpublishDataTrackResponse {
4056    /// Information about the unpublished track.
4057    #[prost(message, optional, tag = "1")]
4058    pub info: ::core::option::Option<DataTrackInfo>,
4059}
4060#[derive(Clone, PartialEq, ::prost::Message)]
4061pub struct DataTrackSubscriberHandles {
4062    /// Maps handles from incoming packets to the track SIDs that the packets belong to.
4063    #[prost(map = "uint32, message", tag = "1")]
4064    pub sub_handles: ::std::collections::HashMap<u32, data_track_subscriber_handles::PublishedDataTrack>,
4065}
4066/// Nested message and enum types in `DataTrackSubscriberHandles`.
4067pub mod data_track_subscriber_handles {
4068    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4069    pub struct PublishedDataTrack {
4070        #[prost(string, tag = "1")]
4071        pub publisher_identity: ::prost::alloc::string::String,
4072        #[prost(string, tag = "2")]
4073        pub publisher_sid: ::prost::alloc::string::String,
4074        #[prost(string, tag = "3")]
4075        pub track_sid: ::prost::alloc::string::String,
4076    }
4077}
4078#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4079pub struct TrickleRequest {
4080    #[prost(string, tag = "1")]
4081    pub candidate_init: ::prost::alloc::string::String,
4082    #[prost(enumeration = "SignalTarget", tag = "2")]
4083    pub target: i32,
4084    #[prost(bool, tag = "3")]
4085    pub r#final: bool,
4086}
4087#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4088pub struct MuteTrackRequest {
4089    #[prost(string, tag = "1")]
4090    pub sid: ::prost::alloc::string::String,
4091    #[prost(bool, tag = "2")]
4092    pub muted: bool,
4093}
4094#[derive(Clone, PartialEq, ::prost::Message)]
4095pub struct JoinResponse {
4096    #[prost(message, optional, tag = "1")]
4097    pub room: ::core::option::Option<Room>,
4098    #[prost(message, optional, tag = "2")]
4099    pub participant: ::core::option::Option<ParticipantInfo>,
4100    #[prost(message, repeated, tag = "3")]
4101    pub other_participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
4102    /// deprecated. use server_info.version instead.
4103    #[prost(string, tag = "4")]
4104    pub server_version: ::prost::alloc::string::String,
4105    #[prost(message, repeated, tag = "5")]
4106    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
4107    /// use subscriber as the primary PeerConnection
4108    #[prost(bool, tag = "6")]
4109    pub subscriber_primary: bool,
4110    /// when the current server isn't available, return alternate url to retry connection
4111    /// when this is set, the other fields will be largely empty
4112    #[prost(string, tag = "7")]
4113    pub alternative_url: ::prost::alloc::string::String,
4114    #[prost(message, optional, tag = "8")]
4115    pub client_configuration: ::core::option::Option<ClientConfiguration>,
4116    /// deprecated. use server_info.region instead.
4117    #[prost(string, tag = "9")]
4118    pub server_region: ::prost::alloc::string::String,
4119    #[prost(int32, tag = "10")]
4120    pub ping_timeout: i32,
4121    #[prost(int32, tag = "11")]
4122    pub ping_interval: i32,
4123    #[prost(message, optional, tag = "12")]
4124    pub server_info: ::core::option::Option<ServerInfo>,
4125    /// Server-Injected-Frame byte trailer, used to identify unencrypted frames when e2ee is enabled
4126    #[prost(bytes = "vec", tag = "13")]
4127    pub sif_trailer: ::prost::alloc::vec::Vec<u8>,
4128    #[prost(message, repeated, tag = "14")]
4129    pub enabled_publish_codecs: ::prost::alloc::vec::Vec<Codec>,
4130    /// when set, client should attempt to establish publish peer connection when joining room to speed up publishing
4131    #[prost(bool, tag = "15")]
4132    pub fast_publish: bool,
4133}
4134#[derive(Clone, PartialEq, ::prost::Message)]
4135pub struct ReconnectResponse {
4136    #[prost(message, repeated, tag = "1")]
4137    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
4138    #[prost(message, optional, tag = "2")]
4139    pub client_configuration: ::core::option::Option<ClientConfiguration>,
4140    #[prost(message, optional, tag = "3")]
4141    pub server_info: ::core::option::Option<ServerInfo>,
4142    /// last sequence number of reliable message received before resuming
4143    #[prost(uint32, tag = "4")]
4144    pub last_message_seq: u32,
4145}
4146#[derive(Clone, PartialEq, ::prost::Message)]
4147pub struct TrackPublishedResponse {
4148    #[prost(string, tag = "1")]
4149    pub cid: ::prost::alloc::string::String,
4150    #[prost(message, optional, tag = "2")]
4151    pub track: ::core::option::Option<TrackInfo>,
4152}
4153#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4154pub struct TrackUnpublishedResponse {
4155    #[prost(string, tag = "1")]
4156    pub track_sid: ::prost::alloc::string::String,
4157}
4158#[derive(Clone, PartialEq, ::prost::Message)]
4159pub struct SessionDescription {
4160    /// "answer" | "offer" | "pranswer" | "rollback"
4161    #[prost(string, tag = "1")]
4162    pub r#type: ::prost::alloc::string::String,
4163    #[prost(string, tag = "2")]
4164    pub sdp: ::prost::alloc::string::String,
4165    #[prost(uint32, tag = "3")]
4166    pub id: u32,
4167    #[prost(map = "string, string", tag = "4")]
4168    pub mid_to_track_id: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4169}
4170#[derive(Clone, PartialEq, ::prost::Message)]
4171pub struct ParticipantUpdate {
4172    #[prost(message, repeated, tag = "1")]
4173    pub participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
4174}
4175#[derive(Clone, PartialEq, ::prost::Message)]
4176pub struct UpdateSubscription {
4177    #[prost(string, repeated, tag = "1")]
4178    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4179    #[prost(bool, tag = "2")]
4180    pub subscribe: bool,
4181    #[prost(message, repeated, tag = "3")]
4182    pub participant_tracks: ::prost::alloc::vec::Vec<ParticipantTracks>,
4183}
4184#[derive(Clone, PartialEq, ::prost::Message)]
4185pub struct UpdateDataSubscription {
4186    #[prost(message, repeated, tag = "1")]
4187    pub updates: ::prost::alloc::vec::Vec<update_data_subscription::Update>,
4188}
4189/// Nested message and enum types in `UpdateDataSubscription`.
4190pub mod update_data_subscription {
4191    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4192    pub struct Update {
4193        #[prost(string, tag = "1")]
4194        pub track_sid: ::prost::alloc::string::String,
4195        #[prost(bool, tag = "2")]
4196        pub subscribe: bool,
4197        /// Options to apply when initially subscribing or updating an existing subscription.
4198        /// When unsubscribing, this field is ignored.
4199        #[prost(message, optional, tag = "3")]
4200        pub options: ::core::option::Option<super::DataTrackSubscriptionOptions>,
4201    }
4202}
4203#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4204pub struct StoreDataBlobRequest {
4205    #[prost(uint32, tag = "1")]
4206    pub request_id: u32,
4207    #[prost(message, optional, tag = "2")]
4208    pub blob: ::core::option::Option<DataBlob>,
4209}
4210#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4211pub struct StoreDataBlobResponse {
4212    #[prost(uint32, tag = "1")]
4213    pub request_id: u32,
4214    /// Unique key the data blob was stored under.
4215    #[prost(message, optional, tag = "2")]
4216    pub key: ::core::option::Option<DataBlobKey>,
4217}
4218#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4219pub struct GetDataBlobRequest {
4220    #[prost(uint32, tag = "1")]
4221    pub request_id: u32,
4222    /// Identity of the participant who owns the blob.
4223    #[prost(string, tag = "2")]
4224    pub participant_identity: ::prost::alloc::string::String,
4225    /// Unique key of the data blob to retrieve.
4226    #[prost(message, optional, tag = "3")]
4227    pub key: ::core::option::Option<DataBlobKey>,
4228}
4229#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4230pub struct GetDataBlobResponse {
4231    #[prost(uint32, tag = "1")]
4232    pub request_id: u32,
4233    #[prost(message, optional, tag = "2")]
4234    pub blob: ::core::option::Option<DataBlob>,
4235}
4236#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4237pub struct UpdateTrackSettings {
4238    #[prost(string, repeated, tag = "1")]
4239    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4240    /// when true, the track is placed in a paused state, with no new data returned
4241    #[prost(bool, tag = "3")]
4242    pub disabled: bool,
4243    /// deprecated in favor of width & height
4244    #[prost(enumeration = "VideoQuality", tag = "4")]
4245    pub quality: i32,
4246    /// for video, width to receive
4247    #[prost(uint32, tag = "5")]
4248    pub width: u32,
4249    /// for video, height to receive
4250    #[prost(uint32, tag = "6")]
4251    pub height: u32,
4252    #[prost(uint32, tag = "7")]
4253    pub fps: u32,
4254    /// subscription priority. 1 being the highest (0 is unset)
4255    /// when unset, server sill assign priority based on the order of subscription
4256    /// server will use priority in the following ways:
4257    /// 1. when subscribed tracks exceed per-participant subscription limit, server will
4258    ///     pause the lowest priority tracks
4259    /// 2. when the network is congested, server will assign available bandwidth to
4260    ///     higher priority tracks first. lowest priority tracks can be paused
4261    #[prost(uint32, tag = "8")]
4262    pub priority: u32,
4263}
4264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4265pub struct UpdateLocalAudioTrack {
4266    #[prost(string, tag = "1")]
4267    pub track_sid: ::prost::alloc::string::String,
4268    #[prost(enumeration = "AudioTrackFeature", repeated, tag = "2")]
4269    pub features: ::prost::alloc::vec::Vec<i32>,
4270}
4271#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4272pub struct UpdateLocalVideoTrack {
4273    #[prost(string, tag = "1")]
4274    pub track_sid: ::prost::alloc::string::String,
4275    #[prost(uint32, tag = "2")]
4276    pub width: u32,
4277    #[prost(uint32, tag = "3")]
4278    pub height: u32,
4279}
4280#[derive(Clone, PartialEq, ::prost::Message)]
4281pub struct LeaveRequest {
4282    /// sent when server initiates the disconnect due to server-restart
4283    /// indicates clients should attempt full-reconnect sequence
4284    /// NOTE: `can_reconnect` obsoleted by `action` starting in protocol version 13
4285    #[prost(bool, tag = "1")]
4286    pub can_reconnect: bool,
4287    #[prost(enumeration = "DisconnectReason", tag = "2")]
4288    pub reason: i32,
4289    #[prost(enumeration = "leave_request::Action", tag = "3")]
4290    pub action: i32,
4291    #[prost(message, optional, tag = "4")]
4292    pub regions: ::core::option::Option<RegionSettings>,
4293}
4294/// Nested message and enum types in `LeaveRequest`.
4295pub mod leave_request {
4296    /// indicates action clients should take on receiving this message
4297    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4298    #[repr(i32)]
4299    pub enum Action {
4300        /// should disconnect
4301        Disconnect = 0,
4302        /// should attempt a resume with `reconnect=1` in join URL
4303        Resume = 1,
4304        /// should attempt a reconnect, i. e. no `reconnect=1`
4305        Reconnect = 2,
4306    }
4307    impl Action {
4308        /// String value of the enum field names used in the ProtoBuf definition.
4309        ///
4310        /// The values are not transformed in any way and thus are considered stable
4311        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4312        pub fn as_str_name(&self) -> &'static str {
4313            match self {
4314                Self::Disconnect => "DISCONNECT",
4315                Self::Resume => "RESUME",
4316                Self::Reconnect => "RECONNECT",
4317            }
4318        }
4319        /// Creates an enum from field names used in the ProtoBuf definition.
4320        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4321            match value {
4322                "DISCONNECT" => Some(Self::Disconnect),
4323                "RESUME" => Some(Self::Resume),
4324                "RECONNECT" => Some(Self::Reconnect),
4325                _ => None,
4326            }
4327        }
4328    }
4329}
4330/// message to indicate published video track dimensions are changing
4331#[derive(Clone, PartialEq, ::prost::Message)]
4332pub struct UpdateVideoLayers {
4333    #[prost(string, tag = "1")]
4334    pub track_sid: ::prost::alloc::string::String,
4335    #[prost(message, repeated, tag = "2")]
4336    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
4337}
4338#[derive(Clone, PartialEq, ::prost::Message)]
4339pub struct UpdateParticipantMetadata {
4340    #[prost(string, tag = "1")]
4341    pub metadata: ::prost::alloc::string::String,
4342    #[prost(string, tag = "2")]
4343    pub name: ::prost::alloc::string::String,
4344    /// attributes to update. it only updates attributes that have been set
4345    /// to delete attributes, set the value to an empty string
4346    #[prost(map = "string, string", tag = "3")]
4347    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4348    #[prost(uint32, tag = "4")]
4349    pub request_id: u32,
4350}
4351#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4352pub struct IceServer {
4353    #[prost(string, repeated, tag = "1")]
4354    pub urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4355    #[prost(string, tag = "2")]
4356    pub username: ::prost::alloc::string::String,
4357    #[prost(string, tag = "3")]
4358    pub credential: ::prost::alloc::string::String,
4359}
4360#[derive(Clone, PartialEq, ::prost::Message)]
4361pub struct SpeakersChanged {
4362    #[prost(message, repeated, tag = "1")]
4363    pub speakers: ::prost::alloc::vec::Vec<SpeakerInfo>,
4364}
4365#[derive(Clone, PartialEq, ::prost::Message)]
4366pub struct RoomUpdate {
4367    #[prost(message, optional, tag = "1")]
4368    pub room: ::core::option::Option<Room>,
4369}
4370#[derive(Clone, PartialEq, ::prost::Message)]
4371pub struct ConnectionQualityInfo {
4372    #[prost(string, tag = "1")]
4373    pub participant_sid: ::prost::alloc::string::String,
4374    #[prost(enumeration = "ConnectionQuality", tag = "2")]
4375    pub quality: i32,
4376    #[prost(float, tag = "3")]
4377    pub score: f32,
4378}
4379#[derive(Clone, PartialEq, ::prost::Message)]
4380pub struct ConnectionQualityUpdate {
4381    #[prost(message, repeated, tag = "1")]
4382    pub updates: ::prost::alloc::vec::Vec<ConnectionQualityInfo>,
4383}
4384#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4385pub struct StreamStateInfo {
4386    #[prost(string, tag = "1")]
4387    pub participant_sid: ::prost::alloc::string::String,
4388    #[prost(string, tag = "2")]
4389    pub track_sid: ::prost::alloc::string::String,
4390    #[prost(enumeration = "StreamState", tag = "3")]
4391    pub state: i32,
4392}
4393#[derive(Clone, PartialEq, ::prost::Message)]
4394pub struct StreamStateUpdate {
4395    #[prost(message, repeated, tag = "1")]
4396    pub stream_states: ::prost::alloc::vec::Vec<StreamStateInfo>,
4397}
4398#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4399pub struct SubscribedQuality {
4400    #[prost(enumeration = "VideoQuality", tag = "1")]
4401    pub quality: i32,
4402    #[prost(bool, tag = "2")]
4403    pub enabled: bool,
4404}
4405#[derive(Clone, PartialEq, ::prost::Message)]
4406pub struct SubscribedCodec {
4407    #[prost(string, tag = "1")]
4408    pub codec: ::prost::alloc::string::String,
4409    #[prost(message, repeated, tag = "2")]
4410    pub qualities: ::prost::alloc::vec::Vec<SubscribedQuality>,
4411}
4412#[derive(Clone, PartialEq, ::prost::Message)]
4413pub struct SubscribedQualityUpdate {
4414    #[prost(string, tag = "1")]
4415    pub track_sid: ::prost::alloc::string::String,
4416    #[deprecated]
4417    #[prost(message, repeated, tag = "2")]
4418    pub subscribed_qualities: ::prost::alloc::vec::Vec<SubscribedQuality>,
4419    #[prost(message, repeated, tag = "3")]
4420    pub subscribed_codecs: ::prost::alloc::vec::Vec<SubscribedCodec>,
4421}
4422#[derive(Clone, PartialEq, ::prost::Message)]
4423pub struct SubscribedAudioCodecUpdate {
4424    #[prost(string, tag = "1")]
4425    pub track_sid: ::prost::alloc::string::String,
4426    #[prost(message, repeated, tag = "2")]
4427    pub subscribed_audio_codecs: ::prost::alloc::vec::Vec<SubscribedAudioCodec>,
4428}
4429#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4430pub struct TrackPermission {
4431    /// permission could be granted either by participant sid or identity
4432    #[prost(string, tag = "1")]
4433    pub participant_sid: ::prost::alloc::string::String,
4434    #[prost(bool, tag = "2")]
4435    pub all_tracks: bool,
4436    #[prost(string, repeated, tag = "3")]
4437    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4438    #[prost(string, tag = "4")]
4439    pub participant_identity: ::prost::alloc::string::String,
4440}
4441#[derive(Clone, PartialEq, ::prost::Message)]
4442pub struct SubscriptionPermission {
4443    #[prost(bool, tag = "1")]
4444    pub all_participants: bool,
4445    #[prost(message, repeated, tag = "2")]
4446    pub track_permissions: ::prost::alloc::vec::Vec<TrackPermission>,
4447}
4448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4449pub struct SubscriptionPermissionUpdate {
4450    #[prost(string, tag = "1")]
4451    pub participant_sid: ::prost::alloc::string::String,
4452    #[prost(string, tag = "2")]
4453    pub track_sid: ::prost::alloc::string::String,
4454    #[prost(bool, tag = "3")]
4455    pub allowed: bool,
4456}
4457#[derive(Clone, PartialEq, ::prost::Message)]
4458pub struct RoomMovedResponse {
4459    /// information about the new room
4460    #[prost(message, optional, tag = "1")]
4461    pub room: ::core::option::Option<Room>,
4462    /// new reconnect token that can be used to reconnect to the new room
4463    #[prost(string, tag = "2")]
4464    pub token: ::prost::alloc::string::String,
4465    #[prost(message, optional, tag = "3")]
4466    pub participant: ::core::option::Option<ParticipantInfo>,
4467    #[prost(message, repeated, tag = "4")]
4468    pub other_participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
4469}
4470#[derive(Clone, PartialEq, ::prost::Message)]
4471pub struct SyncState {
4472    /// last subscribe/publish answer before reconnecting
4473    /// subscribe answer if using dual peer connection
4474    /// publish answer if using single peer connection
4475    #[prost(message, optional, tag = "1")]
4476    pub answer: ::core::option::Option<SessionDescription>,
4477    #[prost(message, optional, tag = "2")]
4478    pub subscription: ::core::option::Option<UpdateSubscription>,
4479    #[prost(message, repeated, tag = "3")]
4480    pub publish_tracks: ::prost::alloc::vec::Vec<TrackPublishedResponse>,
4481    #[prost(message, repeated, tag = "4")]
4482    pub data_channels: ::prost::alloc::vec::Vec<DataChannelInfo>,
4483    /// last received server side offer/sent client side offer before reconnecting
4484    /// received server side offer if using dual peer connection
4485    /// sent client side offer if using single peer connection
4486    #[prost(message, optional, tag = "5")]
4487    pub offer: ::core::option::Option<SessionDescription>,
4488    #[prost(string, repeated, tag = "6")]
4489    pub track_sids_disabled: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4490    #[prost(message, repeated, tag = "7")]
4491    pub datachannel_receive_states: ::prost::alloc::vec::Vec<DataChannelReceiveState>,
4492    #[prost(message, repeated, tag = "8")]
4493    pub publish_data_tracks: ::prost::alloc::vec::Vec<PublishDataTrackResponse>,
4494    #[prost(message, optional, tag = "9")]
4495    pub data_subscription: ::core::option::Option<UpdateDataSubscription>,
4496}
4497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4498pub struct DataChannelReceiveState {
4499    #[prost(string, tag = "1")]
4500    pub publisher_sid: ::prost::alloc::string::String,
4501    #[prost(uint32, tag = "2")]
4502    pub last_seq: u32,
4503}
4504#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4505pub struct DataChannelInfo {
4506    #[prost(string, tag = "1")]
4507    pub label: ::prost::alloc::string::String,
4508    #[prost(uint32, tag = "2")]
4509    pub id: u32,
4510    #[prost(enumeration = "SignalTarget", tag = "3")]
4511    pub target: i32,
4512}
4513#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4514pub struct SimulateScenario {
4515    #[prost(oneof = "simulate_scenario::Scenario", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9")]
4516    pub scenario: ::core::option::Option<simulate_scenario::Scenario>,
4517}
4518/// Nested message and enum types in `SimulateScenario`.
4519pub mod simulate_scenario {
4520    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
4521    pub enum Scenario {
4522        /// simulate N seconds of speaker activity
4523        #[prost(int32, tag = "1")]
4524        SpeakerUpdate(i32),
4525        /// simulate local node failure
4526        #[prost(bool, tag = "2")]
4527        NodeFailure(bool),
4528        /// simulate migration
4529        #[prost(bool, tag = "3")]
4530        Migration(bool),
4531        /// server to send leave
4532        #[prost(bool, tag = "4")]
4533        ServerLeave(bool),
4534        /// switch candidate protocol to tcp
4535        #[prost(enumeration = "super::CandidateProtocol", tag = "5")]
4536        SwitchCandidateProtocol(i32),
4537        /// maximum bandwidth for subscribers, in bps
4538        /// when zero, clears artificial bandwidth limit
4539        #[prost(int64, tag = "6")]
4540        SubscriberBandwidth(i64),
4541        /// disconnect signal on resume
4542        #[prost(bool, tag = "7")]
4543        DisconnectSignalOnResume(bool),
4544        /// disconnect signal on resume before sending any messages from server
4545        #[prost(bool, tag = "8")]
4546        DisconnectSignalOnResumeNoMessages(bool),
4547        /// full reconnect leave request
4548        #[prost(bool, tag = "9")]
4549        LeaveRequestFullReconnect(bool),
4550    }
4551}
4552#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4553pub struct Ping {
4554    #[prost(int64, tag = "1")]
4555    pub timestamp: i64,
4556    /// rtt in milliseconds calculated by client
4557    #[prost(int64, tag = "2")]
4558    pub rtt: i64,
4559}
4560#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4561pub struct Pong {
4562    /// timestamp field of last received ping request
4563    #[prost(int64, tag = "1")]
4564    pub last_ping_timestamp: i64,
4565    #[prost(int64, tag = "2")]
4566    pub timestamp: i64,
4567}
4568#[derive(Clone, PartialEq, ::prost::Message)]
4569pub struct RegionSettings {
4570    #[prost(message, repeated, tag = "1")]
4571    pub regions: ::prost::alloc::vec::Vec<RegionInfo>,
4572}
4573#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4574pub struct RegionInfo {
4575    #[prost(string, tag = "1")]
4576    pub region: ::prost::alloc::string::String,
4577    #[prost(string, tag = "2")]
4578    pub url: ::prost::alloc::string::String,
4579    #[prost(int64, tag = "3")]
4580    pub distance: i64,
4581}
4582#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4583pub struct SubscriptionResponse {
4584    #[prost(string, tag = "1")]
4585    pub track_sid: ::prost::alloc::string::String,
4586    #[prost(enumeration = "SubscriptionError", tag = "2")]
4587    pub err: i32,
4588}
4589#[derive(Clone, PartialEq, ::prost::Message)]
4590pub struct RequestResponse {
4591    #[prost(uint32, tag = "1")]
4592    pub request_id: u32,
4593    #[prost(enumeration = "request_response::Reason", tag = "2")]
4594    pub reason: i32,
4595    #[prost(string, tag = "3")]
4596    pub message: ::prost::alloc::string::String,
4597    #[prost(oneof = "request_response::Request", tags = "4, 5, 6, 7, 8, 9, 10, 11")]
4598    pub request: ::core::option::Option<request_response::Request>,
4599}
4600/// Nested message and enum types in `RequestResponse`.
4601pub mod request_response {
4602    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4603    #[repr(i32)]
4604    pub enum Reason {
4605        Ok = 0,
4606        NotFound = 1,
4607        NotAllowed = 2,
4608        LimitExceeded = 3,
4609        Queued = 4,
4610        UnsupportedType = 5,
4611        UnclassifiedError = 6,
4612        InvalidHandle = 7,
4613        InvalidName = 8,
4614        DuplicateHandle = 9,
4615        DuplicateName = 10,
4616        InvalidRequest = 11,
4617    }
4618    impl Reason {
4619        /// String value of the enum field names used in the ProtoBuf definition.
4620        ///
4621        /// The values are not transformed in any way and thus are considered stable
4622        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4623        pub fn as_str_name(&self) -> &'static str {
4624            match self {
4625                Self::Ok => "OK",
4626                Self::NotFound => "NOT_FOUND",
4627                Self::NotAllowed => "NOT_ALLOWED",
4628                Self::LimitExceeded => "LIMIT_EXCEEDED",
4629                Self::Queued => "QUEUED",
4630                Self::UnsupportedType => "UNSUPPORTED_TYPE",
4631                Self::UnclassifiedError => "UNCLASSIFIED_ERROR",
4632                Self::InvalidHandle => "INVALID_HANDLE",
4633                Self::InvalidName => "INVALID_NAME",
4634                Self::DuplicateHandle => "DUPLICATE_HANDLE",
4635                Self::DuplicateName => "DUPLICATE_NAME",
4636                Self::InvalidRequest => "INVALID_REQUEST",
4637            }
4638        }
4639        /// Creates an enum from field names used in the ProtoBuf definition.
4640        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4641            match value {
4642                "OK" => Some(Self::Ok),
4643                "NOT_FOUND" => Some(Self::NotFound),
4644                "NOT_ALLOWED" => Some(Self::NotAllowed),
4645                "LIMIT_EXCEEDED" => Some(Self::LimitExceeded),
4646                "QUEUED" => Some(Self::Queued),
4647                "UNSUPPORTED_TYPE" => Some(Self::UnsupportedType),
4648                "UNCLASSIFIED_ERROR" => Some(Self::UnclassifiedError),
4649                "INVALID_HANDLE" => Some(Self::InvalidHandle),
4650                "INVALID_NAME" => Some(Self::InvalidName),
4651                "DUPLICATE_HANDLE" => Some(Self::DuplicateHandle),
4652                "DUPLICATE_NAME" => Some(Self::DuplicateName),
4653                "INVALID_REQUEST" => Some(Self::InvalidRequest),
4654                _ => None,
4655            }
4656        }
4657    }
4658    #[derive(Clone, PartialEq, ::prost::Oneof)]
4659    pub enum Request {
4660        #[prost(message, tag = "4")]
4661        Trickle(super::TrickleRequest),
4662        #[prost(message, tag = "5")]
4663        AddTrack(super::AddTrackRequest),
4664        #[prost(message, tag = "6")]
4665        Mute(super::MuteTrackRequest),
4666        #[prost(message, tag = "7")]
4667        UpdateMetadata(super::UpdateParticipantMetadata),
4668        #[prost(message, tag = "8")]
4669        UpdateAudioTrack(super::UpdateLocalAudioTrack),
4670        #[prost(message, tag = "9")]
4671        UpdateVideoTrack(super::UpdateLocalVideoTrack),
4672        #[prost(message, tag = "10")]
4673        PublishDataTrack(super::PublishDataTrackRequest),
4674        #[prost(message, tag = "11")]
4675        UnpublishDataTrack(super::UnpublishDataTrackRequest),
4676    }
4677}
4678#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4679pub struct TrackSubscribed {
4680    #[prost(string, tag = "1")]
4681    pub track_sid: ::prost::alloc::string::String,
4682}
4683#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4684pub struct ConnectionSettings {
4685    #[prost(bool, tag = "1")]
4686    pub auto_subscribe: bool,
4687    #[prost(bool, tag = "2")]
4688    pub adaptive_stream: bool,
4689    #[prost(bool, optional, tag = "3")]
4690    pub subscriber_allow_pause: ::core::option::Option<bool>,
4691    #[prost(bool, tag = "4")]
4692    pub disable_ice_lite: bool,
4693    #[prost(bool, optional, tag = "5")]
4694    pub auto_subscribe_data_track: ::core::option::Option<bool>,
4695}
4696#[derive(Clone, PartialEq, ::prost::Message)]
4697pub struct JoinRequest {
4698    #[prost(message, optional, tag = "1")]
4699    pub client_info: ::core::option::Option<ClientInfo>,
4700    #[prost(message, optional, tag = "2")]
4701    pub connection_settings: ::core::option::Option<ConnectionSettings>,
4702    /// if not empty, will overwrite `metadata` in token
4703    #[prost(string, tag = "3")]
4704    pub metadata: ::prost::alloc::string::String,
4705    /// will set keys provided via this
4706    /// will overwrite if the same key is in the token
4707    /// will not delete keys from token if there is a key collision and this sets that key to empty value
4708    #[prost(map = "string, string", tag = "4")]
4709    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4710    #[prost(message, repeated, tag = "5")]
4711    pub add_track_requests: ::prost::alloc::vec::Vec<AddTrackRequest>,
4712    #[prost(message, optional, tag = "6")]
4713    pub publisher_offer: ::core::option::Option<SessionDescription>,
4714    #[prost(bool, tag = "7")]
4715    pub reconnect: bool,
4716    #[prost(enumeration = "ReconnectReason", tag = "8")]
4717    pub reconnect_reason: i32,
4718    #[prost(string, tag = "9")]
4719    pub participant_sid: ::prost::alloc::string::String,
4720    #[prost(message, optional, tag = "10")]
4721    pub sync_state: ::core::option::Option<SyncState>,
4722}
4723#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4724pub struct WrappedJoinRequest {
4725    #[prost(enumeration = "wrapped_join_request::Compression", tag = "1")]
4726    pub compression: i32,
4727    /// marshalled JoinRequest + potentially compressed
4728    #[prost(bytes = "vec", tag = "2")]
4729    pub join_request: ::prost::alloc::vec::Vec<u8>,
4730}
4731/// Nested message and enum types in `WrappedJoinRequest`.
4732pub mod wrapped_join_request {
4733    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4734    #[repr(i32)]
4735    pub enum Compression {
4736        None = 0,
4737        Gzip = 1,
4738    }
4739    impl Compression {
4740        /// String value of the enum field names used in the ProtoBuf definition.
4741        ///
4742        /// The values are not transformed in any way and thus are considered stable
4743        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4744        pub fn as_str_name(&self) -> &'static str {
4745            match self {
4746                Self::None => "NONE",
4747                Self::Gzip => "GZIP",
4748            }
4749        }
4750        /// Creates an enum from field names used in the ProtoBuf definition.
4751        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4752            match value {
4753                "NONE" => Some(Self::None),
4754                "GZIP" => Some(Self::Gzip),
4755                _ => None,
4756            }
4757        }
4758    }
4759}
4760#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4761pub struct MediaSectionsRequirement {
4762    #[prost(uint32, tag = "1")]
4763    pub num_audios: u32,
4764    #[prost(uint32, tag = "2")]
4765    pub num_videos: u32,
4766}
4767#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4768#[repr(i32)]
4769pub enum SignalTarget {
4770    Publisher = 0,
4771    Subscriber = 1,
4772}
4773impl SignalTarget {
4774    /// String value of the enum field names used in the ProtoBuf definition.
4775    ///
4776    /// The values are not transformed in any way and thus are considered stable
4777    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4778    pub fn as_str_name(&self) -> &'static str {
4779        match self {
4780            Self::Publisher => "PUBLISHER",
4781            Self::Subscriber => "SUBSCRIBER",
4782        }
4783    }
4784    /// Creates an enum from field names used in the ProtoBuf definition.
4785    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4786        match value {
4787            "PUBLISHER" => Some(Self::Publisher),
4788            "SUBSCRIBER" => Some(Self::Subscriber),
4789            _ => None,
4790        }
4791    }
4792}
4793#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4794#[repr(i32)]
4795pub enum StreamState {
4796    Active = 0,
4797    Paused = 1,
4798}
4799impl StreamState {
4800    /// String value of the enum field names used in the ProtoBuf definition.
4801    ///
4802    /// The values are not transformed in any way and thus are considered stable
4803    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4804    pub fn as_str_name(&self) -> &'static str {
4805        match self {
4806            Self::Active => "ACTIVE",
4807            Self::Paused => "PAUSED",
4808        }
4809    }
4810    /// Creates an enum from field names used in the ProtoBuf definition.
4811    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4812        match value {
4813            "ACTIVE" => Some(Self::Active),
4814            "PAUSED" => Some(Self::Paused),
4815            _ => None,
4816        }
4817    }
4818}
4819#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4820#[repr(i32)]
4821pub enum NegotiatedDataChannelId {
4822    NdciInvalid = 0,
4823    NdciReliable = 100,
4824    NdciLossy = 101,
4825    NdciDataTrack = 102,
4826}
4827impl NegotiatedDataChannelId {
4828    /// String value of the enum field names used in the ProtoBuf definition.
4829    ///
4830    /// The values are not transformed in any way and thus are considered stable
4831    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4832    pub fn as_str_name(&self) -> &'static str {
4833        match self {
4834            Self::NdciInvalid => "NDCI_INVALID",
4835            Self::NdciReliable => "NDCI_RELIABLE",
4836            Self::NdciLossy => "NDCI_LOSSY",
4837            Self::NdciDataTrack => "NDCI_DATA_TRACK",
4838        }
4839    }
4840    /// Creates an enum from field names used in the ProtoBuf definition.
4841    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4842        match value {
4843            "NDCI_INVALID" => Some(Self::NdciInvalid),
4844            "NDCI_RELIABLE" => Some(Self::NdciReliable),
4845            "NDCI_LOSSY" => Some(Self::NdciLossy),
4846            "NDCI_DATA_TRACK" => Some(Self::NdciDataTrack),
4847            _ => None,
4848        }
4849    }
4850}
4851#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4852#[repr(i32)]
4853pub enum CandidateProtocol {
4854    Udp = 0,
4855    Tcp = 1,
4856    Tls = 2,
4857}
4858impl CandidateProtocol {
4859    /// String value of the enum field names used in the ProtoBuf definition.
4860    ///
4861    /// The values are not transformed in any way and thus are considered stable
4862    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4863    pub fn as_str_name(&self) -> &'static str {
4864        match self {
4865            Self::Udp => "UDP",
4866            Self::Tcp => "TCP",
4867            Self::Tls => "TLS",
4868        }
4869    }
4870    /// Creates an enum from field names used in the ProtoBuf definition.
4871    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4872        match value {
4873            "UDP" => Some(Self::Udp),
4874            "TCP" => Some(Self::Tcp),
4875            "TLS" => Some(Self::Tls),
4876            _ => None,
4877        }
4878    }
4879}
4880#[derive(Clone, PartialEq, ::prost::Message)]
4881pub struct Job {
4882    #[prost(string, tag = "1")]
4883    pub id: ::prost::alloc::string::String,
4884    #[prost(string, tag = "9")]
4885    pub dispatch_id: ::prost::alloc::string::String,
4886    #[prost(enumeration = "JobType", tag = "2")]
4887    pub r#type: i32,
4888    #[prost(message, optional, tag = "3")]
4889    pub room: ::core::option::Option<Room>,
4890    #[prost(message, optional, tag = "4")]
4891    pub participant: ::core::option::Option<ParticipantInfo>,
4892    #[deprecated]
4893    #[prost(string, tag = "5")]
4894    pub namespace: ::prost::alloc::string::String,
4895    #[prost(string, tag = "6")]
4896    pub metadata: ::prost::alloc::string::String,
4897    #[prost(string, tag = "7")]
4898    pub agent_name: ::prost::alloc::string::String,
4899    #[prost(message, optional, tag = "8")]
4900    pub state: ::core::option::Option<JobState>,
4901    #[prost(bool, tag = "10")]
4902    pub enable_recording: bool,
4903    #[prost(string, tag = "11")]
4904    pub deployment: ::prost::alloc::string::String,
4905    #[prost(map = "string, string", tag = "12")]
4906    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4907    #[prost(bool, tag = "13")]
4908    pub enable_redaction: bool,
4909    /// when the server created the job, in Unix nanoseconds
4910    #[prost(int64, tag = "14")]
4911    pub created_at: i64,
4912    /// The agent thread (an AT_ id, see agent/livekit_agent_thread.proto) the dispatched job's
4913    /// call reads and writes. Empty means the call keeps no durable thread.
4914    #[prost(string, tag = "15")]
4915    pub thread_id: ::prost::alloc::string::String,
4916}
4917#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4918pub struct JobState {
4919    #[prost(enumeration = "JobStatus", tag = "1")]
4920    pub status: i32,
4921    #[prost(string, tag = "2")]
4922    pub error: ::prost::alloc::string::String,
4923    #[prost(int64, tag = "3")]
4924    pub started_at: i64,
4925    #[prost(int64, tag = "4")]
4926    pub ended_at: i64,
4927    #[prost(int64, tag = "5")]
4928    pub updated_at: i64,
4929    #[prost(string, tag = "6")]
4930    pub participant_identity: ::prost::alloc::string::String,
4931    #[prost(string, tag = "7")]
4932    pub worker_id: ::prost::alloc::string::String,
4933    #[prost(string, tag = "8")]
4934    pub agent_id: ::prost::alloc::string::String,
4935    /// why the job has no agent, for JS_PENDING and JS_CANCELLED jobs
4936    #[prost(enumeration = "JobStateReason", tag = "9")]
4937    pub reason: i32,
4938    /// when the server received the worker's accept for this attempt, in Unix nanoseconds
4939    #[prost(int64, tag = "10")]
4940    pub accepted_at: i64,
4941    /// when the server sent the assignment for this attempt, in Unix nanoseconds
4942    #[prost(int64, tag = "11")]
4943    pub assigned_at: i64,
4944    /// attempts assigned to a worker so far, the current one included
4945    #[prost(uint32, tag = "12")]
4946    pub attempts: u32,
4947    /// started_at of the first attempt assigned to a worker, in Unix nanoseconds
4948    #[prost(int64, tag = "13")]
4949    pub first_started_at: i64,
4950    /// time spent in attempts the agent's own code failed before the agent
4951    /// joined, as an entrypoint that fails before it connects: from each such
4952    /// attempt's start to the next attempt's start, in nanoseconds
4953    #[prost(int64, tag = "14")]
4954    pub agent_failed_attempts_ns: i64,
4955    /// workers asked to take this attempt, the one that took it included
4956    #[prost(uint32, tag = "15")]
4957    pub workers_asked: u32,
4958}
4959/// from Worker to Server
4960#[derive(Clone, PartialEq, ::prost::Message)]
4961pub struct WorkerMessage {
4962    #[prost(oneof = "worker_message::Message", tags = "1, 2, 3, 4, 5, 6, 7, 8")]
4963    pub message: ::core::option::Option<worker_message::Message>,
4964}
4965/// Nested message and enum types in `WorkerMessage`.
4966pub mod worker_message {
4967    #[derive(Clone, PartialEq, ::prost::Oneof)]
4968    pub enum Message {
4969        /// agent workers need to register themselves with the server first
4970        #[prost(message, tag = "1")]
4971        Register(super::RegisterWorkerRequest),
4972        /// worker confirms to server that it's available for a job, or declines it
4973        #[prost(message, tag = "2")]
4974        Availability(super::AvailabilityResponse),
4975        /// worker can update its status to the server, including taking itself out of the pool
4976        #[prost(message, tag = "3")]
4977        UpdateWorker(super::UpdateWorkerStatus),
4978        /// job can send status updates to the server, useful for tracking progress
4979        #[prost(message, tag = "4")]
4980        UpdateJob(super::UpdateJobStatus),
4981        #[prost(message, tag = "5")]
4982        Ping(super::WorkerPing),
4983        #[prost(message, tag = "6")]
4984        SimulateJob(super::SimulateJobRequest),
4985        #[prost(message, tag = "7")]
4986        MigrateJob(super::MigrateJobRequest),
4987        /// a running job asks the server to sign an access token for it
4988        #[prost(message, tag = "8")]
4989        CreateJobToken(super::CreateJobTokenRequest),
4990    }
4991}
4992/// from Server to Worker
4993#[derive(Clone, PartialEq, ::prost::Message)]
4994pub struct ServerMessage {
4995    #[prost(oneof = "server_message::Message", tags = "1, 2, 3, 5, 4, 6, 7")]
4996    pub message: ::core::option::Option<server_message::Message>,
4997}
4998/// Nested message and enum types in `ServerMessage`.
4999pub mod server_message {
5000    #[derive(Clone, PartialEq, ::prost::Oneof)]
5001    pub enum Message {
5002        /// server confirms the registration, from this moment on, the worker is considered active
5003        #[prost(message, tag = "1")]
5004        Register(super::RegisterWorkerResponse),
5005        /// server asks worker to confirm availability for a job
5006        #[prost(message, tag = "2")]
5007        Availability(super::AvailabilityRequest),
5008        #[prost(message, tag = "3")]
5009        Assignment(super::JobAssignment),
5010        #[prost(message, tag = "5")]
5011        Termination(super::JobTermination),
5012        #[prost(message, tag = "4")]
5013        Pong(super::WorkerPong),
5014        /// the server is draining this control connection: re-register elsewhere,
5015        /// in-flight agent HTTP streams run to completion
5016        #[prost(message, tag = "6")]
5017        GoAway(super::agent_http::GoAway),
5018        #[prost(message, tag = "7")]
5019        CreateJobToken(super::CreateJobTokenResponse),
5020    }
5021}
5022#[derive(Clone, PartialEq, ::prost::Message)]
5023pub struct SimulateJobRequest {
5024    #[prost(enumeration = "JobType", tag = "1")]
5025    pub r#type: i32,
5026    #[prost(message, optional, tag = "2")]
5027    pub room: ::core::option::Option<Room>,
5028    #[prost(message, optional, tag = "3")]
5029    pub participant: ::core::option::Option<ParticipantInfo>,
5030}
5031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5032pub struct WorkerPing {
5033    #[prost(int64, tag = "1")]
5034    pub timestamp: i64,
5035}
5036#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5037pub struct WorkerPong {
5038    #[prost(int64, tag = "1")]
5039    pub last_timestamp: i64,
5040    #[prost(int64, tag = "2")]
5041    pub timestamp: i64,
5042}
5043#[derive(Clone, PartialEq, ::prost::Message)]
5044pub struct RegisterWorkerRequest {
5045    #[prost(enumeration = "JobType", tag = "1")]
5046    pub r#type: i32,
5047    #[prost(string, tag = "8")]
5048    pub agent_name: ::prost::alloc::string::String,
5049    #[prost(string, tag = "3")]
5050    pub version: ::prost::alloc::string::String,
5051    #[prost(uint32, tag = "5")]
5052    pub ping_interval: u32,
5053    #[prost(string, optional, tag = "6")]
5054    pub namespace: ::core::option::Option<::prost::alloc::string::String>,
5055    #[prost(message, optional, tag = "7")]
5056    pub allowed_permissions: ::core::option::Option<ParticipantPermission>,
5057    #[prost(string, tag = "9")]
5058    pub deployment: ::prost::alloc::string::String,
5059    /// HTTP endpoints this worker serves through the data plane, in route order.
5060    /// Empty means the worker exposes no endpoints and needs no data connections.
5061    #[prost(message, repeated, tag = "10")]
5062    pub endpoints: ::prost::alloc::vec::Vec<agent_http::AgentEndpoint>,
5063    /// random per process; a re-registration with a new instance_id supersedes the
5064    /// previous epoch and closes its remaining connections
5065    #[prost(string, tag = "11")]
5066    pub instance_id: ::prost::alloc::string::String,
5067    /// highest data-plane protocol version the worker supports; 0 = unsupported
5068    #[prost(uint32, tag = "12")]
5069    pub endpoint_protocol: u32,
5070}
5071#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5072pub struct RegisterWorkerResponse {
5073    #[prost(string, tag = "1")]
5074    pub worker_id: ::prost::alloc::string::String,
5075    #[prost(message, optional, tag = "3")]
5076    pub server_info: ::core::option::Option<ServerInfo>,
5077    /// present iff the registration carried endpoints and the server supports the data plane
5078    #[prost(message, optional, tag = "4")]
5079    pub endpoint_settings: ::core::option::Option<agent_http::AgentEndpointSettings>,
5080}
5081#[derive(Clone, PartialEq, ::prost::Message)]
5082pub struct MigrateJobRequest {
5083    /// string job_id = 1 \[deprecated = true\];
5084    #[prost(string, repeated, tag = "2")]
5085    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5086    /// the jobs in job_ids as they were assigned, with state.participant_identity
5087    /// set to the identity the worker accepted them with
5088    #[prost(message, repeated, tag = "3")]
5089    pub jobs: ::prost::alloc::vec::Vec<Job>,
5090}
5091#[derive(Clone, PartialEq, ::prost::Message)]
5092pub struct AvailabilityRequest {
5093    #[prost(message, optional, tag = "1")]
5094    pub job: ::core::option::Option<Job>,
5095    /// True when the job was previously assigned to another worker but has been
5096    /// migrated due to different reasons (e.g. worker failure, job migration)
5097    #[prost(bool, tag = "2")]
5098    pub resuming: bool,
5099}
5100#[derive(Clone, PartialEq, ::prost::Message)]
5101pub struct AvailabilityResponse {
5102    #[prost(string, tag = "1")]
5103    pub job_id: ::prost::alloc::string::String,
5104    #[prost(bool, tag = "2")]
5105    pub available: bool,
5106    #[prost(bool, tag = "3")]
5107    pub supports_resume: bool,
5108    #[prost(bool, tag = "8")]
5109    pub terminate: bool,
5110    #[prost(string, tag = "4")]
5111    pub participant_name: ::prost::alloc::string::String,
5112    #[prost(string, tag = "5")]
5113    pub participant_identity: ::prost::alloc::string::String,
5114    #[prost(string, tag = "6")]
5115    pub participant_metadata: ::prost::alloc::string::String,
5116    /// NEXT_ID: 9
5117    #[prost(map = "string, string", tag = "7")]
5118    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5119}
5120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5121pub struct UpdateJobStatus {
5122    #[prost(string, tag = "1")]
5123    pub job_id: ::prost::alloc::string::String,
5124    /// The worker can indicate the job end by either specifying SUCCESS or FAILED
5125    #[prost(enumeration = "JobStatus", tag = "2")]
5126    pub status: i32,
5127    /// metadata shown on the dashboard, useful for debugging
5128    #[prost(string, tag = "3")]
5129    pub error: ::prost::alloc::string::String,
5130    /// set once the agent has connected to the room
5131    #[prost(message, optional, tag = "4")]
5132    pub join_timing: ::core::option::Option<JobJoinTiming>,
5133}
5134/// Instants of one agent join on the worker host's monotonic clock, in microseconds. The
5135/// clock origin is arbitrary, so only differences between these values carry meaning on
5136/// their own. The worker and its job processes share this clock.
5137#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5138pub struct JobJoinTiming {
5139    /// availability request received
5140    #[prost(int64, tag = "1")]
5141    pub offer_received_us: i64,
5142    /// request handler accepted the job
5143    #[prost(int64, tag = "2")]
5144    pub accepted_us: i64,
5145    /// job assignment received
5146    #[prost(int64, tag = "3")]
5147    pub assignment_received_us: i64,
5148    /// a job process was handed the job
5149    #[prost(int64, tag = "4")]
5150    pub launched_us: i64,
5151    /// an idle process took the job; false means one was spawned
5152    #[prost(bool, tag = "5")]
5153    pub launch_warm: bool,
5154    /// the agent's entrypoint started
5155    #[prost(int64, tag = "6")]
5156    pub entrypoint_started_us: i64,
5157    /// the agent called room connect
5158    #[prost(int64, tag = "7")]
5159    pub connect_called_us: i64,
5160    /// the agent's primary transport connected
5161    #[prost(int64, tag = "8")]
5162    pub connected_us: i64,
5163}
5164#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5165pub struct UpdateWorkerStatus {
5166    #[prost(enumeration = "WorkerStatus", optional, tag = "1")]
5167    pub status: ::core::option::Option<i32>,
5168    #[prost(float, tag = "3")]
5169    pub load: f32,
5170    #[prost(uint32, tag = "4")]
5171    pub job_count: u32,
5172    /// worker wants no new streams; existing streams run to completion
5173    #[prost(bool, tag = "5")]
5174    pub draining: bool,
5175    /// monotonic per registration; status updates may interleave across connections
5176    /// and a stale report must not regress newer state
5177    #[prost(uint64, tag = "6")]
5178    pub seq: u64,
5179}
5180#[derive(Clone, PartialEq, ::prost::Message)]
5181pub struct JobAssignment {
5182    #[prost(message, optional, tag = "1")]
5183    pub job: ::core::option::Option<Job>,
5184    #[prost(string, optional, tag = "2")]
5185    pub url: ::core::option::Option<::prost::alloc::string::String>,
5186    #[prost(string, tag = "3")]
5187    pub token: ::prost::alloc::string::String,
5188}
5189#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5190pub struct JobTermination {
5191    #[prost(string, tag = "1")]
5192    pub job_id: ::prost::alloc::string::String,
5193}
5194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5195pub struct CreateJobTokenRequest {
5196    /// echoed in the response
5197    #[prost(string, tag = "1")]
5198    pub request_id: ::prost::alloc::string::String,
5199    #[prost(string, tag = "2")]
5200    pub job_id: ::prost::alloc::string::String,
5201    /// The claims of the token the job wants, as JSON, in the same shape as an
5202    /// access token's payload: identity, name, attributes, video, sip, and so on.
5203    #[prost(string, tag = "3")]
5204    pub claims: ::prost::alloc::string::String,
5205}
5206#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5207pub struct CreateJobTokenResponse {
5208    #[prost(string, tag = "1")]
5209    pub request_id: ::prost::alloc::string::String,
5210    #[prost(string, tag = "2")]
5211    pub token: ::prost::alloc::string::String,
5212    /// Unix seconds
5213    #[prost(int64, tag = "3")]
5214    pub expires_at: i64,
5215    /// empty on success; otherwise why the token was refused, naming any refused claim
5216    #[prost(string, tag = "4")]
5217    pub error: ::prost::alloc::string::String,
5218}
5219/// ----- agent HTTP endpoints data plane -----
5220///
5221/// AgentHttp namespaces the data plane: workers expose HTTP endpoints served at
5222/// /agents/{agent_name}/{deployment}/{path} without binding any local listener.
5223/// The worker opens ONE WebTransport (QUIC) session to /agent that carries both
5224/// its control stream (the same WorkerMessage/ServerMessage exchange as the
5225/// WebSocket control connection, length-delimited) and every HTTP exchange: the
5226/// node opens one bidirectional QUIC stream per request. QUIC provides the
5227/// multiplexing and per-stream flow control, so there is no credit accounting
5228/// and no attach handshake.
5229///
5230/// Each exchange stream is:
5231///
5232///    [len:u32be][StreamPreamble]   the only LiveKit framing
5233///    \[ ... opaque bytes ... \]      one HTTP/1.1 exchange, to FIN or RESET_STREAM
5234///
5235/// After the preamble the stream is byte-transparent: the node writes a
5236/// canonical HTTP/1.1 request and the worker replies with an HTTP/1.1 response,
5237/// each parsed by whatever HTTP implementation the side already has. A WebSocket
5238/// upgrade is therefore an ordinary request whose response is a 101, after which
5239/// the stream is a byte pipe. The protocol evolves by version negotiation at
5240/// registration, so the preamble carries no version of its own.
5241///
5242/// Bodies use ordinary HTTP/1.1 framing, Content-Length or chunked, and are
5243/// unbounded: a body may be many gigabytes and must be streamed. Request and
5244/// response size limits are policy for the layer above.
5245///
5246/// How one direction ends:
5247///
5248///    success             end of message per the body's own framing, then FIN.
5249///    failed mid-body     chunked trailer fields x-lk-completion and x-lk-error,
5250///                        in band, so the outcome cannot race the bytes it
5251///                        describes.
5252///    failed before any   RESET_STREAM carrying an HttpStreamResetCode, sound
5253///    bytes               only here, where nothing is in flight.
5254///
5255/// FIN before the body's own framing says it is complete is truncation, and a
5256/// receiver must surface it as such.
5257///
5258/// The x-lk- header prefix is reserved for this signalling in both directions.
5259/// A node strips it from client-supplied request headers, so a client cannot
5260/// forge one, and strips it from responses, so it never reaches the end client.
5261#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5262pub struct AgentHttp {
5263}
5264/// Nested message and enum types in `AgentHttp`.
5265pub mod agent_http {
5266    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5267    pub struct AgentEndpoint {
5268        /// starlette-style path template rooted at '/': {name} (one segment, default),
5269        /// {name:int}, {name:float}, {name:uuid} (constrained single segments),
5270        /// {name:path} (multi-segment). Custom converters are rejected.
5271        #[prost(string, tag = "1")]
5272        pub path: ::prost::alloc::string::String,
5273        /// uppercase, exactly as the application routes them (FastAPI does not imply
5274        /// HEAD from GET)
5275        #[prost(string, repeated, tag = "2")]
5276        pub methods: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5277        #[prost(enumeration = "AgentEndpointKind", tag = "3")]
5278        pub kind: i32,
5279        /// reachable without a project token
5280        #[prost(bool, tag = "4")]
5281        pub public: bool,
5282    }
5283    /// registration-level settings negotiated on the control connection, returned
5284    /// in RegisterWorkerResponse when the worker declares endpoints and the server
5285    /// supports the data plane.
5286    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5287    pub struct AgentEndpointSettings {
5288        /// the negotiated data-plane protocol version; the worker speaks exactly this
5289        /// or closes the session
5290        #[prost(uint32, tag = "1")]
5291        pub protocol: u32,
5292    }
5293    /// the first thing on every exchange stream, node -> worker. It carries only
5294    /// what the worker cannot derive from the HTTP bytes that follow and what it
5295    /// must not infer from client-supplied headers - identity above all.
5296    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5297    pub struct StreamPreamble {
5298        /// what the bytes after this preamble are. A field rather than a framing
5299        /// tag, so a new stream semantic costs no new mechanism.
5300        #[prost(enumeration = "AgentEndpointKind", tag = "1")]
5301        pub kind: i32,
5302        #[prost(string, tag = "2")]
5303        pub request_id: ::prost::alloc::string::String,
5304        /// the caller holds agent-endpoint call permission for this agent and
5305        /// deployment. Always true on a non-public route.
5306        #[prost(bool, tag = "3")]
5307        pub authorized: bool,
5308        /// the manifest template that matched, e.g. "/items/{id}"
5309        #[prost(string, tag = "4")]
5310        pub route: ::prost::alloc::string::String,
5311        /// relative, because node and worker clocks are not synchronized. 0 imposes
5312        /// no deadline.
5313        #[prost(uint32, tag = "5")]
5314        pub timeout_ms: u32,
5315        /// end client address, host only
5316        #[prost(string, tag = "6")]
5317        pub client_addr: ::prost::alloc::string::String,
5318        /// "http" or "https" as the end client saw it; not derivable worker-side
5319        ///
5320        /// NEXT_ID: 8
5321        #[prost(string, tag = "7")]
5322        pub scheme: ::prost::alloc::string::String,
5323    }
5324    /// the server is draining: the worker should re-register elsewhere; in-flight
5325    /// HTTP exchanges run to completion
5326    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5327    pub struct GoAway {
5328        #[prost(string, tag = "1")]
5329        pub reason: ::prost::alloc::string::String,
5330    }
5331    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5332    #[repr(i32)]
5333    pub enum AgentEndpointKind {
5334        AekHttp = 0,
5335        /// reserved for future text-mode endpoints
5336        AekText = 1,
5337    }
5338    impl AgentEndpointKind {
5339        /// String value of the enum field names used in the ProtoBuf definition.
5340        ///
5341        /// The values are not transformed in any way and thus are considered stable
5342        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5343        pub fn as_str_name(&self) -> &'static str {
5344            match self {
5345                Self::AekHttp => "AEK_HTTP",
5346                Self::AekText => "AEK_TEXT",
5347            }
5348        }
5349        /// Creates an enum from field names used in the ProtoBuf definition.
5350        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5351            match value {
5352                "AEK_HTTP" => Some(Self::AekHttp),
5353                "AEK_TEXT" => Some(Self::AekText),
5354                _ => None,
5355            }
5356        }
5357    }
5358    /// why a stream was reset before any HTTP bytes flowed. This travels as the
5359    /// QUIC RESET_STREAM / STOP_SENDING error code, so it is a number with no room
5360    /// for detail: the reason string is logged by the side that reset and joined
5361    /// to this by request_id. An outcome after bytes have flowed travels in
5362    /// trailers instead, where it cannot race them.
5363    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5364    #[repr(i32)]
5365    pub enum HttpStreamResetCode {
5366        /// no information. The ordinary cancel code, sent whenever a stream is torn
5367        /// down without a specific outcome, so it must stay the zero value and must
5368        /// not imply that anything was or was not applied.
5369        HsrAbort = 0,
5370        /// the worker aborted before any application code observed the request, so
5371        /// nothing was applied and the exchange is safe to retry. Requires that the
5372        /// application was never entered; a 404 it returned is an ordinary response.
5373        HsrRefused = 1,
5374        /// the application was entered and then failed before producing a response
5375        /// head; side effects may already have happened, so this is not safe to
5376        /// retry.
5377        HsrInternal = 2,
5378        /// the deadline elapsed before a response head was produced
5379        HsrTimeout = 3,
5380        /// the peer's bytes were not valid HTTP/1.1
5381        HsrProtocol = 4,
5382    }
5383    impl HttpStreamResetCode {
5384        /// String value of the enum field names used in the ProtoBuf definition.
5385        ///
5386        /// The values are not transformed in any way and thus are considered stable
5387        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5388        pub fn as_str_name(&self) -> &'static str {
5389            match self {
5390                Self::HsrAbort => "HSR_ABORT",
5391                Self::HsrRefused => "HSR_REFUSED",
5392                Self::HsrInternal => "HSR_INTERNAL",
5393                Self::HsrTimeout => "HSR_TIMEOUT",
5394                Self::HsrProtocol => "HSR_PROTOCOL",
5395            }
5396        }
5397        /// Creates an enum from field names used in the ProtoBuf definition.
5398        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5399            match value {
5400                "HSR_ABORT" => Some(Self::HsrAbort),
5401                "HSR_REFUSED" => Some(Self::HsrRefused),
5402                "HSR_INTERNAL" => Some(Self::HsrInternal),
5403                "HSR_TIMEOUT" => Some(Self::HsrTimeout),
5404                "HSR_PROTOCOL" => Some(Self::HsrProtocol),
5405                _ => None,
5406            }
5407        }
5408    }
5409}
5410#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5411#[repr(i32)]
5412pub enum JobType {
5413    JtRoom = 0,
5414    JtPublisher = 1,
5415    JtParticipant = 2,
5416}
5417impl JobType {
5418    /// String value of the enum field names used in the ProtoBuf definition.
5419    ///
5420    /// The values are not transformed in any way and thus are considered stable
5421    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5422    pub fn as_str_name(&self) -> &'static str {
5423        match self {
5424            Self::JtRoom => "JT_ROOM",
5425            Self::JtPublisher => "JT_PUBLISHER",
5426            Self::JtParticipant => "JT_PARTICIPANT",
5427        }
5428    }
5429    /// Creates an enum from field names used in the ProtoBuf definition.
5430    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5431        match value {
5432            "JT_ROOM" => Some(Self::JtRoom),
5433            "JT_PUBLISHER" => Some(Self::JtPublisher),
5434            "JT_PARTICIPANT" => Some(Self::JtParticipant),
5435            _ => None,
5436        }
5437    }
5438}
5439#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5440#[repr(i32)]
5441pub enum WorkerStatus {
5442    WsAvailable = 0,
5443    WsFull = 1,
5444}
5445impl WorkerStatus {
5446    /// String value of the enum field names used in the ProtoBuf definition.
5447    ///
5448    /// The values are not transformed in any way and thus are considered stable
5449    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5450    pub fn as_str_name(&self) -> &'static str {
5451        match self {
5452            Self::WsAvailable => "WS_AVAILABLE",
5453            Self::WsFull => "WS_FULL",
5454        }
5455    }
5456    /// Creates an enum from field names used in the ProtoBuf definition.
5457    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5458        match value {
5459            "WS_AVAILABLE" => Some(Self::WsAvailable),
5460            "WS_FULL" => Some(Self::WsFull),
5461            _ => None,
5462        }
5463    }
5464}
5465#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5466#[repr(i32)]
5467pub enum JobStatus {
5468    JsPending = 0,
5469    JsRunning = 1,
5470    JsSuccess = 2,
5471    JsFailed = 3,
5472    /// the job ended before it was assigned to an agent
5473    JsCancelled = 4,
5474}
5475impl JobStatus {
5476    /// String value of the enum field names used in the ProtoBuf definition.
5477    ///
5478    /// The values are not transformed in any way and thus are considered stable
5479    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5480    pub fn as_str_name(&self) -> &'static str {
5481        match self {
5482            Self::JsPending => "JS_PENDING",
5483            Self::JsRunning => "JS_RUNNING",
5484            Self::JsSuccess => "JS_SUCCESS",
5485            Self::JsFailed => "JS_FAILED",
5486            Self::JsCancelled => "JS_CANCELLED",
5487        }
5488    }
5489    /// Creates an enum from field names used in the ProtoBuf definition.
5490    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5491        match value {
5492            "JS_PENDING" => Some(Self::JsPending),
5493            "JS_RUNNING" => Some(Self::JsRunning),
5494            "JS_SUCCESS" => Some(Self::JsSuccess),
5495            "JS_FAILED" => Some(Self::JsFailed),
5496            "JS_CANCELLED" => Some(Self::JsCancelled),
5497            _ => None,
5498        }
5499    }
5500}
5501#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5502#[repr(i32)]
5503pub enum JobStateReason {
5504    JsrUnspecified = 0,
5505    /// no agent was available to accept the job
5506    JsrNoCapacity = 1,
5507    /// the room closed before an agent was assigned
5508    JsrRoomClosed = 2,
5509    /// the dispatch was deleted before an agent was assigned
5510    JsrDispatchDeleted = 3,
5511    /// the job failed and is being dispatched again
5512    JsrRetrying = 4,
5513}
5514impl JobStateReason {
5515    /// String value of the enum field names used in the ProtoBuf definition.
5516    ///
5517    /// The values are not transformed in any way and thus are considered stable
5518    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5519    pub fn as_str_name(&self) -> &'static str {
5520        match self {
5521            Self::JsrUnspecified => "JSR_UNSPECIFIED",
5522            Self::JsrNoCapacity => "JSR_NO_CAPACITY",
5523            Self::JsrRoomClosed => "JSR_ROOM_CLOSED",
5524            Self::JsrDispatchDeleted => "JSR_DISPATCH_DELETED",
5525            Self::JsrRetrying => "JSR_RETRYING",
5526        }
5527    }
5528    /// Creates an enum from field names used in the ProtoBuf definition.
5529    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5530        match value {
5531            "JSR_UNSPECIFIED" => Some(Self::JsrUnspecified),
5532            "JSR_NO_CAPACITY" => Some(Self::JsrNoCapacity),
5533            "JSR_ROOM_CLOSED" => Some(Self::JsrRoomClosed),
5534            "JSR_DISPATCH_DELETED" => Some(Self::JsrDispatchDeleted),
5535            "JSR_RETRYING" => Some(Self::JsrRetrying),
5536            _ => None,
5537        }
5538    }
5539}
5540#[derive(Clone, PartialEq, ::prost::Message)]
5541pub struct CreateAgentDispatchRequest {
5542    #[prost(string, tag = "1")]
5543    pub agent_name: ::prost::alloc::string::String,
5544    #[prost(string, tag = "2")]
5545    pub room: ::prost::alloc::string::String,
5546    #[prost(string, tag = "3")]
5547    pub metadata: ::prost::alloc::string::String,
5548    /// cloud only
5549    #[prost(enumeration = "JobRestartPolicy", tag = "4")]
5550    pub restart_policy: i32,
5551    #[prost(string, tag = "5")]
5552    pub deployment: ::prost::alloc::string::String,
5553    #[prost(map = "string, string", tag = "6")]
5554    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5555    /// The agent thread (an AT_ id, see agent/livekit_agent_thread.proto) the dispatched job's
5556    /// call reads and writes. Empty means the call keeps no durable thread.
5557    #[prost(string, tag = "7")]
5558    pub thread_id: ::prost::alloc::string::String,
5559}
5560#[derive(Clone, PartialEq, ::prost::Message)]
5561pub struct RoomAgentDispatch {
5562    #[prost(string, tag = "1")]
5563    pub agent_name: ::prost::alloc::string::String,
5564    #[prost(string, tag = "2")]
5565    pub metadata: ::prost::alloc::string::String,
5566    /// cloud only
5567    #[prost(enumeration = "JobRestartPolicy", tag = "3")]
5568    pub restart_policy: i32,
5569    #[prost(string, tag = "4")]
5570    pub deployment: ::prost::alloc::string::String,
5571    #[prost(map = "string, string", tag = "5")]
5572    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5573    /// The agent thread (an AT_ id, see agent/livekit_agent_thread.proto) the dispatched job's
5574    /// call reads and writes. Empty means the call keeps no durable thread.
5575    #[prost(string, tag = "6")]
5576    pub thread_id: ::prost::alloc::string::String,
5577}
5578#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5579pub struct DeleteAgentDispatchRequest {
5580    #[prost(string, tag = "1")]
5581    pub dispatch_id: ::prost::alloc::string::String,
5582    #[prost(string, tag = "2")]
5583    pub room: ::prost::alloc::string::String,
5584}
5585#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5586pub struct ListAgentDispatchRequest {
5587    /// if set, only the dispatch whose id is given will be returned
5588    #[prost(string, tag = "1")]
5589    pub dispatch_id: ::prost::alloc::string::String,
5590    /// name of the room to list agents for. Must be set.
5591    #[prost(string, tag = "2")]
5592    pub room: ::prost::alloc::string::String,
5593}
5594#[derive(Clone, PartialEq, ::prost::Message)]
5595pub struct ListAgentDispatchResponse {
5596    #[prost(message, repeated, tag = "1")]
5597    pub agent_dispatches: ::prost::alloc::vec::Vec<AgentDispatch>,
5598}
5599#[derive(Clone, PartialEq, ::prost::Message)]
5600pub struct AgentDispatch {
5601    #[prost(string, tag = "1")]
5602    pub id: ::prost::alloc::string::String,
5603    #[prost(string, tag = "2")]
5604    pub agent_name: ::prost::alloc::string::String,
5605    #[prost(string, tag = "3")]
5606    pub room: ::prost::alloc::string::String,
5607    #[prost(string, tag = "4")]
5608    pub metadata: ::prost::alloc::string::String,
5609    #[prost(message, optional, tag = "5")]
5610    pub state: ::core::option::Option<AgentDispatchState>,
5611    /// cloud only
5612    #[prost(enumeration = "JobRestartPolicy", tag = "6")]
5613    pub restart_policy: i32,
5614    #[prost(string, tag = "7")]
5615    pub deployment: ::prost::alloc::string::String,
5616    #[prost(map = "string, string", tag = "8")]
5617    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5618    /// The agent thread (an AT_ id, see agent/livekit_agent_thread.proto) the dispatched job's
5619    /// call reads and writes. Empty means the call keeps no durable thread.
5620    #[prost(string, tag = "9")]
5621    pub thread_id: ::prost::alloc::string::String,
5622}
5623#[derive(Clone, PartialEq, ::prost::Message)]
5624pub struct AgentDispatchState {
5625    /// For dispatches of tyoe JT_ROOM, there will be at most 1 job.
5626    /// For dispatches of type JT_PUBLISHER, there will be 1 per publisher.
5627    #[prost(message, repeated, tag = "1")]
5628    pub jobs: ::prost::alloc::vec::Vec<Job>,
5629    #[prost(int64, tag = "2")]
5630    pub created_at: i64,
5631    #[prost(int64, tag = "3")]
5632    pub deleted_at: i64,
5633    #[prost(enumeration = "AgentDispatchTrigger", tag = "4")]
5634    pub trigger: i32,
5635}
5636#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5637#[repr(i32)]
5638pub enum JobRestartPolicy {
5639    /// restart when the job fails (default)
5640    JrpOnFailure = 0,
5641    /// never restart
5642    JrpNever = 1,
5643}
5644impl JobRestartPolicy {
5645    /// String value of the enum field names used in the ProtoBuf definition.
5646    ///
5647    /// The values are not transformed in any way and thus are considered stable
5648    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5649    pub fn as_str_name(&self) -> &'static str {
5650        match self {
5651            Self::JrpOnFailure => "JRP_ON_FAILURE",
5652            Self::JrpNever => "JRP_NEVER",
5653        }
5654    }
5655    /// Creates an enum from field names used in the ProtoBuf definition.
5656    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5657        match value {
5658            "JRP_ON_FAILURE" => Some(Self::JrpOnFailure),
5659            "JRP_NEVER" => Some(Self::JrpNever),
5660            _ => None,
5661        }
5662    }
5663}
5664/// what created the dispatch
5665#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5666#[repr(i32)]
5667pub enum AgentDispatchTrigger {
5668    AdtUnspecified = 0,
5669    /// a participant joining created the room, and with it the dispatch
5670    AdtJoin = 1,
5671    /// the CreateRoom API created the room, and with it the dispatch
5672    AdtRoomApi = 2,
5673    /// the CreateDispatch API
5674    AdtDispatchApi = 3,
5675}
5676impl AgentDispatchTrigger {
5677    /// String value of the enum field names used in the ProtoBuf definition.
5678    ///
5679    /// The values are not transformed in any way and thus are considered stable
5680    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5681    pub fn as_str_name(&self) -> &'static str {
5682        match self {
5683            Self::AdtUnspecified => "ADT_UNSPECIFIED",
5684            Self::AdtJoin => "ADT_JOIN",
5685            Self::AdtRoomApi => "ADT_ROOM_API",
5686            Self::AdtDispatchApi => "ADT_DISPATCH_API",
5687        }
5688    }
5689    /// Creates an enum from field names used in the ProtoBuf definition.
5690    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5691        match value {
5692            "ADT_UNSPECIFIED" => Some(Self::AdtUnspecified),
5693            "ADT_JOIN" => Some(Self::AdtJoin),
5694            "ADT_ROOM_API" => Some(Self::AdtRoomApi),
5695            "ADT_DISPATCH_API" => Some(Self::AdtDispatchApi),
5696            _ => None,
5697        }
5698    }
5699}
5700#[derive(Clone, PartialEq, ::prost::Message)]
5701pub struct CreateRoomRequest {
5702    /// name of the room
5703    #[prost(string, tag = "1")]
5704    pub name: ::prost::alloc::string::String,
5705    /// configuration to use for this room parameters. Setting parameters below override the config defaults.
5706    #[prost(string, tag = "12")]
5707    pub room_preset: ::prost::alloc::string::String,
5708    /// number of seconds to keep the room open if no one joins
5709    #[prost(uint32, tag = "2")]
5710    pub empty_timeout: u32,
5711    /// number of seconds to keep the room open after everyone leaves
5712    #[prost(uint32, tag = "10")]
5713    pub departure_timeout: u32,
5714    /// limit number of participants that can be in a room
5715    #[prost(uint32, tag = "3")]
5716    pub max_participants: u32,
5717    /// override the node room is allocated to, for debugging
5718    #[prost(string, tag = "4")]
5719    pub node_id: ::prost::alloc::string::String,
5720    /// metadata of room
5721    #[prost(string, tag = "5")]
5722    pub metadata: ::prost::alloc::string::String,
5723    /// search tags
5724    #[prost(map = "string, string", tag = "15")]
5725    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5726    /// auto-egress configurations
5727    #[prost(message, optional, tag = "6")]
5728    pub egress: ::core::option::Option<RoomEgress>,
5729    /// playout delay of subscriber
5730    #[prost(uint32, tag = "7")]
5731    pub min_playout_delay: u32,
5732    #[prost(uint32, tag = "8")]
5733    pub max_playout_delay: u32,
5734    /// improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use
5735    /// so not recommended for rooms with frequent subscription changes
5736    #[prost(bool, tag = "9")]
5737    pub sync_streams: bool,
5738    /// replay
5739    #[prost(bool, tag = "13")]
5740    pub replay_enabled: bool,
5741    /// Define agents that should be dispatched to this room
5742    #[prost(message, repeated, tag = "14")]
5743    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
5744}
5745#[derive(Clone, PartialEq, ::prost::Message)]
5746pub struct RoomEgress {
5747    #[prost(message, optional, tag = "1")]
5748    pub room: ::core::option::Option<RoomCompositeEgressRequest>,
5749    #[prost(message, optional, tag = "3")]
5750    pub participant: ::core::option::Option<AutoParticipantEgress>,
5751    #[prost(message, optional, tag = "2")]
5752    pub tracks: ::core::option::Option<AutoTrackEgress>,
5753}
5754#[derive(Clone, PartialEq, ::prost::Message)]
5755pub struct RoomAgent {
5756    #[prost(message, repeated, tag = "1")]
5757    pub dispatches: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
5758}
5759#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5760pub struct ListRoomsRequest {
5761    /// when set, will only return rooms with name match
5762    #[prost(string, repeated, tag = "1")]
5763    pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5764}
5765#[derive(Clone, PartialEq, ::prost::Message)]
5766pub struct ListRoomsResponse {
5767    #[prost(message, repeated, tag = "1")]
5768    pub rooms: ::prost::alloc::vec::Vec<Room>,
5769}
5770#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5771pub struct DeleteRoomRequest {
5772    /// name of the room
5773    #[prost(string, tag = "1")]
5774    pub room: ::prost::alloc::string::String,
5775}
5776#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5777pub struct DeleteRoomResponse {
5778}
5779#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5780pub struct ListParticipantsRequest {
5781    /// name of the room
5782    #[prost(string, tag = "1")]
5783    pub room: ::prost::alloc::string::String,
5784}
5785#[derive(Clone, PartialEq, ::prost::Message)]
5786pub struct ListParticipantsResponse {
5787    #[prost(message, repeated, tag = "1")]
5788    pub participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
5789}
5790#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5791pub struct RoomParticipantIdentity {
5792    /// name of the room
5793    #[prost(string, tag = "1")]
5794    pub room: ::prost::alloc::string::String,
5795    /// identity of the participant
5796    #[prost(string, tag = "2")]
5797    pub identity: ::prost::alloc::string::String,
5798    /// Unix timestamp used to invalidate token whose nbf is before this value.
5799    /// Used only by RemoveParticipant; defaults to now(server)+leeway(1min) if left empty.
5800    #[prost(int64, tag = "3")]
5801    pub revoke_token_ts: i64,
5802}
5803#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5804pub struct RemoveParticipantResponse {
5805}
5806#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5807pub struct MuteRoomTrackRequest {
5808    /// name of the room
5809    #[prost(string, tag = "1")]
5810    pub room: ::prost::alloc::string::String,
5811    #[prost(string, tag = "2")]
5812    pub identity: ::prost::alloc::string::String,
5813    /// sid of the track to mute
5814    #[prost(string, tag = "3")]
5815    pub track_sid: ::prost::alloc::string::String,
5816    /// set to true to mute, false to unmute
5817    #[prost(bool, tag = "4")]
5818    pub muted: bool,
5819}
5820#[derive(Clone, PartialEq, ::prost::Message)]
5821pub struct MuteRoomTrackResponse {
5822    #[prost(message, optional, tag = "1")]
5823    pub track: ::core::option::Option<TrackInfo>,
5824}
5825#[derive(Clone, PartialEq, ::prost::Message)]
5826pub struct UpdateParticipantRequest {
5827    #[prost(string, tag = "1")]
5828    pub room: ::prost::alloc::string::String,
5829    #[prost(string, tag = "2")]
5830    pub identity: ::prost::alloc::string::String,
5831    /// metadata to update. skipping updates if left empty
5832    #[prost(string, tag = "3")]
5833    pub metadata: ::prost::alloc::string::String,
5834    /// set to update the participant's permissions
5835    #[prost(message, optional, tag = "4")]
5836    pub permission: ::core::option::Option<ParticipantPermission>,
5837    /// display name to update
5838    #[prost(string, tag = "5")]
5839    pub name: ::prost::alloc::string::String,
5840    /// attributes to update. it only updates attributes that have been set
5841    /// to delete attributes, set the value to an empty string
5842    #[prost(map = "string, string", tag = "6")]
5843    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5844}
5845#[derive(Clone, PartialEq, ::prost::Message)]
5846pub struct UpdateSubscriptionsRequest {
5847    #[prost(string, tag = "1")]
5848    pub room: ::prost::alloc::string::String,
5849    #[prost(string, tag = "2")]
5850    pub identity: ::prost::alloc::string::String,
5851    /// list of sids of tracks
5852    #[prost(string, repeated, tag = "3")]
5853    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5854    /// set to true to subscribe, false to unsubscribe from tracks
5855    #[prost(bool, tag = "4")]
5856    pub subscribe: bool,
5857    /// list of participants and their tracks
5858    #[prost(message, repeated, tag = "5")]
5859    pub participant_tracks: ::prost::alloc::vec::Vec<ParticipantTracks>,
5860}
5861/// empty for now
5862#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5863pub struct UpdateSubscriptionsResponse {
5864}
5865#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5866pub struct SendDataRequest {
5867    #[prost(string, tag = "1")]
5868    pub room: ::prost::alloc::string::String,
5869    #[prost(bytes = "vec", tag = "2")]
5870    pub data: ::prost::alloc::vec::Vec<u8>,
5871    #[prost(enumeration = "data_packet::Kind", tag = "3")]
5872    pub kind: i32,
5873    /// mark deprecated
5874    #[deprecated]
5875    #[prost(string, repeated, tag = "4")]
5876    pub destination_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5877    /// when set, only forward to these identities
5878    #[prost(string, repeated, tag = "6")]
5879    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5880    #[prost(string, optional, tag = "5")]
5881    pub topic: ::core::option::Option<::prost::alloc::string::String>,
5882    /// added by SDK to enable de-duping of messages, for INTERNAL USE ONLY
5883    #[prost(bytes = "vec", tag = "7")]
5884    pub nonce: ::prost::alloc::vec::Vec<u8>,
5885}
5886///
5887#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5888pub struct SendDataResponse {
5889}
5890#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5891pub struct UpdateRoomMetadataRequest {
5892    #[prost(string, tag = "1")]
5893    pub room: ::prost::alloc::string::String,
5894    /// metadata to update. skipping updates if left empty
5895    #[prost(string, tag = "2")]
5896    pub metadata: ::prost::alloc::string::String,
5897}
5898#[derive(Clone, PartialEq, ::prost::Message)]
5899pub struct RoomConfiguration {
5900    /// Used as ID, must be unique
5901    #[prost(string, tag = "1")]
5902    pub name: ::prost::alloc::string::String,
5903    /// number of seconds to keep the room open if no one joins
5904    #[prost(uint32, tag = "2")]
5905    pub empty_timeout: u32,
5906    /// number of seconds to keep the room open after everyone leaves
5907    #[prost(uint32, tag = "3")]
5908    pub departure_timeout: u32,
5909    /// limit number of participants that can be in a room, excluding Egress and Agent participants
5910    #[prost(uint32, tag = "4")]
5911    pub max_participants: u32,
5912    /// metadata of room
5913    #[prost(string, tag = "11")]
5914    pub metadata: ::prost::alloc::string::String,
5915    /// egress
5916    #[prost(message, optional, tag = "5")]
5917    pub egress: ::core::option::Option<RoomEgress>,
5918    /// playout delay of subscriber
5919    #[prost(uint32, tag = "7")]
5920    pub min_playout_delay: u32,
5921    #[prost(uint32, tag = "8")]
5922    pub max_playout_delay: u32,
5923    /// improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use
5924    /// so not recommended for rooms with frequent subscription changes
5925    #[prost(bool, tag = "9")]
5926    pub sync_streams: bool,
5927    /// Define agents that should be dispatched to this room
5928    #[prost(message, repeated, tag = "10")]
5929    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
5930    /// Tags to attach to the room
5931    #[prost(map = "string, string", tag = "12")]
5932    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5933}
5934#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5935pub struct ForwardParticipantRequest {
5936    /// room to forward participant from
5937    #[prost(string, tag = "1")]
5938    pub room: ::prost::alloc::string::String,
5939    /// identity of the participant to forward
5940    #[prost(string, tag = "2")]
5941    pub identity: ::prost::alloc::string::String,
5942    /// room to forward participant to
5943    #[prost(string, tag = "3")]
5944    pub destination_room: ::prost::alloc::string::String,
5945}
5946#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5947pub struct ForwardParticipantResponse {
5948}
5949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5950pub struct MoveParticipantRequest {
5951    /// room to move participant from
5952    #[prost(string, tag = "1")]
5953    pub room: ::prost::alloc::string::String,
5954    /// identity of the participant to move to
5955    #[prost(string, tag = "2")]
5956    pub identity: ::prost::alloc::string::String,
5957    /// room to move participant to
5958    #[prost(string, tag = "3")]
5959    pub destination_room: ::prost::alloc::string::String,
5960}
5961#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5962pub struct MoveParticipantResponse {
5963}
5964#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5965pub struct PerformRpcRequest {
5966    #[prost(string, tag = "1")]
5967    pub room: ::prost::alloc::string::String,
5968    #[prost(string, tag = "2")]
5969    pub destination_identity: ::prost::alloc::string::String,
5970    #[prost(string, tag = "3")]
5971    pub method: ::prost::alloc::string::String,
5972    #[prost(string, tag = "4")]
5973    pub payload: ::prost::alloc::string::String,
5974    #[prost(uint32, tag = "5")]
5975    pub response_timeout_ms: u32,
5976}
5977#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5978pub struct PerformRpcResponse {
5979    #[prost(string, tag = "1")]
5980    pub payload: ::prost::alloc::string::String,
5981}
5982#[derive(Clone, PartialEq, ::prost::Message)]
5983pub struct CreateIngressRequest {
5984    #[prost(enumeration = "IngressInput", tag = "1")]
5985    pub input_type: i32,
5986    /// Where to pull media from, only for URL input type
5987    #[prost(string, tag = "9")]
5988    pub url: ::prost::alloc::string::String,
5989    /// User provided identifier for the ingress
5990    #[prost(string, tag = "2")]
5991    pub name: ::prost::alloc::string::String,
5992    /// room to publish to
5993    #[prost(string, tag = "3")]
5994    pub room_name: ::prost::alloc::string::String,
5995    /// publish as participant
5996    #[prost(string, tag = "4")]
5997    pub participant_identity: ::prost::alloc::string::String,
5998    /// name of publishing participant (used for display only)
5999    #[prost(string, tag = "5")]
6000    pub participant_name: ::prost::alloc::string::String,
6001    /// metadata associated with the publishing participant
6002    #[prost(string, tag = "10")]
6003    pub participant_metadata: ::prost::alloc::string::String,
6004    /// \[depreacted \] whether to pass through the incoming media without transcoding, only compatible with some input types. Use `enable_transcoding` instead.
6005    #[deprecated]
6006    #[prost(bool, tag = "8")]
6007    pub bypass_transcoding: bool,
6008    /// Whether to transcode the ingested media. Only WHIP supports disabling transcoding currently. WHIP will default to transcoding disabled. Replaces `bypass_transcoding. 
6009    #[prost(bool, optional, tag = "11")]
6010    pub enable_transcoding: ::core::option::Option<bool>,
6011    #[prost(message, optional, tag = "6")]
6012    pub audio: ::core::option::Option<IngressAudioOptions>,
6013    #[prost(message, optional, tag = "7")]
6014    pub video: ::core::option::Option<IngressVideoOptions>,
6015    /// The default value is true and when set to false, the new connection attempts will be rejected
6016    #[prost(bool, optional, tag = "12")]
6017    pub enabled: ::core::option::Option<bool>,
6018}
6019#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6020pub struct IngressAudioOptions {
6021    #[prost(string, tag = "1")]
6022    pub name: ::prost::alloc::string::String,
6023    #[prost(enumeration = "TrackSource", tag = "2")]
6024    pub source: i32,
6025    #[prost(oneof = "ingress_audio_options::EncodingOptions", tags = "3, 4")]
6026    pub encoding_options: ::core::option::Option<ingress_audio_options::EncodingOptions>,
6027}
6028/// Nested message and enum types in `IngressAudioOptions`.
6029pub mod ingress_audio_options {
6030    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
6031    pub enum EncodingOptions {
6032        #[prost(enumeration = "super::IngressAudioEncodingPreset", tag = "3")]
6033        Preset(i32),
6034        #[prost(message, tag = "4")]
6035        Options(super::IngressAudioEncodingOptions),
6036    }
6037}
6038#[derive(Clone, PartialEq, ::prost::Message)]
6039pub struct IngressVideoOptions {
6040    #[prost(string, tag = "1")]
6041    pub name: ::prost::alloc::string::String,
6042    #[prost(enumeration = "TrackSource", tag = "2")]
6043    pub source: i32,
6044    #[prost(oneof = "ingress_video_options::EncodingOptions", tags = "3, 4")]
6045    pub encoding_options: ::core::option::Option<ingress_video_options::EncodingOptions>,
6046}
6047/// Nested message and enum types in `IngressVideoOptions`.
6048pub mod ingress_video_options {
6049    #[derive(Clone, PartialEq, ::prost::Oneof)]
6050    pub enum EncodingOptions {
6051        #[prost(enumeration = "super::IngressVideoEncodingPreset", tag = "3")]
6052        Preset(i32),
6053        #[prost(message, tag = "4")]
6054        Options(super::IngressVideoEncodingOptions),
6055    }
6056}
6057#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6058pub struct IngressAudioEncodingOptions {
6059    /// desired audio codec to publish to room
6060    #[prost(enumeration = "AudioCodec", tag = "1")]
6061    pub audio_codec: i32,
6062    #[prost(uint32, tag = "2")]
6063    pub bitrate: u32,
6064    #[prost(bool, tag = "3")]
6065    pub disable_dtx: bool,
6066    #[prost(uint32, tag = "4")]
6067    pub channels: u32,
6068}
6069#[derive(Clone, PartialEq, ::prost::Message)]
6070pub struct IngressVideoEncodingOptions {
6071    /// desired codec to publish to room
6072    #[prost(enumeration = "VideoCodec", tag = "1")]
6073    pub video_codec: i32,
6074    #[prost(double, tag = "2")]
6075    pub frame_rate: f64,
6076    /// simulcast layers to publish, when empty, should usually be set to layers at 1/2 and 1/4 of the dimensions
6077    #[prost(message, repeated, tag = "3")]
6078    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
6079}
6080#[derive(Clone, PartialEq, ::prost::Message)]
6081pub struct IngressInfo {
6082    #[prost(string, tag = "1")]
6083    pub ingress_id: ::prost::alloc::string::String,
6084    #[prost(string, tag = "2")]
6085    pub name: ::prost::alloc::string::String,
6086    #[prost(string, tag = "3")]
6087    pub stream_key: ::prost::alloc::string::String,
6088    /// URL to point the encoder to for push (RTMP, WHIP), or location to pull media from for pull (URL)
6089    #[prost(string, tag = "4")]
6090    pub url: ::prost::alloc::string::String,
6091    /// for RTMP input, it'll be a rtmp:// URL
6092    /// for FILE input, it'll be a http:// URL
6093    /// for SRT input, it'll be a srt:// URL
6094    #[prost(enumeration = "IngressInput", tag = "5")]
6095    pub input_type: i32,
6096    #[deprecated]
6097    #[prost(bool, tag = "13")]
6098    pub bypass_transcoding: bool,
6099    #[prost(bool, optional, tag = "15")]
6100    pub enable_transcoding: ::core::option::Option<bool>,
6101    #[prost(message, optional, tag = "6")]
6102    pub audio: ::core::option::Option<IngressAudioOptions>,
6103    #[prost(message, optional, tag = "7")]
6104    pub video: ::core::option::Option<IngressVideoOptions>,
6105    #[prost(string, tag = "8")]
6106    pub room_name: ::prost::alloc::string::String,
6107    #[prost(string, tag = "9")]
6108    pub participant_identity: ::prost::alloc::string::String,
6109    #[prost(string, tag = "10")]
6110    pub participant_name: ::prost::alloc::string::String,
6111    #[prost(string, tag = "14")]
6112    pub participant_metadata: ::prost::alloc::string::String,
6113    #[prost(bool, tag = "11")]
6114    pub reusable: bool,
6115    /// Description of error/stream non compliance and debug info for publisher otherwise (received bitrate, resolution, bandwidth)
6116    #[prost(message, optional, tag = "12")]
6117    pub state: ::core::option::Option<IngressState>,
6118    /// The default value is true and when set to false, the new connection attempts will be rejected
6119    #[prost(bool, optional, tag = "16")]
6120    pub enabled: ::core::option::Option<bool>,
6121}
6122#[derive(Clone, PartialEq, ::prost::Message)]
6123pub struct IngressState {
6124    #[prost(enumeration = "ingress_state::Status", tag = "1")]
6125    pub status: i32,
6126    /// Error/non compliance description if any
6127    #[prost(string, tag = "2")]
6128    pub error: ::prost::alloc::string::String,
6129    #[prost(message, optional, tag = "3")]
6130    pub video: ::core::option::Option<InputVideoState>,
6131    #[prost(message, optional, tag = "4")]
6132    pub audio: ::core::option::Option<InputAudioState>,
6133    /// ID of the current/previous room published to
6134    #[prost(string, tag = "5")]
6135    pub room_id: ::prost::alloc::string::String,
6136    #[prost(int64, tag = "7")]
6137    pub started_at: i64,
6138    #[prost(int64, tag = "8")]
6139    pub ended_at: i64,
6140    #[prost(int64, tag = "10")]
6141    pub updated_at: i64,
6142    #[prost(string, tag = "9")]
6143    pub resource_id: ::prost::alloc::string::String,
6144    #[prost(message, repeated, tag = "6")]
6145    pub tracks: ::prost::alloc::vec::Vec<TrackInfo>,
6146}
6147/// Nested message and enum types in `IngressState`.
6148pub mod ingress_state {
6149    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6150    #[repr(i32)]
6151    pub enum Status {
6152        EndpointInactive = 0,
6153        EndpointBuffering = 1,
6154        EndpointPublishing = 2,
6155        EndpointError = 3,
6156        EndpointComplete = 4,
6157    }
6158    impl Status {
6159        /// String value of the enum field names used in the ProtoBuf definition.
6160        ///
6161        /// The values are not transformed in any way and thus are considered stable
6162        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6163        pub fn as_str_name(&self) -> &'static str {
6164            match self {
6165                Self::EndpointInactive => "ENDPOINT_INACTIVE",
6166                Self::EndpointBuffering => "ENDPOINT_BUFFERING",
6167                Self::EndpointPublishing => "ENDPOINT_PUBLISHING",
6168                Self::EndpointError => "ENDPOINT_ERROR",
6169                Self::EndpointComplete => "ENDPOINT_COMPLETE",
6170            }
6171        }
6172        /// Creates an enum from field names used in the ProtoBuf definition.
6173        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6174            match value {
6175                "ENDPOINT_INACTIVE" => Some(Self::EndpointInactive),
6176                "ENDPOINT_BUFFERING" => Some(Self::EndpointBuffering),
6177                "ENDPOINT_PUBLISHING" => Some(Self::EndpointPublishing),
6178                "ENDPOINT_ERROR" => Some(Self::EndpointError),
6179                "ENDPOINT_COMPLETE" => Some(Self::EndpointComplete),
6180                _ => None,
6181            }
6182        }
6183    }
6184}
6185#[derive(Clone, PartialEq, ::prost::Message)]
6186pub struct InputVideoState {
6187    #[prost(string, tag = "1")]
6188    pub mime_type: ::prost::alloc::string::String,
6189    #[prost(uint32, tag = "2")]
6190    pub average_bitrate: u32,
6191    #[prost(uint32, tag = "3")]
6192    pub width: u32,
6193    #[prost(uint32, tag = "4")]
6194    pub height: u32,
6195    #[prost(double, tag = "5")]
6196    pub framerate: f64,
6197}
6198#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6199pub struct InputAudioState {
6200    #[prost(string, tag = "1")]
6201    pub mime_type: ::prost::alloc::string::String,
6202    #[prost(uint32, tag = "2")]
6203    pub average_bitrate: u32,
6204    #[prost(uint32, tag = "3")]
6205    pub channels: u32,
6206    #[prost(uint32, tag = "4")]
6207    pub sample_rate: u32,
6208}
6209#[derive(Clone, PartialEq, ::prost::Message)]
6210pub struct UpdateIngressRequest {
6211    #[prost(string, tag = "1")]
6212    pub ingress_id: ::prost::alloc::string::String,
6213    #[prost(string, tag = "2")]
6214    pub name: ::prost::alloc::string::String,
6215    #[prost(string, tag = "3")]
6216    pub room_name: ::prost::alloc::string::String,
6217    #[prost(string, tag = "4")]
6218    pub participant_identity: ::prost::alloc::string::String,
6219    #[prost(string, tag = "5")]
6220    pub participant_name: ::prost::alloc::string::String,
6221    #[prost(string, tag = "9")]
6222    pub participant_metadata: ::prost::alloc::string::String,
6223    #[deprecated]
6224    #[prost(bool, optional, tag = "8")]
6225    pub bypass_transcoding: ::core::option::Option<bool>,
6226    #[prost(bool, optional, tag = "10")]
6227    pub enable_transcoding: ::core::option::Option<bool>,
6228    #[prost(message, optional, tag = "6")]
6229    pub audio: ::core::option::Option<IngressAudioOptions>,
6230    #[prost(message, optional, tag = "7")]
6231    pub video: ::core::option::Option<IngressVideoOptions>,
6232    /// The default value is true and when set to false, the new connection attempts will be rejected
6233    #[prost(bool, optional, tag = "11")]
6234    pub enabled: ::core::option::Option<bool>,
6235}
6236#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6237pub struct ListIngressRequest {
6238    #[prost(message, optional, tag = "3")]
6239    pub page_token: ::core::option::Option<TokenPagination>,
6240    /// when blank, lists all ingress endpoints
6241    ///
6242    /// (optional, filter by room name)
6243    #[prost(string, tag = "1")]
6244    pub room_name: ::prost::alloc::string::String,
6245    /// (optional, filter by ingress ID)
6246    #[prost(string, tag = "2")]
6247    pub ingress_id: ::prost::alloc::string::String,
6248}
6249#[derive(Clone, PartialEq, ::prost::Message)]
6250pub struct ListIngressResponse {
6251    #[prost(message, optional, tag = "2")]
6252    pub next_page_token: ::core::option::Option<TokenPagination>,
6253    /// next field id: 3
6254    #[prost(message, repeated, tag = "1")]
6255    pub items: ::prost::alloc::vec::Vec<IngressInfo>,
6256}
6257#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6258pub struct DeleteIngressRequest {
6259    #[prost(string, tag = "1")]
6260    pub ingress_id: ::prost::alloc::string::String,
6261}
6262#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6263#[repr(i32)]
6264pub enum IngressInput {
6265    RtmpInput = 0,
6266    WhipInput = 1,
6267    /// Pull from the provided URL. Only HTTP url are supported, serving either a single media file or a HLS stream
6268    UrlInput = 2,
6269}
6270impl IngressInput {
6271    /// String value of the enum field names used in the ProtoBuf definition.
6272    ///
6273    /// The values are not transformed in any way and thus are considered stable
6274    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6275    pub fn as_str_name(&self) -> &'static str {
6276        match self {
6277            Self::RtmpInput => "RTMP_INPUT",
6278            Self::WhipInput => "WHIP_INPUT",
6279            Self::UrlInput => "URL_INPUT",
6280        }
6281    }
6282    /// Creates an enum from field names used in the ProtoBuf definition.
6283    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6284        match value {
6285            "RTMP_INPUT" => Some(Self::RtmpInput),
6286            "WHIP_INPUT" => Some(Self::WhipInput),
6287            "URL_INPUT" => Some(Self::UrlInput),
6288            _ => None,
6289        }
6290    }
6291}
6292#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6293#[repr(i32)]
6294pub enum IngressAudioEncodingPreset {
6295    /// OPUS, 2 channels, 96kbps
6296    OpusStereo96kbps = 0,
6297    /// OPUS, 1 channel, 64kbps
6298    OpusMono64kbs = 1,
6299}
6300impl IngressAudioEncodingPreset {
6301    /// String value of the enum field names used in the ProtoBuf definition.
6302    ///
6303    /// The values are not transformed in any way and thus are considered stable
6304    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6305    pub fn as_str_name(&self) -> &'static str {
6306        match self {
6307            Self::OpusStereo96kbps => "OPUS_STEREO_96KBPS",
6308            Self::OpusMono64kbs => "OPUS_MONO_64KBS",
6309        }
6310    }
6311    /// Creates an enum from field names used in the ProtoBuf definition.
6312    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6313        match value {
6314            "OPUS_STEREO_96KBPS" => Some(Self::OpusStereo96kbps),
6315            "OPUS_MONO_64KBS" => Some(Self::OpusMono64kbs),
6316            _ => None,
6317        }
6318    }
6319}
6320#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6321#[repr(i32)]
6322pub enum IngressVideoEncodingPreset {
6323    /// 1280x720,  30fps, 1900kbps main layer, 3 layers total
6324    H264720p30fps3Layers = 0,
6325    /// 1980x1080, 30fps, 3500kbps main layer, 3 layers total
6326    H2641080p30fps3Layers = 1,
6327    ///   960x540,  25fps, 1000kbps  main layer, 2 layers total
6328    H264540p25fps2Layers = 2,
6329    /// 1280x720,  30fps, 1900kbps, no simulcast
6330    H264720p30fps1Layer = 3,
6331    /// 1980x1080, 30fps, 3500kbps, no simulcast
6332    H2641080p30fps1Layer = 4,
6333    /// 1280x720,  30fps, 2500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content
6334    H264720p30fps3LayersHighMotion = 5,
6335    /// 1980x1080, 30fps, 4500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content
6336    H2641080p30fps3LayersHighMotion = 6,
6337    ///   960x540,  25fps, 1300kbps  main layer, 2 layers total, higher bitrate for high motion, harder to encode content
6338    H264540p25fps2LayersHighMotion = 7,
6339    /// 1280x720,  30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content
6340    H264720p30fps1LayerHighMotion = 8,
6341    /// 1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content
6342    H2641080p30fps1LayerHighMotion = 9,
6343}
6344impl IngressVideoEncodingPreset {
6345    /// String value of the enum field names used in the ProtoBuf definition.
6346    ///
6347    /// The values are not transformed in any way and thus are considered stable
6348    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6349    pub fn as_str_name(&self) -> &'static str {
6350        match self {
6351            Self::H264720p30fps3Layers => "H264_720P_30FPS_3_LAYERS",
6352            Self::H2641080p30fps3Layers => "H264_1080P_30FPS_3_LAYERS",
6353            Self::H264540p25fps2Layers => "H264_540P_25FPS_2_LAYERS",
6354            Self::H264720p30fps1Layer => "H264_720P_30FPS_1_LAYER",
6355            Self::H2641080p30fps1Layer => "H264_1080P_30FPS_1_LAYER",
6356            Self::H264720p30fps3LayersHighMotion => "H264_720P_30FPS_3_LAYERS_HIGH_MOTION",
6357            Self::H2641080p30fps3LayersHighMotion => "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION",
6358            Self::H264540p25fps2LayersHighMotion => "H264_540P_25FPS_2_LAYERS_HIGH_MOTION",
6359            Self::H264720p30fps1LayerHighMotion => "H264_720P_30FPS_1_LAYER_HIGH_MOTION",
6360            Self::H2641080p30fps1LayerHighMotion => "H264_1080P_30FPS_1_LAYER_HIGH_MOTION",
6361        }
6362    }
6363    /// Creates an enum from field names used in the ProtoBuf definition.
6364    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6365        match value {
6366            "H264_720P_30FPS_3_LAYERS" => Some(Self::H264720p30fps3Layers),
6367            "H264_1080P_30FPS_3_LAYERS" => Some(Self::H2641080p30fps3Layers),
6368            "H264_540P_25FPS_2_LAYERS" => Some(Self::H264540p25fps2Layers),
6369            "H264_720P_30FPS_1_LAYER" => Some(Self::H264720p30fps1Layer),
6370            "H264_1080P_30FPS_1_LAYER" => Some(Self::H2641080p30fps1Layer),
6371            "H264_720P_30FPS_3_LAYERS_HIGH_MOTION" => Some(Self::H264720p30fps3LayersHighMotion),
6372            "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION" => Some(Self::H2641080p30fps3LayersHighMotion),
6373            "H264_540P_25FPS_2_LAYERS_HIGH_MOTION" => Some(Self::H264540p25fps2LayersHighMotion),
6374            "H264_720P_30FPS_1_LAYER_HIGH_MOTION" => Some(Self::H264720p30fps1LayerHighMotion),
6375            "H264_1080P_30FPS_1_LAYER_HIGH_MOTION" => Some(Self::H2641080p30fps1LayerHighMotion),
6376            _ => None,
6377        }
6378    }
6379}
6380#[derive(Clone, PartialEq, ::prost::Message)]
6381pub struct WebhookEvent {
6382    /// one of room_started, room_finished, participant_joined, participant_left, participant_connection_aborted,
6383    /// track_published, track_unpublished, egress_started, egress_updated, egress_ended,
6384    /// ingress_started, ingress_ended, agent_job_pending, agent_job_started, agent_job_ended
6385    #[prost(string, tag = "1")]
6386    pub event: ::prost::alloc::string::String,
6387    #[prost(message, optional, tag = "2")]
6388    pub room: ::core::option::Option<Room>,
6389    /// set when event is participant_* or track_*
6390    #[prost(message, optional, tag = "3")]
6391    pub participant: ::core::option::Option<ParticipantInfo>,
6392    /// set when event is egress_*
6393    #[prost(message, optional, tag = "9")]
6394    pub egress_info: ::core::option::Option<EgressInfo>,
6395    /// set when event is ingress_*
6396    #[prost(message, optional, tag = "10")]
6397    pub ingress_info: ::core::option::Option<IngressInfo>,
6398    /// set when event is track_*
6399    #[prost(message, optional, tag = "8")]
6400    pub track: ::core::option::Option<TrackInfo>,
6401    /// set when event is agent_job_*
6402    #[prost(message, optional, tag = "12")]
6403    pub job: ::core::option::Option<Job>,
6404    /// unique event uuid
6405    #[prost(string, tag = "6")]
6406    pub id: ::prost::alloc::string::String,
6407    /// timestamp in seconds
6408    #[prost(int64, tag = "7")]
6409    pub created_at: i64,
6410    #[deprecated]
6411    #[prost(int32, tag = "11")]
6412    pub num_dropped: i32,
6413    /// set when event is room_finished
6414    #[prost(enumeration = "RoomEndReason", tag = "13")]
6415    pub room_end_reason: i32,
6416}
6417/// SIPStatus is returned as an error detail in CreateSIPParticipant.
6418#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6419pub struct SipStatus {
6420    #[prost(enumeration = "SipStatusCode", tag = "1")]
6421    pub code: i32,
6422    #[prost(string, tag = "2")]
6423    pub status: ::prost::alloc::string::String,
6424}
6425#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6426pub struct CreateSipTrunkRequest {
6427    /// CIDR or IPs that traffic is accepted from
6428    /// An empty list means all inbound traffic is accepted.
6429    #[prost(string, repeated, tag = "1")]
6430    pub inbound_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6431    /// IP that SIP INVITE is sent too
6432    #[prost(string, tag = "2")]
6433    pub outbound_address: ::prost::alloc::string::String,
6434    /// Number used to make outbound calls
6435    #[prost(string, tag = "3")]
6436    pub outbound_number: ::prost::alloc::string::String,
6437    #[deprecated]
6438    #[prost(string, repeated, tag = "4")]
6439    pub inbound_numbers_regex: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6440    /// Accepted `To` values. This Trunk will only accept a call made to
6441    /// these numbers. This allows you to have distinct Trunks for different phone
6442    /// numbers at the same provider.
6443    #[prost(string, repeated, tag = "9")]
6444    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6445    /// Username and password used to authenticate inbound and outbound SIP invites
6446    /// May be empty to have no Authentication
6447    #[prost(string, tag = "5")]
6448    pub inbound_username: ::prost::alloc::string::String,
6449    #[prost(string, tag = "6")]
6450    pub inbound_password: ::prost::alloc::string::String,
6451    #[prost(string, tag = "7")]
6452    pub outbound_username: ::prost::alloc::string::String,
6453    #[prost(string, tag = "8")]
6454    pub outbound_password: ::prost::alloc::string::String,
6455    /// Optional human-readable name for the Trunk.
6456    #[prost(string, tag = "10")]
6457    pub name: ::prost::alloc::string::String,
6458    /// Optional user-defined metadata for the Trunk.
6459    #[prost(string, tag = "11")]
6460    pub metadata: ::prost::alloc::string::String,
6461}
6462#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6463pub struct SipCodec {
6464    #[prost(string, tag = "1")]
6465    pub name: ::prost::alloc::string::String,
6466    #[prost(uint32, tag = "2")]
6467    pub rate: u32,
6468}
6469#[derive(Clone, PartialEq, ::prost::Message)]
6470pub struct SipMediaConfig {
6471    /// if set, ignore the default codecs and use the list below.
6472    #[prost(bool, tag = "1")]
6473    pub only_listed_codecs: bool,
6474    /// List of allowed codecs. If only_listed_codecs is not set, this list is added to default codecs.
6475    #[prost(message, repeated, tag = "2")]
6476    pub codecs: ::prost::alloc::vec::Vec<SipCodec>,
6477    #[prost(enumeration = "SipMediaEncryption", optional, tag = "3")]
6478    pub encryption: ::core::option::Option<i32>,
6479    /// Use specific media timeout. If zero or not specified, will use default timeout.
6480    #[prost(message, optional, tag = "4")]
6481    pub media_timeout: ::core::option::Option<::pbjson_types::Duration>,
6482    /// Stop sending audio RTP while outbound DTMF digits are sent.
6483    /// Always on when the telephone-event clock rate differs from the audio codec's.
6484    #[prost(bool, tag = "5")]
6485    pub drop_audio_during_dtmf: bool,
6486}
6487#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6488pub struct ProviderInfo {
6489    #[prost(string, tag = "1")]
6490    pub id: ::prost::alloc::string::String,
6491    #[prost(string, tag = "2")]
6492    pub name: ::prost::alloc::string::String,
6493    #[prost(enumeration = "ProviderType", tag = "3")]
6494    pub r#type: i32,
6495    #[prost(bool, tag = "4")]
6496    pub prevent_transfer: bool,
6497}
6498#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6499pub struct SipTrunkInfo {
6500    #[prost(string, tag = "1")]
6501    pub sip_trunk_id: ::prost::alloc::string::String,
6502    #[prost(enumeration = "sip_trunk_info::TrunkKind", tag = "14")]
6503    pub kind: i32,
6504    /// CIDR or IPs that traffic is accepted from
6505    /// An empty list means all inbound traffic is accepted.
6506    #[prost(string, repeated, tag = "2")]
6507    pub inbound_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6508    /// IP that SIP INVITE is sent too
6509    #[prost(string, tag = "3")]
6510    pub outbound_address: ::prost::alloc::string::String,
6511    /// Number used to make outbound calls
6512    #[prost(string, tag = "4")]
6513    pub outbound_number: ::prost::alloc::string::String,
6514    /// Transport used for inbound and outbound calls.
6515    #[prost(enumeration = "SipTransport", tag = "13")]
6516    pub transport: i32,
6517    #[deprecated]
6518    #[prost(string, repeated, tag = "5")]
6519    pub inbound_numbers_regex: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6520    /// Accepted `To` values. This Trunk will only accept a call made to
6521    /// these numbers. This allows you to have distinct Trunks for different phone
6522    /// numbers at the same provider.
6523    #[prost(string, repeated, tag = "10")]
6524    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6525    /// Username and password used to authenticate inbound and outbound SIP invites
6526    /// May be empty to have no Authentication
6527    #[prost(string, tag = "6")]
6528    pub inbound_username: ::prost::alloc::string::String,
6529    #[prost(string, tag = "7")]
6530    pub inbound_password: ::prost::alloc::string::String,
6531    #[prost(string, tag = "8")]
6532    pub outbound_username: ::prost::alloc::string::String,
6533    #[prost(string, tag = "9")]
6534    pub outbound_password: ::prost::alloc::string::String,
6535    /// Human-readable name for the Trunk.
6536    #[prost(string, tag = "11")]
6537    pub name: ::prost::alloc::string::String,
6538    /// User-defined metadata for the Trunk.
6539    #[prost(string, tag = "12")]
6540    pub metadata: ::prost::alloc::string::String,
6541}
6542/// Nested message and enum types in `SIPTrunkInfo`.
6543pub mod sip_trunk_info {
6544    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6545    #[repr(i32)]
6546    pub enum TrunkKind {
6547        TrunkLegacy = 0,
6548        TrunkInbound = 1,
6549        TrunkOutbound = 2,
6550    }
6551    impl TrunkKind {
6552        /// String value of the enum field names used in the ProtoBuf definition.
6553        ///
6554        /// The values are not transformed in any way and thus are considered stable
6555        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6556        pub fn as_str_name(&self) -> &'static str {
6557            match self {
6558                Self::TrunkLegacy => "TRUNK_LEGACY",
6559                Self::TrunkInbound => "TRUNK_INBOUND",
6560                Self::TrunkOutbound => "TRUNK_OUTBOUND",
6561            }
6562        }
6563        /// Creates an enum from field names used in the ProtoBuf definition.
6564        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6565            match value {
6566                "TRUNK_LEGACY" => Some(Self::TrunkLegacy),
6567                "TRUNK_INBOUND" => Some(Self::TrunkInbound),
6568                "TRUNK_OUTBOUND" => Some(Self::TrunkOutbound),
6569                _ => None,
6570            }
6571        }
6572    }
6573}
6574#[derive(Clone, PartialEq, ::prost::Message)]
6575pub struct CreateSipInboundTrunkRequest {
6576    /// Trunk ID is ignored
6577    #[prost(message, optional, tag = "1")]
6578    pub trunk: ::core::option::Option<SipInboundTrunkInfo>,
6579}
6580#[derive(Clone, PartialEq, ::prost::Message)]
6581pub struct UpdateSipInboundTrunkRequest {
6582    #[prost(string, tag = "1")]
6583    pub sip_trunk_id: ::prost::alloc::string::String,
6584    #[prost(oneof = "update_sip_inbound_trunk_request::Action", tags = "2, 3")]
6585    pub action: ::core::option::Option<update_sip_inbound_trunk_request::Action>,
6586}
6587/// Nested message and enum types in `UpdateSIPInboundTrunkRequest`.
6588pub mod update_sip_inbound_trunk_request {
6589    #[derive(Clone, PartialEq, ::prost::Oneof)]
6590    pub enum Action {
6591        #[prost(message, tag = "2")]
6592        Replace(super::SipInboundTrunkInfo),
6593        #[prost(message, tag = "3")]
6594        Update(super::SipInboundTrunkUpdate),
6595    }
6596}
6597#[derive(Clone, PartialEq, ::prost::Message)]
6598pub struct SipInboundTrunkInfo {
6599    #[prost(string, tag = "1")]
6600    pub sip_trunk_id: ::prost::alloc::string::String,
6601    /// Human-readable name for the Trunk.
6602    #[prost(string, tag = "2")]
6603    pub name: ::prost::alloc::string::String,
6604    /// User-defined metadata for the Trunk.
6605    #[prost(string, tag = "3")]
6606    pub metadata: ::prost::alloc::string::String,
6607    /// Numbers associated with LiveKit SIP. The Trunk will only accept calls made to these numbers.
6608    /// Creating multiple Trunks with different phone numbers allows having different rules for a single provider.
6609    #[prost(string, repeated, tag = "4")]
6610    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6611    /// CIDR or IPs that traffic is accepted from.
6612    /// An empty list means all inbound traffic is accepted.
6613    #[prost(string, repeated, tag = "5")]
6614    pub allowed_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6615    /// Numbers that are allowed to make calls to this Trunk.
6616    /// An empty list means calls from any phone number is accepted.
6617    #[prost(string, repeated, tag = "6")]
6618    pub allowed_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6619    /// Username and password used to authenticate inbound SIP invites.
6620    /// May be empty to have no authentication.
6621    #[prost(string, tag = "7")]
6622    pub auth_username: ::prost::alloc::string::String,
6623    #[prost(string, tag = "8")]
6624    pub auth_password: ::prost::alloc::string::String,
6625    #[prost(string, tag = "19")]
6626    pub auth_realm: ::prost::alloc::string::String,
6627    /// Include these SIP X-* headers in 200 OK responses.
6628    #[prost(map = "string, string", tag = "9")]
6629    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6630    /// Map SIP X-* headers from INVITE to SIP participant attributes.
6631    #[prost(map = "string, string", tag = "10")]
6632    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6633    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
6634    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
6635    #[prost(map = "string, string", tag = "14")]
6636    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6637    /// Map SIP headers from INVITE to sip.h.* participant attributes automatically.
6638    ///
6639    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
6640    ///
6641    /// When mapping INVITE headers to response headers with attributes_to_headers map,
6642    /// lowercase header names should be used, for example: sip.h.x-custom-header.
6643    #[prost(enumeration = "SipHeaderOptions", tag = "15")]
6644    pub include_headers: i32,
6645    /// Max time for the caller to wait for track subscription.
6646    #[prost(message, optional, tag = "11")]
6647    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
6648    /// SIP status code if ringing_timeout elapses. Unset means using system default.
6649    #[prost(enumeration = "SipStatusCode", tag = "21")]
6650    pub ringing_timeout_status: i32,
6651    /// Max call duration.
6652    #[prost(message, optional, tag = "12")]
6653    pub max_call_duration: ::core::option::Option<::pbjson_types::Duration>,
6654    #[prost(bool, tag = "13")]
6655    pub krisp_enabled: bool,
6656    #[deprecated]
6657    #[prost(enumeration = "SipMediaEncryption", tag = "16")]
6658    pub media_encryption: i32,
6659    #[prost(message, optional, tag = "20")]
6660    pub media: ::core::option::Option<SipMediaConfig>,
6661    #[prost(message, optional, tag = "17")]
6662    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
6663    #[prost(message, optional, tag = "18")]
6664    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
6665}
6666#[derive(Clone, PartialEq, ::prost::Message)]
6667pub struct SipInboundTrunkUpdate {
6668    #[prost(message, optional, tag = "1")]
6669    pub numbers: ::core::option::Option<ListUpdate>,
6670    #[prost(message, optional, tag = "2")]
6671    pub allowed_addresses: ::core::option::Option<ListUpdate>,
6672    #[prost(message, optional, tag = "3")]
6673    pub allowed_numbers: ::core::option::Option<ListUpdate>,
6674    #[prost(string, optional, tag = "4")]
6675    pub auth_username: ::core::option::Option<::prost::alloc::string::String>,
6676    #[prost(string, optional, tag = "5")]
6677    pub auth_password: ::core::option::Option<::prost::alloc::string::String>,
6678    #[prost(string, optional, tag = "9")]
6679    pub auth_realm: ::core::option::Option<::prost::alloc::string::String>,
6680    #[prost(string, optional, tag = "6")]
6681    pub name: ::core::option::Option<::prost::alloc::string::String>,
6682    #[prost(string, optional, tag = "7")]
6683    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
6684    #[deprecated]
6685    #[prost(enumeration = "SipMediaEncryption", optional, tag = "8")]
6686    pub media_encryption: ::core::option::Option<i32>,
6687    #[prost(message, optional, tag = "10")]
6688    pub media: ::core::option::Option<SipMediaConfig>,
6689}
6690#[derive(Clone, PartialEq, ::prost::Message)]
6691pub struct CreateSipOutboundTrunkRequest {
6692    /// Trunk ID is ignored
6693    #[prost(message, optional, tag = "1")]
6694    pub trunk: ::core::option::Option<SipOutboundTrunkInfo>,
6695}
6696#[derive(Clone, PartialEq, ::prost::Message)]
6697pub struct UpdateSipOutboundTrunkRequest {
6698    #[prost(string, tag = "1")]
6699    pub sip_trunk_id: ::prost::alloc::string::String,
6700    #[prost(oneof = "update_sip_outbound_trunk_request::Action", tags = "2, 3")]
6701    pub action: ::core::option::Option<update_sip_outbound_trunk_request::Action>,
6702}
6703/// Nested message and enum types in `UpdateSIPOutboundTrunkRequest`.
6704pub mod update_sip_outbound_trunk_request {
6705    #[derive(Clone, PartialEq, ::prost::Oneof)]
6706    pub enum Action {
6707        #[prost(message, tag = "2")]
6708        Replace(super::SipOutboundTrunkInfo),
6709        #[prost(message, tag = "3")]
6710        Update(super::SipOutboundTrunkUpdate),
6711    }
6712}
6713#[derive(Clone, PartialEq, ::prost::Message)]
6714pub struct SipOutboundTrunkInfo {
6715    #[prost(string, tag = "1")]
6716    pub sip_trunk_id: ::prost::alloc::string::String,
6717    /// Human-readable name for the Trunk.
6718    #[prost(string, tag = "2")]
6719    pub name: ::prost::alloc::string::String,
6720    /// User-defined metadata for the Trunk.
6721    #[prost(string, tag = "3")]
6722    pub metadata: ::prost::alloc::string::String,
6723    /// Hostname or IP that SIP INVITE is sent too.
6724    /// Note that this is not a SIP URI and should not contain the 'sip:' protocol prefix.
6725    #[prost(string, tag = "4")]
6726    pub address: ::prost::alloc::string::String,
6727    /// 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.
6728    #[prost(string, tag = "14")]
6729    pub destination_country: ::prost::alloc::string::String,
6730    /// SIP Transport used for outbound call.
6731    #[prost(enumeration = "SipTransport", tag = "5")]
6732    pub transport: i32,
6733    /// Numbers used to make the calls. Random one from this list will be selected.
6734    #[prost(string, repeated, tag = "6")]
6735    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6736    /// Username and password used to authenticate with SIP server.
6737    /// May be empty to have no authentication.
6738    #[prost(string, tag = "7")]
6739    pub auth_username: ::prost::alloc::string::String,
6740    #[prost(string, tag = "8")]
6741    pub auth_password: ::prost::alloc::string::String,
6742    /// Include these SIP X-* headers in INVITE request.
6743    /// These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.
6744    #[prost(map = "string, string", tag = "9")]
6745    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6746    /// Map SIP X-* headers from 200 OK to SIP participant attributes.
6747    /// Keys are the names of X-* headers and values are the names of attributes they will be mapped to.
6748    #[prost(map = "string, string", tag = "10")]
6749    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6750    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
6751    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
6752    #[prost(map = "string, string", tag = "11")]
6753    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6754    /// Map SIP headers from 200 OK to sip.h.* participant attributes automatically.
6755    ///
6756    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
6757    ///
6758    /// When mapping 200 OK headers to follow-up request headers with attributes_to_headers map,
6759    /// lowercase header names should be used, for example: sip.h.x-custom-header.
6760    #[prost(enumeration = "SipHeaderOptions", tag = "12")]
6761    pub include_headers: i32,
6762    #[deprecated]
6763    #[prost(enumeration = "SipMediaEncryption", tag = "13")]
6764    pub media_encryption: i32,
6765    #[prost(message, optional, tag = "18")]
6766    pub media: ::core::option::Option<SipMediaConfig>,
6767    /// Optional custom hostname for the 'From' SIP header in outbound INVITEs.
6768    /// When set, outbound calls from this trunk will use this host instead of the default project SIP domain.
6769    /// Enables originating calls from custom domains.
6770    #[prost(string, tag = "15")]
6771    pub from_host: ::prost::alloc::string::String,
6772    #[prost(message, optional, tag = "16")]
6773    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
6774    #[prost(message, optional, tag = "17")]
6775    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
6776}
6777#[derive(Clone, PartialEq, ::prost::Message)]
6778pub struct SipOutboundTrunkUpdate {
6779    #[prost(string, optional, tag = "1")]
6780    pub address: ::core::option::Option<::prost::alloc::string::String>,
6781    #[prost(enumeration = "SipTransport", optional, tag = "2")]
6782    pub transport: ::core::option::Option<i32>,
6783    #[prost(string, optional, tag = "9")]
6784    pub destination_country: ::core::option::Option<::prost::alloc::string::String>,
6785    #[prost(message, optional, tag = "3")]
6786    pub numbers: ::core::option::Option<ListUpdate>,
6787    #[prost(string, optional, tag = "4")]
6788    pub auth_username: ::core::option::Option<::prost::alloc::string::String>,
6789    #[prost(string, optional, tag = "5")]
6790    pub auth_password: ::core::option::Option<::prost::alloc::string::String>,
6791    #[prost(string, optional, tag = "6")]
6792    pub name: ::core::option::Option<::prost::alloc::string::String>,
6793    #[prost(string, optional, tag = "7")]
6794    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
6795    #[deprecated]
6796    #[prost(enumeration = "SipMediaEncryption", optional, tag = "8")]
6797    pub media_encryption: ::core::option::Option<i32>,
6798    #[prost(message, optional, tag = "11")]
6799    pub media: ::core::option::Option<SipMediaConfig>,
6800    #[prost(string, optional, tag = "10")]
6801    pub from_host: ::core::option::Option<::prost::alloc::string::String>,
6802}
6803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6804pub struct GetSipInboundTrunkRequest {
6805    #[prost(string, tag = "1")]
6806    pub sip_trunk_id: ::prost::alloc::string::String,
6807}
6808#[derive(Clone, PartialEq, ::prost::Message)]
6809pub struct GetSipInboundTrunkResponse {
6810    #[prost(message, optional, tag = "1")]
6811    pub trunk: ::core::option::Option<SipInboundTrunkInfo>,
6812}
6813#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6814pub struct GetSipOutboundTrunkRequest {
6815    #[prost(string, tag = "1")]
6816    pub sip_trunk_id: ::prost::alloc::string::String,
6817}
6818#[derive(Clone, PartialEq, ::prost::Message)]
6819pub struct GetSipOutboundTrunkResponse {
6820    #[prost(message, optional, tag = "1")]
6821    pub trunk: ::core::option::Option<SipOutboundTrunkInfo>,
6822}
6823#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6824pub struct ListSipTrunkRequest {
6825    #[prost(message, optional, tag = "1")]
6826    pub page: ::core::option::Option<Pagination>,
6827}
6828#[derive(Clone, PartialEq, ::prost::Message)]
6829pub struct ListSipTrunkResponse {
6830    #[prost(message, repeated, tag = "1")]
6831    pub items: ::prost::alloc::vec::Vec<SipTrunkInfo>,
6832}
6833/// ListSIPInboundTrunkRequest lists inbound trunks for given filters. If no filters are set, all trunks are listed.
6834#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6835pub struct ListSipInboundTrunkRequest {
6836    #[prost(message, optional, tag = "3")]
6837    pub page: ::core::option::Option<Pagination>,
6838    /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order.
6839    /// If any of the trunks is missing, a nil item in that position will be sent in the response.
6840    #[prost(string, repeated, tag = "1")]
6841    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6842    /// Only list trunks that contain one of the numbers, including wildcard trunks.
6843    #[prost(string, repeated, tag = "2")]
6844    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6845}
6846#[derive(Clone, PartialEq, ::prost::Message)]
6847pub struct ListSipInboundTrunkResponse {
6848    #[prost(message, repeated, tag = "1")]
6849    pub items: ::prost::alloc::vec::Vec<SipInboundTrunkInfo>,
6850}
6851/// ListSIPOutboundTrunkRequest lists outbound trunks for given filters. If no filters are set, all trunks are listed.
6852#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6853pub struct ListSipOutboundTrunkRequest {
6854    #[prost(message, optional, tag = "3")]
6855    pub page: ::core::option::Option<Pagination>,
6856    /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order.
6857    /// If any of the trunks is missing, a nil item in that position will be sent in the response.
6858    #[prost(string, repeated, tag = "1")]
6859    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6860    /// Only list trunks that contain one of the numbers, including wildcard trunks.
6861    #[prost(string, repeated, tag = "2")]
6862    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6863}
6864#[derive(Clone, PartialEq, ::prost::Message)]
6865pub struct ListSipOutboundTrunkResponse {
6866    #[prost(message, repeated, tag = "1")]
6867    pub items: ::prost::alloc::vec::Vec<SipOutboundTrunkInfo>,
6868}
6869#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6870pub struct DeleteSipTrunkRequest {
6871    #[prost(string, tag = "1")]
6872    pub sip_trunk_id: ::prost::alloc::string::String,
6873}
6874#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6875pub struct SipDispatchRuleDirect {
6876    /// What room should call be directed into
6877    #[prost(string, tag = "1")]
6878    pub room_name: ::prost::alloc::string::String,
6879    /// Optional pin required to enter room
6880    #[prost(string, tag = "2")]
6881    pub pin: ::prost::alloc::string::String,
6882}
6883#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6884pub struct SipDispatchRuleIndividual {
6885    /// Prefix used on new room name
6886    #[prost(string, tag = "1")]
6887    pub room_prefix: ::prost::alloc::string::String,
6888    /// Optional pin required to enter room
6889    #[prost(string, tag = "2")]
6890    pub pin: ::prost::alloc::string::String,
6891    /// Optionally append random suffix
6892    #[prost(bool, tag = "3")]
6893    pub no_randomness: bool,
6894}
6895#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6896pub struct SipDispatchRuleCallee {
6897    /// Prefix used on new room name
6898    #[prost(string, tag = "1")]
6899    pub room_prefix: ::prost::alloc::string::String,
6900    /// Optional pin required to enter room
6901    #[prost(string, tag = "2")]
6902    pub pin: ::prost::alloc::string::String,
6903    /// Optionally append random suffix
6904    #[prost(bool, tag = "3")]
6905    pub randomize: bool,
6906}
6907#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6908pub struct SipDispatchRule {
6909    #[prost(oneof = "sip_dispatch_rule::Rule", tags = "1, 2, 3")]
6910    pub rule: ::core::option::Option<sip_dispatch_rule::Rule>,
6911}
6912/// Nested message and enum types in `SIPDispatchRule`.
6913pub mod sip_dispatch_rule {
6914    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
6915    pub enum Rule {
6916        /// SIPDispatchRuleDirect is a `SIP Dispatch Rule` that puts a user directly into a room
6917        /// This places users into an existing room. Optionally you can require a pin before a user can
6918        /// enter the room
6919        #[prost(message, tag = "1")]
6920        DispatchRuleDirect(super::SipDispatchRuleDirect),
6921        /// SIPDispatchRuleIndividual is a `SIP Dispatch Rule` that creates a new room for each caller.
6922        #[prost(message, tag = "2")]
6923        DispatchRuleIndividual(super::SipDispatchRuleIndividual),
6924        /// SIPDispatchRuleCallee is a `SIP Dispatch Rule` that creates a new room for each callee.
6925        #[prost(message, tag = "3")]
6926        DispatchRuleCallee(super::SipDispatchRuleCallee),
6927    }
6928}
6929#[derive(Clone, PartialEq, ::prost::Message)]
6930pub struct CreateSipDispatchRuleRequest {
6931    /// Rule ID is ignored
6932    #[prost(message, optional, tag = "10")]
6933    pub dispatch_rule: ::core::option::Option<SipDispatchRuleInfo>,
6934    #[deprecated]
6935    #[prost(message, optional, tag = "1")]
6936    pub rule: ::core::option::Option<SipDispatchRule>,
6937    /// What trunks are accepted for this dispatch rule
6938    /// If empty all trunks will match this dispatch rule
6939    #[deprecated]
6940    #[prost(string, repeated, tag = "2")]
6941    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6942    /// By default the From value (Phone number) is used for participant name/identity and added to attributes.
6943    /// If true, a random value for identity will be used and numbers will be omitted from attributes.
6944    #[deprecated]
6945    #[prost(bool, tag = "3")]
6946    pub hide_phone_number: bool,
6947    /// Dispatch Rule will only accept a call made to these numbers (if set).
6948    #[deprecated]
6949    #[prost(string, repeated, tag = "6")]
6950    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6951    /// Optional human-readable name for the Dispatch Rule.
6952    #[deprecated]
6953    #[prost(string, tag = "4")]
6954    pub name: ::prost::alloc::string::String,
6955    /// User-defined metadata for the Dispatch Rule.
6956    /// Participants created by this rule will inherit this metadata.
6957    #[deprecated]
6958    #[prost(string, tag = "5")]
6959    pub metadata: ::prost::alloc::string::String,
6960    /// User-defined attributes for the Dispatch Rule.
6961    /// Participants created by this rule will inherit these attributes.
6962    #[prost(map = "string, string", tag = "7")]
6963    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6964    /// Cloud-only, config preset to use
6965    #[deprecated]
6966    #[prost(string, tag = "8")]
6967    pub room_preset: ::prost::alloc::string::String,
6968    /// RoomConfiguration to use if the participant initiates the room
6969    #[deprecated]
6970    #[prost(message, optional, tag = "9")]
6971    pub room_config: ::core::option::Option<RoomConfiguration>,
6972}
6973#[derive(Clone, PartialEq, ::prost::Message)]
6974pub struct UpdateSipDispatchRuleRequest {
6975    #[prost(string, tag = "1")]
6976    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
6977    #[prost(oneof = "update_sip_dispatch_rule_request::Action", tags = "2, 3")]
6978    pub action: ::core::option::Option<update_sip_dispatch_rule_request::Action>,
6979}
6980/// Nested message and enum types in `UpdateSIPDispatchRuleRequest`.
6981pub mod update_sip_dispatch_rule_request {
6982    #[derive(Clone, PartialEq, ::prost::Oneof)]
6983    pub enum Action {
6984        #[prost(message, tag = "2")]
6985        Replace(super::SipDispatchRuleInfo),
6986        #[prost(message, tag = "3")]
6987        Update(super::SipDispatchRuleUpdate),
6988    }
6989}
6990#[derive(Clone, PartialEq, ::prost::Message)]
6991pub struct SipDispatchRuleInfo {
6992    #[prost(string, tag = "1")]
6993    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
6994    #[prost(message, optional, tag = "2")]
6995    pub rule: ::core::option::Option<SipDispatchRule>,
6996    #[prost(string, repeated, tag = "3")]
6997    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6998    #[prost(bool, tag = "4")]
6999    pub hide_phone_number: bool,
7000    /// Dispatch Rule will only accept a call made from these numbers (if set).
7001    #[prost(string, repeated, tag = "7")]
7002    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7003    /// Dispatch Rule will only accept a call made to these numbers (if set).
7004    #[prost(string, repeated, tag = "13")]
7005    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7006    /// Human-readable name for the Dispatch Rule.
7007    #[prost(string, tag = "5")]
7008    pub name: ::prost::alloc::string::String,
7009    /// User-defined metadata for the Dispatch Rule.
7010    /// Participants created by this rule will inherit this metadata.
7011    #[prost(string, tag = "6")]
7012    pub metadata: ::prost::alloc::string::String,
7013    /// User-defined attributes for the Dispatch Rule.
7014    /// Participants created by this rule will inherit these attributes.
7015    #[prost(map = "string, string", tag = "8")]
7016    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7017    /// Cloud-only, config preset to use
7018    #[prost(string, tag = "9")]
7019    pub room_preset: ::prost::alloc::string::String,
7020    /// RoomConfiguration to use if the participant initiates the room
7021    #[prost(message, optional, tag = "10")]
7022    pub room_config: ::core::option::Option<RoomConfiguration>,
7023    #[prost(message, optional, tag = "16")]
7024    pub media: ::core::option::Option<SipMediaConfig>,
7025    #[prost(bool, tag = "11")]
7026    pub krisp_enabled: bool,
7027    #[deprecated]
7028    #[prost(enumeration = "SipMediaEncryption", tag = "12")]
7029    pub media_encryption: i32,
7030    #[prost(message, optional, tag = "14")]
7031    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
7032    #[prost(message, optional, tag = "15")]
7033    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
7034}
7035#[derive(Clone, PartialEq, ::prost::Message)]
7036pub struct SipDispatchRuleUpdate {
7037    #[prost(message, optional, tag = "1")]
7038    pub trunk_ids: ::core::option::Option<ListUpdate>,
7039    #[prost(message, optional, tag = "2")]
7040    pub rule: ::core::option::Option<SipDispatchRule>,
7041    #[prost(string, optional, tag = "3")]
7042    pub name: ::core::option::Option<::prost::alloc::string::String>,
7043    #[prost(string, optional, tag = "4")]
7044    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
7045    #[prost(map = "string, string", tag = "5")]
7046    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7047    #[deprecated]
7048    #[prost(enumeration = "SipMediaEncryption", optional, tag = "6")]
7049    pub media_encryption: ::core::option::Option<i32>,
7050    #[prost(message, optional, tag = "7")]
7051    pub media: ::core::option::Option<SipMediaConfig>,
7052}
7053/// ListSIPDispatchRuleRequest lists dispatch rules for given filters. If no filters are set, all rules are listed.
7054#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7055pub struct ListSipDispatchRuleRequest {
7056    #[prost(message, optional, tag = "3")]
7057    pub page: ::core::option::Option<Pagination>,
7058    /// Rule IDs to list. If this option is set, the response will contains rules in the same order.
7059    /// If any of the rules is missing, a nil item in that position will be sent in the response.
7060    #[prost(string, repeated, tag = "1")]
7061    pub dispatch_rule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7062    /// Only list rules that contain one of the Trunk IDs, including wildcard rules.
7063    #[prost(string, repeated, tag = "2")]
7064    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7065}
7066#[derive(Clone, PartialEq, ::prost::Message)]
7067pub struct ListSipDispatchRuleResponse {
7068    #[prost(message, repeated, tag = "1")]
7069    pub items: ::prost::alloc::vec::Vec<SipDispatchRuleInfo>,
7070}
7071#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7072pub struct DeleteSipDispatchRuleRequest {
7073    #[prost(string, tag = "1")]
7074    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
7075}
7076#[derive(Clone, PartialEq, ::prost::Message)]
7077pub struct SipOutboundConfig {
7078    /// SIP server address
7079    #[prost(string, tag = "1")]
7080    pub hostname: ::prost::alloc::string::String,
7081    /// 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.
7082    #[prost(string, tag = "7")]
7083    pub destination_country: ::prost::alloc::string::String,
7084    /// SIP Transport used for outbound call.
7085    #[prost(enumeration = "SipTransport", tag = "2")]
7086    pub transport: i32,
7087    /// Username and password used to authenticate with SIP server.
7088    /// May be empty to have no authentication.
7089    #[prost(string, tag = "3")]
7090    pub auth_username: ::prost::alloc::string::String,
7091    #[prost(string, tag = "4")]
7092    pub auth_password: ::prost::alloc::string::String,
7093    /// Map SIP X-* headers from 200 OK to SIP participant attributes.
7094    /// Keys are the names of X-* headers and values are the names of attributes they will be mapped to.
7095    #[prost(map = "string, string", tag = "5")]
7096    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7097    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
7098    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
7099    #[prost(map = "string, string", tag = "6")]
7100    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7101    /// Optional custom hostname for the 'From' SIP header. When set, outbound calls use this host instead of the default project SIP domain.
7102    #[prost(string, tag = "8")]
7103    pub from_host: ::prost::alloc::string::String,
7104}
7105/// A SIP Participant is a singular SIP session connected to a LiveKit room via
7106/// a SIP Trunk into a SIP DispatchRule
7107#[derive(Clone, PartialEq, ::prost::Message)]
7108pub struct CreateSipParticipantRequest {
7109    /// What SIP Trunk should be used to dial the user
7110    #[prost(string, tag = "1")]
7111    pub sip_trunk_id: ::prost::alloc::string::String,
7112    #[prost(message, optional, tag = "20")]
7113    pub trunk: ::core::option::Option<SipOutboundConfig>,
7114    /// INVITE <uri>
7115    #[prost(message, optional, tag = "24")]
7116    pub sip_request_uri: ::core::option::Option<SipRequestDest>,
7117    /// Currently not usable with CreateSIPParticipant: sip_call_to is required, and
7118    /// the two cannot be combined. Use to_user_override to change the To header user.
7119    ///
7120    /// To:   "Name" <uri>
7121    #[prost(message, optional, tag = "25")]
7122    pub sip_to_header: ::core::option::Option<SipNamedDest>,
7123    /// From: "Name" <uri>
7124    #[prost(message, optional, tag = "26")]
7125    pub sip_from_header: ::core::option::Option<SipNamedDest>,
7126    /// What number should be dialed via SIP
7127    #[prost(string, tag = "2")]
7128    pub sip_call_to: ::prost::alloc::string::String,
7129    /// Replaces the user part of the To header, leaving its host, port and transport
7130    /// as they would otherwise be. The request URI is not affected, so the call is
7131    /// still placed to sip_call_to. Empty means no override.
7132    ///
7133    /// Use this when the callee expects a To header that differs from the number
7134    /// being dialed. Setting "To" in the headers map is not a valid alternative:
7135    /// it adds a second To header rather than replacing the existing one, which
7136    /// makes the INVITE malformed.
7137    #[prost(string, tag = "27")]
7138    pub to_user_override: ::prost::alloc::string::String,
7139    /// Optional SIP From number to use. If empty, trunk number is used.
7140    #[prost(string, tag = "15")]
7141    pub sip_number: ::prost::alloc::string::String,
7142    /// What LiveKit room should this participant be connected too
7143    #[prost(string, tag = "3")]
7144    pub room_name: ::prost::alloc::string::String,
7145    /// Optional identity of the participant in LiveKit room
7146    #[prost(string, tag = "4")]
7147    pub participant_identity: ::prost::alloc::string::String,
7148    /// Optional name of the participant in LiveKit room
7149    #[prost(string, tag = "7")]
7150    pub participant_name: ::prost::alloc::string::String,
7151    /// Optional user-defined metadata. Will be attached to a created Participant in the room.
7152    #[prost(string, tag = "8")]
7153    pub participant_metadata: ::prost::alloc::string::String,
7154    /// Optional user-defined attributes. Will be attached to a created Participant in the room.
7155    #[prost(map = "string, string", tag = "9")]
7156    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7157    /// Optionally send following DTMF digits (extension codes) when making a call.
7158    /// Character 'w' can be used to add a 0.5 sec delay.
7159    #[prost(string, tag = "5")]
7160    pub dtmf: ::prost::alloc::string::String,
7161    /// Deprecated: use dialtone. Setting play_dialtone (or play_ringtone) is equivalent to SIP_DIALTONE_ETSI when dialtone is unset.
7162    #[deprecated]
7163    #[prost(bool, tag = "6")]
7164    pub play_ringtone: bool,
7165    #[deprecated]
7166    #[prost(bool, tag = "13")]
7167    pub play_dialtone: bool,
7168    /// Optionally play dialtone in the room as an audible indicator for existing participants.
7169    #[prost(enumeration = "SipDialtone", tag = "28")]
7170    pub dialtone: i32,
7171    /// By default the From value (Phone number) is used for participant name/identity (if not set) and added to attributes.
7172    /// If true, a random value for identity will be used and numbers will be omitted from attributes.
7173    #[prost(bool, tag = "10")]
7174    pub hide_phone_number: bool,
7175    /// These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.
7176    #[prost(map = "string, string", tag = "16")]
7177    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7178    /// Map SIP headers from 200 OK to sip.h.* participant attributes automatically.
7179    ///
7180    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
7181    ///
7182    /// When mapping 200 OK headers to follow-up request headers with attributes_to_headers map,
7183    /// lowercase header names should be used, for example: sip.h.x-custom-header.
7184    #[prost(enumeration = "SipHeaderOptions", tag = "17")]
7185    pub include_headers: i32,
7186    /// Max time for the callee to answer the call.
7187    #[prost(message, optional, tag = "11")]
7188    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
7189    /// Max call duration.
7190    #[prost(message, optional, tag = "12")]
7191    pub max_call_duration: ::core::option::Option<::pbjson_types::Duration>,
7192    /// Enable voice isolation for the callee.
7193    #[prost(bool, tag = "14")]
7194    pub krisp_enabled: bool,
7195    #[deprecated]
7196    #[prost(enumeration = "SipMediaEncryption", tag = "18")]
7197    pub media_encryption: i32,
7198    #[prost(message, optional, tag = "23")]
7199    pub media: ::core::option::Option<SipMediaConfig>,
7200    /// Wait for the answer for the call before returning.
7201    #[prost(bool, tag = "19")]
7202    pub wait_until_answered: bool,
7203    /// Optional display name for the 'From' SIP header.
7204    ///
7205    /// Cases:
7206    /// 1) Unspecified: Use legacy behavior - display name will be set to be the caller's number.
7207    /// 2) Empty string: Do not send a display name, which will result in a CNAM lookup downstream.
7208    /// 3) Non-empty: Use the specified value as the display name.
7209    #[prost(string, optional, tag = "21")]
7210    pub display_name: ::core::option::Option<::prost::alloc::string::String>,
7211    #[prost(message, optional, tag = "22")]
7212    pub destination: ::core::option::Option<Destination>,
7213    /// cloud only
7214    /// LiveKit SIP call ID (SCL_\[...\]) of a live inbound call in the same project.
7215    /// This is the ID that LiveKit assigns to the call (sip_call_id on
7216    /// SIPParticipantInfo), not the SIP Call-ID header from the provider. It is
7217    /// used for forwarding an inbound call, while keeping the original caller's ID
7218    /// as the caller ID of this new call.
7219    /// If sip_from_header is set, its user must match the caller's number. If not,
7220    /// the caller's number is used.
7221    ///
7222    /// NEXT ID: 30
7223    #[prost(string, tag = "29")]
7224    pub sip_source_call_id: ::prost::alloc::string::String,
7225}
7226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7227pub struct SipParticipantInfo {
7228    #[prost(string, tag = "1")]
7229    pub participant_id: ::prost::alloc::string::String,
7230    #[prost(string, tag = "2")]
7231    pub participant_identity: ::prost::alloc::string::String,
7232    #[prost(string, tag = "3")]
7233    pub room_name: ::prost::alloc::string::String,
7234    #[prost(string, tag = "4")]
7235    pub sip_call_id: ::prost::alloc::string::String,
7236}
7237#[derive(Clone, PartialEq, ::prost::Message)]
7238pub struct TransferSipParticipantRequest {
7239    #[prost(string, tag = "1")]
7240    pub participant_identity: ::prost::alloc::string::String,
7241    #[prost(string, tag = "2")]
7242    pub room_name: ::prost::alloc::string::String,
7243    #[prost(string, tag = "3")]
7244    pub transfer_to: ::prost::alloc::string::String,
7245    /// Deprecated: use dialtone. Setting play_dialtone is equivalent to SIP_DIALTONE_ETSI when dialtone is unset.
7246    #[deprecated]
7247    #[prost(bool, tag = "4")]
7248    pub play_dialtone: bool,
7249    /// Optionally play dialtone to the SIP participant as an audible indicator of being transferred.
7250    #[prost(enumeration = "SipDialtone", tag = "7")]
7251    pub dialtone: i32,
7252    /// Add the following headers to the REFER SIP request.
7253    #[prost(map = "string, string", tag = "5")]
7254    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7255    /// Max time for the transfer destination to answer the call.
7256    #[prost(message, optional, tag = "6")]
7257    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
7258}
7259/// Added in <https://github.com/livekit/protocol/pull/1730.> Not needed after all:
7260/// will be rolled back to an empty message once STR_CALL_ENDED is reported as an
7261/// error like every other failed transfer.
7262#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7263pub struct TransferSipParticipantResponse {
7264    #[prost(string, tag = "1")]
7265    pub transfer_id: ::prost::alloc::string::String,
7266    #[prost(enumeration = "SipTransferStatus", tag = "2")]
7267    pub status: i32,
7268    #[prost(enumeration = "SipTransferReason", tag = "3")]
7269    pub reason: i32,
7270    /// Set when the outcome was reported by a SIP response.
7271    #[prost(message, optional, tag = "4")]
7272    pub sip_status: ::core::option::Option<SipStatus>,
7273}
7274/// Details of a failed SIP transfer, attached to the error.
7275#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7276pub struct SipTransferError {
7277    #[prost(string, tag = "1")]
7278    pub transfer_id: ::prost::alloc::string::String,
7279    #[prost(enumeration = "SipTransferReason", tag = "2")]
7280    pub reason: i32,
7281    /// Set when the outcome was reported by a SIP response.
7282    #[prost(message, optional, tag = "3")]
7283    pub sip_status: ::core::option::Option<SipStatus>,
7284}
7285#[derive(Clone, PartialEq, ::prost::Message)]
7286pub struct SipCallInfo {
7287    #[prost(string, tag = "1")]
7288    pub call_id: ::prost::alloc::string::String,
7289    #[prost(string, tag = "2")]
7290    pub trunk_id: ::prost::alloc::string::String,
7291    #[prost(string, tag = "16")]
7292    pub dispatch_rule_id: ::prost::alloc::string::String,
7293    #[prost(string, tag = "17")]
7294    pub region: ::prost::alloc::string::String,
7295    #[prost(string, tag = "3")]
7296    pub room_name: ::prost::alloc::string::String,
7297    /// ID of the current/previous room published to
7298    #[prost(string, tag = "4")]
7299    pub room_id: ::prost::alloc::string::String,
7300    #[prost(string, tag = "5")]
7301    pub participant_identity: ::prost::alloc::string::String,
7302    #[prost(map = "string, string", tag = "18")]
7303    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
7304    #[prost(message, optional, tag = "6")]
7305    pub from_uri: ::core::option::Option<SipUri>,
7306    #[prost(message, optional, tag = "7")]
7307    pub to_uri: ::core::option::Option<SipUri>,
7308    #[deprecated]
7309    #[prost(int64, tag = "9")]
7310    pub created_at: i64,
7311    #[deprecated]
7312    #[prost(int64, tag = "10")]
7313    pub started_at: i64,
7314    #[deprecated]
7315    #[prost(int64, tag = "11")]
7316    pub ended_at: i64,
7317    #[prost(enumeration = "SipFeature", repeated, tag = "14")]
7318    pub enabled_features: ::prost::alloc::vec::Vec<i32>,
7319    #[prost(enumeration = "SipCallDirection", tag = "15")]
7320    pub call_direction: i32,
7321    #[prost(enumeration = "SipCallStatus", tag = "8")]
7322    pub call_status: i32,
7323    #[prost(int64, tag = "22")]
7324    pub created_at_ns: i64,
7325    #[prost(int64, tag = "23")]
7326    pub started_at_ns: i64,
7327    #[prost(int64, tag = "24")]
7328    pub ended_at_ns: i64,
7329    #[prost(enumeration = "DisconnectReason", tag = "12")]
7330    pub disconnect_reason: i32,
7331    #[prost(string, tag = "13")]
7332    pub error: ::prost::alloc::string::String,
7333    #[prost(message, optional, tag = "19")]
7334    pub call_status_code: ::core::option::Option<SipStatus>,
7335    #[prost(string, tag = "20")]
7336    pub audio_codec: ::prost::alloc::string::String,
7337    #[prost(string, tag = "21")]
7338    pub media_encryption: ::prost::alloc::string::String,
7339    #[prost(string, tag = "25")]
7340    pub pcap_file_link: ::prost::alloc::string::String,
7341    #[prost(message, repeated, tag = "26")]
7342    pub call_context: ::prost::alloc::vec::Vec<::pbjson_types::Any>,
7343    #[prost(message, optional, tag = "27")]
7344    pub provider_info: ::core::option::Option<ProviderInfo>,
7345    #[prost(string, tag = "28")]
7346    pub sip_call_id: ::prost::alloc::string::String,
7347}
7348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7349pub struct SipTransferInfo {
7350    #[prost(string, tag = "1")]
7351    pub transfer_id: ::prost::alloc::string::String,
7352    #[prost(string, tag = "2")]
7353    pub call_id: ::prost::alloc::string::String,
7354    #[prost(string, tag = "3")]
7355    pub transfer_to: ::prost::alloc::string::String,
7356    #[prost(int64, tag = "4")]
7357    pub transfer_initiated_at_ns: i64,
7358    #[prost(int64, tag = "5")]
7359    pub transfer_completed_at_ns: i64,
7360    #[prost(enumeration = "SipTransferStatus", tag = "6")]
7361    pub transfer_status: i32,
7362    #[prost(string, tag = "7")]
7363    pub error: ::prost::alloc::string::String,
7364    #[prost(message, optional, tag = "8")]
7365    pub transfer_status_code: ::core::option::Option<SipStatus>,
7366    #[prost(enumeration = "SipTransferReason", tag = "9")]
7367    pub reason: i32,
7368}
7369#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7370pub struct SipUri {
7371    #[prost(string, tag = "1")]
7372    pub user: ::prost::alloc::string::String,
7373    #[prost(string, tag = "2")]
7374    pub host: ::prost::alloc::string::String,
7375    #[prost(string, tag = "3")]
7376    pub ip: ::prost::alloc::string::String,
7377    #[prost(uint32, tag = "4")]
7378    pub port: u32,
7379    #[prost(enumeration = "SipTransport", tag = "5")]
7380    pub transport: i32,
7381}
7382#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7383pub struct SipRequestDest {
7384    #[prost(oneof = "sip_request_dest::Uri", tags = "1, 2")]
7385    pub uri: ::core::option::Option<sip_request_dest::Uri>,
7386}
7387/// Nested message and enum types in `SIPRequestDest`.
7388pub mod sip_request_dest {
7389    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7390    pub enum Uri {
7391        /// <sip:user@sip.example.com:5060;transport=tcp>
7392        #[prost(string, tag = "1")]
7393        Raw(::prost::alloc::string::String),
7394        #[prost(message, tag = "2")]
7395        Values(super::SipUri),
7396    }
7397}
7398#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7399pub struct SipNamedDest {
7400    #[prost(string, tag = "3")]
7401    pub display_name: ::prost::alloc::string::String,
7402    #[prost(oneof = "sip_named_dest::Uri", tags = "1, 2")]
7403    pub uri: ::core::option::Option<sip_named_dest::Uri>,
7404}
7405/// Nested message and enum types in `SIPNamedDest`.
7406pub mod sip_named_dest {
7407    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7408    pub enum Uri {
7409        /// <sip:user@sip.example.com:5060;transport=tcp>
7410        #[prost(string, tag = "1")]
7411        Raw(::prost::alloc::string::String),
7412        #[prost(message, tag = "2")]
7413        Values(super::SipUri),
7414    }
7415}
7416#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7417pub struct Destination {
7418    #[prost(string, tag = "1")]
7419    pub city: ::prost::alloc::string::String,
7420    #[prost(string, tag = "2")]
7421    pub country: ::prost::alloc::string::String,
7422    #[prost(string, tag = "3")]
7423    pub region: ::prost::alloc::string::String,
7424}
7425#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7426#[repr(i32)]
7427pub enum SipStatusCode {
7428    SipStatusUnknown = 0,
7429    SipStatusTrying = 100,
7430    SipStatusRinging = 180,
7431    SipStatusCallIsForwarded = 181,
7432    SipStatusQueued = 182,
7433    SipStatusSessionProgress = 183,
7434    SipStatusEarlyDialogTerminated = 199,
7435    SipStatusOk = 200,
7436    SipStatusAccepted = 202,
7437    SipStatusNoNotification = 204,
7438    SipStatusMultipleChoices = 300,
7439    SipStatusMovedPermanently = 301,
7440    SipStatusMovedTemporarily = 302,
7441    SipStatusUseProxy = 305,
7442    SipStatusAlternativeService = 380,
7443    SipStatusBadRequest = 400,
7444    SipStatusUnauthorized = 401,
7445    SipStatusPaymentRequired = 402,
7446    SipStatusForbidden = 403,
7447    SipStatusNotfound = 404,
7448    SipStatusMethodNotAllowed = 405,
7449    SipStatusNotAcceptable = 406,
7450    SipStatusProxyAuthRequired = 407,
7451    SipStatusRequestTimeout = 408,
7452    SipStatusConflict = 409,
7453    SipStatusGone = 410,
7454    SipStatusLengthRequired = 411,
7455    SipStatusConditionalRequestFailed = 412,
7456    SipStatusRequestEntityTooLarge = 413,
7457    SipStatusRequestUriTooLong = 414,
7458    SipStatusUnsupportedMediaType = 415,
7459    SipStatusRequestedRangeNotSatisfiable = 416,
7460    SipStatusUnknownResourcePriority = 417,
7461    SipStatusBadExtension = 420,
7462    SipStatusExtensionRequired = 421,
7463    SipStatusSessionIntervalTooSmall = 422,
7464    SipStatusIntervalTooBrief = 423,
7465    SipStatusBadLocationInformation = 424,
7466    SipStatusBadAlertMessage = 425,
7467    SipStatusUseIdentityHeader = 428,
7468    SipStatusProvideReferrerIdentity = 429,
7469    SipStatusFlowFailed = 430,
7470    SipStatusAnonymityDisallowed = 433,
7471    SipStatusBadIdentityInfo = 436,
7472    SipStatusUnsupportedCertificate = 437,
7473    SipStatusInvalidIdentityHeader = 438,
7474    SipStatusFirstHopLacksOutboundSupport = 439,
7475    SipStatusMaxBreadthExceeded = 440,
7476    SipStatusBadInfoPackage = 469,
7477    SipStatusConsentNeeded = 470,
7478    SipStatusTemporarilyUnavailable = 480,
7479    SipStatusCallTransactionDoesNotExists = 481,
7480    SipStatusLoopDetected = 482,
7481    SipStatusTooManyHops = 483,
7482    SipStatusAddressIncomplete = 484,
7483    SipStatusAmbiguous = 485,
7484    SipStatusBusyHere = 486,
7485    SipStatusRequestTerminated = 487,
7486    SipStatusNotAcceptableHere = 488,
7487    SipStatusBadEvent = 489,
7488    SipStatusRequestPending = 491,
7489    SipStatusUndecipherable = 493,
7490    SipStatusSecurityAgreementRequired = 494,
7491    SipStatusInternalServerError = 500,
7492    SipStatusNotImplemented = 501,
7493    SipStatusBadGateway = 502,
7494    SipStatusServiceUnavailable = 503,
7495    SipStatusGatewayTimeout = 504,
7496    SipStatusVersionNotSupported = 505,
7497    SipStatusMessageTooLarge = 513,
7498    SipStatusGlobalBusyEverywhere = 600,
7499    SipStatusGlobalDecline = 603,
7500    SipStatusGlobalDoesNotExistAnywhere = 604,
7501    SipStatusGlobalNotAcceptable = 606,
7502    SipStatusGlobalUnwanted = 607,
7503    SipStatusGlobalRejected = 608,
7504}
7505impl SipStatusCode {
7506    /// String value of the enum field names used in the ProtoBuf definition.
7507    ///
7508    /// The values are not transformed in any way and thus are considered stable
7509    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7510    pub fn as_str_name(&self) -> &'static str {
7511        match self {
7512            Self::SipStatusUnknown => "SIP_STATUS_UNKNOWN",
7513            Self::SipStatusTrying => "SIP_STATUS_TRYING",
7514            Self::SipStatusRinging => "SIP_STATUS_RINGING",
7515            Self::SipStatusCallIsForwarded => "SIP_STATUS_CALL_IS_FORWARDED",
7516            Self::SipStatusQueued => "SIP_STATUS_QUEUED",
7517            Self::SipStatusSessionProgress => "SIP_STATUS_SESSION_PROGRESS",
7518            Self::SipStatusEarlyDialogTerminated => "SIP_STATUS_EARLY_DIALOG_TERMINATED",
7519            Self::SipStatusOk => "SIP_STATUS_OK",
7520            Self::SipStatusAccepted => "SIP_STATUS_ACCEPTED",
7521            Self::SipStatusNoNotification => "SIP_STATUS_NO_NOTIFICATION",
7522            Self::SipStatusMultipleChoices => "SIP_STATUS_MULTIPLE_CHOICES",
7523            Self::SipStatusMovedPermanently => "SIP_STATUS_MOVED_PERMANENTLY",
7524            Self::SipStatusMovedTemporarily => "SIP_STATUS_MOVED_TEMPORARILY",
7525            Self::SipStatusUseProxy => "SIP_STATUS_USE_PROXY",
7526            Self::SipStatusAlternativeService => "SIP_STATUS_ALTERNATIVE_SERVICE",
7527            Self::SipStatusBadRequest => "SIP_STATUS_BAD_REQUEST",
7528            Self::SipStatusUnauthorized => "SIP_STATUS_UNAUTHORIZED",
7529            Self::SipStatusPaymentRequired => "SIP_STATUS_PAYMENT_REQUIRED",
7530            Self::SipStatusForbidden => "SIP_STATUS_FORBIDDEN",
7531            Self::SipStatusNotfound => "SIP_STATUS_NOTFOUND",
7532            Self::SipStatusMethodNotAllowed => "SIP_STATUS_METHOD_NOT_ALLOWED",
7533            Self::SipStatusNotAcceptable => "SIP_STATUS_NOT_ACCEPTABLE",
7534            Self::SipStatusProxyAuthRequired => "SIP_STATUS_PROXY_AUTH_REQUIRED",
7535            Self::SipStatusRequestTimeout => "SIP_STATUS_REQUEST_TIMEOUT",
7536            Self::SipStatusConflict => "SIP_STATUS_CONFLICT",
7537            Self::SipStatusGone => "SIP_STATUS_GONE",
7538            Self::SipStatusLengthRequired => "SIP_STATUS_LENGTH_REQUIRED",
7539            Self::SipStatusConditionalRequestFailed => "SIP_STATUS_CONDITIONAL_REQUEST_FAILED",
7540            Self::SipStatusRequestEntityTooLarge => "SIP_STATUS_REQUEST_ENTITY_TOO_LARGE",
7541            Self::SipStatusRequestUriTooLong => "SIP_STATUS_REQUEST_URI_TOO_LONG",
7542            Self::SipStatusUnsupportedMediaType => "SIP_STATUS_UNSUPPORTED_MEDIA_TYPE",
7543            Self::SipStatusRequestedRangeNotSatisfiable => "SIP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE",
7544            Self::SipStatusUnknownResourcePriority => "SIP_STATUS_UNKNOWN_RESOURCE_PRIORITY",
7545            Self::SipStatusBadExtension => "SIP_STATUS_BAD_EXTENSION",
7546            Self::SipStatusExtensionRequired => "SIP_STATUS_EXTENSION_REQUIRED",
7547            Self::SipStatusSessionIntervalTooSmall => "SIP_STATUS_SESSION_INTERVAL_TOO_SMALL",
7548            Self::SipStatusIntervalTooBrief => "SIP_STATUS_INTERVAL_TOO_BRIEF",
7549            Self::SipStatusBadLocationInformation => "SIP_STATUS_BAD_LOCATION_INFORMATION",
7550            Self::SipStatusBadAlertMessage => "SIP_STATUS_BAD_ALERT_MESSAGE",
7551            Self::SipStatusUseIdentityHeader => "SIP_STATUS_USE_IDENTITY_HEADER",
7552            Self::SipStatusProvideReferrerIdentity => "SIP_STATUS_PROVIDE_REFERRER_IDENTITY",
7553            Self::SipStatusFlowFailed => "SIP_STATUS_FLOW_FAILED",
7554            Self::SipStatusAnonymityDisallowed => "SIP_STATUS_ANONYMITY_DISALLOWED",
7555            Self::SipStatusBadIdentityInfo => "SIP_STATUS_BAD_IDENTITY_INFO",
7556            Self::SipStatusUnsupportedCertificate => "SIP_STATUS_UNSUPPORTED_CERTIFICATE",
7557            Self::SipStatusInvalidIdentityHeader => "SIP_STATUS_INVALID_IDENTITY_HEADER",
7558            Self::SipStatusFirstHopLacksOutboundSupport => "SIP_STATUS_FIRST_HOP_LACKS_OUTBOUND_SUPPORT",
7559            Self::SipStatusMaxBreadthExceeded => "SIP_STATUS_MAX_BREADTH_EXCEEDED",
7560            Self::SipStatusBadInfoPackage => "SIP_STATUS_BAD_INFO_PACKAGE",
7561            Self::SipStatusConsentNeeded => "SIP_STATUS_CONSENT_NEEDED",
7562            Self::SipStatusTemporarilyUnavailable => "SIP_STATUS_TEMPORARILY_UNAVAILABLE",
7563            Self::SipStatusCallTransactionDoesNotExists => "SIP_STATUS_CALL_TRANSACTION_DOES_NOT_EXISTS",
7564            Self::SipStatusLoopDetected => "SIP_STATUS_LOOP_DETECTED",
7565            Self::SipStatusTooManyHops => "SIP_STATUS_TOO_MANY_HOPS",
7566            Self::SipStatusAddressIncomplete => "SIP_STATUS_ADDRESS_INCOMPLETE",
7567            Self::SipStatusAmbiguous => "SIP_STATUS_AMBIGUOUS",
7568            Self::SipStatusBusyHere => "SIP_STATUS_BUSY_HERE",
7569            Self::SipStatusRequestTerminated => "SIP_STATUS_REQUEST_TERMINATED",
7570            Self::SipStatusNotAcceptableHere => "SIP_STATUS_NOT_ACCEPTABLE_HERE",
7571            Self::SipStatusBadEvent => "SIP_STATUS_BAD_EVENT",
7572            Self::SipStatusRequestPending => "SIP_STATUS_REQUEST_PENDING",
7573            Self::SipStatusUndecipherable => "SIP_STATUS_UNDECIPHERABLE",
7574            Self::SipStatusSecurityAgreementRequired => "SIP_STATUS_SECURITY_AGREEMENT_REQUIRED",
7575            Self::SipStatusInternalServerError => "SIP_STATUS_INTERNAL_SERVER_ERROR",
7576            Self::SipStatusNotImplemented => "SIP_STATUS_NOT_IMPLEMENTED",
7577            Self::SipStatusBadGateway => "SIP_STATUS_BAD_GATEWAY",
7578            Self::SipStatusServiceUnavailable => "SIP_STATUS_SERVICE_UNAVAILABLE",
7579            Self::SipStatusGatewayTimeout => "SIP_STATUS_GATEWAY_TIMEOUT",
7580            Self::SipStatusVersionNotSupported => "SIP_STATUS_VERSION_NOT_SUPPORTED",
7581            Self::SipStatusMessageTooLarge => "SIP_STATUS_MESSAGE_TOO_LARGE",
7582            Self::SipStatusGlobalBusyEverywhere => "SIP_STATUS_GLOBAL_BUSY_EVERYWHERE",
7583            Self::SipStatusGlobalDecline => "SIP_STATUS_GLOBAL_DECLINE",
7584            Self::SipStatusGlobalDoesNotExistAnywhere => "SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE",
7585            Self::SipStatusGlobalNotAcceptable => "SIP_STATUS_GLOBAL_NOT_ACCEPTABLE",
7586            Self::SipStatusGlobalUnwanted => "SIP_STATUS_GLOBAL_UNWANTED",
7587            Self::SipStatusGlobalRejected => "SIP_STATUS_GLOBAL_REJECTED",
7588        }
7589    }
7590    /// Creates an enum from field names used in the ProtoBuf definition.
7591    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7592        match value {
7593            "SIP_STATUS_UNKNOWN" => Some(Self::SipStatusUnknown),
7594            "SIP_STATUS_TRYING" => Some(Self::SipStatusTrying),
7595            "SIP_STATUS_RINGING" => Some(Self::SipStatusRinging),
7596            "SIP_STATUS_CALL_IS_FORWARDED" => Some(Self::SipStatusCallIsForwarded),
7597            "SIP_STATUS_QUEUED" => Some(Self::SipStatusQueued),
7598            "SIP_STATUS_SESSION_PROGRESS" => Some(Self::SipStatusSessionProgress),
7599            "SIP_STATUS_EARLY_DIALOG_TERMINATED" => Some(Self::SipStatusEarlyDialogTerminated),
7600            "SIP_STATUS_OK" => Some(Self::SipStatusOk),
7601            "SIP_STATUS_ACCEPTED" => Some(Self::SipStatusAccepted),
7602            "SIP_STATUS_NO_NOTIFICATION" => Some(Self::SipStatusNoNotification),
7603            "SIP_STATUS_MULTIPLE_CHOICES" => Some(Self::SipStatusMultipleChoices),
7604            "SIP_STATUS_MOVED_PERMANENTLY" => Some(Self::SipStatusMovedPermanently),
7605            "SIP_STATUS_MOVED_TEMPORARILY" => Some(Self::SipStatusMovedTemporarily),
7606            "SIP_STATUS_USE_PROXY" => Some(Self::SipStatusUseProxy),
7607            "SIP_STATUS_ALTERNATIVE_SERVICE" => Some(Self::SipStatusAlternativeService),
7608            "SIP_STATUS_BAD_REQUEST" => Some(Self::SipStatusBadRequest),
7609            "SIP_STATUS_UNAUTHORIZED" => Some(Self::SipStatusUnauthorized),
7610            "SIP_STATUS_PAYMENT_REQUIRED" => Some(Self::SipStatusPaymentRequired),
7611            "SIP_STATUS_FORBIDDEN" => Some(Self::SipStatusForbidden),
7612            "SIP_STATUS_NOTFOUND" => Some(Self::SipStatusNotfound),
7613            "SIP_STATUS_METHOD_NOT_ALLOWED" => Some(Self::SipStatusMethodNotAllowed),
7614            "SIP_STATUS_NOT_ACCEPTABLE" => Some(Self::SipStatusNotAcceptable),
7615            "SIP_STATUS_PROXY_AUTH_REQUIRED" => Some(Self::SipStatusProxyAuthRequired),
7616            "SIP_STATUS_REQUEST_TIMEOUT" => Some(Self::SipStatusRequestTimeout),
7617            "SIP_STATUS_CONFLICT" => Some(Self::SipStatusConflict),
7618            "SIP_STATUS_GONE" => Some(Self::SipStatusGone),
7619            "SIP_STATUS_LENGTH_REQUIRED" => Some(Self::SipStatusLengthRequired),
7620            "SIP_STATUS_CONDITIONAL_REQUEST_FAILED" => Some(Self::SipStatusConditionalRequestFailed),
7621            "SIP_STATUS_REQUEST_ENTITY_TOO_LARGE" => Some(Self::SipStatusRequestEntityTooLarge),
7622            "SIP_STATUS_REQUEST_URI_TOO_LONG" => Some(Self::SipStatusRequestUriTooLong),
7623            "SIP_STATUS_UNSUPPORTED_MEDIA_TYPE" => Some(Self::SipStatusUnsupportedMediaType),
7624            "SIP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE" => Some(Self::SipStatusRequestedRangeNotSatisfiable),
7625            "SIP_STATUS_UNKNOWN_RESOURCE_PRIORITY" => Some(Self::SipStatusUnknownResourcePriority),
7626            "SIP_STATUS_BAD_EXTENSION" => Some(Self::SipStatusBadExtension),
7627            "SIP_STATUS_EXTENSION_REQUIRED" => Some(Self::SipStatusExtensionRequired),
7628            "SIP_STATUS_SESSION_INTERVAL_TOO_SMALL" => Some(Self::SipStatusSessionIntervalTooSmall),
7629            "SIP_STATUS_INTERVAL_TOO_BRIEF" => Some(Self::SipStatusIntervalTooBrief),
7630            "SIP_STATUS_BAD_LOCATION_INFORMATION" => Some(Self::SipStatusBadLocationInformation),
7631            "SIP_STATUS_BAD_ALERT_MESSAGE" => Some(Self::SipStatusBadAlertMessage),
7632            "SIP_STATUS_USE_IDENTITY_HEADER" => Some(Self::SipStatusUseIdentityHeader),
7633            "SIP_STATUS_PROVIDE_REFERRER_IDENTITY" => Some(Self::SipStatusProvideReferrerIdentity),
7634            "SIP_STATUS_FLOW_FAILED" => Some(Self::SipStatusFlowFailed),
7635            "SIP_STATUS_ANONYMITY_DISALLOWED" => Some(Self::SipStatusAnonymityDisallowed),
7636            "SIP_STATUS_BAD_IDENTITY_INFO" => Some(Self::SipStatusBadIdentityInfo),
7637            "SIP_STATUS_UNSUPPORTED_CERTIFICATE" => Some(Self::SipStatusUnsupportedCertificate),
7638            "SIP_STATUS_INVALID_IDENTITY_HEADER" => Some(Self::SipStatusInvalidIdentityHeader),
7639            "SIP_STATUS_FIRST_HOP_LACKS_OUTBOUND_SUPPORT" => Some(Self::SipStatusFirstHopLacksOutboundSupport),
7640            "SIP_STATUS_MAX_BREADTH_EXCEEDED" => Some(Self::SipStatusMaxBreadthExceeded),
7641            "SIP_STATUS_BAD_INFO_PACKAGE" => Some(Self::SipStatusBadInfoPackage),
7642            "SIP_STATUS_CONSENT_NEEDED" => Some(Self::SipStatusConsentNeeded),
7643            "SIP_STATUS_TEMPORARILY_UNAVAILABLE" => Some(Self::SipStatusTemporarilyUnavailable),
7644            "SIP_STATUS_CALL_TRANSACTION_DOES_NOT_EXISTS" => Some(Self::SipStatusCallTransactionDoesNotExists),
7645            "SIP_STATUS_LOOP_DETECTED" => Some(Self::SipStatusLoopDetected),
7646            "SIP_STATUS_TOO_MANY_HOPS" => Some(Self::SipStatusTooManyHops),
7647            "SIP_STATUS_ADDRESS_INCOMPLETE" => Some(Self::SipStatusAddressIncomplete),
7648            "SIP_STATUS_AMBIGUOUS" => Some(Self::SipStatusAmbiguous),
7649            "SIP_STATUS_BUSY_HERE" => Some(Self::SipStatusBusyHere),
7650            "SIP_STATUS_REQUEST_TERMINATED" => Some(Self::SipStatusRequestTerminated),
7651            "SIP_STATUS_NOT_ACCEPTABLE_HERE" => Some(Self::SipStatusNotAcceptableHere),
7652            "SIP_STATUS_BAD_EVENT" => Some(Self::SipStatusBadEvent),
7653            "SIP_STATUS_REQUEST_PENDING" => Some(Self::SipStatusRequestPending),
7654            "SIP_STATUS_UNDECIPHERABLE" => Some(Self::SipStatusUndecipherable),
7655            "SIP_STATUS_SECURITY_AGREEMENT_REQUIRED" => Some(Self::SipStatusSecurityAgreementRequired),
7656            "SIP_STATUS_INTERNAL_SERVER_ERROR" => Some(Self::SipStatusInternalServerError),
7657            "SIP_STATUS_NOT_IMPLEMENTED" => Some(Self::SipStatusNotImplemented),
7658            "SIP_STATUS_BAD_GATEWAY" => Some(Self::SipStatusBadGateway),
7659            "SIP_STATUS_SERVICE_UNAVAILABLE" => Some(Self::SipStatusServiceUnavailable),
7660            "SIP_STATUS_GATEWAY_TIMEOUT" => Some(Self::SipStatusGatewayTimeout),
7661            "SIP_STATUS_VERSION_NOT_SUPPORTED" => Some(Self::SipStatusVersionNotSupported),
7662            "SIP_STATUS_MESSAGE_TOO_LARGE" => Some(Self::SipStatusMessageTooLarge),
7663            "SIP_STATUS_GLOBAL_BUSY_EVERYWHERE" => Some(Self::SipStatusGlobalBusyEverywhere),
7664            "SIP_STATUS_GLOBAL_DECLINE" => Some(Self::SipStatusGlobalDecline),
7665            "SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE" => Some(Self::SipStatusGlobalDoesNotExistAnywhere),
7666            "SIP_STATUS_GLOBAL_NOT_ACCEPTABLE" => Some(Self::SipStatusGlobalNotAcceptable),
7667            "SIP_STATUS_GLOBAL_UNWANTED" => Some(Self::SipStatusGlobalUnwanted),
7668            "SIP_STATUS_GLOBAL_REJECTED" => Some(Self::SipStatusGlobalRejected),
7669            _ => None,
7670        }
7671    }
7672}
7673#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7674#[repr(i32)]
7675pub enum SipTransport {
7676    Auto = 0,
7677    Udp = 1,
7678    Tcp = 2,
7679    Tls = 3,
7680}
7681impl SipTransport {
7682    /// String value of the enum field names used in the ProtoBuf definition.
7683    ///
7684    /// The values are not transformed in any way and thus are considered stable
7685    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7686    pub fn as_str_name(&self) -> &'static str {
7687        match self {
7688            Self::Auto => "SIP_TRANSPORT_AUTO",
7689            Self::Udp => "SIP_TRANSPORT_UDP",
7690            Self::Tcp => "SIP_TRANSPORT_TCP",
7691            Self::Tls => "SIP_TRANSPORT_TLS",
7692        }
7693    }
7694    /// Creates an enum from field names used in the ProtoBuf definition.
7695    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7696        match value {
7697            "SIP_TRANSPORT_AUTO" => Some(Self::Auto),
7698            "SIP_TRANSPORT_UDP" => Some(Self::Udp),
7699            "SIP_TRANSPORT_TCP" => Some(Self::Tcp),
7700            "SIP_TRANSPORT_TLS" => Some(Self::Tls),
7701            _ => None,
7702        }
7703    }
7704}
7705#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7706#[repr(i32)]
7707pub enum SipHeaderOptions {
7708    /// do not map any headers, except ones mapped explicitly
7709    SipNoHeaders = 0,
7710    /// map all X-* headers to sip.h.x-* attributes
7711    SipXHeaders = 1,
7712    /// map all headers to sip.h.* attributes
7713    SipAllHeaders = 2,
7714}
7715impl SipHeaderOptions {
7716    /// String value of the enum field names used in the ProtoBuf definition.
7717    ///
7718    /// The values are not transformed in any way and thus are considered stable
7719    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7720    pub fn as_str_name(&self) -> &'static str {
7721        match self {
7722            Self::SipNoHeaders => "SIP_NO_HEADERS",
7723            Self::SipXHeaders => "SIP_X_HEADERS",
7724            Self::SipAllHeaders => "SIP_ALL_HEADERS",
7725        }
7726    }
7727    /// Creates an enum from field names used in the ProtoBuf definition.
7728    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7729        match value {
7730            "SIP_NO_HEADERS" => Some(Self::SipNoHeaders),
7731            "SIP_X_HEADERS" => Some(Self::SipXHeaders),
7732            "SIP_ALL_HEADERS" => Some(Self::SipAllHeaders),
7733            _ => None,
7734        }
7735    }
7736}
7737#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7738#[repr(i32)]
7739pub enum SipMediaEncryption {
7740    /// do not enable encryption
7741    SipMediaEncryptDisable = 0,
7742    /// use encryption if available
7743    SipMediaEncryptAllow = 1,
7744    /// require encryption
7745    SipMediaEncryptRequire = 2,
7746}
7747impl SipMediaEncryption {
7748    /// String value of the enum field names used in the ProtoBuf definition.
7749    ///
7750    /// The values are not transformed in any way and thus are considered stable
7751    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7752    pub fn as_str_name(&self) -> &'static str {
7753        match self {
7754            Self::SipMediaEncryptDisable => "SIP_MEDIA_ENCRYPT_DISABLE",
7755            Self::SipMediaEncryptAllow => "SIP_MEDIA_ENCRYPT_ALLOW",
7756            Self::SipMediaEncryptRequire => "SIP_MEDIA_ENCRYPT_REQUIRE",
7757        }
7758    }
7759    /// Creates an enum from field names used in the ProtoBuf definition.
7760    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7761        match value {
7762            "SIP_MEDIA_ENCRYPT_DISABLE" => Some(Self::SipMediaEncryptDisable),
7763            "SIP_MEDIA_ENCRYPT_ALLOW" => Some(Self::SipMediaEncryptAllow),
7764            "SIP_MEDIA_ENCRYPT_REQUIRE" => Some(Self::SipMediaEncryptRequire),
7765            _ => None,
7766        }
7767    }
7768}
7769/// Dial tone (ringback) played while a call is being placed or transferred.
7770/// Receivers treat unknown values as SIP_DIALTONE_ETSI.
7771#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7772#[repr(i32)]
7773pub enum SipDialtone {
7774    /// no tone
7775    Disabled = 0,
7776    /// 425 Hz, 1s on / 4s off; the tone play_dialtone used
7777    Etsi = 1,
7778    /// pick by the country of the called number, ETSI if unknown
7779    Auto = 2,
7780    /// North America (NANP)
7781    Us = 3,
7782    Uk = 4,
7783    Jp = 5,
7784    Au = 6,
7785}
7786impl SipDialtone {
7787    /// String value of the enum field names used in the ProtoBuf definition.
7788    ///
7789    /// The values are not transformed in any way and thus are considered stable
7790    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7791    pub fn as_str_name(&self) -> &'static str {
7792        match self {
7793            Self::Disabled => "SIP_DIALTONE_DISABLED",
7794            Self::Etsi => "SIP_DIALTONE_ETSI",
7795            Self::Auto => "SIP_DIALTONE_AUTO",
7796            Self::Us => "SIP_DIALTONE_US",
7797            Self::Uk => "SIP_DIALTONE_UK",
7798            Self::Jp => "SIP_DIALTONE_JP",
7799            Self::Au => "SIP_DIALTONE_AU",
7800        }
7801    }
7802    /// Creates an enum from field names used in the ProtoBuf definition.
7803    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7804        match value {
7805            "SIP_DIALTONE_DISABLED" => Some(Self::Disabled),
7806            "SIP_DIALTONE_ETSI" => Some(Self::Etsi),
7807            "SIP_DIALTONE_AUTO" => Some(Self::Auto),
7808            "SIP_DIALTONE_US" => Some(Self::Us),
7809            "SIP_DIALTONE_UK" => Some(Self::Uk),
7810            "SIP_DIALTONE_JP" => Some(Self::Jp),
7811            "SIP_DIALTONE_AU" => Some(Self::Au),
7812            _ => None,
7813        }
7814    }
7815}
7816#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7817#[repr(i32)]
7818pub enum ProviderType {
7819    Unknown = 0,
7820    /// Internally implemented
7821    Internal = 1,
7822    /// Vendor provided
7823    External = 2,
7824}
7825impl ProviderType {
7826    /// String value of the enum field names used in the ProtoBuf definition.
7827    ///
7828    /// The values are not transformed in any way and thus are considered stable
7829    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7830    pub fn as_str_name(&self) -> &'static str {
7831        match self {
7832            Self::Unknown => "PROVIDER_TYPE_UNKNOWN",
7833            Self::Internal => "PROVIDER_TYPE_INTERNAL",
7834            Self::External => "PROVIDER_TYPE_EXTERNAL",
7835        }
7836    }
7837    /// Creates an enum from field names used in the ProtoBuf definition.
7838    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7839        match value {
7840            "PROVIDER_TYPE_UNKNOWN" => Some(Self::Unknown),
7841            "PROVIDER_TYPE_INTERNAL" => Some(Self::Internal),
7842            "PROVIDER_TYPE_EXTERNAL" => Some(Self::External),
7843            _ => None,
7844        }
7845    }
7846}
7847#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7848#[repr(i32)]
7849pub enum SipCallStatus {
7850    /// Incoming call is being handled by the SIP service. The SIP participant hasn't joined a LiveKit room yet
7851    ScsCallIncoming = 0,
7852    /// SIP participant for outgoing call has been created. The SIP outgoing call is being established
7853    ScsParticipantJoined = 1,
7854    /// Call is ongoing. SIP participant is active in the LiveKit room
7855    ScsActive = 2,
7856    /// Call has ended
7857    ScsDisconnected = 3,
7858    /// Call has ended or never succeeded because of an error
7859    ScsError = 4,
7860}
7861impl SipCallStatus {
7862    /// String value of the enum field names used in the ProtoBuf definition.
7863    ///
7864    /// The values are not transformed in any way and thus are considered stable
7865    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7866    pub fn as_str_name(&self) -> &'static str {
7867        match self {
7868            Self::ScsCallIncoming => "SCS_CALL_INCOMING",
7869            Self::ScsParticipantJoined => "SCS_PARTICIPANT_JOINED",
7870            Self::ScsActive => "SCS_ACTIVE",
7871            Self::ScsDisconnected => "SCS_DISCONNECTED",
7872            Self::ScsError => "SCS_ERROR",
7873        }
7874    }
7875    /// Creates an enum from field names used in the ProtoBuf definition.
7876    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7877        match value {
7878            "SCS_CALL_INCOMING" => Some(Self::ScsCallIncoming),
7879            "SCS_PARTICIPANT_JOINED" => Some(Self::ScsParticipantJoined),
7880            "SCS_ACTIVE" => Some(Self::ScsActive),
7881            "SCS_DISCONNECTED" => Some(Self::ScsDisconnected),
7882            "SCS_ERROR" => Some(Self::ScsError),
7883            _ => None,
7884        }
7885    }
7886}
7887#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7888#[repr(i32)]
7889pub enum SipTransferStatus {
7890    StsTransferOngoing = 0,
7891    StsTransferFailed = 1,
7892    StsTransferSuccessful = 2,
7893}
7894impl SipTransferStatus {
7895    /// String value of the enum field names used in the ProtoBuf definition.
7896    ///
7897    /// The values are not transformed in any way and thus are considered stable
7898    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7899    pub fn as_str_name(&self) -> &'static str {
7900        match self {
7901            Self::StsTransferOngoing => "STS_TRANSFER_ONGOING",
7902            Self::StsTransferFailed => "STS_TRANSFER_FAILED",
7903            Self::StsTransferSuccessful => "STS_TRANSFER_SUCCESSFUL",
7904        }
7905    }
7906    /// Creates an enum from field names used in the ProtoBuf definition.
7907    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7908        match value {
7909            "STS_TRANSFER_ONGOING" => Some(Self::StsTransferOngoing),
7910            "STS_TRANSFER_FAILED" => Some(Self::StsTransferFailed),
7911            "STS_TRANSFER_SUCCESSFUL" => Some(Self::StsTransferSuccessful),
7912            _ => None,
7913        }
7914    }
7915}
7916#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7917#[repr(i32)]
7918pub enum SipTransferReason {
7919    /// No reason reported
7920    StrUnspecified = 0,
7921    /// The transferee answered and the transfer completed
7922    StrCompleted = 1,
7923    /// The call ended before the transfer completed: remote BYE, room deleted or local hangup
7924    StrCallEnded = 2,
7925    /// The transferee, or its provider, rejected the transfer
7926    StrRejected = 3,
7927    /// The transferee did not answer in time
7928    StrRingingTimeout = 4,
7929    /// The provider stopped reporting the transfer status without a final response
7930    StrSubscriptionTerminated = 5,
7931    /// Canceled through the API
7932    StrCanceled = 6,
7933}
7934impl SipTransferReason {
7935    /// String value of the enum field names used in the ProtoBuf definition.
7936    ///
7937    /// The values are not transformed in any way and thus are considered stable
7938    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7939    pub fn as_str_name(&self) -> &'static str {
7940        match self {
7941            Self::StrUnspecified => "STR_UNSPECIFIED",
7942            Self::StrCompleted => "STR_COMPLETED",
7943            Self::StrCallEnded => "STR_CALL_ENDED",
7944            Self::StrRejected => "STR_REJECTED",
7945            Self::StrRingingTimeout => "STR_RINGING_TIMEOUT",
7946            Self::StrSubscriptionTerminated => "STR_SUBSCRIPTION_TERMINATED",
7947            Self::StrCanceled => "STR_CANCELED",
7948        }
7949    }
7950    /// Creates an enum from field names used in the ProtoBuf definition.
7951    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7952        match value {
7953            "STR_UNSPECIFIED" => Some(Self::StrUnspecified),
7954            "STR_COMPLETED" => Some(Self::StrCompleted),
7955            "STR_CALL_ENDED" => Some(Self::StrCallEnded),
7956            "STR_REJECTED" => Some(Self::StrRejected),
7957            "STR_RINGING_TIMEOUT" => Some(Self::StrRingingTimeout),
7958            "STR_SUBSCRIPTION_TERMINATED" => Some(Self::StrSubscriptionTerminated),
7959            "STR_CANCELED" => Some(Self::StrCanceled),
7960            _ => None,
7961        }
7962    }
7963}
7964#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7965#[repr(i32)]
7966pub enum SipFeature {
7967    None = 0,
7968    KrispEnabled = 1,
7969}
7970impl SipFeature {
7971    /// String value of the enum field names used in the ProtoBuf definition.
7972    ///
7973    /// The values are not transformed in any way and thus are considered stable
7974    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7975    pub fn as_str_name(&self) -> &'static str {
7976        match self {
7977            Self::None => "NONE",
7978            Self::KrispEnabled => "KRISP_ENABLED",
7979        }
7980    }
7981    /// Creates an enum from field names used in the ProtoBuf definition.
7982    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7983        match value {
7984            "NONE" => Some(Self::None),
7985            "KRISP_ENABLED" => Some(Self::KrispEnabled),
7986            _ => None,
7987        }
7988    }
7989}
7990#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7991#[repr(i32)]
7992pub enum SipCallDirection {
7993    ScdUnknown = 0,
7994    ScdInbound = 1,
7995    ScdOutbound = 2,
7996}
7997impl SipCallDirection {
7998    /// String value of the enum field names used in the ProtoBuf definition.
7999    ///
8000    /// The values are not transformed in any way and thus are considered stable
8001    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8002    pub fn as_str_name(&self) -> &'static str {
8003        match self {
8004            Self::ScdUnknown => "SCD_UNKNOWN",
8005            Self::ScdInbound => "SCD_INBOUND",
8006            Self::ScdOutbound => "SCD_OUTBOUND",
8007        }
8008    }
8009    /// Creates an enum from field names used in the ProtoBuf definition.
8010    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8011        match value {
8012            "SCD_UNKNOWN" => Some(Self::ScdUnknown),
8013            "SCD_INBOUND" => Some(Self::ScdInbound),
8014            "SCD_OUTBOUND" => Some(Self::ScdOutbound),
8015            _ => None,
8016        }
8017    }
8018}
8019#[derive(Clone, PartialEq, ::prost::Message)]
8020pub struct DialWhatsAppCallRequest {
8021    /// Required - The phone number id of the business that is initiating the call
8022    #[prost(string, tag = "1")]
8023    pub whatsapp_phone_number_id: ::prost::alloc::string::String,
8024    /// Required - The number of the user that is supossed to receive the call
8025    #[prost(string, tag = "2")]
8026    pub whatsapp_to_phone_number: ::prost::alloc::string::String,
8027    /// Required - The API key of the business that is initiating the call
8028    #[prost(string, tag = "3")]
8029    pub whatsapp_api_key: ::prost::alloc::string::String,
8030    /// Required - WhatsApp Cloud API version, eg: 23.0, 24.0, etc.
8031    #[prost(string, tag = "12")]
8032    pub whatsapp_cloud_api_version: ::prost::alloc::string::String,
8033    /// Optional - An arbitrary string you can pass in that is useful for tracking and logging purposes.
8034    #[prost(string, tag = "4")]
8035    pub whatsapp_biz_opaque_callback_data: ::prost::alloc::string::String,
8036    /// Optional - What LiveKit room should this participant be connected too
8037    #[prost(string, tag = "5")]
8038    pub room_name: ::prost::alloc::string::String,
8039    /// Optional - Agents to dispatch the call to
8040    #[prost(message, repeated, tag = "6")]
8041    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
8042    /// Optional - Identity of the participant in LiveKit room
8043    /// This is used for logging purposes, so it is advised to not put PII in this field.
8044    #[prost(string, tag = "7")]
8045    pub participant_identity: ::prost::alloc::string::String,
8046    /// Optional - Name of the participant in LiveKit room
8047    #[prost(string, tag = "8")]
8048    pub participant_name: ::prost::alloc::string::String,
8049    /// Optional - User-defined metadata. Will be attached to a created Participant in the room.
8050    #[prost(string, tag = "9")]
8051    pub participant_metadata: ::prost::alloc::string::String,
8052    /// Optional - User-defined attributes. Will be attached to a created Participant in the room.
8053    #[prost(map = "string, string", tag = "10")]
8054    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
8055    /// 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.
8056    #[prost(string, tag = "11")]
8057    pub destination_country: ::prost::alloc::string::String,
8058    /// Max time for the callee to answer the call.
8059    #[prost(message, optional, tag = "13")]
8060    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
8061}
8062#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8063pub struct DialWhatsAppCallResponse {
8064    /// Call ID sent by Meta
8065    #[prost(string, tag = "1")]
8066    pub whatsapp_call_id: ::prost::alloc::string::String,
8067    /// The name of the LiveKit room that the call is connected to
8068    #[prost(string, tag = "2")]
8069    pub room_name: ::prost::alloc::string::String,
8070}
8071#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8072pub struct DisconnectWhatsAppCallRequest {
8073    /// Required - Call ID sent by Meta
8074    #[prost(string, tag = "1")]
8075    pub whatsapp_call_id: ::prost::alloc::string::String,
8076    /// The API key of the whatsapp business.
8077    /// Required if the DisconnectReason is BUSINESS_INITIATED.
8078    /// Optional for  USER_INITIATED as no API call to WhatsApp is needed.
8079    #[prost(string, tag = "2")]
8080    pub whatsapp_api_key: ::prost::alloc::string::String,
8081    /// The reason for disconnecting the call
8082    #[prost(enumeration = "disconnect_whats_app_call_request::DisconnectReason", tag = "3")]
8083    pub disconnect_reason: i32,
8084}
8085/// Nested message and enum types in `DisconnectWhatsAppCallRequest`.
8086pub mod disconnect_whats_app_call_request {
8087    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8088    #[repr(i32)]
8089    pub enum DisconnectReason {
8090        /// The call is being disconnected by the business
8091        BusinessInitiated = 0,
8092        /// The call is disconnected by the user.
8093        /// This can be tracked as part of call terminate webhook
8094        /// <https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/user-initiated-calls#call-terminate-webhook>
8095        /// Note that this webhook will also be sent when the call is disconnected by the business.
8096        /// Calling the API twice in such cases will result in an error.
8097        UserInitiated = 1,
8098    }
8099    impl DisconnectReason {
8100        /// String value of the enum field names used in the ProtoBuf definition.
8101        ///
8102        /// The values are not transformed in any way and thus are considered stable
8103        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8104        pub fn as_str_name(&self) -> &'static str {
8105            match self {
8106                Self::BusinessInitiated => "BUSINESS_INITIATED",
8107                Self::UserInitiated => "USER_INITIATED",
8108            }
8109        }
8110        /// Creates an enum from field names used in the ProtoBuf definition.
8111        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8112            match value {
8113                "BUSINESS_INITIATED" => Some(Self::BusinessInitiated),
8114                "USER_INITIATED" => Some(Self::UserInitiated),
8115                _ => None,
8116            }
8117        }
8118    }
8119}
8120#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8121pub struct DisconnectWhatsAppCallResponse {
8122}
8123#[derive(Clone, PartialEq, ::prost::Message)]
8124pub struct ConnectWhatsAppCallRequest {
8125    /// Required - Call ID sent by Meta
8126    #[prost(string, tag = "1")]
8127    pub whatsapp_call_id: ::prost::alloc::string::String,
8128    /// Required - The call connect webhook comes with SDP from Meta
8129    /// It is the answer SDP for a business initiated call
8130    #[prost(message, optional, tag = "2")]
8131    pub sdp: ::core::option::Option<SessionDescription>,
8132    /// Wait for the answer for the call before returning.
8133    #[prost(bool, tag = "3")]
8134    pub wait_until_answered: bool,
8135}
8136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8137pub struct ConnectWhatsAppCallResponse {
8138}
8139#[derive(Clone, PartialEq, ::prost::Message)]
8140pub struct AcceptWhatsAppCallRequest {
8141    /// Required - The phone number id of the business that is conencting the call
8142    #[prost(string, tag = "1")]
8143    pub whatsapp_phone_number_id: ::prost::alloc::string::String,
8144    /// Required - The API key of the business that is connecting the call
8145    #[prost(string, tag = "2")]
8146    pub whatsapp_api_key: ::prost::alloc::string::String,
8147    /// Required - WhatsApp Cloud API version, eg: 23.0, 24.0, etc.
8148    #[prost(string, tag = "13")]
8149    pub whatsapp_cloud_api_version: ::prost::alloc::string::String,
8150    /// Required - Call ID sent by Meta
8151    #[prost(string, tag = "3")]
8152    pub whatsapp_call_id: ::prost::alloc::string::String,
8153    /// Optional - An arbitrary string you can pass in that is useful for tracking and logging purposes.
8154    #[prost(string, tag = "4")]
8155    pub whatsapp_biz_opaque_callback_data: ::prost::alloc::string::String,
8156    /// Required - The call accept webhook comes with SDP from Meta
8157    /// It is the for a user initiated call
8158    #[prost(message, optional, tag = "5")]
8159    pub sdp: ::core::option::Option<SessionDescription>,
8160    /// Optional - What LiveKit room should this participant be connected too
8161    #[prost(string, tag = "6")]
8162    pub room_name: ::prost::alloc::string::String,
8163    /// Optional - Agents to dispatch the call to
8164    #[prost(message, repeated, tag = "7")]
8165    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
8166    /// Optional - Identity of the participant in LiveKit room
8167    /// This is used for logging purposes, so it is advised to not put PII in this field.
8168    #[prost(string, tag = "8")]
8169    pub participant_identity: ::prost::alloc::string::String,
8170    /// Optional - Name of the participant in LiveKit room
8171    #[prost(string, tag = "9")]
8172    pub participant_name: ::prost::alloc::string::String,
8173    /// Optional - User-defined metadata. Will be attached to a created Participant in the room.
8174    #[prost(string, tag = "10")]
8175    pub participant_metadata: ::prost::alloc::string::String,
8176    /// Optional - User-defined attributes. Will be attached to a created Participant in the room.
8177    #[prost(map = "string, string", tag = "11")]
8178    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
8179    /// 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.
8180    #[prost(string, tag = "12")]
8181    pub destination_country: ::prost::alloc::string::String,
8182    /// Max time for the callee to answer the call.
8183    #[prost(message, optional, tag = "14")]
8184    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
8185    /// Wait for the answer for the call before returning.
8186    #[prost(bool, tag = "15")]
8187    pub wait_until_answered: bool,
8188}
8189#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8190pub struct AcceptWhatsAppCallResponse {
8191    /// The name of the LiveKit room that the call is connected to
8192    #[prost(string, tag = "1")]
8193    pub room_name: ::prost::alloc::string::String,
8194}
8195#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8196pub struct WhatsAppCall {
8197    /// list of call ids that are currently active
8198    #[prost(string, tag = "1")]
8199    pub whatsapp_call_id: ::prost::alloc::string::String,
8200    /// Direction of the call
8201    #[prost(enumeration = "WhatsAppCallDirection", tag = "2")]
8202    pub direction: i32,
8203}
8204#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8205#[repr(i32)]
8206pub enum WhatsAppCallDirection {
8207    WhatsappCallDirectionInbound = 0,
8208    WhatsappCallDirectionOutbound = 2,
8209}
8210impl WhatsAppCallDirection {
8211    /// String value of the enum field names used in the ProtoBuf definition.
8212    ///
8213    /// The values are not transformed in any way and thus are considered stable
8214    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8215    pub fn as_str_name(&self) -> &'static str {
8216        match self {
8217            Self::WhatsappCallDirectionInbound => "WHATSAPP_CALL_DIRECTION_INBOUND",
8218            Self::WhatsappCallDirectionOutbound => "WHATSAPP_CALL_DIRECTION_OUTBOUND",
8219        }
8220    }
8221    /// Creates an enum from field names used in the ProtoBuf definition.
8222    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8223        match value {
8224            "WHATSAPP_CALL_DIRECTION_INBOUND" => Some(Self::WhatsappCallDirectionInbound),
8225            "WHATSAPP_CALL_DIRECTION_OUTBOUND" => Some(Self::WhatsappCallDirectionOutbound),
8226            _ => None,
8227        }
8228    }
8229}
8230#[derive(Clone, PartialEq, ::prost::Message)]
8231pub struct ConnectTwilioCallRequest {
8232    /// The Direction of the call
8233    #[prost(enumeration = "connect_twilio_call_request::TwilioCallDirection", tag = "1")]
8234    pub twilio_call_direction: i32,
8235    /// What LiveKit room should this call be connected to
8236    #[prost(string, tag = "2")]
8237    pub room_name: ::prost::alloc::string::String,
8238    /// Optional agents to dispatch the call to
8239    #[prost(message, repeated, tag = "3")]
8240    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
8241    /// Optional identity of the participant in LiveKit room
8242    /// This is used for logging purposes, so it is advised to not put PII in this field.
8243    #[prost(string, tag = "4")]
8244    pub participant_identity: ::prost::alloc::string::String,
8245    /// Optional name of the participant in LiveKit room
8246    #[prost(string, tag = "5")]
8247    pub participant_name: ::prost::alloc::string::String,
8248    /// Optional user-defined metadata. Will be attached to a created Participant in the room.
8249    #[prost(string, tag = "6")]
8250    pub participant_metadata: ::prost::alloc::string::String,
8251    /// Optional user-defined attributes. Will be attached to a created Participant in the room.
8252    #[prost(map = "string, string", tag = "7")]
8253    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
8254    /// 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.
8255    #[prost(string, tag = "8")]
8256    pub destination_country: ::prost::alloc::string::String,
8257}
8258/// Nested message and enum types in `ConnectTwilioCallRequest`.
8259pub mod connect_twilio_call_request {
8260    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8261    #[repr(i32)]
8262    pub enum TwilioCallDirection {
8263        /// Call is inbound to LiveKit from Twilio
8264        Inbound = 0,
8265        /// Call is outbound from LiveKit to Twilio
8266        Outbound = 1,
8267    }
8268    impl TwilioCallDirection {
8269        /// String value of the enum field names used in the ProtoBuf definition.
8270        ///
8271        /// The values are not transformed in any way and thus are considered stable
8272        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8273        pub fn as_str_name(&self) -> &'static str {
8274            match self {
8275                Self::Inbound => "TWILIO_CALL_DIRECTION_INBOUND",
8276                Self::Outbound => "TWILIO_CALL_DIRECTION_OUTBOUND",
8277            }
8278        }
8279        /// Creates an enum from field names used in the ProtoBuf definition.
8280        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8281            match value {
8282                "TWILIO_CALL_DIRECTION_INBOUND" => Some(Self::Inbound),
8283                "TWILIO_CALL_DIRECTION_OUTBOUND" => Some(Self::Outbound),
8284                _ => None,
8285            }
8286        }
8287    }
8288}
8289#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8290pub struct ConnectTwilioCallResponse {
8291    /// The websocket URL which twilio media stream will connect to
8292    #[prost(string, tag = "1")]
8293    pub connect_url: ::prost::alloc::string::String,
8294}
8295#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8296#[repr(i32)]
8297pub enum ConnectorType {
8298    Unspecified = 0,
8299    WhatsApp = 1,
8300    Twilio = 2,
8301}
8302impl ConnectorType {
8303    /// String value of the enum field names used in the ProtoBuf definition.
8304    ///
8305    /// The values are not transformed in any way and thus are considered stable
8306    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8307    pub fn as_str_name(&self) -> &'static str {
8308        match self {
8309            Self::Unspecified => "Unspecified",
8310            Self::WhatsApp => "WhatsApp",
8311            Self::Twilio => "Twilio",
8312        }
8313    }
8314    /// Creates an enum from field names used in the ProtoBuf definition.
8315    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8316        match value {
8317            "Unspecified" => Some(Self::Unspecified),
8318            "WhatsApp" => Some(Self::WhatsApp),
8319            "Twilio" => Some(Self::Twilio),
8320            _ => None,
8321        }
8322    }
8323}
8324#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8325pub struct AnalyticsVideoLayer {
8326    #[prost(int32, tag = "1")]
8327    pub layer: i32,
8328    #[prost(uint32, tag = "2")]
8329    pub packets: u32,
8330    #[prost(uint64, tag = "3")]
8331    pub bytes: u64,
8332    #[prost(uint32, tag = "4")]
8333    pub frames: u32,
8334}
8335#[derive(Clone, PartialEq, ::prost::Message)]
8336pub struct AnalyticsStream {
8337    #[prost(uint32, tag = "1")]
8338    pub ssrc: u32,
8339    #[prost(uint32, tag = "2")]
8340    pub primary_packets: u32,
8341    #[prost(uint64, tag = "3")]
8342    pub primary_bytes: u64,
8343    #[prost(uint32, tag = "4")]
8344    pub retransmit_packets: u32,
8345    #[prost(uint64, tag = "5")]
8346    pub retransmit_bytes: u64,
8347    #[prost(uint32, tag = "6")]
8348    pub padding_packets: u32,
8349    #[prost(uint64, tag = "7")]
8350    pub padding_bytes: u64,
8351    #[prost(uint32, tag = "8")]
8352    pub packets_lost: u32,
8353    #[prost(uint32, tag = "9")]
8354    pub frames: u32,
8355    #[prost(uint32, tag = "10")]
8356    pub rtt: u32,
8357    #[prost(uint32, tag = "11")]
8358    pub jitter: u32,
8359    #[prost(uint32, tag = "12")]
8360    pub nacks: u32,
8361    #[prost(uint32, tag = "13")]
8362    pub plis: u32,
8363    #[prost(uint32, tag = "14")]
8364    pub firs: u32,
8365    #[prost(message, repeated, tag = "15")]
8366    pub video_layers: ::prost::alloc::vec::Vec<AnalyticsVideoLayer>,
8367    #[prost(message, optional, tag = "17")]
8368    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
8369    #[prost(message, optional, tag = "18")]
8370    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
8371    #[prost(uint32, tag = "19")]
8372    pub packets_out_of_order: u32,
8373}
8374#[derive(Clone, PartialEq, ::prost::Message)]
8375pub struct AnalyticsStat {
8376    /// unique id for this stat
8377    #[prost(string, tag = "14")]
8378    pub id: ::prost::alloc::string::String,
8379    #[prost(string, tag = "1")]
8380    pub analytics_key: ::prost::alloc::string::String,
8381    #[prost(enumeration = "StreamType", tag = "2")]
8382    pub kind: i32,
8383    #[prost(message, optional, tag = "3")]
8384    pub time_stamp: ::core::option::Option<::pbjson_types::Timestamp>,
8385    #[prost(string, tag = "4")]
8386    pub node: ::prost::alloc::string::String,
8387    #[prost(string, tag = "5")]
8388    pub room_id: ::prost::alloc::string::String,
8389    #[prost(string, tag = "6")]
8390    pub room_name: ::prost::alloc::string::String,
8391    #[prost(string, tag = "7")]
8392    pub participant_id: ::prost::alloc::string::String,
8393    #[prost(string, tag = "8")]
8394    pub track_id: ::prost::alloc::string::String,
8395    /// average score
8396    #[prost(float, tag = "9")]
8397    pub score: f32,
8398    #[prost(message, repeated, tag = "10")]
8399    pub streams: ::prost::alloc::vec::Vec<AnalyticsStream>,
8400    #[prost(string, tag = "11")]
8401    pub mime: ::prost::alloc::string::String,
8402    #[prost(float, tag = "12")]
8403    pub min_score: f32,
8404    #[prost(float, tag = "13")]
8405    pub median_score: f32,
8406}
8407#[derive(Clone, PartialEq, ::prost::Message)]
8408pub struct AnalyticsStats {
8409    #[prost(message, repeated, tag = "1")]
8410    pub stats: ::prost::alloc::vec::Vec<AnalyticsStat>,
8411}
8412#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8413pub struct AnalyticsClientMeta {
8414    #[prost(string, tag = "1")]
8415    pub region: ::prost::alloc::string::String,
8416    #[prost(string, tag = "2")]
8417    pub node: ::prost::alloc::string::String,
8418    #[prost(string, tag = "3")]
8419    pub client_addr: ::prost::alloc::string::String,
8420    #[prost(uint32, tag = "4")]
8421    pub client_connect_time: u32,
8422    /// udp, tcp, turn
8423    #[prost(string, tag = "5")]
8424    pub connection_type: ::prost::alloc::string::String,
8425    #[prost(enumeration = "ReconnectReason", tag = "6")]
8426    pub reconnect_reason: i32,
8427    #[prost(string, optional, tag = "7")]
8428    pub geo_hash: ::core::option::Option<::prost::alloc::string::String>,
8429    #[prost(string, optional, tag = "8")]
8430    pub country: ::core::option::Option<::prost::alloc::string::String>,
8431    #[prost(uint32, optional, tag = "9")]
8432    pub isp_asn: ::core::option::Option<u32>,
8433}
8434#[derive(Clone, PartialEq, ::prost::Message)]
8435pub struct AnalyticsEvent {
8436    /// unique id for this event
8437    #[prost(string, tag = "25")]
8438    pub id: ::prost::alloc::string::String,
8439    #[prost(enumeration = "AnalyticsEventType", tag = "1")]
8440    pub r#type: i32,
8441    #[prost(message, optional, tag = "2")]
8442    pub timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
8443    #[prost(string, tag = "3")]
8444    pub room_id: ::prost::alloc::string::String,
8445    #[prost(message, optional, tag = "4")]
8446    pub room: ::core::option::Option<Room>,
8447    #[prost(string, tag = "5")]
8448    pub participant_id: ::prost::alloc::string::String,
8449    #[prost(message, optional, tag = "6")]
8450    pub participant: ::core::option::Option<ParticipantInfo>,
8451    #[prost(string, tag = "7")]
8452    pub track_id: ::prost::alloc::string::String,
8453    #[prost(message, optional, tag = "8")]
8454    pub track: ::core::option::Option<TrackInfo>,
8455    #[prost(string, tag = "10")]
8456    pub analytics_key: ::prost::alloc::string::String,
8457    #[prost(message, optional, tag = "11")]
8458    pub client_info: ::core::option::Option<ClientInfo>,
8459    #[prost(message, optional, tag = "12")]
8460    pub client_meta: ::core::option::Option<AnalyticsClientMeta>,
8461    #[prost(string, tag = "13")]
8462    pub egress_id: ::prost::alloc::string::String,
8463    #[prost(string, tag = "19")]
8464    pub ingress_id: ::prost::alloc::string::String,
8465    #[prost(enumeration = "VideoQuality", tag = "14")]
8466    pub max_subscribed_video_quality: i32,
8467    #[prost(message, optional, tag = "15")]
8468    pub publisher: ::core::option::Option<ParticipantInfo>,
8469    #[prost(string, tag = "16")]
8470    pub mime: ::prost::alloc::string::String,
8471    #[prost(message, optional, tag = "17")]
8472    pub egress: ::core::option::Option<EgressInfo>,
8473    #[prost(message, optional, tag = "18")]
8474    pub ingress: ::core::option::Option<IngressInfo>,
8475    #[prost(string, tag = "20")]
8476    pub error: ::prost::alloc::string::String,
8477    #[prost(message, optional, tag = "21")]
8478    pub rtp_stats: ::core::option::Option<RtpStats>,
8479    #[prost(int32, tag = "22")]
8480    pub video_layer: i32,
8481    #[prost(string, tag = "24")]
8482    pub node_id: ::prost::alloc::string::String,
8483    #[prost(string, tag = "26")]
8484    pub sip_call_id: ::prost::alloc::string::String,
8485    #[prost(message, optional, tag = "27")]
8486    pub sip_call: ::core::option::Option<SipCallInfo>,
8487    #[prost(string, tag = "28")]
8488    pub sip_trunk_id: ::prost::alloc::string::String,
8489    #[prost(message, optional, tag = "29")]
8490    pub sip_inbound_trunk: ::core::option::Option<SipInboundTrunkInfo>,
8491    #[prost(message, optional, tag = "30")]
8492    pub sip_outbound_trunk: ::core::option::Option<SipOutboundTrunkInfo>,
8493    #[prost(string, tag = "31")]
8494    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
8495    #[prost(message, optional, tag = "32")]
8496    pub sip_dispatch_rule: ::core::option::Option<SipDispatchRuleInfo>,
8497    #[prost(message, optional, tag = "36")]
8498    pub sip_transfer: ::core::option::Option<SipTransferInfo>,
8499    #[prost(message, optional, tag = "33")]
8500    pub report: ::core::option::Option<ReportInfo>,
8501    #[prost(message, optional, tag = "34")]
8502    pub api_call: ::core::option::Option<ApiCallInfo>,
8503    #[prost(message, optional, tag = "35")]
8504    pub webhook: ::core::option::Option<WebhookInfo>,
8505    #[prost(enumeration = "RoomEndReason", tag = "37")]
8506    pub room_end_reason: i32,
8507}
8508#[derive(Clone, PartialEq, ::prost::Message)]
8509pub struct AnalyticsEvents {
8510    #[prost(message, repeated, tag = "1")]
8511    pub events: ::prost::alloc::vec::Vec<AnalyticsEvent>,
8512}
8513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8514pub struct AnalyticsRoomParticipant {
8515    #[prost(string, tag = "1")]
8516    pub id: ::prost::alloc::string::String,
8517    #[prost(string, tag = "2")]
8518    pub identity: ::prost::alloc::string::String,
8519    #[prost(string, tag = "3")]
8520    pub name: ::prost::alloc::string::String,
8521    #[prost(enumeration = "participant_info::State", tag = "4")]
8522    pub state: i32,
8523    #[prost(message, optional, tag = "5")]
8524    pub joined_at: ::core::option::Option<::pbjson_types::Timestamp>,
8525}
8526#[derive(Clone, PartialEq, ::prost::Message)]
8527pub struct AnalyticsRoom {
8528    #[prost(string, tag = "1")]
8529    pub id: ::prost::alloc::string::String,
8530    #[prost(string, tag = "2")]
8531    pub name: ::prost::alloc::string::String,
8532    #[prost(string, tag = "5")]
8533    pub project_id: ::prost::alloc::string::String,
8534    #[prost(message, optional, tag = "3")]
8535    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
8536    #[prost(message, repeated, tag = "4")]
8537    pub participants: ::prost::alloc::vec::Vec<AnalyticsRoomParticipant>,
8538}
8539#[derive(Clone, PartialEq, ::prost::Message)]
8540pub struct AnalyticsNodeRooms {
8541    #[prost(string, tag = "1")]
8542    pub node_id: ::prost::alloc::string::String,
8543    #[prost(uint64, tag = "2")]
8544    pub sequence_number: u64,
8545    #[prost(message, optional, tag = "3")]
8546    pub timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
8547    #[prost(message, repeated, tag = "4")]
8548    pub rooms: ::prost::alloc::vec::Vec<AnalyticsRoom>,
8549}
8550#[derive(Clone, PartialEq, ::prost::Message)]
8551pub struct ReportInfo {
8552    #[prost(oneof = "report_info::Message", tags = "1")]
8553    pub message: ::core::option::Option<report_info::Message>,
8554}
8555/// Nested message and enum types in `ReportInfo`.
8556pub mod report_info {
8557    #[derive(Clone, PartialEq, ::prost::Oneof)]
8558    pub enum Message {
8559        #[prost(message, tag = "1")]
8560        FeatureUsage(super::FeatureUsageInfo),
8561    }
8562}
8563#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8564pub struct TimeRange {
8565    #[prost(message, optional, tag = "1")]
8566    pub started_at: ::core::option::Option<::pbjson_types::Timestamp>,
8567    #[prost(message, optional, tag = "2")]
8568    pub ended_at: ::core::option::Option<::pbjson_types::Timestamp>,
8569}
8570#[derive(Clone, PartialEq, ::prost::Message)]
8571pub struct FeatureUsageInfo {
8572    #[prost(enumeration = "feature_usage_info::Feature", tag = "1")]
8573    pub feature: i32,
8574    #[prost(string, tag = "2")]
8575    pub project_id: ::prost::alloc::string::String,
8576    #[prost(string, tag = "3")]
8577    pub room_name: ::prost::alloc::string::String,
8578    #[prost(string, tag = "4")]
8579    pub room_id: ::prost::alloc::string::String,
8580    #[prost(string, tag = "5")]
8581    pub participant_identity: ::prost::alloc::string::String,
8582    #[prost(string, tag = "6")]
8583    pub participant_id: ::prost::alloc::string::String,
8584    #[prost(string, tag = "7")]
8585    pub track_id: ::prost::alloc::string::String,
8586    /// time ranges during which the feature was enabled.
8587    /// for e. g., noise cancellation may not be applied when a media track is paused/muted,
8588    /// this allows reporting only periods during which a feature is active.
8589    #[prost(message, repeated, tag = "8")]
8590    pub time_ranges: ::prost::alloc::vec::Vec<TimeRange>,
8591    /// Feature specific metadata included in the report
8592    #[prost(map = "string, string", tag = "9")]
8593    pub feature_info: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
8594}
8595/// Nested message and enum types in `FeatureUsageInfo`.
8596pub mod feature_usage_info {
8597    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8598    #[repr(i32)]
8599    pub enum Feature {
8600        KrispNoiseCancellation = 0,
8601        KrispBackgroundVoiceCancellation = 1,
8602        AicAudioEnhancement = 2,
8603        KrispViva = 3,
8604    }
8605    impl Feature {
8606        /// String value of the enum field names used in the ProtoBuf definition.
8607        ///
8608        /// The values are not transformed in any way and thus are considered stable
8609        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8610        pub fn as_str_name(&self) -> &'static str {
8611            match self {
8612                Self::KrispNoiseCancellation => "KRISP_NOISE_CANCELLATION",
8613                Self::KrispBackgroundVoiceCancellation => "KRISP_BACKGROUND_VOICE_CANCELLATION",
8614                Self::AicAudioEnhancement => "AIC_AUDIO_ENHANCEMENT",
8615                Self::KrispViva => "KRISP_VIVA",
8616            }
8617        }
8618        /// Creates an enum from field names used in the ProtoBuf definition.
8619        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8620            match value {
8621                "KRISP_NOISE_CANCELLATION" => Some(Self::KrispNoiseCancellation),
8622                "KRISP_BACKGROUND_VOICE_CANCELLATION" => Some(Self::KrispBackgroundVoiceCancellation),
8623                "AIC_AUDIO_ENHANCEMENT" => Some(Self::AicAudioEnhancement),
8624                "KRISP_VIVA" => Some(Self::KrispViva),
8625                _ => None,
8626            }
8627        }
8628    }
8629}
8630#[derive(Clone, PartialEq, ::prost::Message)]
8631pub struct ApiCallRequest {
8632    #[prost(oneof = "api_call_request::Message", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")]
8633    pub message: ::core::option::Option<api_call_request::Message>,
8634}
8635/// Nested message and enum types in `APICallRequest`.
8636pub mod api_call_request {
8637    #[derive(Clone, PartialEq, ::prost::Oneof)]
8638    pub enum Message {
8639        #[prost(message, tag = "1")]
8640        CreateRoomRequest(super::CreateRoomRequest),
8641        #[prost(message, tag = "2")]
8642        ListRoomsRequest(super::ListRoomsRequest),
8643        #[prost(message, tag = "3")]
8644        DeleteRoomRequest(super::DeleteRoomRequest),
8645        #[prost(message, tag = "4")]
8646        ListParticipantsRequest(super::ListParticipantsRequest),
8647        #[prost(message, tag = "5")]
8648        RoomParticipantIdentity(super::RoomParticipantIdentity),
8649        #[prost(message, tag = "6")]
8650        MuteRoomTrackRequest(super::MuteRoomTrackRequest),
8651        #[prost(message, tag = "7")]
8652        UpdateParticipantRequest(super::UpdateParticipantRequest),
8653        #[prost(message, tag = "8")]
8654        UpdateSubscriptionsRequest(super::UpdateSubscriptionsRequest),
8655        #[prost(message, tag = "9")]
8656        SendDataRequest(super::SendDataRequest),
8657        #[prost(message, tag = "10")]
8658        UpdateRoomMetadataRequest(super::UpdateRoomMetadataRequest),
8659    }
8660}
8661#[derive(Clone, PartialEq, ::prost::Message)]
8662pub struct ApiCallInfo {
8663    #[prost(string, tag = "1")]
8664    pub project_id: ::prost::alloc::string::String,
8665    #[prost(message, optional, tag = "2")]
8666    pub request: ::core::option::Option<ApiCallRequest>,
8667    #[prost(string, tag = "3")]
8668    pub service: ::prost::alloc::string::String,
8669    #[prost(string, tag = "4")]
8670    pub method: ::prost::alloc::string::String,
8671    #[prost(string, tag = "5")]
8672    pub node_id: ::prost::alloc::string::String,
8673    #[prost(int32, tag = "6")]
8674    pub status: i32,
8675    #[prost(string, tag = "7")]
8676    pub twirp_error_code: ::prost::alloc::string::String,
8677    #[prost(string, tag = "8")]
8678    pub twirp_error_message: ::prost::alloc::string::String,
8679    #[prost(string, tag = "9")]
8680    pub room_name: ::prost::alloc::string::String,
8681    #[prost(string, tag = "10")]
8682    pub room_id: ::prost::alloc::string::String,
8683    #[prost(string, tag = "11")]
8684    pub participant_identity: ::prost::alloc::string::String,
8685    #[prost(string, tag = "12")]
8686    pub participant_id: ::prost::alloc::string::String,
8687    #[prost(string, tag = "13")]
8688    pub track_id: ::prost::alloc::string::String,
8689    #[prost(message, optional, tag = "14")]
8690    pub started_at: ::core::option::Option<::pbjson_types::Timestamp>,
8691    #[prost(int64, tag = "15")]
8692    pub duration_ns: i64,
8693}
8694#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8695pub struct WebhookInfo {
8696    #[prost(string, tag = "1")]
8697    pub event_id: ::prost::alloc::string::String,
8698    #[prost(string, tag = "2")]
8699    pub event: ::prost::alloc::string::String,
8700    #[prost(string, tag = "3")]
8701    pub project_id: ::prost::alloc::string::String,
8702    #[prost(string, tag = "4")]
8703    pub room_name: ::prost::alloc::string::String,
8704    #[prost(string, tag = "5")]
8705    pub room_id: ::prost::alloc::string::String,
8706    #[prost(string, tag = "6")]
8707    pub participant_identity: ::prost::alloc::string::String,
8708    #[prost(string, tag = "7")]
8709    pub participant_id: ::prost::alloc::string::String,
8710    #[prost(string, tag = "8")]
8711    pub track_id: ::prost::alloc::string::String,
8712    #[prost(string, tag = "9")]
8713    pub egress_id: ::prost::alloc::string::String,
8714    #[prost(string, tag = "10")]
8715    pub ingress_id: ::prost::alloc::string::String,
8716    #[prost(message, optional, tag = "11")]
8717    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
8718    #[prost(message, optional, tag = "12")]
8719    pub queued_at: ::core::option::Option<::pbjson_types::Timestamp>,
8720    #[prost(int64, tag = "13")]
8721    pub queue_duration_ns: i64,
8722    #[prost(message, optional, tag = "14")]
8723    pub sent_at: ::core::option::Option<::pbjson_types::Timestamp>,
8724    #[prost(int64, tag = "15")]
8725    pub send_duration_ns: i64,
8726    #[prost(string, tag = "16")]
8727    pub url: ::prost::alloc::string::String,
8728    #[prost(int32, tag = "17")]
8729    pub num_dropped: i32,
8730    #[prost(bool, tag = "18")]
8731    pub is_dropped: bool,
8732    #[prost(string, tag = "19")]
8733    pub service_status: ::prost::alloc::string::String,
8734    #[prost(int32, tag = "20")]
8735    pub service_error_code: i32,
8736    #[prost(string, tag = "21")]
8737    pub service_error: ::prost::alloc::string::String,
8738    #[prost(string, tag = "22")]
8739    pub send_error: ::prost::alloc::string::String,
8740    /// HTTP response status code for the delivery attempt (0 if no response).
8741    #[prost(int32, tag = "23")]
8742    pub http_status_code: i32,
8743}
8744#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8745#[repr(i32)]
8746pub enum StreamType {
8747    Upstream = 0,
8748    Downstream = 1,
8749}
8750impl StreamType {
8751    /// String value of the enum field names used in the ProtoBuf definition.
8752    ///
8753    /// The values are not transformed in any way and thus are considered stable
8754    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8755    pub fn as_str_name(&self) -> &'static str {
8756        match self {
8757            Self::Upstream => "UPSTREAM",
8758            Self::Downstream => "DOWNSTREAM",
8759        }
8760    }
8761    /// Creates an enum from field names used in the ProtoBuf definition.
8762    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8763        match value {
8764            "UPSTREAM" => Some(Self::Upstream),
8765            "DOWNSTREAM" => Some(Self::Downstream),
8766            _ => None,
8767        }
8768    }
8769}
8770#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8771#[repr(i32)]
8772pub enum AnalyticsEventType {
8773    RoomCreated = 0,
8774    RoomEnded = 1,
8775    ParticipantJoined = 2,
8776    ParticipantLeft = 3,
8777    ParticipantConnectionAborted = 45,
8778    TrackPublished = 4,
8779    TrackPublishRequested = 20,
8780    TrackUnpublished = 5,
8781    TrackSubscribed = 6,
8782    TrackSubscribeRequested = 21,
8783    TrackSubscribeFailed = 25,
8784    TrackUnsubscribed = 7,
8785    TrackPublishedUpdate = 10,
8786    TrackMuted = 23,
8787    TrackUnmuted = 24,
8788    TrackPublishStats = 26,
8789    TrackSubscribeStats = 27,
8790    ParticipantActive = 11,
8791    ParticipantResumed = 22,
8792    EgressStarted = 12,
8793    EgressEnded = 13,
8794    EgressUpdated = 28,
8795    TrackMaxSubscribedVideoQuality = 14,
8796    Reconnected = 15,
8797    IngressCreated = 18,
8798    IngressDeleted = 19,
8799    IngressStarted = 16,
8800    IngressEnded = 17,
8801    IngressUpdated = 29,
8802    SipInboundTrunkCreated = 30,
8803    SipInboundTrunkDeleted = 31,
8804    SipOutboundTrunkCreated = 32,
8805    SipOutboundTrunkDeleted = 33,
8806    SipDispatchRuleCreated = 34,
8807    SipDispatchRuleDeleted = 35,
8808    SipParticipantCreated = 36,
8809    SipCallIncoming = 37,
8810    SipCallStarted = 38,
8811    SipCallEnded = 39,
8812    SipTransferRequested = 43,
8813    SipTransferComplete = 44,
8814    SipCallUpdate = 46,
8815    Report = 40,
8816    ApiCall = 41,
8817    Webhook = 42,
8818}
8819impl AnalyticsEventType {
8820    /// String value of the enum field names used in the ProtoBuf definition.
8821    ///
8822    /// The values are not transformed in any way and thus are considered stable
8823    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8824    pub fn as_str_name(&self) -> &'static str {
8825        match self {
8826            Self::RoomCreated => "ROOM_CREATED",
8827            Self::RoomEnded => "ROOM_ENDED",
8828            Self::ParticipantJoined => "PARTICIPANT_JOINED",
8829            Self::ParticipantLeft => "PARTICIPANT_LEFT",
8830            Self::ParticipantConnectionAborted => "PARTICIPANT_CONNECTION_ABORTED",
8831            Self::TrackPublished => "TRACK_PUBLISHED",
8832            Self::TrackPublishRequested => "TRACK_PUBLISH_REQUESTED",
8833            Self::TrackUnpublished => "TRACK_UNPUBLISHED",
8834            Self::TrackSubscribed => "TRACK_SUBSCRIBED",
8835            Self::TrackSubscribeRequested => "TRACK_SUBSCRIBE_REQUESTED",
8836            Self::TrackSubscribeFailed => "TRACK_SUBSCRIBE_FAILED",
8837            Self::TrackUnsubscribed => "TRACK_UNSUBSCRIBED",
8838            Self::TrackPublishedUpdate => "TRACK_PUBLISHED_UPDATE",
8839            Self::TrackMuted => "TRACK_MUTED",
8840            Self::TrackUnmuted => "TRACK_UNMUTED",
8841            Self::TrackPublishStats => "TRACK_PUBLISH_STATS",
8842            Self::TrackSubscribeStats => "TRACK_SUBSCRIBE_STATS",
8843            Self::ParticipantActive => "PARTICIPANT_ACTIVE",
8844            Self::ParticipantResumed => "PARTICIPANT_RESUMED",
8845            Self::EgressStarted => "EGRESS_STARTED",
8846            Self::EgressEnded => "EGRESS_ENDED",
8847            Self::EgressUpdated => "EGRESS_UPDATED",
8848            Self::TrackMaxSubscribedVideoQuality => "TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY",
8849            Self::Reconnected => "RECONNECTED",
8850            Self::IngressCreated => "INGRESS_CREATED",
8851            Self::IngressDeleted => "INGRESS_DELETED",
8852            Self::IngressStarted => "INGRESS_STARTED",
8853            Self::IngressEnded => "INGRESS_ENDED",
8854            Self::IngressUpdated => "INGRESS_UPDATED",
8855            Self::SipInboundTrunkCreated => "SIP_INBOUND_TRUNK_CREATED",
8856            Self::SipInboundTrunkDeleted => "SIP_INBOUND_TRUNK_DELETED",
8857            Self::SipOutboundTrunkCreated => "SIP_OUTBOUND_TRUNK_CREATED",
8858            Self::SipOutboundTrunkDeleted => "SIP_OUTBOUND_TRUNK_DELETED",
8859            Self::SipDispatchRuleCreated => "SIP_DISPATCH_RULE_CREATED",
8860            Self::SipDispatchRuleDeleted => "SIP_DISPATCH_RULE_DELETED",
8861            Self::SipParticipantCreated => "SIP_PARTICIPANT_CREATED",
8862            Self::SipCallIncoming => "SIP_CALL_INCOMING",
8863            Self::SipCallStarted => "SIP_CALL_STARTED",
8864            Self::SipCallEnded => "SIP_CALL_ENDED",
8865            Self::SipTransferRequested => "SIP_TRANSFER_REQUESTED",
8866            Self::SipTransferComplete => "SIP_TRANSFER_COMPLETE",
8867            Self::SipCallUpdate => "SIP_CALL_UPDATE",
8868            Self::Report => "REPORT",
8869            Self::ApiCall => "API_CALL",
8870            Self::Webhook => "WEBHOOK",
8871        }
8872    }
8873    /// Creates an enum from field names used in the ProtoBuf definition.
8874    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8875        match value {
8876            "ROOM_CREATED" => Some(Self::RoomCreated),
8877            "ROOM_ENDED" => Some(Self::RoomEnded),
8878            "PARTICIPANT_JOINED" => Some(Self::ParticipantJoined),
8879            "PARTICIPANT_LEFT" => Some(Self::ParticipantLeft),
8880            "PARTICIPANT_CONNECTION_ABORTED" => Some(Self::ParticipantConnectionAborted),
8881            "TRACK_PUBLISHED" => Some(Self::TrackPublished),
8882            "TRACK_PUBLISH_REQUESTED" => Some(Self::TrackPublishRequested),
8883            "TRACK_UNPUBLISHED" => Some(Self::TrackUnpublished),
8884            "TRACK_SUBSCRIBED" => Some(Self::TrackSubscribed),
8885            "TRACK_SUBSCRIBE_REQUESTED" => Some(Self::TrackSubscribeRequested),
8886            "TRACK_SUBSCRIBE_FAILED" => Some(Self::TrackSubscribeFailed),
8887            "TRACK_UNSUBSCRIBED" => Some(Self::TrackUnsubscribed),
8888            "TRACK_PUBLISHED_UPDATE" => Some(Self::TrackPublishedUpdate),
8889            "TRACK_MUTED" => Some(Self::TrackMuted),
8890            "TRACK_UNMUTED" => Some(Self::TrackUnmuted),
8891            "TRACK_PUBLISH_STATS" => Some(Self::TrackPublishStats),
8892            "TRACK_SUBSCRIBE_STATS" => Some(Self::TrackSubscribeStats),
8893            "PARTICIPANT_ACTIVE" => Some(Self::ParticipantActive),
8894            "PARTICIPANT_RESUMED" => Some(Self::ParticipantResumed),
8895            "EGRESS_STARTED" => Some(Self::EgressStarted),
8896            "EGRESS_ENDED" => Some(Self::EgressEnded),
8897            "EGRESS_UPDATED" => Some(Self::EgressUpdated),
8898            "TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY" => Some(Self::TrackMaxSubscribedVideoQuality),
8899            "RECONNECTED" => Some(Self::Reconnected),
8900            "INGRESS_CREATED" => Some(Self::IngressCreated),
8901            "INGRESS_DELETED" => Some(Self::IngressDeleted),
8902            "INGRESS_STARTED" => Some(Self::IngressStarted),
8903            "INGRESS_ENDED" => Some(Self::IngressEnded),
8904            "INGRESS_UPDATED" => Some(Self::IngressUpdated),
8905            "SIP_INBOUND_TRUNK_CREATED" => Some(Self::SipInboundTrunkCreated),
8906            "SIP_INBOUND_TRUNK_DELETED" => Some(Self::SipInboundTrunkDeleted),
8907            "SIP_OUTBOUND_TRUNK_CREATED" => Some(Self::SipOutboundTrunkCreated),
8908            "SIP_OUTBOUND_TRUNK_DELETED" => Some(Self::SipOutboundTrunkDeleted),
8909            "SIP_DISPATCH_RULE_CREATED" => Some(Self::SipDispatchRuleCreated),
8910            "SIP_DISPATCH_RULE_DELETED" => Some(Self::SipDispatchRuleDeleted),
8911            "SIP_PARTICIPANT_CREATED" => Some(Self::SipParticipantCreated),
8912            "SIP_CALL_INCOMING" => Some(Self::SipCallIncoming),
8913            "SIP_CALL_STARTED" => Some(Self::SipCallStarted),
8914            "SIP_CALL_ENDED" => Some(Self::SipCallEnded),
8915            "SIP_TRANSFER_REQUESTED" => Some(Self::SipTransferRequested),
8916            "SIP_TRANSFER_COMPLETE" => Some(Self::SipTransferComplete),
8917            "SIP_CALL_UPDATE" => Some(Self::SipCallUpdate),
8918            "REPORT" => Some(Self::Report),
8919            "API_CALL" => Some(Self::ApiCall),
8920            "WEBHOOK" => Some(Self::Webhook),
8921            _ => None,
8922        }
8923    }
8924}
8925/// Nested so that names like Value and Ping need not be unique across the
8926/// livekit package. `tip` throughout is the latest durable commit sequence.
8927#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8928pub struct AgentDb {
8929}
8930/// Nested message and enum types in `AgentDB`.
8931pub mod agent_db {
8932    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8933    pub struct CreateRequest {
8934        /// Unset: never expires, and expires_at is then unset everywhere.
8935        /// Otherwise clamped to the server cap, and never extended.
8936        #[prost(message, optional, tag = "1")]
8937        pub ttl: ::core::option::Option<::pbjson_types::Duration>,
8938    }
8939    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8940    pub struct CreateResponse {
8941        /// "DB_..." for a standalone database, the thread id ("AT_...") for a thread's
8942        #[prost(string, tag = "1")]
8943        pub database_id: ::prost::alloc::string::String,
8944        #[prost(message, optional, tag = "2")]
8945        pub expires_at: ::core::option::Option<::pbjson_types::Timestamp>,
8946    }
8947    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8948    pub struct GetRequest {
8949        #[prost(string, tag = "1")]
8950        pub database_id: ::prost::alloc::string::String,
8951    }
8952    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8953    pub struct ListRequest {
8954        /// server-clamped
8955        #[prost(int32, tag = "1")]
8956        pub page_size: i32,
8957        #[prost(string, tag = "2")]
8958        pub page_token: ::prost::alloc::string::String,
8959    }
8960    #[derive(Clone, PartialEq, ::prost::Message)]
8961    pub struct ListResponse {
8962        #[prost(message, repeated, tag = "1")]
8963        pub databases: ::prost::alloc::vec::Vec<AgentDatabase>,
8964        /// empty when exhausted
8965        #[prost(string, tag = "2")]
8966        pub next_page_token: ::prost::alloc::string::String,
8967    }
8968    /// One database, as get and list both report it.
8969    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8970    pub struct AgentDatabase {
8971        #[prost(string, tag = "1")]
8972        pub database_id: ::prost::alloc::string::String,
8973        #[prost(string, tag = "2")]
8974        pub region: ::prost::alloc::string::String,
8975        #[prost(message, optional, tag = "3")]
8976        pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
8977        #[prost(message, optional, tag = "4")]
8978        pub expires_at: ::core::option::Option<::pbjson_types::Timestamp>,
8979        #[prost(int64, tag = "5")]
8980        pub tip: i64,
8981    }
8982    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8983    pub struct DeleteRequest {
8984        #[prost(string, tag = "1")]
8985        pub database_id: ::prost::alloc::string::String,
8986    }
8987    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8988    pub struct DeleteResponse {
8989    }
8990    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8991    pub struct ExportRequest {
8992        #[prost(string, tag = "1")]
8993        pub database_id: ::prost::alloc::string::String,
8994    }
8995    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8996    pub struct ExportResponse {
8997        /// pre-authenticated object-storage URL
8998        #[prost(string, tag = "1")]
8999        pub download_url: ::prost::alloc::string::String,
9000        /// of the URL, not the database
9001        #[prost(message, optional, tag = "2")]
9002        pub expires_at: ::core::option::Option<::pbjson_types::Timestamp>,
9003        /// what the export is consistent at
9004        #[prost(int64, tag = "3")]
9005        pub tip: i64,
9006    }
9007    /// Data plane: one WebSocket per database, one message per frame, correlated
9008    /// by a client-chosen request_id. Result batches are paced by Credit, so the
9009    /// server never sends more un-consumed batches than granted.
9010    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9011    pub struct Wire {
9012    }
9013    /// Nested message and enum types in `Wire`.
9014    pub mod wire {
9015        #[derive(Clone, PartialEq, ::prost::Message)]
9016        pub struct ClientMessage {
9017            #[prost(uint32, tag = "1")]
9018            pub request_id: u32,
9019            #[prost(oneof = "client_message::Message", tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11")]
9020            pub message: ::core::option::Option<client_message::Message>,
9021        }
9022        /// Nested message and enum types in `ClientMessage`.
9023        pub mod client_message {
9024            #[derive(Clone, PartialEq, ::prost::Oneof)]
9025            pub enum Message {
9026                /// must be first on the socket
9027                #[prost(message, tag = "2")]
9028                Hello(super::Hello),
9029                /// answers ExecResult
9030                #[prost(message, tag = "3")]
9031                Exec(super::Statement),
9032                /// answers Columns + ColumnBatch* + Done
9033                #[prost(message, tag = "4")]
9034                Query(super::Statement),
9035                /// answers one result per statement, then Done
9036                #[prost(message, tag = "5")]
9037                Batch(super::Batch),
9038                #[prost(message, tag = "6")]
9039                Begin(super::Begin),
9040                #[prost(message, tag = "7")]
9041                Commit(super::Commit),
9042                #[prost(message, tag = "8")]
9043                Rollback(super::Rollback),
9044                #[prost(message, tag = "9")]
9045                Cancel(super::Cancel),
9046                #[prost(message, tag = "10")]
9047                Credit(super::Credit),
9048                #[prost(message, tag = "11")]
9049                Ping(super::Ping),
9050            }
9051        }
9052        #[derive(Clone, PartialEq, ::prost::Message)]
9053        pub struct ServerMessage {
9054            #[prost(uint32, tag = "1")]
9055            pub request_id: u32,
9056            #[prost(oneof = "server_message::Message", tags = "2, 3, 4, 5, 6, 7, 8")]
9057            pub message: ::core::option::Option<server_message::Message>,
9058        }
9059        /// Nested message and enum types in `ServerMessage`.
9060        pub mod server_message {
9061            #[derive(Clone, PartialEq, ::prost::Oneof)]
9062            pub enum Message {
9063                #[prost(message, tag = "2")]
9064                HelloOk(super::HelloOk),
9065                #[prost(message, tag = "3")]
9066                Columns(super::Columns),
9067                #[prost(message, tag = "4")]
9068                ColumnBatch(super::ColumnBatch),
9069                #[prost(message, tag = "5")]
9070                ExecResult(super::ExecResult),
9071                #[prost(message, tag = "6")]
9072                Done(super::Done),
9073                #[prost(message, tag = "7")]
9074                Error(super::Error),
9075                #[prost(message, tag = "8")]
9076                Pong(super::Pong),
9077            }
9078        }
9079        /// SQLite's five storage classes.
9080        #[derive(Clone, PartialEq, ::prost::Message)]
9081        pub struct Value {
9082            #[prost(oneof = "value::Value", tags = "1, 2, 3, 4, 5")]
9083            pub value: ::core::option::Option<value::Value>,
9084        }
9085        /// Nested message and enum types in `Value`.
9086        pub mod value {
9087            #[derive(Clone, PartialEq, ::prost::Oneof)]
9088            pub enum Value {
9089                /// always true when set
9090                #[prost(bool, tag = "1")]
9091                NullValue(bool),
9092                #[prost(int64, tag = "2")]
9093                IntValue(i64),
9094                #[prost(double, tag = "3")]
9095                DoubleValue(f64),
9096                #[prost(string, tag = "4")]
9097                TextValue(::prost::alloc::string::String),
9098                #[prost(bytes, tag = "5")]
9099                BlobValue(::prost::alloc::vec::Vec<u8>),
9100            }
9101        }
9102        #[derive(Clone, PartialEq, ::prost::Message)]
9103        pub struct Statement {
9104            #[prost(string, tag = "1")]
9105            pub sql: ::prost::alloc::string::String,
9106            /// positional
9107            #[prost(message, repeated, tag = "2")]
9108            pub params: ::prost::alloc::vec::Vec<Value>,
9109            #[prost(enumeration = "QueryLang", tag = "3")]
9110            pub lang: i32,
9111        }
9112        /// Applied atomically, in order, and answered with one result per
9113        /// statement, in order: Columns then ColumnBatch frames for a statement
9114        /// that returns rows, one ExecResult for one that does not, each tagged
9115        /// with the statement's 0-based index, then a single Done for the whole
9116        /// batch. A statement that returns no rows still sends its Columns. Credit
9117        /// paces the ColumnBatch frames of the batch as a whole.
9118        #[derive(Clone, PartialEq, ::prost::Message)]
9119        pub struct Batch {
9120            #[prost(message, repeated, tag = "1")]
9121            pub statements: ::prost::alloc::vec::Vec<Statement>,
9122        }
9123        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9124        pub struct Begin {
9125        }
9126        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9127        pub struct Commit {
9128        }
9129        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9130        pub struct Rollback {
9131        }
9132        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9133        pub struct Cancel {
9134        }
9135        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9136        pub struct Credit {
9137            /// additional batches the client can absorb
9138            #[prost(uint32, tag = "1")]
9139            pub batches: u32,
9140        }
9141        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9142        pub struct Ping {
9143            #[prost(int64, tag = "1")]
9144            pub timestamp_ms: i64,
9145        }
9146        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9147        pub struct Pong {
9148            #[prost(int64, tag = "1")]
9149            pub last_ping_timestamp_ms: i64,
9150            #[prost(int64, tag = "2")]
9151            pub timestamp_ms: i64,
9152        }
9153        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9154        pub struct Hello {
9155            #[prost(string, tag = "1")]
9156            pub token: ::prost::alloc::string::String,
9157            #[prost(string, tag = "2")]
9158            pub database_id: ::prost::alloc::string::String,
9159        }
9160        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9161        pub struct HelloOk {
9162            #[prost(int64, tag = "1")]
9163            pub tip: i64,
9164            #[prost(uint32, tag = "2")]
9165            pub ping_interval_ms: u32,
9166            #[prost(uint32, tag = "3")]
9167            pub ping_timeout_ms: u32,
9168        }
9169        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9170        pub struct Columns {
9171            #[prost(string, repeated, tag = "1")]
9172            pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9173            /// index within a Batch; 0 and unused for a Query
9174            #[prost(uint32, tag = "2")]
9175            pub statement: u32,
9176        }
9177        /// Values are typed per row, as SQLite types them, so a column may mix
9178        /// classes: walk `types` and take the next entry from the matching array. Text
9179        /// and blobs are concatenated with one exclusive end offset each, so value i
9180        /// is data\[ends[i-1\]:ends\[i]\] with 0 implied before the first. A NULL occupies
9181        /// a tag only.
9182        #[derive(Clone, PartialEq, ::prost::Message)]
9183        pub struct Column {
9184            /// one ValueType per row
9185            #[prost(bytes = "vec", tag = "1")]
9186            pub types: ::prost::alloc::vec::Vec<u8>,
9187            #[prost(sint64, repeated, tag = "2")]
9188            pub ints: ::prost::alloc::vec::Vec<i64>,
9189            #[prost(double, repeated, tag = "3")]
9190            pub doubles: ::prost::alloc::vec::Vec<f64>,
9191            #[prost(bytes = "vec", tag = "4")]
9192            pub text_data: ::prost::alloc::vec::Vec<u8>,
9193            #[prost(uint32, repeated, tag = "5")]
9194            pub text_ends: ::prost::alloc::vec::Vec<u32>,
9195            #[prost(bytes = "vec", tag = "6")]
9196            pub blob_data: ::prost::alloc::vec::Vec<u8>,
9197            #[prost(uint32, repeated, tag = "7")]
9198            pub blob_ends: ::prost::alloc::vec::Vec<u32>,
9199        }
9200        #[derive(Clone, PartialEq, ::prost::Message)]
9201        pub struct ColumnBatch {
9202            /// one per name in Columns
9203            #[prost(message, repeated, tag = "1")]
9204            pub columns: ::prost::alloc::vec::Vec<Column>,
9205            #[prost(uint32, tag = "2")]
9206            pub rows: u32,
9207            /// index within a Batch; 0 and unused for a Query
9208            #[prost(uint32, tag = "3")]
9209            pub statement: u32,
9210        }
9211        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9212        pub struct ExecResult {
9213            #[prost(int64, tag = "1")]
9214            pub rows_affected: i64,
9215            #[prost(int64, tag = "2")]
9216            pub last_insert_id: i64,
9217            #[prost(int64, tag = "3")]
9218            pub tip: i64,
9219            /// index within a Batch; 0 and unused for an Exec
9220            #[prost(uint32, tag = "4")]
9221            pub statement: u32,
9222        }
9223        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9224        pub struct Done {
9225            /// the snapshot the query ran at
9226            #[prost(int64, tag = "1")]
9227            pub tip: i64,
9228            #[prost(uint64, tag = "2")]
9229            pub total_rows: u64,
9230        }
9231        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9232        pub struct Error {
9233            /// stable, machine-readable
9234            #[prost(string, tag = "1")]
9235            pub code: ::prost::alloc::string::String,
9236            #[prost(string, tag = "2")]
9237            pub message: ::prost::alloc::string::String,
9238        }
9239        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9240        #[repr(i32)]
9241        pub enum QueryLang {
9242            Sql = 0,
9243        }
9244        impl QueryLang {
9245            /// String value of the enum field names used in the ProtoBuf definition.
9246            ///
9247            /// The values are not transformed in any way and thus are considered stable
9248            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9249            pub fn as_str_name(&self) -> &'static str {
9250                match self {
9251                    Self::Sql => "SQL",
9252                }
9253            }
9254            /// Creates an enum from field names used in the ProtoBuf definition.
9255            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9256                match value {
9257                    "SQL" => Some(Self::Sql),
9258                    _ => None,
9259                }
9260            }
9261        }
9262        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9263        #[repr(i32)]
9264        pub enum ValueType {
9265            Null = 0,
9266            Int = 1,
9267            Double = 2,
9268            Text = 3,
9269            Blob = 4,
9270        }
9271        impl ValueType {
9272            /// String value of the enum field names used in the ProtoBuf definition.
9273            ///
9274            /// The values are not transformed in any way and thus are considered stable
9275            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9276            pub fn as_str_name(&self) -> &'static str {
9277                match self {
9278                    Self::Null => "NULL",
9279                    Self::Int => "INT",
9280                    Self::Double => "DOUBLE",
9281                    Self::Text => "TEXT",
9282                    Self::Blob => "BLOB",
9283                }
9284            }
9285            /// Creates an enum from field names used in the ProtoBuf definition.
9286            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9287                match value {
9288                    "NULL" => Some(Self::Null),
9289                    "INT" => Some(Self::Int),
9290                    "DOUBLE" => Some(Self::Double),
9291                    "TEXT" => Some(Self::Text),
9292                    "BLOB" => Some(Self::Blob),
9293                    _ => None,
9294                }
9295            }
9296        }
9297    }
9298}
9299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9300pub struct ListReplaysRequest {
9301    /// optional
9302    #[prost(string, tag = "1")]
9303    pub room_name: ::prost::alloc::string::String,
9304    #[prost(message, optional, tag = "2")]
9305    pub page_token: ::core::option::Option<TokenPagination>,
9306}
9307#[derive(Clone, PartialEq, ::prost::Message)]
9308pub struct ListReplaysResponse {
9309    #[prost(message, repeated, tag = "1")]
9310    pub replays: ::prost::alloc::vec::Vec<ReplayInfo>,
9311    #[prost(message, optional, tag = "2")]
9312    pub next_page_token: ::core::option::Option<TokenPagination>,
9313}
9314#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9315pub struct ReplayInfo {
9316    #[prost(string, tag = "1")]
9317    pub replay_id: ::prost::alloc::string::String,
9318    #[prost(string, tag = "2")]
9319    pub room_name: ::prost::alloc::string::String,
9320    #[prost(int64, tag = "3")]
9321    pub start_time: i64,
9322    #[prost(int64, tag = "4")]
9323    pub duration_ms: i64,
9324}
9325#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9326pub struct PlaybackRequest {
9327    #[prost(string, tag = "1")]
9328    pub replay_id: ::prost::alloc::string::String,
9329    /// name of room to play into
9330    #[prost(string, tag = "2")]
9331    pub playback_room: ::prost::alloc::string::String,
9332    /// initial timestamp (ms)
9333    #[prost(int64, tag = "3")]
9334    pub seek_offset_ms: i64,
9335}
9336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9337pub struct PlaybackResponse {
9338    #[prost(string, tag = "1")]
9339    pub playback_id: ::prost::alloc::string::String,
9340}
9341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9342pub struct SeekRequest {
9343    #[prost(string, tag = "1")]
9344    pub playback_id: ::prost::alloc::string::String,
9345    /// timestamp (ms)
9346    #[prost(int64, tag = "2")]
9347    pub seek_offset_ms: i64,
9348}
9349#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9350pub struct ClosePlaybackRequest {
9351    #[prost(string, tag = "1")]
9352    pub playback_id: ::prost::alloc::string::String,
9353}
9354#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9355pub struct DeleteReplayRequest {
9356    #[prost(string, tag = "1")]
9357    pub replay_id: ::prost::alloc::string::String,
9358}
9359#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9360pub struct AgentEvent {
9361    #[prost(enumeration = "AgentEventType", tag = "1")]
9362    pub r#type: i32,
9363    #[prost(int32, tag = "2")]
9364    pub count: i32,
9365    #[prost(message, optional, tag = "3")]
9366    pub timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
9367}
9368#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9369pub struct AgentSecret {
9370    #[prost(string, tag = "1")]
9371    pub name: ::prost::alloc::string::String,
9372    #[prost(bytes = "vec", tag = "2")]
9373    pub value: ::prost::alloc::vec::Vec<u8>,
9374    #[prost(message, optional, tag = "3")]
9375    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
9376    #[prost(message, optional, tag = "4")]
9377    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
9378    #[prost(enumeration = "AgentSecretKind", tag = "5")]
9379    pub kind: i32,
9380    #[prost(string, repeated, tag = "6")]
9381    pub deployments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9382}
9383#[derive(Clone, PartialEq, ::prost::Message)]
9384pub struct CreateAgentRequest {
9385    #[deprecated]
9386    #[prost(string, tag = "1")]
9387    pub agent_name: ::prost::alloc::string::String,
9388    #[prost(message, repeated, tag = "2")]
9389    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9390    #[deprecated]
9391    #[prost(int32, tag = "3")]
9392    pub replicas: i32,
9393    #[deprecated]
9394    #[prost(int32, tag = "4")]
9395    pub max_replicas: i32,
9396    #[deprecated]
9397    #[prost(string, tag = "5")]
9398    pub cpu_req: ::prost::alloc::string::String,
9399    #[prost(string, repeated, tag = "6")]
9400    pub regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9401}
9402#[derive(Clone, PartialEq, ::prost::Message)]
9403pub struct CreateAgentResponse {
9404    #[prost(string, tag = "1")]
9405    pub agent_id: ::prost::alloc::string::String,
9406    #[prost(string, tag = "2")]
9407    pub agent_name: ::prost::alloc::string::String,
9408    #[prost(string, tag = "3")]
9409    pub status: ::prost::alloc::string::String,
9410    #[prost(string, tag = "4")]
9411    pub version: ::prost::alloc::string::String,
9412    #[prost(string, tag = "5")]
9413    pub presigned_url: ::prost::alloc::string::String,
9414    #[prost(string, tag = "6")]
9415    pub tag: ::prost::alloc::string::String,
9416    #[prost(string, repeated, tag = "7")]
9417    pub server_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9418    #[prost(message, optional, tag = "8")]
9419    pub presigned_post_request: ::core::option::Option<PresignedPostRequest>,
9420}
9421#[derive(Clone, PartialEq, ::prost::Message)]
9422pub struct CreateAgentV2Request {
9423    #[prost(message, repeated, tag = "1")]
9424    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9425    #[prost(string, repeated, tag = "2")]
9426    pub regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9427}
9428#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9429pub struct CreateAgentV2Response {
9430    #[prost(string, tag = "1")]
9431    pub agent_id: ::prost::alloc::string::String,
9432    #[prost(string, tag = "2")]
9433    pub status: ::prost::alloc::string::String,
9434    #[prost(string, repeated, tag = "3")]
9435    pub server_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9436}
9437#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9438pub struct PromoteAgentRequest {
9439    #[prost(string, tag = "1")]
9440    pub agent_id: ::prost::alloc::string::String,
9441    #[prost(string, tag = "2")]
9442    pub src_deployment: ::prost::alloc::string::String,
9443    #[prost(string, tag = "3")]
9444    pub dst_deployment: ::prost::alloc::string::String,
9445}
9446#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9447pub struct PromoteAgentResponse {
9448    #[prost(bool, tag = "1")]
9449    pub success: bool,
9450    #[prost(string, tag = "2")]
9451    pub message: ::prost::alloc::string::String,
9452    #[prost(string, tag = "3")]
9453    pub agent_id: ::prost::alloc::string::String,
9454    #[prost(string, tag = "4")]
9455    pub src_deployment: ::prost::alloc::string::String,
9456    #[prost(string, tag = "5")]
9457    pub dst_deployment: ::prost::alloc::string::String,
9458    #[prost(string, tag = "6")]
9459    pub version_tag: ::prost::alloc::string::String,
9460}
9461#[derive(Clone, PartialEq, ::prost::Message)]
9462pub struct PresignedPostRequest {
9463    #[prost(string, tag = "1")]
9464    pub url: ::prost::alloc::string::String,
9465    #[prost(map = "string, string", tag = "2")]
9466    pub values: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9467}
9468#[derive(Clone, PartialEq, ::prost::Message)]
9469pub struct AgentDeployment {
9470    #[prost(string, tag = "1")]
9471    pub region: ::prost::alloc::string::String,
9472    #[prost(string, tag = "2")]
9473    pub agent_id: ::prost::alloc::string::String,
9474    #[prost(string, tag = "3")]
9475    pub status: ::prost::alloc::string::String,
9476    #[prost(int32, tag = "4")]
9477    pub replicas: i32,
9478    #[prost(int32, tag = "5")]
9479    pub min_replicas: i32,
9480    #[prost(int32, tag = "6")]
9481    pub max_replicas: i32,
9482    #[prost(string, tag = "7")]
9483    pub cpu_req: ::prost::alloc::string::String,
9484    #[prost(string, tag = "8")]
9485    pub cur_cpu: ::prost::alloc::string::String,
9486    #[prost(string, tag = "9")]
9487    pub cur_mem: ::prost::alloc::string::String,
9488    #[prost(string, tag = "10")]
9489    pub mem_req: ::prost::alloc::string::String,
9490    #[prost(string, tag = "11")]
9491    pub mem_limit: ::prost::alloc::string::String,
9492    #[prost(string, tag = "12")]
9493    pub cpu_limit: ::prost::alloc::string::String,
9494    #[prost(string, tag = "13")]
9495    pub server_region: ::prost::alloc::string::String,
9496    #[prost(message, repeated, tag = "14")]
9497    pub events: ::prost::alloc::vec::Vec<AgentEvent>,
9498    #[prost(string, tag = "15")]
9499    pub deployment: ::prost::alloc::string::String,
9500    #[prost(string, tag = "16")]
9501    pub version: ::prost::alloc::string::String,
9502    #[prost(string, tag = "17")]
9503    pub agent_name: ::prost::alloc::string::String,
9504    #[prost(bool, tag = "18")]
9505    pub deployment_enabled: bool,
9506    #[prost(message, optional, tag = "19")]
9507    pub last_scraped_at: ::core::option::Option<::pbjson_types::Timestamp>,
9508}
9509#[derive(Clone, PartialEq, ::prost::Message)]
9510pub struct AgentInfo {
9511    #[prost(string, tag = "1")]
9512    pub agent_id: ::prost::alloc::string::String,
9513    #[prost(string, tag = "2")]
9514    pub agent_name: ::prost::alloc::string::String,
9515    #[prost(string, tag = "3")]
9516    pub version: ::prost::alloc::string::String,
9517    #[prost(message, repeated, tag = "4")]
9518    pub agent_deployments: ::prost::alloc::vec::Vec<AgentDeployment>,
9519    #[prost(message, repeated, tag = "5")]
9520    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9521    #[prost(message, optional, tag = "6")]
9522    pub deployed_at: ::core::option::Option<::pbjson_types::Timestamp>,
9523}
9524#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9525pub struct ListAgentsRequest {
9526    #[prost(string, tag = "1")]
9527    pub agent_name: ::prost::alloc::string::String,
9528    #[prost(string, tag = "2")]
9529    pub agent_id: ::prost::alloc::string::String,
9530}
9531#[derive(Clone, PartialEq, ::prost::Message)]
9532pub struct ListAgentsResponse {
9533    #[prost(message, repeated, tag = "1")]
9534    pub agents: ::prost::alloc::vec::Vec<AgentInfo>,
9535}
9536#[derive(Clone, PartialEq, ::prost::Message)]
9537pub struct AgentVersion {
9538    #[prost(string, tag = "1")]
9539    pub version: ::prost::alloc::string::String,
9540    #[prost(bool, tag = "2")]
9541    pub current: bool,
9542    #[prost(message, optional, tag = "3")]
9543    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
9544    #[prost(message, optional, tag = "4")]
9545    pub deployed_at: ::core::option::Option<::pbjson_types::Timestamp>,
9546    #[prost(map = "string, string", tag = "5")]
9547    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9548    #[prost(string, tag = "6")]
9549    pub status: ::prost::alloc::string::String,
9550    #[prost(string, tag = "7")]
9551    pub owner: ::prost::alloc::string::String,
9552    #[prost(bool, tag = "8")]
9553    pub draining: bool,
9554    #[prost(bool, tag = "9")]
9555    pub active: bool,
9556}
9557#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9558pub struct ListAgentVersionsRequest {
9559    #[prost(string, tag = "1")]
9560    pub agent_id: ::prost::alloc::string::String,
9561    #[prost(string, tag = "2")]
9562    pub agent_name: ::prost::alloc::string::String,
9563}
9564#[derive(Clone, PartialEq, ::prost::Message)]
9565pub struct ListAgentVersionsResponse {
9566    #[prost(message, repeated, tag = "1")]
9567    pub versions: ::prost::alloc::vec::Vec<AgentVersion>,
9568}
9569#[derive(Clone, PartialEq, ::prost::Message)]
9570pub struct UpdateAgentRequest {
9571    #[prost(string, tag = "1")]
9572    pub agent_id: ::prost::alloc::string::String,
9573    #[deprecated]
9574    #[prost(string, tag = "2")]
9575    pub agent_name: ::prost::alloc::string::String,
9576    #[deprecated]
9577    #[prost(int32, tag = "3")]
9578    pub replicas: i32,
9579    #[deprecated]
9580    #[prost(int32, tag = "4")]
9581    pub max_replicas: i32,
9582    #[deprecated]
9583    #[prost(string, tag = "5")]
9584    pub cpu_req: ::prost::alloc::string::String,
9585    #[prost(string, repeated, tag = "6")]
9586    pub regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9587    #[prost(message, repeated, tag = "7")]
9588    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9589}
9590#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9591pub struct UpdateAgentResponse {
9592    #[prost(bool, tag = "1")]
9593    pub success: bool,
9594    #[prost(string, tag = "2")]
9595    pub message: ::prost::alloc::string::String,
9596}
9597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9598pub struct RestartAgentRequest {
9599    #[prost(string, tag = "1")]
9600    pub agent_id: ::prost::alloc::string::String,
9601}
9602#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9603pub struct RestartAgentResponse {
9604    #[prost(bool, tag = "1")]
9605    pub success: bool,
9606    #[prost(string, tag = "2")]
9607    pub message: ::prost::alloc::string::String,
9608}
9609#[derive(Clone, PartialEq, ::prost::Message)]
9610pub struct DeployAgentRequest {
9611    #[prost(string, tag = "1")]
9612    pub agent_id: ::prost::alloc::string::String,
9613    #[deprecated]
9614    #[prost(string, tag = "2")]
9615    pub agent_name: ::prost::alloc::string::String,
9616    #[prost(message, repeated, tag = "3")]
9617    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9618    #[deprecated]
9619    #[prost(int32, tag = "4")]
9620    pub replicas: i32,
9621    #[deprecated]
9622    #[prost(int32, tag = "5")]
9623    pub max_replicas: i32,
9624    #[deprecated]
9625    #[prost(string, tag = "6")]
9626    pub cpu_req: ::prost::alloc::string::String,
9627    #[prost(string, tag = "7")]
9628    pub deployment: ::prost::alloc::string::String,
9629    #[prost(map = "string, string", tag = "8")]
9630    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9631}
9632#[derive(Clone, PartialEq, ::prost::Message)]
9633pub struct DeployAgentResponse {
9634    #[prost(bool, tag = "1")]
9635    pub success: bool,
9636    #[prost(string, tag = "2")]
9637    pub message: ::prost::alloc::string::String,
9638    #[prost(string, tag = "3")]
9639    pub agent_id: ::prost::alloc::string::String,
9640    #[deprecated]
9641    #[prost(string, tag = "4")]
9642    pub presigned_url: ::prost::alloc::string::String,
9643    #[prost(string, tag = "5")]
9644    pub tag: ::prost::alloc::string::String,
9645    #[prost(message, optional, tag = "6")]
9646    pub presigned_post_request: ::core::option::Option<PresignedPostRequest>,
9647    #[prost(string, tag = "7")]
9648    pub deployment: ::prost::alloc::string::String,
9649}
9650#[derive(Clone, PartialEq, ::prost::Message)]
9651pub struct DeployAgentV2Request {
9652    #[prost(string, tag = "1")]
9653    pub agent_id: ::prost::alloc::string::String,
9654    #[prost(message, repeated, tag = "2")]
9655    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9656    #[prost(string, tag = "3")]
9657    pub deployment: ::prost::alloc::string::String,
9658    #[prost(map = "string, string", tag = "4")]
9659    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
9660}
9661#[derive(Clone, PartialEq, ::prost::Message)]
9662pub struct DeployAgentV2Response {
9663    #[prost(bool, tag = "1")]
9664    pub success: bool,
9665    #[prost(string, tag = "2")]
9666    pub message: ::prost::alloc::string::String,
9667    #[prost(string, tag = "3")]
9668    pub agent_id: ::prost::alloc::string::String,
9669    #[prost(string, tag = "4")]
9670    pub tag: ::prost::alloc::string::String,
9671    #[prost(message, optional, tag = "5")]
9672    pub presigned_req: ::core::option::Option<PresignedPostRequest>,
9673    #[prost(string, tag = "6")]
9674    pub deployment: ::prost::alloc::string::String,
9675}
9676#[derive(Clone, PartialEq, ::prost::Message)]
9677pub struct UpdateAgentSecretsRequest {
9678    #[prost(string, tag = "1")]
9679    pub agent_id: ::prost::alloc::string::String,
9680    #[prost(string, tag = "2")]
9681    pub agent_name: ::prost::alloc::string::String,
9682    #[prost(bool, tag = "3")]
9683    pub overwrite: bool,
9684    #[prost(message, repeated, tag = "4")]
9685    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9686    #[prost(string, repeated, tag = "5")]
9687    pub remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9688}
9689#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9690pub struct UpdateAgentSecretsResponse {
9691    #[prost(bool, tag = "1")]
9692    pub success: bool,
9693    #[prost(string, tag = "2")]
9694    pub message: ::prost::alloc::string::String,
9695}
9696#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9697pub struct RollbackAgentRequest {
9698    #[prost(string, tag = "1")]
9699    pub agent_id: ::prost::alloc::string::String,
9700    #[prost(string, tag = "2")]
9701    pub agent_name: ::prost::alloc::string::String,
9702    #[prost(string, tag = "3")]
9703    pub version: ::prost::alloc::string::String,
9704}
9705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9706pub struct RollbackAgentResponse {
9707    #[prost(bool, tag = "1")]
9708    pub success: bool,
9709    #[prost(string, tag = "2")]
9710    pub message: ::prost::alloc::string::String,
9711}
9712#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9713pub struct DeleteAgentRequest {
9714    #[prost(string, tag = "1")]
9715    pub agent_id: ::prost::alloc::string::String,
9716    #[prost(string, tag = "2")]
9717    pub agent_name: ::prost::alloc::string::String,
9718    /// optional
9719    #[prost(string, tag = "3")]
9720    pub deployment: ::prost::alloc::string::String,
9721}
9722#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9723pub struct DeleteAgentResponse {
9724    #[prost(bool, tag = "1")]
9725    pub success: bool,
9726    #[prost(string, tag = "2")]
9727    pub message: ::prost::alloc::string::String,
9728}
9729#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9730pub struct ListAgentSecretsRequest {
9731    #[prost(string, tag = "1")]
9732    pub agent_id: ::prost::alloc::string::String,
9733    #[prost(string, tag = "2")]
9734    pub agent_name: ::prost::alloc::string::String,
9735}
9736#[derive(Clone, PartialEq, ::prost::Message)]
9737pub struct ListAgentSecretsResponse {
9738    #[prost(message, repeated, tag = "1")]
9739    pub secrets: ::prost::alloc::vec::Vec<AgentSecret>,
9740}
9741#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9742pub struct SettingsParam {
9743    #[prost(string, tag = "1")]
9744    pub name: ::prost::alloc::string::String,
9745    #[prost(string, tag = "2")]
9746    pub value: ::prost::alloc::string::String,
9747}
9748#[derive(Clone, PartialEq, ::prost::Message)]
9749pub struct ClientSettingsResponse {
9750    #[prost(message, repeated, tag = "1")]
9751    pub params: ::prost::alloc::vec::Vec<SettingsParam>,
9752}
9753#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9754pub struct ClientSettingsRequest {
9755}
9756#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9757pub struct PrivateLink {
9758    #[prost(string, tag = "1")]
9759    pub private_link_id: ::prost::alloc::string::String,
9760    #[prost(string, tag = "2")]
9761    pub name: ::prost::alloc::string::String,
9762    #[prost(string, tag = "4")]
9763    pub region: ::prost::alloc::string::String,
9764    #[prost(uint32, tag = "5")]
9765    pub port: u32,
9766    #[prost(string, tag = "6")]
9767    pub endpoint: ::prost::alloc::string::String,
9768    #[prost(string, tag = "7")]
9769    pub connection_endpoint: ::prost::alloc::string::String,
9770    #[prost(string, tag = "8")]
9771    pub cloud_region: ::prost::alloc::string::String,
9772    #[prost(oneof = "private_link::Config", tags = "3")]
9773    pub config: ::core::option::Option<private_link::Config>,
9774}
9775/// Nested message and enum types in `PrivateLink`.
9776pub mod private_link {
9777    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9778    pub struct AwsConfig {
9779        /// Use the generic "endpoint" instead
9780        #[deprecated]
9781        #[prost(string, tag = "1")]
9782        pub endpoint: ::prost::alloc::string::String,
9783    }
9784    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9785    pub enum Config {
9786        #[deprecated]
9787        #[prost(message, tag = "3")]
9788        Aws(AwsConfig),
9789    }
9790}
9791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9792pub struct PrivateLinkStatus {
9793    #[prost(enumeration = "private_link_status::Status", tag = "1")]
9794    pub status: i32,
9795    #[prost(message, optional, tag = "2")]
9796    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
9797    #[prost(string, tag = "3")]
9798    pub reason: ::prost::alloc::string::String,
9799}
9800/// Nested message and enum types in `PrivateLinkStatus`.
9801pub mod private_link_status {
9802    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9803    #[repr(i32)]
9804    pub enum Status {
9805        PrivateLinkStatusUnknown = 0,
9806        PrivateLinkStatusProvisioning = 1,
9807        PrivateLinkStatusPendingApproval = 2,
9808        PrivateLinkStatusHealthy = 3,
9809        PrivateLinkStatusUnhealthy = 4,
9810        PrivateLinkStatusApproved = 5,
9811    }
9812    impl Status {
9813        /// String value of the enum field names used in the ProtoBuf definition.
9814        ///
9815        /// The values are not transformed in any way and thus are considered stable
9816        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9817        pub fn as_str_name(&self) -> &'static str {
9818            match self {
9819                Self::PrivateLinkStatusUnknown => "PRIVATE_LINK_STATUS_UNKNOWN",
9820                Self::PrivateLinkStatusProvisioning => "PRIVATE_LINK_STATUS_PROVISIONING",
9821                Self::PrivateLinkStatusPendingApproval => "PRIVATE_LINK_STATUS_PENDING_APPROVAL",
9822                Self::PrivateLinkStatusHealthy => "PRIVATE_LINK_STATUS_HEALTHY",
9823                Self::PrivateLinkStatusUnhealthy => "PRIVATE_LINK_STATUS_UNHEALTHY",
9824                Self::PrivateLinkStatusApproved => "PRIVATE_LINK_STATUS_APPROVED",
9825            }
9826        }
9827        /// Creates an enum from field names used in the ProtoBuf definition.
9828        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9829            match value {
9830                "PRIVATE_LINK_STATUS_UNKNOWN" => Some(Self::PrivateLinkStatusUnknown),
9831                "PRIVATE_LINK_STATUS_PROVISIONING" => Some(Self::PrivateLinkStatusProvisioning),
9832                "PRIVATE_LINK_STATUS_PENDING_APPROVAL" => Some(Self::PrivateLinkStatusPendingApproval),
9833                "PRIVATE_LINK_STATUS_HEALTHY" => Some(Self::PrivateLinkStatusHealthy),
9834                "PRIVATE_LINK_STATUS_UNHEALTHY" => Some(Self::PrivateLinkStatusUnhealthy),
9835                "PRIVATE_LINK_STATUS_APPROVED" => Some(Self::PrivateLinkStatusApproved),
9836                _ => None,
9837            }
9838        }
9839    }
9840}
9841#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9842pub struct CreatePrivateLinkRequest {
9843    #[prost(string, tag = "1")]
9844    pub name: ::prost::alloc::string::String,
9845    #[prost(string, tag = "3")]
9846    pub region: ::prost::alloc::string::String,
9847    #[prost(uint32, tag = "4")]
9848    pub port: u32,
9849    #[prost(string, tag = "5")]
9850    pub endpoint: ::prost::alloc::string::String,
9851    #[prost(string, optional, tag = "6")]
9852    pub cloud_region: ::core::option::Option<::prost::alloc::string::String>,
9853    #[prost(oneof = "create_private_link_request::Config", tags = "2")]
9854    pub config: ::core::option::Option<create_private_link_request::Config>,
9855}
9856/// Nested message and enum types in `CreatePrivateLinkRequest`.
9857pub mod create_private_link_request {
9858    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9859    pub struct AwsCreateConfig {
9860        #[deprecated]
9861        #[prost(string, tag = "1")]
9862        pub endpoint: ::prost::alloc::string::String,
9863    }
9864    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9865    pub enum Config {
9866        #[deprecated]
9867        #[prost(message, tag = "2")]
9868        Aws(AwsCreateConfig),
9869    }
9870}
9871#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9872pub struct CreatePrivateLinkResponse {
9873    #[prost(message, optional, tag = "1")]
9874    pub private_link: ::core::option::Option<PrivateLink>,
9875}
9876#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9877pub struct DestroyPrivateLinkRequest {
9878    #[prost(string, tag = "1")]
9879    pub private_link_id: ::prost::alloc::string::String,
9880}
9881#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9882pub struct DestroyPrivateLinkResponse {
9883}
9884#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9885pub struct ListPrivateLinksRequest {
9886}
9887#[derive(Clone, PartialEq, ::prost::Message)]
9888pub struct ListPrivateLinksResponse {
9889    #[prost(message, repeated, tag = "1")]
9890    pub items: ::prost::alloc::vec::Vec<PrivateLink>,
9891}
9892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9893pub struct GetPrivateLinkStatusRequest {
9894    #[prost(string, tag = "1")]
9895    pub private_link_id: ::prost::alloc::string::String,
9896}
9897#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9898pub struct GetPrivateLinkStatusResponse {
9899    #[prost(message, optional, tag = "1")]
9900    pub value: ::core::option::Option<PrivateLinkStatus>,
9901}
9902#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9903#[repr(i32)]
9904pub enum AgentSecretKind {
9905    Unknown = 0,
9906    Environment = 1,
9907    File = 2,
9908}
9909impl AgentSecretKind {
9910    /// String value of the enum field names used in the ProtoBuf definition.
9911    ///
9912    /// The values are not transformed in any way and thus are considered stable
9913    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9914    pub fn as_str_name(&self) -> &'static str {
9915        match self {
9916            Self::Unknown => "AGENT_SECRET_KIND_UNKNOWN",
9917            Self::Environment => "AGENT_SECRET_KIND_ENVIRONMENT",
9918            Self::File => "AGENT_SECRET_KIND_FILE",
9919        }
9920    }
9921    /// Creates an enum from field names used in the ProtoBuf definition.
9922    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9923        match value {
9924            "AGENT_SECRET_KIND_UNKNOWN" => Some(Self::Unknown),
9925            "AGENT_SECRET_KIND_ENVIRONMENT" => Some(Self::Environment),
9926            "AGENT_SECRET_KIND_FILE" => Some(Self::File),
9927            _ => None,
9928        }
9929    }
9930}
9931#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9932#[repr(i32)]
9933pub enum AgentEventType {
9934    Unknown = 0,
9935    ApplicationCrashed = 1,
9936    RestartedHighDiskUsage = 2,
9937    RestartedHighMemoryUsage = 3,
9938}
9939impl AgentEventType {
9940    /// String value of the enum field names used in the ProtoBuf definition.
9941    ///
9942    /// The values are not transformed in any way and thus are considered stable
9943    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9944    pub fn as_str_name(&self) -> &'static str {
9945        match self {
9946            Self::Unknown => "AGENT_EVENT_TYPE_UNKNOWN",
9947            Self::ApplicationCrashed => "AGENT_EVENT_TYPE_APPLICATION_CRASHED",
9948            Self::RestartedHighDiskUsage => "AGENT_EVENT_TYPE_RESTARTED_HIGH_DISK_USAGE",
9949            Self::RestartedHighMemoryUsage => "AGENT_EVENT_TYPE_RESTARTED_HIGH_MEMORY_USAGE",
9950        }
9951    }
9952    /// Creates an enum from field names used in the ProtoBuf definition.
9953    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9954        match value {
9955            "AGENT_EVENT_TYPE_UNKNOWN" => Some(Self::Unknown),
9956            "AGENT_EVENT_TYPE_APPLICATION_CRASHED" => Some(Self::ApplicationCrashed),
9957            "AGENT_EVENT_TYPE_RESTARTED_HIGH_DISK_USAGE" => Some(Self::RestartedHighDiskUsage),
9958            "AGENT_EVENT_TYPE_RESTARTED_HIGH_MEMORY_USAGE" => Some(Self::RestartedHighMemoryUsage),
9959            _ => None,
9960        }
9961    }
9962}
9963#[derive(Clone, PartialEq, ::prost::Message)]
9964pub struct SimulationRunSummary {
9965    #[prost(int32, tag = "1")]
9966    pub passed: i32,
9967    #[prost(int32, tag = "2")]
9968    pub failed: i32,
9969    #[prost(string, tag = "3")]
9970    pub going_well: ::prost::alloc::string::String,
9971    #[prost(string, tag = "4")]
9972    pub to_improve: ::prost::alloc::string::String,
9973    #[prost(message, repeated, tag = "5")]
9974    pub issues: ::prost::alloc::vec::Vec<simulation_run_summary::Issue>,
9975    #[prost(map = "string, message", tag = "6")]
9976    pub chat_history: ::std::collections::HashMap<::prost::alloc::string::String, agent::ChatContext>,
9977}
9978/// Nested message and enum types in `SimulationRunSummary`.
9979pub mod simulation_run_summary {
9980    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9981    pub struct Issue {
9982        #[prost(string, tag = "1")]
9983        pub description: ::prost::alloc::string::String,
9984        #[prost(string, tag = "2")]
9985        pub suggestion: ::prost::alloc::string::String,
9986        #[prost(string, tag = "3")]
9987        pub label: ::prost::alloc::string::String,
9988    }
9989}
9990#[derive(Clone, PartialEq, ::prost::Message)]
9991pub struct SimulationRun {
9992    #[prost(string, tag = "1")]
9993    pub id: ::prost::alloc::string::String,
9994    #[prost(string, tag = "2")]
9995    pub project_id: ::prost::alloc::string::String,
9996    #[prost(enumeration = "simulation_run::Status", tag = "3")]
9997    pub status: i32,
9998    #[prost(string, tag = "4")]
9999    pub agent_description: ::prost::alloc::string::String,
10000    #[prost(string, tag = "5")]
10001    pub error: ::prost::alloc::string::String,
10002    #[prost(message, optional, tag = "6")]
10003    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
10004    #[prost(message, repeated, tag = "7")]
10005    pub jobs: ::prost::alloc::vec::Vec<simulation_run::Job>,
10006    #[prost(string, tag = "9")]
10007    pub agent_name: ::prost::alloc::string::String,
10008    #[prost(message, optional, tag = "10")]
10009    pub scenario_group: ::core::option::Option<ScenarioGroup>,
10010    #[prost(message, optional, tag = "11")]
10011    pub ended_at: ::core::option::Option<::pbjson_types::Timestamp>,
10012    #[prost(int32, tag = "12")]
10013    pub job_count: i32,
10014    #[prost(int32, tag = "13")]
10015    pub passed_count: i32,
10016    #[prost(int32, tag = "14")]
10017    pub failed_count: i32,
10018    #[prost(int32, tag = "15")]
10019    pub num_simulations: i32,
10020    /// Aggregate usage across all jobs in this run (sum of Job.usage).
10021    #[prost(message, optional, tag = "16")]
10022    pub usage: ::core::option::Option<simulation_run::Usage>,
10023    /// Maximum simulate jobs running in parallel for this run (0 = server default).
10024    #[prost(int32, tag = "17")]
10025    pub concurrency: i32,
10026    /// Conversation mode for every job in this run; unspecified = TEXT.
10027    #[prost(enumeration = "SimulationMode", tag = "18")]
10028    pub mode: i32,
10029    /// Run-level aggregates over this run's jobs.
10030    #[prost(message, optional, tag = "19")]
10031    pub metrics: ::core::option::Option<simulation_run::RunMetrics>,
10032    /// zstd-compressed SimulationRunSummary: decompress, then proto.Unmarshal.
10033    /// Compressed by default so the blob ships as-is on every hop.
10034    #[prost(bytes = "vec", tag = "20")]
10035    pub summary_zstd: ::prost::alloc::vec::Vec<u8>,
10036    /// How many issues the stored summary flagged. Present only once a summary
10037    /// landed — absent and 0 differ ("never summarized" vs "no issues") — and
10038    /// List responses carry it without the summary blob itself.
10039    #[prost(int32, optional, tag = "21")]
10040    pub issue_count: ::core::option::Option<i32>,
10041    /// The pipeline this run came from; unset when it did not come from one.
10042    #[prost(message, optional, tag = "22")]
10043    pub ci: ::core::option::Option<simulation_run::Ci>,
10044    /// Absent when the run ran each scenario once and required it to pass.
10045    #[prost(message, optional, tag = "23")]
10046    pub sampling: ::core::option::Option<simulation_run::SamplingOptions>,
10047}
10048/// Nested message and enum types in `SimulationRun`.
10049pub mod simulation_run {
10050    #[derive(Clone, PartialEq, ::prost::Message)]
10051    pub struct Job {
10052        #[prost(string, tag = "1")]
10053        pub id: ::prost::alloc::string::String,
10054        #[prost(enumeration = "job::Status", tag = "2")]
10055        pub status: i32,
10056        #[prost(string, tag = "3")]
10057        pub instructions: ::prost::alloc::string::String,
10058        #[prost(string, tag = "4")]
10059        pub error: ::prost::alloc::string::String,
10060        #[prost(string, tag = "5")]
10061        pub agent_expectations: ::prost::alloc::string::String,
10062        #[prost(string, tag = "6")]
10063        pub label: ::prost::alloc::string::String,
10064        #[prost(string, repeated, tag = "7")]
10065        pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10066        #[prost(string, tag = "8")]
10067        pub room_name: ::prost::alloc::string::String,
10068        #[prost(message, optional, tag = "10")]
10069        pub started_at: ::core::option::Option<::pbjson_types::Timestamp>,
10070        #[prost(message, optional, tag = "11")]
10071        pub ended_at: ::core::option::Option<::pbjson_types::Timestamp>,
10072        #[prost(string, tag = "12")]
10073        pub room_id: ::prost::alloc::string::String,
10074        #[prost(message, optional, tag = "13")]
10075        pub usage: ::core::option::Option<job::Usage>,
10076        /// Quality metrics for this job's call. Unset when the job produced none.
10077        #[prost(message, optional, tag = "14")]
10078        pub metrics: ::core::option::Option<JobMetrics>,
10079        /// The Scenario.id this job ran; empty for generated runs. Every sample
10080        /// of one scenario shares it, so a run's jobs group back into scenarios.
10081        #[prost(string, tag = "15")]
10082        pub scenario_id: ::prost::alloc::string::String,
10083        /// 1-based sample of that scenario within the run; always 1 when the run's
10084        /// samples is 1.
10085        #[prost(int32, tag = "16")]
10086        pub sample: i32,
10087        /// Set on a failed job whose cause is known; error stays the detail.
10088        #[prost(enumeration = "job::FailureReason", tag = "19")]
10089        pub failure_reason: i32,
10090    }
10091    /// Nested message and enum types in `Job`.
10092    pub mod job {
10093        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10094        pub struct Usage {
10095            #[prost(int32, tag = "1")]
10096            pub text_turns_count: i32,
10097            #[prost(int32, tag = "2")]
10098            pub audio_turns_count: i32,
10099        }
10100        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10101        #[repr(i32)]
10102        pub enum Status {
10103            Pending = 0,
10104            Running = 1,
10105            Completed = 2,
10106            Failed = 3,
10107            Cancelled = 4,
10108        }
10109        impl Status {
10110            /// String value of the enum field names used in the ProtoBuf definition.
10111            ///
10112            /// The values are not transformed in any way and thus are considered stable
10113            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10114            pub fn as_str_name(&self) -> &'static str {
10115                match self {
10116                    Self::Pending => "STATUS_PENDING",
10117                    Self::Running => "STATUS_RUNNING",
10118                    Self::Completed => "STATUS_COMPLETED",
10119                    Self::Failed => "STATUS_FAILED",
10120                    Self::Cancelled => "STATUS_CANCELLED",
10121                }
10122            }
10123            /// Creates an enum from field names used in the ProtoBuf definition.
10124            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10125                match value {
10126                    "STATUS_PENDING" => Some(Self::Pending),
10127                    "STATUS_RUNNING" => Some(Self::Running),
10128                    "STATUS_COMPLETED" => Some(Self::Completed),
10129                    "STATUS_FAILED" => Some(Self::Failed),
10130                    "STATUS_CANCELLED" => Some(Self::Cancelled),
10131                    _ => None,
10132                }
10133            }
10134        }
10135        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10136        #[repr(i32)]
10137        pub enum FailureReason {
10138            Unspecified = 0,
10139            /// The agent under test never joined the simulation's room.
10140            AgentJoinTimeout = 1,
10141        }
10142        impl FailureReason {
10143            /// String value of the enum field names used in the ProtoBuf definition.
10144            ///
10145            /// The values are not transformed in any way and thus are considered stable
10146            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10147            pub fn as_str_name(&self) -> &'static str {
10148                match self {
10149                    Self::Unspecified => "FAILURE_REASON_UNSPECIFIED",
10150                    Self::AgentJoinTimeout => "FAILURE_REASON_AGENT_JOIN_TIMEOUT",
10151                }
10152            }
10153            /// Creates an enum from field names used in the ProtoBuf definition.
10154            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10155                match value {
10156                    "FAILURE_REASON_UNSPECIFIED" => Some(Self::Unspecified),
10157                    "FAILURE_REASON_AGENT_JOIN_TIMEOUT" => Some(Self::AgentJoinTimeout),
10158                    _ => None,
10159                }
10160            }
10161        }
10162    }
10163    #[derive(Clone, PartialEq, ::prost::Message)]
10164    pub struct JobMetrics {
10165        /// the scenario verdict as 1/0
10166        #[prost(float, optional, tag = "3")]
10167        pub task_completion: ::core::option::Option<f32>,
10168        /// weighted mean of the judged and heard scores
10169        #[prost(float, optional, tag = "20")]
10170        pub overall_score: ::core::option::Option<f32>,
10171        #[prost(message, optional, tag = "4")]
10172        pub stt: ::core::option::Option<job_metrics::Stt>,
10173        #[prost(message, optional, tag = "5")]
10174        pub llm: ::core::option::Option<job_metrics::Llm>,
10175        #[prost(message, optional, tag = "6")]
10176        pub tts: ::core::option::Option<job_metrics::Tts>,
10177        #[prost(message, optional, tag = "7")]
10178        pub conversation: ::core::option::Option<job_metrics::Conversation>,
10179        /// One entry per turn, both speakers.
10180        #[prost(message, repeated, tag = "9")]
10181        pub turns: ::prost::alloc::vec::Vec<job_metrics::Turn>,
10182        /// text judge for judged scores; "" if none ran
10183        #[prost(string, tag = "10")]
10184        pub judge_model: ::prost::alloc::string::String,
10185        /// false = waveform-only capture (e.g. SIP)
10186        #[prost(bool, tag = "12")]
10187        pub has_remote_session: bool,
10188        /// audio only; call start (first speech edge); turn times relative to it
10189        #[prost(message, optional, tag = "13")]
10190        pub t0: ::core::option::Option<::pbjson_types::Timestamp>,
10191        /// Judged over the authored dialog (text and audio); needs the text judge.
10192        ///
10193        /// judged {0, 0.5, 1} per agent turn; job = mean
10194        #[prost(float, optional, tag = "14")]
10195        pub conciseness: ::core::option::Option<f32>,
10196        /// Whole-call issue flags; true = present, absent = not judged.
10197        #[prost(bool, optional, tag = "15")]
10198        pub unnecessary_tool_calls: ::core::option::Option<bool>,
10199        #[prost(bool, optional, tag = "16")]
10200        pub information_loss: ::core::option::Option<bool>,
10201        #[prost(bool, optional, tag = "17")]
10202        pub redundant_statements: ::core::option::Option<bool>,
10203        #[prost(bool, optional, tag = "18")]
10204        pub poor_question_quality: ::core::option::Option<bool>,
10205        /// 0-1, derived from the flags above
10206        #[prost(float, optional, tag = "19")]
10207        pub conversation_progression: ::core::option::Option<f32>,
10208        /// How the call ended. A failing end also sets the job's error.
10209        #[prost(enumeration = "job_metrics::EndReason", tag = "21")]
10210        pub end_reason: i32,
10211        /// The simulated caller's language, as a language tag: what it spoke or wrote.
10212        #[prost(string, tag = "22")]
10213        pub caller_language: ::prost::alloc::string::String,
10214        /// Audio only: the language the caller transcribed the agent in; "" means
10215        /// caller_language.
10216        #[prost(string, tag = "23")]
10217        pub caller_listen_language: ::prost::alloc::string::String,
10218        /// Audio only: what the caller's audio went through before the agent heard
10219        /// it. Absent for a clean call.
10220        #[prost(message, optional, tag = "24")]
10221        pub impairments: ::core::option::Option<super::SimulationImpairments>,
10222    }
10223    /// Nested message and enum types in `JobMetrics`.
10224    pub mod job_metrics {
10225        /// The agent's perception of the caller. Audio only.
10226        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10227        pub struct Stt {
10228            /// needs the RemoteSession; word_errors / words
10229            #[prost(float, optional, tag = "1")]
10230            pub wer: ::core::option::Option<f32>,
10231            /// needs the RemoteSession
10232            #[prost(uint32, optional, tag = "2")]
10233            pub words: ::core::option::Option<u32>,
10234            /// needs the RemoteSession
10235            #[prost(uint32, optional, tag = "3")]
10236            pub word_errors: ::core::option::Option<u32>,
10237            /// needs the RemoteSession; char_errors / chars
10238            #[prost(float, optional, tag = "4")]
10239            pub cer: ::core::option::Option<f32>,
10240            /// needs the RemoteSession
10241            #[prost(uint32, optional, tag = "9")]
10242            pub chars: ::core::option::Option<u32>,
10243            /// needs the RemoteSession
10244            #[prost(uint32, optional, tag = "10")]
10245            pub char_errors: ::core::option::Option<u32>,
10246            /// needs the RemoteSession; agent-reported STT/endpointing delay
10247            #[prost(uint32, optional, tag = "8")]
10248            pub stt_delay_ms: ::core::option::Option<u32>,
10249            /// Key entities (names, IDs, amounts) the caller said. Needs the text judge.
10250            ///
10251            /// recognized / uttered
10252            #[prost(float, optional, tag = "11")]
10253            pub entity_recognition: ::core::option::Option<f32>,
10254            #[prost(uint32, optional, tag = "12")]
10255            pub entities_uttered: ::core::option::Option<u32>,
10256            #[prost(uint32, optional, tag = "13")]
10257            pub entities_recognized: ::core::option::Option<u32>,
10258            /// Retention: an entity is acquired at the first saying heard right, and
10259            /// these count only the sayings after that, so recall separates keeping an
10260            /// entity from ever getting it.
10261            ///
10262            /// acquired_recognized / acquired_uttered
10263            #[prost(float, optional, tag = "14")]
10264            pub entity_recall: ::core::option::Option<f32>,
10265            #[prost(uint32, optional, tag = "15")]
10266            pub entities_acquired_uttered: ::core::option::Option<u32>,
10267            #[prost(uint32, optional, tag = "16")]
10268            pub entities_acquired_recognized: ::core::option::Option<u32>,
10269        }
10270        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10271        pub struct Llm {
10272            /// needs the RemoteSession; time to first token
10273            #[prost(uint32, optional, tag = "1")]
10274            pub ttft_ms: ::core::option::Option<u32>,
10275            /// needs the RemoteSession; time to first sentence, the smallest speakable unit
10276            #[prost(uint32, optional, tag = "2")]
10277            pub ttfs_ms: ::core::option::Option<u32>,
10278            /// needs the RemoteSession
10279            #[prost(float, optional, tag = "3")]
10280            pub tokens_per_second: ::core::option::Option<f32>,
10281        }
10282        /// The agent's voice. Audio only.
10283        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10284        pub struct Tts {
10285            /// needs the RemoteSession; provider byte-level TTFB
10286            #[prost(uint32, optional, tag = "2")]
10287            pub ttfb_ms: ::core::option::Option<u32>,
10288            /// needs the RemoteSession; word_errors / words
10289            #[prost(float, optional, tag = "3")]
10290            pub wer: ::core::option::Option<f32>,
10291            /// needs the RemoteSession
10292            #[prost(uint32, optional, tag = "7")]
10293            pub words: ::core::option::Option<u32>,
10294            /// needs the RemoteSession
10295            #[prost(uint32, optional, tag = "8")]
10296            pub word_errors: ::core::option::Option<u32>,
10297            /// needs the RemoteSession; char_errors / chars
10298            #[prost(float, optional, tag = "9")]
10299            pub cer: ::core::option::Option<f32>,
10300            /// needs the RemoteSession
10301            #[prost(uint32, optional, tag = "10")]
10302            pub chars: ::core::option::Option<u32>,
10303            /// needs the RemoteSession
10304            #[prost(uint32, optional, tag = "11")]
10305            pub char_errors: ::core::option::Option<u32>,
10306            /// Key entities the agent said, as the caller heard them. Needs the text judge.
10307            ///
10308            /// recognized / uttered
10309            #[prost(float, optional, tag = "14")]
10310            pub entity_recognition: ::core::option::Option<f32>,
10311            #[prost(uint32, optional, tag = "15")]
10312            pub entities_uttered: ::core::option::Option<u32>,
10313            #[prost(uint32, optional, tag = "16")]
10314            pub entities_recognized: ::core::option::Option<u32>,
10315            /// acquired_recognized / acquired_uttered
10316            #[prost(float, optional, tag = "17")]
10317            pub entity_recall: ::core::option::Option<f32>,
10318            #[prost(uint32, optional, tag = "18")]
10319            pub entities_acquired_uttered: ::core::option::Option<u32>,
10320            #[prost(uint32, optional, tag = "19")]
10321            pub entities_acquired_recognized: ::core::option::Option<u32>,
10322        }
10323        /// Audio only.
10324        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10325        pub struct Conversation {
10326            /// 0-1
10327            #[prost(float, optional, tag = "1")]
10328            pub turn_taking_score: ::core::option::Option<f32>,
10329            /// floor-transfer offset; a gap is > 0, an overlap < 0
10330            #[prost(int32, optional, tag = "2")]
10331            pub heard_e2e_latency_p50_ms: ::core::option::Option<i32>,
10332            #[prost(int32, optional, tag = "3")]
10333            pub heard_e2e_latency_p95_ms: ::core::option::Option<i32>,
10334            #[prost(int32, optional, tag = "4")]
10335            pub heard_e2e_latency_p99_ms: ::core::option::Option<i32>,
10336            /// agent audio continuing past a barge-in
10337            #[prost(uint32, optional, tag = "5")]
10338            pub time_to_yield_ms: ::core::option::Option<u32>,
10339            /// agent started before the caller's turn ended
10340            #[prost(uint32, optional, tag = "6")]
10341            pub eot_misprediction_count: ::core::option::Option<u32>,
10342            /// overlapping speech / total speech
10343            #[prost(float, optional, tag = "7")]
10344            pub overlap_ratio: ::core::option::Option<f32>,
10345            /// pooling stats for overlap_ratio
10346            #[prost(uint32, optional, tag = "8")]
10347            pub overlap_speech_ms: ::core::option::Option<u32>,
10348            #[prost(uint32, optional, tag = "9")]
10349            pub total_speech_ms: ::core::option::Option<u32>,
10350            /// gaps past the natural-pause threshold
10351            #[prost(uint32, optional, tag = "11")]
10352            pub awkward_silence_count: ::core::option::Option<u32>,
10353            /// the simulated party spoke, the agent never responded
10354            #[prost(uint32, optional, tag = "12")]
10355            pub unanswered_turns: ::core::option::Option<u32>,
10356            /// needs the RemoteSession; agent paused for a non-interruption
10357            #[prost(uint32, optional, tag = "13")]
10358            pub false_interruption_count: ::core::option::Option<u32>,
10359            /// needs the RemoteSession; the agent's own claim
10360            #[prost(uint32, optional, tag = "15")]
10361            pub e2e_latency_ms: ::core::option::Option<u32>,
10362            /// the caller's acknowledgements over the agent's speech
10363            #[prost(uint32, optional, tag = "16")]
10364            pub backchannel_count: ::core::option::Option<u32>,
10365        }
10366        /// Rows exist for text and audio. The groups above hold the means and pools
10367        /// over these; anything not measured for a turn stays unset.
10368        #[derive(Clone, PartialEq, ::prost::Message)]
10369        pub struct Turn {
10370            /// 1-based, conversation order
10371            #[prost(uint32, tag = "1")]
10372            pub index: u32,
10373            /// ASSISTANT = the agent under test, USER = simulator persona
10374            #[prost(enumeration = "super::super::agent::ChatRole", tag = "2")]
10375            pub role: i32,
10376            /// The words the judges read for this turn: the speaker's own, or as the
10377            /// other side heard them when those are unknown (the agent's, without a
10378            /// RemoteSession).
10379            #[prost(string, tag = "18")]
10380            pub text: ::prost::alloc::string::String,
10381            /// audio only; relative to t0; unset if the turn could not be aligned to the audio
10382            #[prost(uint32, optional, tag = "3")]
10383            pub start_ms: ::core::option::Option<u32>,
10384            /// audio only
10385            #[prost(uint32, optional, tag = "4")]
10386            pub end_ms: ::core::option::Option<u32>,
10387            /// needs the RemoteSession
10388            #[prost(uint32, optional, tag = "5")]
10389            pub stt_delay_ms: ::core::option::Option<u32>,
10390            /// needs the RemoteSession
10391            #[prost(uint32, optional, tag = "6")]
10392            pub llm_ttft_ms: ::core::option::Option<u32>,
10393            /// needs the RemoteSession
10394            #[prost(uint32, optional, tag = "7")]
10395            pub llm_ttfs_ms: ::core::option::Option<u32>,
10396            /// needs the RemoteSession
10397            #[prost(float, optional, tag = "8")]
10398            pub llm_tps: ::core::option::Option<f32>,
10399            /// needs the RemoteSession
10400            #[prost(uint32, optional, tag = "9")]
10401            pub tts_ttfb_ms: ::core::option::Option<u32>,
10402            /// needs the RemoteSession
10403            #[prost(uint32, optional, tag = "10")]
10404            pub e2e_latency_ms: ::core::option::Option<u32>,
10405            #[prost(int32, optional, tag = "11")]
10406            pub heard_e2e_latency_ms: ::core::option::Option<i32>,
10407            #[prost(uint32, optional, tag = "12")]
10408            pub time_to_yield_ms: ::core::option::Option<u32>,
10409            #[prost(float, optional, tag = "13")]
10410            pub turn_taking_score: ::core::option::Option<f32>,
10411            /// needs the text judge
10412            #[prost(float, optional, tag = "14")]
10413            pub conciseness: ::core::option::Option<f32>,
10414            #[prost(bool, optional, tag = "15")]
10415            pub eot_misprediction: ::core::option::Option<bool>,
10416            #[prost(bool, optional, tag = "16")]
10417            pub awkward_silence: ::core::option::Option<bool>,
10418            #[prost(bool, optional, tag = "17")]
10419            pub unanswered: ::core::option::Option<bool>,
10420            /// Audio only; needs the text judge. One per saying of a key entity in
10421            /// this turn, in order, as the other side heard it. Matched over the whole
10422            /// call's transcript, so a saying spanning turns sits on its first, and
10423            /// which of an entity's repeated sayings was heard is the alignment's
10424            /// best guess.
10425            #[prost(message, repeated, tag = "19")]
10426            pub entities: ::prost::alloc::vec::Vec<turn::Entity>,
10427            /// the agent's chat item id for the first message this turn holds, as its
10428            /// stored transcript carries it; "" without a RemoteSession
10429            #[prost(string, tag = "20")]
10430            pub item_id: ::prost::alloc::string::String,
10431        }
10432        /// Nested message and enum types in `Turn`.
10433        pub mod turn {
10434            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10435            pub struct Entity {
10436                /// the entity as the speaker said it
10437                #[prost(string, tag = "1")]
10438                pub said: ::prost::alloc::string::String,
10439                /// the listener's normalized words where it landed; "" if dropped
10440                #[prost(string, tag = "2")]
10441                pub heard: ::prost::alloc::string::String,
10442                /// heard with no word errors
10443                #[prost(bool, tag = "3")]
10444                pub recognized: bool,
10445            }
10446        }
10447        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10448        #[repr(i32)]
10449        pub enum EndReason {
10450            Unspecified = 0,
10451            /// the caller finished the scenario
10452            ScenarioCompleted = 1,
10453            /// the agent under test ended the call
10454            AgentEnded = 2,
10455            /// the agent under test went silent
10456            Inactivity = 3,
10457            /// the caller ran out of turns
10458            TurnLimit = 4,
10459            /// the agent under test kept replying with nothing
10460            EmptyResponse = 5,
10461            /// the agent under test failed mid-call
10462            AgentError = 6,
10463        }
10464        impl EndReason {
10465            /// String value of the enum field names used in the ProtoBuf definition.
10466            ///
10467            /// The values are not transformed in any way and thus are considered stable
10468            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10469            pub fn as_str_name(&self) -> &'static str {
10470                match self {
10471                    Self::Unspecified => "END_REASON_UNSPECIFIED",
10472                    Self::ScenarioCompleted => "END_REASON_SCENARIO_COMPLETED",
10473                    Self::AgentEnded => "END_REASON_AGENT_ENDED",
10474                    Self::Inactivity => "END_REASON_INACTIVITY",
10475                    Self::TurnLimit => "END_REASON_TURN_LIMIT",
10476                    Self::EmptyResponse => "END_REASON_EMPTY_RESPONSE",
10477                    Self::AgentError => "END_REASON_AGENT_ERROR",
10478                }
10479            }
10480            /// Creates an enum from field names used in the ProtoBuf definition.
10481            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10482                match value {
10483                    "END_REASON_UNSPECIFIED" => Some(Self::Unspecified),
10484                    "END_REASON_SCENARIO_COMPLETED" => Some(Self::ScenarioCompleted),
10485                    "END_REASON_AGENT_ENDED" => Some(Self::AgentEnded),
10486                    "END_REASON_INACTIVITY" => Some(Self::Inactivity),
10487                    "END_REASON_TURN_LIMIT" => Some(Self::TurnLimit),
10488                    "END_REASON_EMPTY_RESPONSE" => Some(Self::EmptyResponse),
10489                    "END_REASON_AGENT_ERROR" => Some(Self::AgentError),
10490                    _ => None,
10491                }
10492            }
10493        }
10494    }
10495    /// Aggregates over this run's jobs, so a run summary does not have to pull
10496    /// every job and turn. Reuses the JobMetrics group shapes.
10497    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10498    pub struct RunMetrics {
10499        /// share of jobs whose scenario verdict passed
10500        #[prost(float, optional, tag = "3")]
10501        pub scenario_pass_rate: ::core::option::Option<f32>,
10502        /// mean over scored jobs
10503        #[prost(float, optional, tag = "10")]
10504        pub overall_score: ::core::option::Option<f32>,
10505        #[prost(message, optional, tag = "4")]
10506        pub stt: ::core::option::Option<job_metrics::Stt>,
10507        #[prost(message, optional, tag = "5")]
10508        pub llm: ::core::option::Option<job_metrics::Llm>,
10509        #[prost(message, optional, tag = "6")]
10510        pub tts: ::core::option::Option<job_metrics::Tts>,
10511        #[prost(message, optional, tag = "7")]
10512        pub conversation: ::core::option::Option<job_metrics::Conversation>,
10513        /// Means over the jobs that report them.
10514        #[prost(float, optional, tag = "8")]
10515        pub conciseness: ::core::option::Option<f32>,
10516        #[prost(float, optional, tag = "9")]
10517        pub conversation_progression: ::core::option::Option<f32>,
10518    }
10519    /// The pipeline this run came from. Set by the client from its CI
10520    /// environment; absent for runs not started by a pipeline.
10521    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10522    pub struct Ci {
10523        /// e.g. "github_actions"
10524        #[prost(string, tag = "1")]
10525        pub provider: ::prost::alloc::string::String,
10526        #[prost(string, tag = "2")]
10527        pub commit_sha: ::prost::alloc::string::String,
10528        /// branch or tag
10529        #[prost(string, tag = "3")]
10530        pub r#ref: ::prost::alloc::string::String,
10531        #[prost(string, tag = "4")]
10532        pub pull_request: ::prost::alloc::string::String,
10533        /// link back to the CI job
10534        #[prost(string, tag = "5")]
10535        pub run_url: ::prost::alloc::string::String,
10536        #[prost(string, tag = "6")]
10537        pub actor: ::prost::alloc::string::String,
10538    }
10539    /// Runs each scenario more than once, so a flaky sample is distinguishable
10540    /// from a broken scenario. Both fields are required when it is present.
10541    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10542    pub struct SamplingOptions {
10543        /// Samples per scenario, > 1. The run holds scenarios × samples jobs,
10544        /// subject to the usual job cap.
10545        #[prost(int32, tag = "1")]
10546        pub samples: i32,
10547        /// The share of a scenario's samples that must pass for that scenario to
10548        /// pass, 0-1. A scenario needs round(rate × samples) of them, so 1
10549        /// requires every sample and 0.67 of 3 requires 2.
10550        #[prost(double, tag = "2")]
10551        pub pass_rate: f64,
10552    }
10553    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10554    pub struct Create {
10555    }
10556    /// Nested message and enum types in `Create`.
10557    pub mod create {
10558        #[derive(Clone, PartialEq, ::prost::Message)]
10559        pub struct Request {
10560            #[prost(string, tag = "1")]
10561            pub project_id: ::prost::alloc::string::String,
10562            #[prost(string, tag = "2")]
10563            pub agent_name: ::prost::alloc::string::String,
10564            #[prost(int32, tag = "4")]
10565            pub num_simulations: i32,
10566            #[prost(string, tag = "6")]
10567            pub region: ::prost::alloc::string::String,
10568            /// When set, run these scenarios (loaded from a scenarios.yaml).
10569            /// When unset, generate num_simulations scenarios from the uploaded agent source.
10570            #[prost(message, optional, tag = "7")]
10571            pub scenario_group: ::core::option::Option<super::super::ScenarioGroup>,
10572            /// Maximum simulate jobs running in parallel for this run. Clamped to the
10573            /// project's concurrency quota; 0/unset uses the server default.
10574            #[prost(int32, optional, tag = "8")]
10575            pub concurrency: ::core::option::Option<i32>,
10576            /// Conversation mode for every job in this run; unspecified = TEXT.
10577            #[prost(enumeration = "super::super::SimulationMode", tag = "9")]
10578            pub mode: i32,
10579            /// Impairments applied to the simulated user's audio; AUDIO mode only.
10580            /// TODO(u9g): migrate these to SimulationImpairments.
10581            #[prost(bool, tag = "10")]
10582            pub background_noise: bool,
10583            #[prost(bool, tag = "11")]
10584            pub low_quality_microphone: bool,
10585            #[prost(bool, tag = "12")]
10586            pub packet_loss: bool,
10587            #[prost(message, optional, tag = "13")]
10588            pub ci: ::core::option::Option<super::Ci>,
10589            /// Absent runs each scenario once and requires it to pass. Requires
10590            /// scenario_group. The run fails if any scenario fails; pass@k and
10591            /// pass^k report over scenarios and neither gates.
10592            #[prost(message, optional, tag = "14")]
10593            pub sampling: ::core::option::Option<super::SamplingOptions>,
10594            /// When set, every job dials this number over SIP instead of dispatching
10595            /// agent_name, as CreateSIPParticipantRequest would. AUDIO mode only.
10596            #[prost(string, tag = "15")]
10597            pub sip_call_to: ::prost::alloc::string::String,
10598            /// Outbound trunk to dial through. Empty dials from sip_number, which must
10599            /// then be a LiveKit phone number the project owns.
10600            #[prost(string, tag = "16")]
10601            pub sip_trunk_id: ::prost::alloc::string::String,
10602            #[prost(string, tag = "17")]
10603            pub sip_number: ::prost::alloc::string::String,
10604            /// Named deployment of agent_name to dispatch to; empty is production.
10605            #[prost(string, tag = "18")]
10606            pub deployment: ::prost::alloc::string::String,
10607        }
10608        #[derive(Clone, PartialEq, ::prost::Message)]
10609        pub struct Response {
10610            #[prost(string, tag = "1")]
10611            pub simulation_run_id: ::prost::alloc::string::String,
10612            #[prost(message, optional, tag = "2")]
10613            pub presigned_post_request: ::core::option::Option<super::super::PresignedPostRequest>,
10614        }
10615    }
10616    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10617    pub struct ConfirmSourceUpload {
10618    }
10619    /// Nested message and enum types in `ConfirmSourceUpload`.
10620    pub mod confirm_source_upload {
10621        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10622        pub struct Request {
10623            #[prost(string, tag = "1")]
10624            pub project_id: ::prost::alloc::string::String,
10625            #[prost(string, tag = "2")]
10626            pub simulation_run_id: ::prost::alloc::string::String,
10627            #[prost(string, tag = "3")]
10628            pub code_entrypoint: ::prost::alloc::string::String,
10629        }
10630        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10631        pub struct Response {
10632        }
10633    }
10634    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10635    pub struct Get {
10636    }
10637    /// Nested message and enum types in `Get`.
10638    pub mod get {
10639        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10640        pub struct Request {
10641            #[prost(string, tag = "1")]
10642            pub project_id: ::prost::alloc::string::String,
10643            #[prost(string, tag = "2")]
10644            pub simulation_run_id: ::prost::alloc::string::String,
10645        }
10646        #[derive(Clone, PartialEq, ::prost::Message)]
10647        pub struct Response {
10648            #[prost(message, optional, tag = "1")]
10649            pub run: ::core::option::Option<super::super::SimulationRun>,
10650        }
10651    }
10652    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10653    pub struct List {
10654    }
10655    /// Nested message and enum types in `List`.
10656    pub mod list {
10657        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10658        pub struct Request {
10659            #[prost(string, tag = "1")]
10660            pub project_id: ::prost::alloc::string::String,
10661            #[prost(enumeration = "super::Status", optional, tag = "2")]
10662            pub status: ::core::option::Option<i32>,
10663            #[prost(message, optional, tag = "3")]
10664            pub page_token: ::core::option::Option<super::super::TokenPagination>,
10665            /// Half-open window [start_time, end_time) on created_at, the leading key
10666            /// of this list's keyset. Unset bounds mean no window, so existing callers
10667            /// keep their unbounded scan; the histogram's selected range sets both.
10668            #[prost(message, optional, tag = "4")]
10669            pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
10670            #[prost(message, optional, tag = "5")]
10671            pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
10672            /// Exact agent name. Unset means every agent — including the runs whose
10673            /// name is empty, which a bare string could not tell from no filter.
10674            #[prost(string, optional, tag = "6")]
10675            pub agent_name: ::core::option::Option<::prost::alloc::string::String>,
10676            /// Absent applies no mode filter. TEXT matches runs stored as TEXT or
10677            /// UNSPECIFIED, which `SimulationRun.mode` defines as the same mode.
10678            #[prost(enumeration = "super::super::SimulationMode", optional, tag = "7")]
10679            pub mode: ::core::option::Option<i32>,
10680        }
10681        #[derive(Clone, PartialEq, ::prost::Message)]
10682        pub struct Response {
10683            #[prost(message, repeated, tag = "1")]
10684            pub runs: ::prost::alloc::vec::Vec<super::super::SimulationRun>,
10685            #[prost(message, optional, tag = "2")]
10686            pub next_page_token: ::core::option::Option<super::super::TokenPagination>,
10687        }
10688    }
10689    /// Counts of the runs `List` would return over the same window, bucketed by
10690    /// created_at instead of paginated.
10691    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10692    pub struct Counts {
10693    }
10694    /// Nested message and enum types in `Counts`.
10695    pub mod counts {
10696        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10697        pub struct Request {
10698            #[prost(string, tag = "1")]
10699            pub project_id: ::prost::alloc::string::String,
10700            /// Both bounds required: a bucketed scan of a project's whole history is
10701            /// never what a caller wants.
10702            #[prost(message, optional, tag = "2")]
10703            pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
10704            #[prost(message, optional, tag = "3")]
10705            pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
10706            /// Applied as `List` applies it: a filter the rows honour and the bars
10707            /// above them drop would make the histogram an answer about a wider set.
10708            #[prost(enumeration = "super::Status", optional, tag = "4")]
10709            pub status: ::core::option::Option<i32>,
10710            #[prost(string, optional, tag = "5")]
10711            pub agent_name: ::core::option::Option<::prost::alloc::string::String>,
10712            #[prost(enumeration = "super::super::SimulationMode", optional, tag = "6")]
10713            pub mode: ::core::option::Option<i32>,
10714        }
10715        #[derive(Clone, PartialEq, ::prost::Message)]
10716        pub struct Response {
10717            /// Buckets holding at least one run, ascending by bucket_start. Empty
10718            /// buckets are omitted; each run lands in exactly one bucket, so the
10719            /// counts sum to the number of runs in the window.
10720            #[prost(message, repeated, tag = "1")]
10721            pub buckets: ::prost::alloc::vec::Vec<Bucket>,
10722            /// The bucket width the server chose from the window, so the client
10723            /// zero-fills the omitted buckets on the grid the counts were built on.
10724            #[prost(message, optional, tag = "2")]
10725            pub interval: ::core::option::Option<::pbjson_types::Duration>,
10726        }
10727        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10728        pub struct Bucket {
10729            #[prost(message, optional, tag = "1")]
10730            pub bucket_start: ::core::option::Option<::pbjson_types::Timestamp>,
10731            #[prost(uint64, tag = "2")]
10732            pub count: u64,
10733        }
10734    }
10735    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10736    pub struct Cancel {
10737    }
10738    /// Nested message and enum types in `Cancel`.
10739    pub mod cancel {
10740        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10741        pub struct Request {
10742            #[prost(string, tag = "1")]
10743            pub project_id: ::prost::alloc::string::String,
10744            #[prost(string, tag = "2")]
10745            pub simulation_run_id: ::prost::alloc::string::String,
10746        }
10747        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10748        pub struct Response {
10749        }
10750    }
10751    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10752    pub struct Usage {
10753        #[prost(int32, tag = "1")]
10754        pub text_turns_count: i32,
10755        #[prost(int32, tag = "2")]
10756        pub audio_turns_count: i32,
10757    }
10758    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10759    #[repr(i32)]
10760    pub enum Status {
10761        PendingUpload = 0,
10762        Generating = 1,
10763        Running = 2,
10764        Summarizing = 3,
10765        Completed = 4,
10766        Failed = 5,
10767        Cancelled = 6,
10768    }
10769    impl Status {
10770        /// String value of the enum field names used in the ProtoBuf definition.
10771        ///
10772        /// The values are not transformed in any way and thus are considered stable
10773        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10774        pub fn as_str_name(&self) -> &'static str {
10775            match self {
10776                Self::PendingUpload => "STATUS_PENDING_UPLOAD",
10777                Self::Generating => "STATUS_GENERATING",
10778                Self::Running => "STATUS_RUNNING",
10779                Self::Summarizing => "STATUS_SUMMARIZING",
10780                Self::Completed => "STATUS_COMPLETED",
10781                Self::Failed => "STATUS_FAILED",
10782                Self::Cancelled => "STATUS_CANCELLED",
10783            }
10784        }
10785        /// Creates an enum from field names used in the ProtoBuf definition.
10786        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10787            match value {
10788                "STATUS_PENDING_UPLOAD" => Some(Self::PendingUpload),
10789                "STATUS_GENERATING" => Some(Self::Generating),
10790                "STATUS_RUNNING" => Some(Self::Running),
10791                "STATUS_SUMMARIZING" => Some(Self::Summarizing),
10792                "STATUS_COMPLETED" => Some(Self::Completed),
10793                "STATUS_FAILED" => Some(Self::Failed),
10794                "STATUS_CANCELLED" => Some(Self::Cancelled),
10795                _ => None,
10796            }
10797        }
10798    }
10799}
10800/// A single scenario, mirroring one entry in a scenarios.yaml file. Scenarios
10801/// are no longer stored server-side; the yaml file is the source of truth.
10802#[derive(Clone, PartialEq, ::prost::Message)]
10803pub struct Scenario {
10804    #[prost(string, tag = "1")]
10805    pub label: ::prost::alloc::string::String,
10806    #[prost(string, tag = "2")]
10807    pub instructions: ::prost::alloc::string::String,
10808    #[prost(string, tag = "3")]
10809    pub agent_expectations: ::prost::alloc::string::String,
10810    /// Surfaced to the agent under test as SimulationContext scenario tags.
10811    #[prost(map = "string, string", tag = "4")]
10812    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
10813    /// Arbitrary JSON-encoded object, surfaced to the agent under test as
10814    /// SimulationContext userdata (e.g. inputs and benchmark target state).
10815    #[prost(string, tag = "5")]
10816    pub userdata: ::prost::alloc::string::String,
10817    /// SCN_-prefixed guid. Stable across edits to label, instructions, or
10818    /// expectations, so runs of the same scenario can be correlated over time.
10819    #[prost(string, tag = "6")]
10820    pub id: ::prost::alloc::string::String,
10821}
10822/// Nested message and enum types in `Scenario`.
10823pub mod scenario {
10824    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10825    pub struct CreateFromSession {
10826    }
10827    /// Nested message and enum types in `CreateFromSession`.
10828    pub mod create_from_session {
10829        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10830        pub struct Request {
10831            #[prost(string, tag = "1")]
10832            pub project_id: ::prost::alloc::string::String,
10833            #[prost(string, tag = "2")]
10834            pub room_id: ::prost::alloc::string::String,
10835            #[prost(string, tag = "3")]
10836            pub region: ::prost::alloc::string::String,
10837        }
10838        #[derive(Clone, PartialEq, ::prost::Message)]
10839        pub struct Response {
10840            #[prost(message, optional, tag = "1")]
10841            pub scenario: ::core::option::Option<super::super::Scenario>,
10842        }
10843    }
10844}
10845/// A named group of scenarios, mirroring a whole scenarios.yaml file.
10846#[derive(Clone, PartialEq, ::prost::Message)]
10847pub struct ScenarioGroup {
10848    #[prost(string, tag = "1")]
10849    pub name: ::prost::alloc::string::String,
10850    #[prost(message, repeated, tag = "2")]
10851    pub scenarios: ::prost::alloc::vec::Vec<Scenario>,
10852    /// SCNG_-prefixed guid. Stable identity of the scenarios file, independent
10853    /// of its name.
10854    #[prost(string, tag = "3")]
10855    pub id: ::prost::alloc::string::String,
10856}
10857/// What the simulated caller's audio went through before the agent heard it.
10858#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10859pub struct SimulationImpairments {
10860    #[prost(bool, tag = "1")]
10861    pub background_noise: bool,
10862    #[prost(bool, tag = "2")]
10863    pub low_quality_microphone: bool,
10864    #[prost(bool, tag = "3")]
10865    pub packet_loss: bool,
10866}
10867/// Carried (protojson-encoded) in the Job's lk.simulator.dispatch attribute, set
10868/// on the agent dispatch, so the agent under test can read the scenario + run
10869/// identity synchronously at job start.
10870#[derive(Clone, PartialEq, ::prost::Message)]
10871pub struct SimulationDispatch {
10872    #[prost(string, tag = "1")]
10873    pub simulation_run_id: ::prost::alloc::string::String,
10874    #[prost(string, tag = "2")]
10875    pub job_id: ::prost::alloc::string::String,
10876    #[prost(message, optional, tag = "3")]
10877    pub scenario: ::core::option::Option<Scenario>,
10878    #[prost(enumeration = "SimulationMode", tag = "4")]
10879    pub mode: i32,
10880}
10881/// How the simulated user interacts with the agent under test.
10882#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10883#[repr(i32)]
10884pub enum SimulationMode {
10885    Unspecified = 0,
10886    /// The simulator chats over text streams (no audio).
10887    Text = 1,
10888    /// The simulator publishes/subscribes audio in the room.
10889    Audio = 2,
10890}
10891impl SimulationMode {
10892    /// String value of the enum field names used in the ProtoBuf definition.
10893    ///
10894    /// The values are not transformed in any way and thus are considered stable
10895    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10896    pub fn as_str_name(&self) -> &'static str {
10897        match self {
10898            Self::Unspecified => "SIMULATION_MODE_UNSPECIFIED",
10899            Self::Text => "SIMULATION_MODE_TEXT",
10900            Self::Audio => "SIMULATION_MODE_AUDIO",
10901        }
10902    }
10903    /// Creates an enum from field names used in the ProtoBuf definition.
10904    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10905        match value {
10906            "SIMULATION_MODE_UNSPECIFIED" => Some(Self::Unspecified),
10907            "SIMULATION_MODE_TEXT" => Some(Self::Text),
10908            "SIMULATION_MODE_AUDIO" => Some(Self::Audio),
10909            _ => None,
10910        }
10911    }
10912}
10913#[derive(Clone, PartialEq, ::prost::Message)]
10914pub struct WorkerInfo {
10915    #[prost(string, tag = "1")]
10916    pub worker_type: ::prost::alloc::string::String,
10917    #[prost(string, tag = "2")]
10918    pub agent_name: ::prost::alloc::string::String,
10919    #[prost(float, tag = "3")]
10920    pub active_jobs: f32,
10921    #[prost(string, tag = "4")]
10922    pub sdk_version: ::prost::alloc::string::String,
10923    #[prost(float, tag = "5")]
10924    pub worker_load: f32,
10925    #[prost(int32, tag = "6")]
10926    pub protocol_version: i32,
10927}
10928#[derive(Clone, PartialEq, ::prost::Message)]
10929pub struct Node {
10930    #[prost(string, tag = "1")]
10931    pub id: ::prost::alloc::string::String,
10932    #[prost(string, tag = "2")]
10933    pub ip: ::prost::alloc::string::String,
10934    #[prost(uint32, tag = "3")]
10935    pub num_cpus: u32,
10936    #[prost(message, optional, tag = "4")]
10937    pub stats: ::core::option::Option<NodeStats>,
10938    #[prost(enumeration = "NodeType", tag = "5")]
10939    pub r#type: i32,
10940    #[prost(enumeration = "NodeState", tag = "6")]
10941    pub state: i32,
10942    #[prost(string, tag = "7")]
10943    pub region: ::prost::alloc::string::String,
10944}
10945#[derive(Clone, PartialEq, ::prost::Message)]
10946pub struct NodeStats {
10947    /// when server was started
10948    #[prost(int64, tag = "1")]
10949    pub started_at: i64,
10950    /// when server last reported its status
10951    #[prost(int64, tag = "2")]
10952    pub updated_at: i64,
10953    /// room
10954    #[prost(int32, tag = "3")]
10955    pub num_rooms: i32,
10956    #[prost(int32, tag = "4")]
10957    pub num_clients: i32,
10958    #[prost(int32, tag = "5")]
10959    pub num_tracks_in: i32,
10960    #[prost(int32, tag = "6")]
10961    pub num_tracks_out: i32,
10962    #[prost(int32, tag = "36")]
10963    pub num_track_publish_attempts: i32,
10964    #[deprecated]
10965    #[prost(float, tag = "37")]
10966    pub track_publish_attempts_per_sec: f32,
10967    #[prost(int32, tag = "38")]
10968    pub num_track_publish_success: i32,
10969    #[deprecated]
10970    #[prost(float, tag = "39")]
10971    pub track_publish_success_per_sec: f32,
10972    #[prost(int32, tag = "51")]
10973    pub num_track_publish_cancels: i32,
10974    #[prost(int32, tag = "40")]
10975    pub num_track_subscribe_attempts: i32,
10976    #[deprecated]
10977    #[prost(float, tag = "41")]
10978    pub track_subscribe_attempts_per_sec: f32,
10979    #[prost(int32, tag = "42")]
10980    pub num_track_subscribe_success: i32,
10981    #[deprecated]
10982    #[prost(float, tag = "43")]
10983    pub track_subscribe_success_per_sec: f32,
10984    #[prost(int32, tag = "52")]
10985    pub num_track_subscribe_cancels: i32,
10986    /// packet
10987    #[prost(uint64, tag = "7")]
10988    pub bytes_in: u64,
10989    #[prost(uint64, tag = "8")]
10990    pub bytes_out: u64,
10991    #[prost(uint64, tag = "9")]
10992    pub packets_in: u64,
10993    #[prost(uint64, tag = "10")]
10994    pub packets_out: u64,
10995    #[prost(uint64, tag = "11")]
10996    pub nack_total: u64,
10997    #[deprecated]
10998    #[prost(float, tag = "12")]
10999    pub bytes_in_per_sec: f32,
11000    #[deprecated]
11001    #[prost(float, tag = "13")]
11002    pub bytes_out_per_sec: f32,
11003    #[prost(float, tag = "14")]
11004    pub packets_in_per_sec: f32,
11005    #[deprecated]
11006    #[prost(float, tag = "15")]
11007    pub packets_out_per_sec: f32,
11008    #[deprecated]
11009    #[prost(float, tag = "16")]
11010    pub nack_per_sec: f32,
11011    /// system
11012    #[prost(uint32, tag = "17")]
11013    pub num_cpus: u32,
11014    #[prost(float, tag = "18")]
11015    pub load_avg_last1min: f32,
11016    #[prost(float, tag = "19")]
11017    pub load_avg_last5min: f32,
11018    #[prost(float, tag = "20")]
11019    pub load_avg_last15min: f32,
11020    #[prost(float, tag = "21")]
11021    pub cpu_load: f32,
11022    #[deprecated]
11023    #[prost(float, tag = "33")]
11024    pub memory_load: f32,
11025    #[prost(uint64, tag = "34")]
11026    pub memory_total: u64,
11027    #[prost(uint64, tag = "35")]
11028    pub memory_used: u64,
11029    #[prost(uint32, tag = "28")]
11030    pub sys_packets_out: u32,
11031    #[prost(uint32, tag = "29")]
11032    pub sys_packets_dropped: u32,
11033    #[deprecated]
11034    #[prost(float, tag = "30")]
11035    pub sys_packets_out_per_sec: f32,
11036    #[deprecated]
11037    #[prost(float, tag = "31")]
11038    pub sys_packets_dropped_per_sec: f32,
11039    #[deprecated]
11040    #[prost(float, tag = "32")]
11041    pub sys_packets_dropped_pct_per_sec: f32,
11042    /// retransmissions
11043    #[prost(uint64, tag = "22")]
11044    pub retransmit_bytes_out: u64,
11045    #[prost(uint64, tag = "23")]
11046    pub retransmit_packets_out: u64,
11047    #[deprecated]
11048    #[prost(float, tag = "24")]
11049    pub retransmit_bytes_out_per_sec: f32,
11050    #[deprecated]
11051    #[prost(float, tag = "25")]
11052    pub retransmit_packets_out_per_sec: f32,
11053    /// participant joins
11054    #[prost(uint64, tag = "26")]
11055    pub participant_signal_connected: u64,
11056    #[deprecated]
11057    #[prost(float, tag = "27")]
11058    pub participant_signal_connected_per_sec: f32,
11059    #[deprecated]
11060    #[prost(uint64, tag = "55")]
11061    pub participant_signal_failed: u64,
11062    #[deprecated]
11063    #[prost(uint64, tag = "56")]
11064    pub participant_signal_validation_failed: u64,
11065    #[prost(uint64, tag = "44")]
11066    pub participant_rtc_connected: u64,
11067    #[deprecated]
11068    #[prost(float, tag = "45")]
11069    pub participant_rtc_connected_per_sec: f32,
11070    #[prost(uint64, tag = "46")]
11071    pub participant_rtc_init: u64,
11072    #[deprecated]
11073    #[prost(float, tag = "47")]
11074    pub participant_rtc_init_per_sec: f32,
11075    #[prost(uint64, tag = "53")]
11076    pub participant_rtc_canceled: u64,
11077    #[prost(uint64, tag = "54")]
11078    pub participant_rtc_active: u64,
11079    /// forward metrics
11080    #[prost(uint32, tag = "48")]
11081    pub forward_latency: u32,
11082    #[deprecated]
11083    #[prost(uint32, tag = "49")]
11084    pub forward_jitter: u32,
11085    /// mean forwarding work per write to a subscriber, in ns: (end of fan-out - dequeue) / writes
11086    #[prost(uint32, tag = "57")]
11087    pub forward_processing_per_write: u32,
11088    #[prost(message, repeated, tag = "50")]
11089    pub rates: ::prost::alloc::vec::Vec<NodeStatsRate>,
11090}
11091/// rates of different node stats (per second)
11092#[derive(Clone, Copy, PartialEq, ::prost::Message)]
11093pub struct NodeStatsRate {
11094    #[prost(int64, tag = "1")]
11095    pub started_at: i64,
11096    #[prost(int64, tag = "2")]
11097    pub ended_at: i64,
11098    #[prost(int64, tag = "3")]
11099    pub duration: i64,
11100    #[prost(float, tag = "4")]
11101    pub track_publish_attempts: f32,
11102    #[prost(float, tag = "5")]
11103    pub track_publish_success: f32,
11104    #[prost(float, tag = "24")]
11105    pub track_publish_cancels: f32,
11106    #[prost(float, tag = "6")]
11107    pub track_subscribe_attempts: f32,
11108    #[prost(float, tag = "7")]
11109    pub track_subscribe_success: f32,
11110    #[prost(float, tag = "25")]
11111    pub track_subscribe_cancels: f32,
11112    #[prost(float, tag = "8")]
11113    pub bytes_in: f32,
11114    #[prost(float, tag = "9")]
11115    pub bytes_out: f32,
11116    #[prost(float, tag = "10")]
11117    pub packets_in: f32,
11118    #[prost(float, tag = "11")]
11119    pub packets_out: f32,
11120    #[prost(float, tag = "12")]
11121    pub nack_total: f32,
11122    #[prost(float, tag = "13")]
11123    pub sys_packets_out: f32,
11124    #[prost(float, tag = "14")]
11125    pub sys_packets_dropped: f32,
11126    #[prost(float, tag = "15")]
11127    pub retransmit_bytes_out: f32,
11128    #[prost(float, tag = "16")]
11129    pub retransmit_packets_out: f32,
11130    #[prost(float, tag = "17")]
11131    pub participant_signal_connected: f32,
11132    #[prost(float, tag = "28")]
11133    pub participant_signal_failed: f32,
11134    #[prost(float, tag = "29")]
11135    pub participant_signal_validation_failed: f32,
11136    #[prost(float, tag = "18")]
11137    pub participant_rtc_connected: f32,
11138    #[prost(float, tag = "19")]
11139    pub participant_rtc_init: f32,
11140    #[prost(float, tag = "26")]
11141    pub participant_rtc_canceled: f32,
11142    #[prost(float, tag = "27")]
11143    pub participant_rtc_active: f32,
11144    /// time weighted averages across stats windows forming part of a rate measurement interval
11145    #[prost(float, tag = "20")]
11146    pub cpu_load: f32,
11147    #[prost(float, tag = "21")]
11148    pub memory_load: f32,
11149    #[prost(float, tag = "22")]
11150    pub memory_used: f32,
11151    #[prost(float, tag = "23")]
11152    pub memory_total: f32,
11153}
11154#[derive(Clone, PartialEq, ::prost::Message)]
11155pub struct StartSession {
11156    #[prost(string, tag = "1")]
11157    pub room_name: ::prost::alloc::string::String,
11158    #[prost(string, tag = "2")]
11159    pub identity: ::prost::alloc::string::String,
11160    #[prost(string, tag = "3")]
11161    pub connection_id: ::prost::alloc::string::String,
11162    /// if a client is reconnecting (i.e. resume instead of restart)
11163    #[prost(bool, tag = "4")]
11164    pub reconnect: bool,
11165    #[prost(bool, tag = "9")]
11166    pub auto_subscribe: bool,
11167    #[prost(bool, optional, tag = "25")]
11168    pub auto_subscribe_data_track: ::core::option::Option<bool>,
11169    #[deprecated]
11170    #[prost(bool, tag = "10")]
11171    pub hidden: bool,
11172    #[prost(message, optional, tag = "11")]
11173    pub client: ::core::option::Option<ClientInfo>,
11174    #[deprecated]
11175    #[prost(bool, tag = "12")]
11176    pub recorder: bool,
11177    #[prost(string, tag = "13")]
11178    pub name: ::prost::alloc::string::String,
11179    /// A user's ClaimGrants serialized in JSON
11180    #[prost(string, tag = "14")]
11181    pub grants_json: ::prost::alloc::string::String,
11182    #[prost(bool, tag = "15")]
11183    pub adaptive_stream: bool,
11184    /// if reconnect, client will set current sid
11185    #[prost(string, tag = "16")]
11186    pub participant_id: ::prost::alloc::string::String,
11187    #[prost(enumeration = "ReconnectReason", tag = "17")]
11188    pub reconnect_reason: i32,
11189    #[prost(bool, optional, tag = "18")]
11190    pub subscriber_allow_pause: ::core::option::Option<bool>,
11191    #[prost(bool, tag = "19")]
11192    pub disable_ice_lite: bool,
11193    #[prost(message, optional, tag = "20")]
11194    pub create_room: ::core::option::Option<CreateRoomRequest>,
11195    #[prost(message, repeated, tag = "21")]
11196    pub add_track_requests: ::prost::alloc::vec::Vec<AddTrackRequest>,
11197    #[prost(message, optional, tag = "22")]
11198    pub publisher_offer: ::core::option::Option<SessionDescription>,
11199    #[prost(message, optional, tag = "23")]
11200    pub sync_state: ::core::option::Option<SyncState>,
11201    #[prost(bool, tag = "24")]
11202    pub use_single_peer_connection: bool,
11203    #[prost(int64, tag = "26")]
11204    pub token_expires_at: i64,
11205    /// API key that issued the join token, for correlating sessions with the key
11206    #[prost(string, tag = "27")]
11207    pub api_key: ::prost::alloc::string::String,
11208}
11209/// room info that should not be returned to clients
11210#[derive(Clone, PartialEq, ::prost::Message)]
11211pub struct RoomInternal {
11212    #[prost(message, optional, tag = "1")]
11213    pub track_egress: ::core::option::Option<AutoTrackEgress>,
11214    #[prost(message, optional, tag = "2")]
11215    pub participant_egress: ::core::option::Option<AutoParticipantEgress>,
11216    #[prost(message, optional, tag = "3")]
11217    pub playout_delay: ::core::option::Option<PlayoutDelay>,
11218    #[prost(message, repeated, tag = "5")]
11219    pub agent_dispatches: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
11220    #[prost(bool, tag = "4")]
11221    pub sync_streams: bool,
11222    #[prost(bool, tag = "6")]
11223    pub replay_enabled: bool,
11224    #[prost(bool, tag = "7")]
11225    pub export_room: bool,
11226    #[prost(map = "string, string", tag = "8")]
11227    pub tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
11228}
11229#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11230pub struct IceConfig {
11231    #[prost(enumeration = "IceCandidateType", tag = "1")]
11232    pub preference_subscriber: i32,
11233    #[prost(enumeration = "IceCandidateType", tag = "2")]
11234    pub preference_publisher: i32,
11235}
11236#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11237#[repr(i32)]
11238pub enum NodeType {
11239    Server = 0,
11240    Controller = 1,
11241    Media = 2,
11242    Turn = 4,
11243    Sweeper = 5,
11244    Director = 6,
11245    HostedAgent = 7,
11246    Settings = 8,
11247}
11248impl NodeType {
11249    /// String value of the enum field names used in the ProtoBuf definition.
11250    ///
11251    /// The values are not transformed in any way and thus are considered stable
11252    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11253    pub fn as_str_name(&self) -> &'static str {
11254        match self {
11255            Self::Server => "SERVER",
11256            Self::Controller => "CONTROLLER",
11257            Self::Media => "MEDIA",
11258            Self::Turn => "TURN",
11259            Self::Sweeper => "SWEEPER",
11260            Self::Director => "DIRECTOR",
11261            Self::HostedAgent => "HOSTED_AGENT",
11262            Self::Settings => "SETTINGS",
11263        }
11264    }
11265    /// Creates an enum from field names used in the ProtoBuf definition.
11266    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11267        match value {
11268            "SERVER" => Some(Self::Server),
11269            "CONTROLLER" => Some(Self::Controller),
11270            "MEDIA" => Some(Self::Media),
11271            "TURN" => Some(Self::Turn),
11272            "SWEEPER" => Some(Self::Sweeper),
11273            "DIRECTOR" => Some(Self::Director),
11274            "HOSTED_AGENT" => Some(Self::HostedAgent),
11275            "SETTINGS" => Some(Self::Settings),
11276            _ => None,
11277        }
11278    }
11279}
11280#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11281#[repr(i32)]
11282pub enum NodeState {
11283    StartingUp = 0,
11284    Serving = 1,
11285    ShuttingDown = 2,
11286    Suspended = 3,
11287}
11288impl NodeState {
11289    /// String value of the enum field names used in the ProtoBuf definition.
11290    ///
11291    /// The values are not transformed in any way and thus are considered stable
11292    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11293    pub fn as_str_name(&self) -> &'static str {
11294        match self {
11295            Self::StartingUp => "STARTING_UP",
11296            Self::Serving => "SERVING",
11297            Self::ShuttingDown => "SHUTTING_DOWN",
11298            Self::Suspended => "SUSPENDED",
11299        }
11300    }
11301    /// Creates an enum from field names used in the ProtoBuf definition.
11302    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11303        match value {
11304            "STARTING_UP" => Some(Self::StartingUp),
11305            "SERVING" => Some(Self::Serving),
11306            "SHUTTING_DOWN" => Some(Self::ShuttingDown),
11307            "SUSPENDED" => Some(Self::Suspended),
11308            _ => None,
11309        }
11310    }
11311}
11312#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11313#[repr(i32)]
11314pub enum IceCandidateType {
11315    IctNone = 0,
11316    IctTcp = 1,
11317    IctTls = 2,
11318}
11319impl IceCandidateType {
11320    /// String value of the enum field names used in the ProtoBuf definition.
11321    ///
11322    /// The values are not transformed in any way and thus are considered stable
11323    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11324    pub fn as_str_name(&self) -> &'static str {
11325        match self {
11326            Self::IctNone => "ICT_NONE",
11327            Self::IctTcp => "ICT_TCP",
11328            Self::IctTls => "ICT_TLS",
11329        }
11330    }
11331    /// Creates an enum from field names used in the ProtoBuf definition.
11332    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11333        match value {
11334            "ICT_NONE" => Some(Self::IctNone),
11335            "ICT_TCP" => Some(Self::IctTcp),
11336            "ICT_TLS" => Some(Self::IctTls),
11337            _ => None,
11338        }
11339    }
11340}
11341/// SearchPhoneNumbersRequest - Request to search available phone numbers
11342#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11343pub struct SearchPhoneNumbersRequest {
11344    /// Filter by country code (e.g., "US", "CA")
11345    #[prost(string, tag = "1")]
11346    pub country_code: ::prost::alloc::string::String,
11347    /// Filter by area code (e.g., "415")
11348    #[prost(string, optional, tag = "2")]
11349    pub area_code: ::core::option::Option<::prost::alloc::string::String>,
11350    /// Maximum number of results (default: 50)
11351    #[prost(int32, optional, tag = "3")]
11352    pub limit: ::core::option::Option<i32>,
11353    /// Token for pagination (empty for first page)
11354    #[prost(message, optional, tag = "4")]
11355    pub page_token: ::core::option::Option<TokenPagination>,
11356}
11357/// SearchPhoneNumbersResponse - Response containing available phone numbers
11358#[derive(Clone, PartialEq, ::prost::Message)]
11359pub struct SearchPhoneNumbersResponse {
11360    /// List of available phone numbers
11361    #[prost(message, repeated, tag = "1")]
11362    pub items: ::prost::alloc::vec::Vec<PhoneNumber>,
11363    /// Token for next page (empty if no more pages)
11364    #[prost(message, optional, tag = "2")]
11365    pub next_page_token: ::core::option::Option<TokenPagination>,
11366}
11367/// PurchasePhoneNumberRequest - Request to purchase phone numbers
11368#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11369pub struct PurchasePhoneNumberRequest {
11370    /// Phone numbers to purchase (e.g., \["+1234567890", "+1234567891"\])
11371    #[prost(string, repeated, tag = "1")]
11372    pub phone_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11373    /// SIP dispatch rule ID to apply to all purchased numbers
11374    #[prost(string, optional, tag = "2")]
11375    pub sip_dispatch_rule_id: ::core::option::Option<::prost::alloc::string::String>,
11376}
11377/// PurchasePhoneNumberResponse - Response containing the purchased phone numbers
11378#[derive(Clone, PartialEq, ::prost::Message)]
11379pub struct PurchasePhoneNumberResponse {
11380    /// Details of the purchased phone numbers
11381    #[prost(message, repeated, tag = "1")]
11382    pub phone_numbers: ::prost::alloc::vec::Vec<PhoneNumber>,
11383}
11384/// ListPhoneNumbersRequest - Request to list phone numbers
11385#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11386pub struct ListPhoneNumbersRequest {
11387    /// Maximum number of results (default: 50)
11388    #[prost(int32, optional, tag = "1")]
11389    pub limit: ::core::option::Option<i32>,
11390    /// Filter by statuses (active, pending, released)
11391    #[prost(enumeration = "PhoneNumberStatus", repeated, tag = "2")]
11392    pub statuses: ::prost::alloc::vec::Vec<i32>,
11393    /// Token for pagination (empty for first page)
11394    #[prost(message, optional, tag = "3")]
11395    pub page_token: ::core::option::Option<TokenPagination>,
11396    /// Filter by SIP dispatch rule ID
11397    #[prost(string, optional, tag = "4")]
11398    pub sip_dispatch_rule_id: ::core::option::Option<::prost::alloc::string::String>,
11399}
11400/// ListPhoneNumbersResponse - Response containing phone numbers
11401#[derive(Clone, PartialEq, ::prost::Message)]
11402pub struct ListPhoneNumbersResponse {
11403    /// List of phone numbers
11404    #[prost(message, repeated, tag = "1")]
11405    pub items: ::prost::alloc::vec::Vec<PhoneNumber>,
11406    /// Token for next page (empty if no more pages)
11407    #[prost(message, optional, tag = "2")]
11408    pub next_page_token: ::core::option::Option<TokenPagination>,
11409    /// Total number of phone numbers
11410    #[prost(int32, tag = "3")]
11411    pub total_count: i32,
11412    /// Total number of offline phone numbers
11413    #[prost(int32, tag = "4")]
11414    pub offline_count: i32,
11415}
11416/// GetPhoneNumberRequest - Request to get a phone number
11417#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11418pub struct GetPhoneNumberRequest {
11419    /// Use phone number ID for direct lookup
11420    #[prost(string, optional, tag = "1")]
11421    pub id: ::core::option::Option<::prost::alloc::string::String>,
11422    /// Use phone number string for lookup
11423    #[prost(string, optional, tag = "2")]
11424    pub phone_number: ::core::option::Option<::prost::alloc::string::String>,
11425}
11426/// GetPhoneNumberResponse - Response containing the phone number
11427#[derive(Clone, PartialEq, ::prost::Message)]
11428pub struct GetPhoneNumberResponse {
11429    /// The phone number details
11430    #[prost(message, optional, tag = "1")]
11431    pub phone_number: ::core::option::Option<PhoneNumber>,
11432}
11433/// UpdatePhoneNumberRequest - Request to update a phone number
11434#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11435pub struct UpdatePhoneNumberRequest {
11436    /// Use phone number ID for direct lookup
11437    #[prost(string, optional, tag = "1")]
11438    pub id: ::core::option::Option<::prost::alloc::string::String>,
11439    /// Use phone number string for lookup
11440    #[prost(string, optional, tag = "2")]
11441    pub phone_number: ::core::option::Option<::prost::alloc::string::String>,
11442    /// SIP dispatch rule ID to assign to the phone number
11443    #[prost(string, optional, tag = "3")]
11444    pub sip_dispatch_rule_id: ::core::option::Option<::prost::alloc::string::String>,
11445    #[prost(string, optional, tag = "4")]
11446    pub name: ::core::option::Option<::prost::alloc::string::String>,
11447}
11448/// UpdatePhoneNumberResponse - Response containing the updated phone number
11449#[derive(Clone, PartialEq, ::prost::Message)]
11450pub struct UpdatePhoneNumberResponse {
11451    /// The updated phone number details
11452    #[prost(message, optional, tag = "1")]
11453    pub phone_number: ::core::option::Option<PhoneNumber>,
11454}
11455/// ReleasePhoneNumbersRequest - Request to release phone numbers
11456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11457pub struct ReleasePhoneNumbersRequest {
11458    /// Use phone number IDs for direct lookup
11459    #[prost(string, repeated, tag = "1")]
11460    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11461    /// Use phone number strings for lookup
11462    #[prost(string, repeated, tag = "2")]
11463    pub phone_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11464}
11465/// ReleasePhoneNumbersResponse - Response for releasing phone numbers
11466///
11467/// Empty response - operation completed successfully
11468#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11469pub struct ReleasePhoneNumbersResponse {
11470}
11471/// PhoneNumber - Unified phone number type for inventory and purchased numbers
11472#[derive(Clone, PartialEq, ::prost::Message)]
11473pub struct PhoneNumber {
11474    /// Unique identifier
11475    #[prost(string, tag = "1")]
11476    pub id: ::prost::alloc::string::String,
11477    /// Human-readable name/label for the phone number
11478    #[prost(string, tag = "17")]
11479    pub name: ::prost::alloc::string::String,
11480    /// Phone number in E.164 format (e.g., "+14155552671")
11481    #[prost(string, tag = "2")]
11482    pub e164_format: ::prost::alloc::string::String,
11483    /// Country code (e.g., "US")
11484    #[prost(string, tag = "3")]
11485    pub country_code: ::prost::alloc::string::String,
11486    /// Area code (e.g., "415")
11487    #[prost(string, tag = "4")]
11488    pub area_code: ::prost::alloc::string::String,
11489    /// Number type (mobile, local, toll-free, unknown)
11490    #[prost(enumeration = "PhoneNumberType", tag = "5")]
11491    pub number_type: i32,
11492    /// City/locality (e.g., "San Francisco")
11493    #[prost(string, tag = "6")]
11494    pub locality: ::prost::alloc::string::String,
11495    /// State/region (e.g., "CA")
11496    #[prost(string, tag = "7")]
11497    pub region: ::prost::alloc::string::String,
11498    /// Spam score for fraud detection
11499    #[prost(double, tag = "8")]
11500    pub spam_score: f64,
11501    /// Creation timestamp
11502    #[prost(message, optional, tag = "9")]
11503    pub created_at: ::core::option::Option<::pbjson_types::Timestamp>,
11504    /// Last update timestamp
11505    #[prost(message, optional, tag = "10")]
11506    pub updated_at: ::core::option::Option<::pbjson_types::Timestamp>,
11507    /// Available capabilities (e.g., "voice", "sms")
11508    #[prost(string, repeated, tag = "11")]
11509    pub capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11510    /// Current status
11511    #[prost(enumeration = "PhoneNumberStatus", tag = "12")]
11512    pub status: i32,
11513    /// Inbound calling status
11514    #[prost(enumeration = "PhoneNumberInboundStatus", tag = "18")]
11515    pub inbound_status: i32,
11516    /// Outbound calling status
11517    #[prost(enumeration = "PhoneNumberOutboundStatus", tag = "19")]
11518    pub outbound_status: i32,
11519    /// Assignment timestamp
11520    #[prost(message, optional, tag = "13")]
11521    pub assigned_at: ::core::option::Option<::pbjson_types::Timestamp>,
11522    /// Release timestamp (if applicable)
11523    #[prost(message, optional, tag = "14")]
11524    pub released_at: ::core::option::Option<::pbjson_types::Timestamp>,
11525    /// Associated SIP dispatch rule ID (deprecated: use sip_dispatch_rule_ids instead)
11526    #[deprecated]
11527    #[prost(string, tag = "15")]
11528    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
11529    /// Associated SIP dispatch rule IDs
11530    #[prost(string, repeated, tag = "16")]
11531    pub sip_dispatch_rule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11532}
11533/// Phone number status enumeration
11534#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11535#[repr(i32)]
11536pub enum PhoneNumberStatus {
11537    /// Default value
11538    Unspecified = 0,
11539    /// Number is active and ready for use
11540    Active = 1,
11541    /// Number is being provisioned
11542    Pending = 2,
11543    /// Number has been released
11544    Released = 3,
11545    /// Number is offline (provider is unreachable)
11546    Offline = 4,
11547}
11548impl PhoneNumberStatus {
11549    /// String value of the enum field names used in the ProtoBuf definition.
11550    ///
11551    /// The values are not transformed in any way and thus are considered stable
11552    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11553    pub fn as_str_name(&self) -> &'static str {
11554        match self {
11555            Self::Unspecified => "PHONE_NUMBER_STATUS_UNSPECIFIED",
11556            Self::Active => "PHONE_NUMBER_STATUS_ACTIVE",
11557            Self::Pending => "PHONE_NUMBER_STATUS_PENDING",
11558            Self::Released => "PHONE_NUMBER_STATUS_RELEASED",
11559            Self::Offline => "PHONE_NUMBER_STATUS_OFFLINE",
11560        }
11561    }
11562    /// Creates an enum from field names used in the ProtoBuf definition.
11563    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11564        match value {
11565            "PHONE_NUMBER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
11566            "PHONE_NUMBER_STATUS_ACTIVE" => Some(Self::Active),
11567            "PHONE_NUMBER_STATUS_PENDING" => Some(Self::Pending),
11568            "PHONE_NUMBER_STATUS_RELEASED" => Some(Self::Released),
11569            "PHONE_NUMBER_STATUS_OFFLINE" => Some(Self::Offline),
11570            _ => None,
11571        }
11572    }
11573}
11574#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11575#[repr(i32)]
11576pub enum PhoneNumberInboundStatus {
11577    /// Default value
11578    PhoneNumberInStatusUnspecified = 0,
11579    /// Number is serving inbound calls
11580    PhoneNumberInStatusActive = 1,
11581    /// Inbound calling is unavailable
11582    PhoneNumberInStatusUnavailable = 2,
11583    /// Number is not serving calls (not associated with dispatch rules)
11584    PhoneNumberInStatusDetached = 3,
11585}
11586impl PhoneNumberInboundStatus {
11587    /// String value of the enum field names used in the ProtoBuf definition.
11588    ///
11589    /// The values are not transformed in any way and thus are considered stable
11590    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11591    pub fn as_str_name(&self) -> &'static str {
11592        match self {
11593            Self::PhoneNumberInStatusUnspecified => "PHONE_NUMBER_IN_STATUS_UNSPECIFIED",
11594            Self::PhoneNumberInStatusActive => "PHONE_NUMBER_IN_STATUS_ACTIVE",
11595            Self::PhoneNumberInStatusUnavailable => "PHONE_NUMBER_IN_STATUS_UNAVAILABLE",
11596            Self::PhoneNumberInStatusDetached => "PHONE_NUMBER_IN_STATUS_DETACHED",
11597        }
11598    }
11599    /// Creates an enum from field names used in the ProtoBuf definition.
11600    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11601        match value {
11602            "PHONE_NUMBER_IN_STATUS_UNSPECIFIED" => Some(Self::PhoneNumberInStatusUnspecified),
11603            "PHONE_NUMBER_IN_STATUS_ACTIVE" => Some(Self::PhoneNumberInStatusActive),
11604            "PHONE_NUMBER_IN_STATUS_UNAVAILABLE" => Some(Self::PhoneNumberInStatusUnavailable),
11605            "PHONE_NUMBER_IN_STATUS_DETACHED" => Some(Self::PhoneNumberInStatusDetached),
11606            _ => None,
11607        }
11608    }
11609}
11610#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11611#[repr(i32)]
11612pub enum PhoneNumberOutboundStatus {
11613    /// Default value
11614    PhoneNumberOutStatusUnspecified = 0,
11615    /// Number is can be used to initiate outbound calls
11616    PhoneNumberOutStatusActive = 1,
11617    /// Outbound calling is unavailable
11618    PhoneNumberOutStatusUnavailable = 2,
11619}
11620impl PhoneNumberOutboundStatus {
11621    /// String value of the enum field names used in the ProtoBuf definition.
11622    ///
11623    /// The values are not transformed in any way and thus are considered stable
11624    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11625    pub fn as_str_name(&self) -> &'static str {
11626        match self {
11627            Self::PhoneNumberOutStatusUnspecified => "PHONE_NUMBER_OUT_STATUS_UNSPECIFIED",
11628            Self::PhoneNumberOutStatusActive => "PHONE_NUMBER_OUT_STATUS_ACTIVE",
11629            Self::PhoneNumberOutStatusUnavailable => "PHONE_NUMBER_OUT_STATUS_UNAVAILABLE",
11630        }
11631    }
11632    /// Creates an enum from field names used in the ProtoBuf definition.
11633    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11634        match value {
11635            "PHONE_NUMBER_OUT_STATUS_UNSPECIFIED" => Some(Self::PhoneNumberOutStatusUnspecified),
11636            "PHONE_NUMBER_OUT_STATUS_ACTIVE" => Some(Self::PhoneNumberOutStatusActive),
11637            "PHONE_NUMBER_OUT_STATUS_UNAVAILABLE" => Some(Self::PhoneNumberOutStatusUnavailable),
11638            _ => None,
11639        }
11640    }
11641}
11642/// Phone number type enumeration
11643#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11644#[repr(i32)]
11645pub enum PhoneNumberType {
11646    /// Default value - unknown or parsing error
11647    Unknown = 0,
11648    /// Mobile phone number
11649    Mobile = 1,
11650    /// Local/fixed line number
11651    Local = 2,
11652    /// Toll-free number
11653    TollFree = 3,
11654}
11655impl PhoneNumberType {
11656    /// String value of the enum field names used in the ProtoBuf definition.
11657    ///
11658    /// The values are not transformed in any way and thus are considered stable
11659    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11660    pub fn as_str_name(&self) -> &'static str {
11661        match self {
11662            Self::Unknown => "PHONE_NUMBER_TYPE_UNKNOWN",
11663            Self::Mobile => "PHONE_NUMBER_TYPE_MOBILE",
11664            Self::Local => "PHONE_NUMBER_TYPE_LOCAL",
11665            Self::TollFree => "PHONE_NUMBER_TYPE_TOLL_FREE",
11666        }
11667    }
11668    /// Creates an enum from field names used in the ProtoBuf definition.
11669    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11670        match value {
11671            "PHONE_NUMBER_TYPE_UNKNOWN" => Some(Self::Unknown),
11672            "PHONE_NUMBER_TYPE_MOBILE" => Some(Self::Mobile),
11673            "PHONE_NUMBER_TYPE_LOCAL" => Some(Self::Local),
11674            "PHONE_NUMBER_TYPE_TOLL_FREE" => Some(Self::TollFree),
11675            _ => None,
11676        }
11677    }
11678}
11679#[derive(Clone, PartialEq, ::prost::Message)]
11680pub struct TokenSourceRequest {
11681    /// The name of the room being requested when generating credentials
11682    #[prost(string, optional, tag = "1")]
11683    pub room_name: ::core::option::Option<::prost::alloc::string::String>,
11684    /// The name of the participant being requested for this client when generating credentials
11685    #[prost(string, optional, tag = "2")]
11686    pub participant_name: ::core::option::Option<::prost::alloc::string::String>,
11687    /// The identity of the participant being requested for this client when generating credentials
11688    #[prost(string, optional, tag = "3")]
11689    pub participant_identity: ::core::option::Option<::prost::alloc::string::String>,
11690    /// Any participant metadata being included along with the credentials generation operation
11691    #[prost(string, optional, tag = "4")]
11692    pub participant_metadata: ::core::option::Option<::prost::alloc::string::String>,
11693    /// Any participant attributes being included along with the credentials generation operation
11694    #[prost(map = "string, string", tag = "5")]
11695    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
11696    /// A RoomConfiguration object can be passed to request extra parameters should be included when
11697    /// generating connection credentials - dispatching agents, defining egress settings, etc
11698    /// More info: <https://docs.livekit.io/home/get-started/authentication/#room-configuration>
11699    #[prost(message, optional, tag = "6")]
11700    pub room_config: ::core::option::Option<RoomConfiguration>,
11701}
11702#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11703pub struct TokenSourceResponse {
11704    #[prost(string, tag = "1")]
11705    pub server_url: ::prost::alloc::string::String,
11706    #[prost(string, tag = "2")]
11707    pub participant_token: ::prost::alloc::string::String,
11708}
11709#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11710pub struct GetRemoteHeadersV1Request {
11711    /// list of headers to include
11712    #[prost(string, repeated, tag = "1")]
11713    pub include: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11714    /// list of headers to exclude
11715    #[prost(string, repeated, tag = "2")]
11716    pub exclude: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11717}
11718#[derive(Clone, PartialEq, ::prost::Message)]
11719pub struct GetRemoteHeadersV1Response {
11720    #[prost(map = "string, string", tag = "1")]
11721    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
11722}
11723#[derive(Clone, PartialEq, ::prost::Message)]
11724pub struct EndCallV1Request {
11725    #[prost(map = "string, string", tag = "1")]
11726    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
11727}
11728#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11729pub struct EndCallV1Response {
11730}
11731include!("livekit.serde.rs");
11732// @@protoc_insertion_point(module)