Skip to main content

nominal_api_proto/proto/
nominal.ingest.v2.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct IngestSource {
4    #[prost(oneof = "ingest_source::Source", tags = "1, 2, 3, 4")]
5    pub source: ::core::option::Option<ingest_source::Source>,
6}
7/// Nested message and enum types in `IngestSource`.
8pub mod ingest_source {
9    #[derive(Clone, PartialEq, ::prost::Oneof)]
10    pub enum Source {
11        #[prost(message, tag = "1")]
12        S3(super::S3IngestSource),
13        #[prost(message, tag = "2")]
14        Gcs(super::GcsIngestSource),
15        #[prost(message, tag = "3")]
16        PresignedFile(super::PresignedFileIngestSource),
17        #[prost(message, tag = "4")]
18        FileStore(super::FileStoreIngestSource),
19    }
20}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct S3IngestSource {
23    #[prost(string, tag = "1")]
24    pub path: ::prost::alloc::string::String,
25}
26#[derive(Clone, PartialEq, ::prost::Message)]
27pub struct GcsIngestSource {
28    #[prost(string, tag = "1")]
29    pub path: ::prost::alloc::string::String,
30}
31#[derive(Clone, PartialEq, ::prost::Message)]
32pub struct PresignedFileIngestSource {
33    #[prost(string, tag = "1")]
34    pub url: ::prost::alloc::string::String,
35}
36#[derive(Clone, PartialEq, ::prost::Message)]
37pub struct FileStoreIngestSource {
38    #[prost(string, tag = "1")]
39    pub file_revision_rid: ::prost::alloc::string::String,
40}
41#[derive(Clone, PartialEq, ::prost::Message)]
42pub struct TimestampMetadata {
43    #[prost(string, tag = "1")]
44    pub column: ::prost::alloc::string::String,
45    #[prost(message, optional, tag = "2")]
46    pub r#type: ::core::option::Option<super::super::types::time::TimestampType>,
47}
48#[derive(Clone, PartialEq, ::prost::Message)]
49pub struct ContainerizedExtractor {
50    #[prost(string, tag = "1")]
51    pub rid: ::prost::alloc::string::String,
52    #[prost(string, tag = "2")]
53    pub workspace_rid: ::prost::alloc::string::String,
54    #[prost(string, tag = "3")]
55    pub name: ::prost::alloc::string::String,
56    #[prost(string, optional, tag = "4")]
57    pub description: ::core::option::Option<::prost::alloc::string::String>,
58    #[prost(message, optional, tag = "5")]
59    pub created_at: ::core::option::Option<
60        super::super::super::google::protobuf::Timestamp,
61    >,
62    #[prost(bool, tag = "6")]
63    pub is_archived: bool,
64    #[prost(message, optional, tag = "7")]
65    pub active_container_image: ::core::option::Option<
66        super::super::registry::v2::ContainerImage,
67    >,
68    #[prost(enumeration = "ExtractorOrigin", tag = "8")]
69    pub origin: i32,
70    #[prost(string, optional, tag = "9")]
71    pub catalog_id: ::core::option::Option<::prost::alloc::string::String>,
72    #[prost(map = "string, string", tag = "10")]
73    pub properties: ::std::collections::HashMap<
74        ::prost::alloc::string::String,
75        ::prost::alloc::string::String,
76    >,
77    #[prost(string, repeated, tag = "11")]
78    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
79}
80#[derive(Clone, PartialEq, ::prost::Message)]
81pub struct CreateContainerizedExtractorRequest {
82    #[prost(string, tag = "1")]
83    pub workspace_rid: ::prost::alloc::string::String,
84    #[prost(string, tag = "2")]
85    pub name: ::prost::alloc::string::String,
86    #[prost(string, optional, tag = "3")]
87    pub description: ::core::option::Option<::prost::alloc::string::String>,
88    #[prost(map = "string, string", tag = "4")]
89    pub properties: ::std::collections::HashMap<
90        ::prost::alloc::string::String,
91        ::prost::alloc::string::String,
92    >,
93    #[prost(string, repeated, tag = "5")]
94    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
95}
96#[derive(Clone, PartialEq, ::prost::Message)]
97pub struct CreateContainerizedExtractorResponse {
98    #[prost(message, optional, tag = "1")]
99    pub extractor: ::core::option::Option<ContainerizedExtractor>,
100}
101#[derive(Clone, PartialEq, ::prost::Message)]
102pub struct GetContainerizedExtractorRequest {
103    #[prost(string, tag = "1")]
104    pub rid: ::prost::alloc::string::String,
105    #[prost(string, tag = "2")]
106    pub workspace_rid: ::prost::alloc::string::String,
107}
108#[derive(Clone, PartialEq, ::prost::Message)]
109pub struct GetContainerizedExtractorResponse {
110    #[prost(message, optional, tag = "1")]
111    pub extractor: ::core::option::Option<ContainerizedExtractor>,
112}
113#[derive(Clone, PartialEq, ::prost::Message)]
114pub struct UpdateContainerizedExtractorRequest {
115    #[prost(string, tag = "1")]
116    pub rid: ::prost::alloc::string::String,
117    #[prost(string, tag = "2")]
118    pub workspace_rid: ::prost::alloc::string::String,
119    #[prost(string, optional, tag = "3")]
120    pub name: ::core::option::Option<::prost::alloc::string::String>,
121    #[prost(string, optional, tag = "4")]
122    pub description: ::core::option::Option<::prost::alloc::string::String>,
123    #[prost(bool, optional, tag = "5")]
124    pub is_archived: ::core::option::Option<bool>,
125    #[prost(string, optional, tag = "6")]
126    pub active_container_image_rid: ::core::option::Option<
127        ::prost::alloc::string::String,
128    >,
129    #[prost(message, optional, tag = "7")]
130    pub properties: ::core::option::Option<super::super::types::PropertyUpdateWrapper>,
131    #[prost(message, optional, tag = "8")]
132    pub labels: ::core::option::Option<super::super::types::LabelUpdateWrapper>,
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct UpdateContainerizedExtractorResponse {
136    #[prost(message, optional, tag = "1")]
137    pub extractor: ::core::option::Option<ContainerizedExtractor>,
138}
139#[derive(Clone, PartialEq, ::prost::Message)]
140pub struct ArchiveContainerizedExtractorRequest {
141    #[prost(string, tag = "1")]
142    pub rid: ::prost::alloc::string::String,
143    #[prost(string, tag = "2")]
144    pub workspace_rid: ::prost::alloc::string::String,
145}
146#[derive(Clone, Copy, PartialEq, ::prost::Message)]
147pub struct ArchiveContainerizedExtractorResponse {}
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct SearchContainerizedExtractorsRequest {
150    #[prost(string, tag = "1")]
151    pub workspace_rid: ::prost::alloc::string::String,
152    #[prost(bool, tag = "2")]
153    pub include_archived: bool,
154    #[prost(int32, tag = "3")]
155    pub page_size: i32,
156    #[prost(string, optional, tag = "4")]
157    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
158    #[prost(string, optional, tag = "5")]
159    pub file_extension: ::core::option::Option<::prost::alloc::string::String>,
160    #[prost(map = "string, string", tag = "6")]
161    pub properties: ::std::collections::HashMap<
162        ::prost::alloc::string::String,
163        ::prost::alloc::string::String,
164    >,
165    #[prost(string, repeated, tag = "7")]
166    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
167}
168#[derive(Clone, PartialEq, ::prost::Message)]
169pub struct SearchContainerizedExtractorsResponse {
170    #[prost(message, repeated, tag = "1")]
171    pub extractors: ::prost::alloc::vec::Vec<ContainerizedExtractor>,
172    #[prost(string, optional, tag = "2")]
173    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
174}
175#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
176#[repr(i32)]
177pub enum ExtractorOrigin {
178    Unspecified = 0,
179    Customer = 1,
180    FirstParty = 2,
181}
182impl ExtractorOrigin {
183    /// String value of the enum field names used in the ProtoBuf definition.
184    ///
185    /// The values are not transformed in any way and thus are considered stable
186    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
187    pub fn as_str_name(&self) -> &'static str {
188        match self {
189            Self::Unspecified => "EXTRACTOR_ORIGIN_UNSPECIFIED",
190            Self::Customer => "EXTRACTOR_ORIGIN_CUSTOMER",
191            Self::FirstParty => "EXTRACTOR_ORIGIN_FIRST_PARTY",
192        }
193    }
194    /// Creates an enum from field names used in the ProtoBuf definition.
195    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
196        match value {
197            "EXTRACTOR_ORIGIN_UNSPECIFIED" => Some(Self::Unspecified),
198            "EXTRACTOR_ORIGIN_CUSTOMER" => Some(Self::Customer),
199            "EXTRACTOR_ORIGIN_FIRST_PARTY" => Some(Self::FirstParty),
200            _ => None,
201        }
202    }
203}
204/// Generated client implementations.
205pub mod containerized_extractor_service_client {
206    #![allow(
207        unused_variables,
208        dead_code,
209        missing_docs,
210        clippy::wildcard_imports,
211        clippy::let_unit_value,
212    )]
213    use tonic::codegen::*;
214    use tonic::codegen::http::Uri;
215    #[derive(Debug, Clone)]
216    pub struct ContainerizedExtractorServiceClient<T> {
217        inner: tonic::client::Grpc<T>,
218    }
219    impl ContainerizedExtractorServiceClient<tonic::transport::Channel> {
220        /// Attempt to create a new client by connecting to a given endpoint.
221        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
222        where
223            D: TryInto<tonic::transport::Endpoint>,
224            D::Error: Into<StdError>,
225        {
226            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
227            Ok(Self::new(conn))
228        }
229    }
230    impl<T> ContainerizedExtractorServiceClient<T>
231    where
232        T: tonic::client::GrpcService<tonic::body::Body>,
233        T::Error: Into<StdError>,
234        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
235        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
236    {
237        pub fn new(inner: T) -> Self {
238            let inner = tonic::client::Grpc::new(inner);
239            Self { inner }
240        }
241        pub fn with_origin(inner: T, origin: Uri) -> Self {
242            let inner = tonic::client::Grpc::with_origin(inner, origin);
243            Self { inner }
244        }
245        pub fn with_interceptor<F>(
246            inner: T,
247            interceptor: F,
248        ) -> ContainerizedExtractorServiceClient<InterceptedService<T, F>>
249        where
250            F: tonic::service::Interceptor,
251            T::ResponseBody: Default,
252            T: tonic::codegen::Service<
253                http::Request<tonic::body::Body>,
254                Response = http::Response<
255                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
256                >,
257            >,
258            <T as tonic::codegen::Service<
259                http::Request<tonic::body::Body>,
260            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
261        {
262            ContainerizedExtractorServiceClient::new(
263                InterceptedService::new(inner, interceptor),
264            )
265        }
266        /// Compress requests with the given encoding.
267        ///
268        /// This requires the server to support it otherwise it might respond with an
269        /// error.
270        #[must_use]
271        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
272            self.inner = self.inner.send_compressed(encoding);
273            self
274        }
275        /// Enable decompressing responses.
276        #[must_use]
277        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
278            self.inner = self.inner.accept_compressed(encoding);
279            self
280        }
281        /// Limits the maximum size of a decoded message.
282        ///
283        /// Default: `4MB`
284        #[must_use]
285        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
286            self.inner = self.inner.max_decoding_message_size(limit);
287            self
288        }
289        /// Limits the maximum size of an encoded message.
290        ///
291        /// Default: `usize::MAX`
292        #[must_use]
293        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
294            self.inner = self.inner.max_encoding_message_size(limit);
295            self
296        }
297        pub async fn create_containerized_extractor(
298            &mut self,
299            request: impl tonic::IntoRequest<super::CreateContainerizedExtractorRequest>,
300        ) -> std::result::Result<
301            tonic::Response<super::CreateContainerizedExtractorResponse>,
302            tonic::Status,
303        > {
304            self.inner
305                .ready()
306                .await
307                .map_err(|e| {
308                    tonic::Status::unknown(
309                        format!("Service was not ready: {}", e.into()),
310                    )
311                })?;
312            let codec = tonic::codec::ProstCodec::default();
313            let path = http::uri::PathAndQuery::from_static(
314                "/nominal.ingest.v2.ContainerizedExtractorService/CreateContainerizedExtractor",
315            );
316            let mut req = request.into_request();
317            req.extensions_mut()
318                .insert(
319                    GrpcMethod::new(
320                        "nominal.ingest.v2.ContainerizedExtractorService",
321                        "CreateContainerizedExtractor",
322                    ),
323                );
324            self.inner.unary(req, path, codec).await
325        }
326        pub async fn get_containerized_extractor(
327            &mut self,
328            request: impl tonic::IntoRequest<super::GetContainerizedExtractorRequest>,
329        ) -> std::result::Result<
330            tonic::Response<super::GetContainerizedExtractorResponse>,
331            tonic::Status,
332        > {
333            self.inner
334                .ready()
335                .await
336                .map_err(|e| {
337                    tonic::Status::unknown(
338                        format!("Service was not ready: {}", e.into()),
339                    )
340                })?;
341            let codec = tonic::codec::ProstCodec::default();
342            let path = http::uri::PathAndQuery::from_static(
343                "/nominal.ingest.v2.ContainerizedExtractorService/GetContainerizedExtractor",
344            );
345            let mut req = request.into_request();
346            req.extensions_mut()
347                .insert(
348                    GrpcMethod::new(
349                        "nominal.ingest.v2.ContainerizedExtractorService",
350                        "GetContainerizedExtractor",
351                    ),
352                );
353            self.inner.unary(req, path, codec).await
354        }
355        pub async fn update_containerized_extractor(
356            &mut self,
357            request: impl tonic::IntoRequest<super::UpdateContainerizedExtractorRequest>,
358        ) -> std::result::Result<
359            tonic::Response<super::UpdateContainerizedExtractorResponse>,
360            tonic::Status,
361        > {
362            self.inner
363                .ready()
364                .await
365                .map_err(|e| {
366                    tonic::Status::unknown(
367                        format!("Service was not ready: {}", e.into()),
368                    )
369                })?;
370            let codec = tonic::codec::ProstCodec::default();
371            let path = http::uri::PathAndQuery::from_static(
372                "/nominal.ingest.v2.ContainerizedExtractorService/UpdateContainerizedExtractor",
373            );
374            let mut req = request.into_request();
375            req.extensions_mut()
376                .insert(
377                    GrpcMethod::new(
378                        "nominal.ingest.v2.ContainerizedExtractorService",
379                        "UpdateContainerizedExtractor",
380                    ),
381                );
382            self.inner.unary(req, path, codec).await
383        }
384        pub async fn archive_containerized_extractor(
385            &mut self,
386            request: impl tonic::IntoRequest<super::ArchiveContainerizedExtractorRequest>,
387        ) -> std::result::Result<
388            tonic::Response<super::ArchiveContainerizedExtractorResponse>,
389            tonic::Status,
390        > {
391            self.inner
392                .ready()
393                .await
394                .map_err(|e| {
395                    tonic::Status::unknown(
396                        format!("Service was not ready: {}", e.into()),
397                    )
398                })?;
399            let codec = tonic::codec::ProstCodec::default();
400            let path = http::uri::PathAndQuery::from_static(
401                "/nominal.ingest.v2.ContainerizedExtractorService/ArchiveContainerizedExtractor",
402            );
403            let mut req = request.into_request();
404            req.extensions_mut()
405                .insert(
406                    GrpcMethod::new(
407                        "nominal.ingest.v2.ContainerizedExtractorService",
408                        "ArchiveContainerizedExtractor",
409                    ),
410                );
411            self.inner.unary(req, path, codec).await
412        }
413        pub async fn search_containerized_extractors(
414            &mut self,
415            request: impl tonic::IntoRequest<super::SearchContainerizedExtractorsRequest>,
416        ) -> std::result::Result<
417            tonic::Response<super::SearchContainerizedExtractorsResponse>,
418            tonic::Status,
419        > {
420            self.inner
421                .ready()
422                .await
423                .map_err(|e| {
424                    tonic::Status::unknown(
425                        format!("Service was not ready: {}", e.into()),
426                    )
427                })?;
428            let codec = tonic::codec::ProstCodec::default();
429            let path = http::uri::PathAndQuery::from_static(
430                "/nominal.ingest.v2.ContainerizedExtractorService/SearchContainerizedExtractors",
431            );
432            let mut req = request.into_request();
433            req.extensions_mut()
434                .insert(
435                    GrpcMethod::new(
436                        "nominal.ingest.v2.ContainerizedExtractorService",
437                        "SearchContainerizedExtractors",
438                    ),
439                );
440            self.inner.unary(req, path, codec).await
441        }
442    }
443}
444#[derive(Clone, PartialEq, ::prost::Message)]
445pub struct ContainerizedIngestItem {
446    #[prost(string, tag = "1")]
447    pub extractor_rid: ::prost::alloc::string::String,
448    #[prost(map = "string, message", tag = "2")]
449    pub sources: ::std::collections::HashMap<
450        ::prost::alloc::string::String,
451        IngestSource,
452    >,
453    #[prost(map = "string, string", tag = "3")]
454    pub arguments: ::std::collections::HashMap<
455        ::prost::alloc::string::String,
456        ::prost::alloc::string::String,
457    >,
458    #[prost(message, optional, tag = "4")]
459    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
460}
461#[derive(Clone, PartialEq, ::prost::Message)]
462pub struct FileIngestItem {
463    #[prost(message, optional, tag = "1")]
464    pub source: ::core::option::Option<IngestSource>,
465    #[prost(message, optional, tag = "2")]
466    pub ingest: ::core::option::Option<FileIngestOptions>,
467}
468#[derive(Clone, PartialEq, ::prost::Message)]
469pub struct FileIngestOptions {
470    #[prost(message, optional, tag = "1")]
471    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
472    #[prost(map = "string, string", tag = "2")]
473    pub units: ::std::collections::HashMap<
474        ::prost::alloc::string::String,
475        ::prost::alloc::string::String,
476    >,
477    #[prost(string, optional, tag = "3")]
478    pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
479    #[prost(map = "string, string", tag = "7")]
480    pub channel_name_overrides: ::std::collections::HashMap<
481        ::prost::alloc::string::String,
482        ::prost::alloc::string::String,
483    >,
484    #[prost(oneof = "file_ingest_options::Ingest", tags = "4, 5, 6")]
485    pub ingest: ::core::option::Option<file_ingest_options::Ingest>,
486}
487/// Nested message and enum types in `FileIngestOptions`.
488pub mod file_ingest_options {
489    #[derive(Clone, PartialEq, ::prost::Oneof)]
490    pub enum Ingest {
491        #[prost(message, tag = "4")]
492        Csv(super::CsvIngestOptions),
493        #[prost(message, tag = "5")]
494        Parquet(super::ParquetIngestOptions),
495        #[prost(message, tag = "6")]
496        Avro(super::AvroIngestOptions),
497    }
498}
499#[derive(Clone, PartialEq, ::prost::Message)]
500pub struct CsvIngestOptions {
501    #[prost(message, optional, tag = "1")]
502    pub format: ::core::option::Option<CsvFormat>,
503    #[prost(int32, optional, tag = "4")]
504    pub header_row: ::core::option::Option<i32>,
505    #[prost(int32, optional, tag = "5")]
506    pub data_row: ::core::option::Option<i32>,
507    #[prost(int32, optional, tag = "6")]
508    pub units_row: ::core::option::Option<i32>,
509}
510#[derive(Clone, PartialEq, ::prost::Message)]
511pub struct ParquetIngestOptions {
512    #[prost(message, optional, tag = "1")]
513    pub format: ::core::option::Option<ParquetFormat>,
514    #[prost(bool, tag = "2")]
515    pub is_archive: bool,
516}
517#[derive(Clone, Copy, PartialEq, ::prost::Message)]
518pub struct AvroIngestOptions {}
519#[derive(Clone, PartialEq, ::prost::Message)]
520pub struct CsvFormat {
521    #[prost(oneof = "csv_format::Format", tags = "1, 2")]
522    pub format: ::core::option::Option<csv_format::Format>,
523}
524/// Nested message and enum types in `CsvFormat`.
525pub mod csv_format {
526    #[derive(Clone, PartialEq, ::prost::Oneof)]
527    pub enum Format {
528        #[prost(message, tag = "1")]
529        Wide(super::WideFormat),
530        #[prost(message, tag = "2")]
531        Long(super::LongFormat),
532    }
533}
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct ParquetFormat {
536    #[prost(oneof = "parquet_format::Format", tags = "1, 2")]
537    pub format: ::core::option::Option<parquet_format::Format>,
538}
539/// Nested message and enum types in `ParquetFormat`.
540pub mod parquet_format {
541    #[derive(Clone, PartialEq, ::prost::Oneof)]
542    pub enum Format {
543        #[prost(message, tag = "1")]
544        Wide(super::WideFormat),
545        #[prost(message, tag = "2")]
546        Long(super::LongFormat),
547    }
548}
549#[derive(Clone, PartialEq, ::prost::Message)]
550pub struct WideFormat {
551    #[prost(map = "string, string", tag = "1")]
552    pub tag_columns: ::std::collections::HashMap<
553        ::prost::alloc::string::String,
554        ::prost::alloc::string::String,
555    >,
556    #[prost(string, repeated, tag = "2")]
557    pub exclude_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
558}
559#[derive(Clone, PartialEq, ::prost::Message)]
560pub struct LongFormat {
561    #[prost(string, optional, tag = "1")]
562    pub channel_column: ::core::option::Option<::prost::alloc::string::String>,
563    #[prost(string, optional, tag = "2")]
564    pub value_column: ::core::option::Option<::prost::alloc::string::String>,
565    #[prost(string, optional, tag = "3")]
566    pub tags_column: ::core::option::Option<::prost::alloc::string::String>,
567}
568#[derive(Clone, PartialEq, ::prost::Message)]
569pub struct LogIngestItem {
570    #[prost(message, optional, tag = "1")]
571    pub source: ::core::option::Option<IngestSource>,
572    #[prost(string, optional, tag = "2")]
573    pub channel: ::core::option::Option<::prost::alloc::string::String>,
574    #[prost(message, optional, tag = "3")]
575    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
576    #[prost(string, optional, tag = "4")]
577    pub message_field: ::core::option::Option<::prost::alloc::string::String>,
578}
579#[derive(Clone, PartialEq, ::prost::Message)]
580pub struct McapIngestItem {
581    #[prost(message, optional, tag = "1")]
582    pub source: ::core::option::Option<IngestSource>,
583    #[prost(message, optional, tag = "2")]
584    pub channels: ::core::option::Option<McapChannelSelection>,
585    #[prost(bool, tag = "3")]
586    pub ignore_invalid_topics: bool,
587}
588#[derive(Clone, PartialEq, ::prost::Message)]
589pub struct McapChannelSelection {
590    #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
591    pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
592}
593/// Nested message and enum types in `McapChannelSelection`.
594pub mod mcap_channel_selection {
595    #[derive(Clone, PartialEq, ::prost::Oneof)]
596    pub enum Selection {
597        #[prost(message, tag = "1")]
598        IncludeTopics(super::McapTopicNames),
599        #[prost(message, tag = "2")]
600        ExcludeTopics(super::McapTopicNames),
601    }
602}
603#[derive(Clone, PartialEq, ::prost::Message)]
604pub struct McapTopicNames {
605    #[prost(string, repeated, tag = "1")]
606    pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
607}
608#[derive(Clone, PartialEq, ::prost::Message)]
609pub struct DataflashIngestItem {
610    #[prost(message, optional, tag = "1")]
611    pub source: ::core::option::Option<IngestSource>,
612}
613#[derive(Clone, PartialEq, ::prost::Message)]
614pub struct PointCloudIngestItem {
615    #[prost(message, optional, tag = "1")]
616    pub source: ::core::option::Option<IngestSource>,
617    #[prost(message, optional, tag = "2")]
618    pub ingest: ::core::option::Option<PointCloudIngestOptions>,
619}
620#[derive(Clone, PartialEq, ::prost::Message)]
621pub struct PointCloudIngestOptions {
622    #[prost(message, optional, tag = "1")]
623    pub sensor_metadata: ::core::option::Option<PointCloudSensorMetadata>,
624    #[prost(string, tag = "2")]
625    pub channel: ::prost::alloc::string::String,
626}
627#[derive(Clone, PartialEq, ::prost::Message)]
628pub struct PointCloudSensorMetadata {
629    #[prost(map = "string, string", tag = "1")]
630    pub properties: ::std::collections::HashMap<
631        ::prost::alloc::string::String,
632        ::prost::alloc::string::String,
633    >,
634}
635#[derive(Clone, PartialEq, ::prost::Message)]
636pub struct VideoIngestItem {
637    #[prost(message, optional, tag = "1")]
638    pub source: ::core::option::Option<IngestSource>,
639    #[prost(message, optional, tag = "2")]
640    pub ingest: ::core::option::Option<VideoIngestOptions>,
641}
642#[derive(Clone, PartialEq, ::prost::Message)]
643pub struct VideoIngestOptions {
644    #[prost(message, optional, tag = "1")]
645    pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
646    #[prost(string, tag = "2")]
647    pub channel: ::prost::alloc::string::String,
648    #[prost(bool, optional, tag = "3")]
649    pub overwrite_segments: ::core::option::Option<bool>,
650}
651#[derive(Clone, PartialEq, ::prost::Message)]
652pub struct VideoTimestampManifest {
653    #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2, 3")]
654    pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
655}
656/// Nested message and enum types in `VideoTimestampManifest`.
657pub mod video_timestamp_manifest {
658    #[derive(Clone, PartialEq, ::prost::Oneof)]
659    pub enum Manifest {
660        #[prost(message, tag = "1")]
661        NoManifest(super::NoTimestampManifest),
662        #[prost(message, tag = "2")]
663        TimestampManifestFiles(super::TimestampManifestFiles),
664        #[prost(message, tag = "3")]
665        Mcap(super::McapTimestampManifest),
666    }
667}
668#[derive(Clone, Copy, PartialEq, ::prost::Message)]
669pub struct NoTimestampManifest {
670    #[prost(message, optional, tag = "1")]
671    pub starting_timestamp: ::core::option::Option<
672        super::super::super::google::protobuf::Timestamp,
673    >,
674    #[prost(message, optional, tag = "2")]
675    pub scale_parameter: ::core::option::Option<ScaleParameter>,
676}
677#[derive(Clone, PartialEq, ::prost::Message)]
678pub struct TimestampManifestFiles {
679    #[prost(message, repeated, tag = "1")]
680    pub sources: ::prost::alloc::vec::Vec<IngestSource>,
681}
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct McapTimestampManifest {
684    #[prost(message, optional, tag = "1")]
685    pub channel_locator: ::core::option::Option<McapChannelLocator>,
686}
687#[derive(Clone, PartialEq, ::prost::Message)]
688pub struct McapChannelLocator {
689    #[prost(oneof = "mcap_channel_locator::Locator", tags = "1, 2")]
690    pub locator: ::core::option::Option<mcap_channel_locator::Locator>,
691}
692/// Nested message and enum types in `McapChannelLocator`.
693pub mod mcap_channel_locator {
694    #[derive(Clone, PartialEq, ::prost::Oneof)]
695    pub enum Locator {
696        #[prost(string, tag = "1")]
697        Topic(::prost::alloc::string::String),
698        #[prost(int32, tag = "2")]
699        Id(i32),
700    }
701}
702#[derive(Clone, Copy, PartialEq, ::prost::Message)]
703pub struct ScaleParameter {
704    #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
705    pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
706}
707/// Nested message and enum types in `ScaleParameter`.
708pub mod scale_parameter {
709    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
710    pub enum ScaleParameter {
711        #[prost(double, tag = "1")]
712        TrueFrameRate(f64),
713        #[prost(message, tag = "2")]
714        EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
715        #[prost(double, tag = "3")]
716        ScaleFactor(f64),
717    }
718}
719#[derive(Clone, PartialEq, ::prost::Message)]
720pub struct IngestRequest {
721    #[prost(string, tag = "1")]
722    pub dataset_rid: ::prost::alloc::string::String,
723    #[prost(string, repeated, tag = "2")]
724    pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
725    #[prost(message, repeated, tag = "3")]
726    pub items: ::prost::alloc::vec::Vec<IngestItem>,
727    #[prost(map = "string, string", tag = "4")]
728    pub tags: ::std::collections::HashMap<
729        ::prost::alloc::string::String,
730        ::prost::alloc::string::String,
731    >,
732}
733#[derive(Clone, PartialEq, ::prost::Message)]
734pub struct IngestResponse {
735    #[prost(string, tag = "1")]
736    pub ingest_job_rid: ::prost::alloc::string::String,
737}
738#[derive(Clone, PartialEq, ::prost::Message)]
739pub struct IngestItem {
740    #[prost(map = "string, string", tag = "1")]
741    pub tags: ::std::collections::HashMap<
742        ::prost::alloc::string::String,
743        ::prost::alloc::string::String,
744    >,
745    #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
746    pub item: ::core::option::Option<ingest_item::Item>,
747}
748/// Nested message and enum types in `IngestItem`.
749pub mod ingest_item {
750    #[derive(Clone, PartialEq, ::prost::Oneof)]
751    pub enum Item {
752        #[prost(message, tag = "2")]
753        File(super::FileIngestItem),
754        #[prost(message, tag = "3")]
755        Log(super::LogIngestItem),
756        #[prost(message, tag = "4")]
757        Containerized(super::ContainerizedIngestItem),
758        #[prost(message, tag = "5")]
759        Video(super::VideoIngestItem),
760        #[prost(message, tag = "6")]
761        PointCloud(super::PointCloudIngestItem),
762        #[prost(message, tag = "7")]
763        Mcap(super::McapIngestItem),
764        #[prost(message, tag = "8")]
765        Dataflash(super::DataflashIngestItem),
766    }
767}
768/// Generated client implementations.
769pub mod ingest_service_client {
770    #![allow(
771        unused_variables,
772        dead_code,
773        missing_docs,
774        clippy::wildcard_imports,
775        clippy::let_unit_value,
776    )]
777    use tonic::codegen::*;
778    use tonic::codegen::http::Uri;
779    #[derive(Debug, Clone)]
780    pub struct IngestServiceClient<T> {
781        inner: tonic::client::Grpc<T>,
782    }
783    impl IngestServiceClient<tonic::transport::Channel> {
784        /// Attempt to create a new client by connecting to a given endpoint.
785        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
786        where
787            D: TryInto<tonic::transport::Endpoint>,
788            D::Error: Into<StdError>,
789        {
790            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
791            Ok(Self::new(conn))
792        }
793    }
794    impl<T> IngestServiceClient<T>
795    where
796        T: tonic::client::GrpcService<tonic::body::Body>,
797        T::Error: Into<StdError>,
798        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
799        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
800    {
801        pub fn new(inner: T) -> Self {
802            let inner = tonic::client::Grpc::new(inner);
803            Self { inner }
804        }
805        pub fn with_origin(inner: T, origin: Uri) -> Self {
806            let inner = tonic::client::Grpc::with_origin(inner, origin);
807            Self { inner }
808        }
809        pub fn with_interceptor<F>(
810            inner: T,
811            interceptor: F,
812        ) -> IngestServiceClient<InterceptedService<T, F>>
813        where
814            F: tonic::service::Interceptor,
815            T::ResponseBody: Default,
816            T: tonic::codegen::Service<
817                http::Request<tonic::body::Body>,
818                Response = http::Response<
819                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
820                >,
821            >,
822            <T as tonic::codegen::Service<
823                http::Request<tonic::body::Body>,
824            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
825        {
826            IngestServiceClient::new(InterceptedService::new(inner, interceptor))
827        }
828        /// Compress requests with the given encoding.
829        ///
830        /// This requires the server to support it otherwise it might respond with an
831        /// error.
832        #[must_use]
833        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
834            self.inner = self.inner.send_compressed(encoding);
835            self
836        }
837        /// Enable decompressing responses.
838        #[must_use]
839        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
840            self.inner = self.inner.accept_compressed(encoding);
841            self
842        }
843        /// Limits the maximum size of a decoded message.
844        ///
845        /// Default: `4MB`
846        #[must_use]
847        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
848            self.inner = self.inner.max_decoding_message_size(limit);
849            self
850        }
851        /// Limits the maximum size of an encoded message.
852        ///
853        /// Default: `usize::MAX`
854        #[must_use]
855        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
856            self.inner = self.inner.max_encoding_message_size(limit);
857            self
858        }
859        pub async fn ingest(
860            &mut self,
861            request: impl tonic::IntoRequest<super::IngestRequest>,
862        ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
863            self.inner
864                .ready()
865                .await
866                .map_err(|e| {
867                    tonic::Status::unknown(
868                        format!("Service was not ready: {}", e.into()),
869                    )
870                })?;
871            let codec = tonic::codec::ProstCodec::default();
872            let path = http::uri::PathAndQuery::from_static(
873                "/nominal.ingest.v2.IngestService/Ingest",
874            );
875            let mut req = request.into_request();
876            req.extensions_mut()
877                .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
878            self.inner.unary(req, path, codec).await
879        }
880    }
881}
882#[derive(Clone, PartialEq, ::prost::Message)]
883pub struct NativeExtractor {
884    #[prost(string, tag = "1")]
885    pub catalog_id: ::prost::alloc::string::String,
886    #[prost(string, repeated, tag = "2")]
887    pub available_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
888    #[prost(message, optional, tag = "3")]
889    pub installation: ::core::option::Option<ContainerizedExtractor>,
890    #[prost(string, optional, tag = "4")]
891    pub desired_version: ::core::option::Option<::prost::alloc::string::String>,
892    #[prost(string, tag = "5")]
893    pub display_name: ::prost::alloc::string::String,
894    #[prost(string, optional, tag = "6")]
895    pub description: ::core::option::Option<::prost::alloc::string::String>,
896}
897#[derive(Clone, PartialEq, ::prost::Message)]
898pub struct ListNativeExtractorsRequest {
899    #[prost(string, tag = "1")]
900    pub workspace_rid: ::prost::alloc::string::String,
901    #[prost(int32, tag = "2")]
902    pub page_size: i32,
903    #[prost(string, optional, tag = "3")]
904    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
905}
906#[derive(Clone, PartialEq, ::prost::Message)]
907pub struct ListNativeExtractorsResponse {
908    #[prost(message, repeated, tag = "1")]
909    pub extractors: ::prost::alloc::vec::Vec<NativeExtractor>,
910    #[prost(string, optional, tag = "2")]
911    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
912}
913#[derive(Clone, PartialEq, ::prost::Message)]
914pub struct EnableNativeExtractorRequest {
915    #[prost(string, tag = "1")]
916    pub workspace_rid: ::prost::alloc::string::String,
917    #[prost(string, tag = "2")]
918    pub catalog_id: ::prost::alloc::string::String,
919}
920#[derive(Clone, PartialEq, ::prost::Message)]
921pub struct EnableNativeExtractorResponse {
922    #[prost(message, optional, tag = "1")]
923    pub extractor: ::core::option::Option<NativeExtractor>,
924}
925#[derive(Clone, PartialEq, ::prost::Message)]
926pub struct DisableNativeExtractorRequest {
927    #[prost(string, tag = "1")]
928    pub workspace_rid: ::prost::alloc::string::String,
929    #[prost(string, tag = "2")]
930    pub catalog_id: ::prost::alloc::string::String,
931}
932#[derive(Clone, Copy, PartialEq, ::prost::Message)]
933pub struct DisableNativeExtractorResponse {}
934/// Generated client implementations.
935pub mod native_extractor_service_client {
936    #![allow(
937        unused_variables,
938        dead_code,
939        missing_docs,
940        clippy::wildcard_imports,
941        clippy::let_unit_value,
942    )]
943    use tonic::codegen::*;
944    use tonic::codegen::http::Uri;
945    #[derive(Debug, Clone)]
946    pub struct NativeExtractorServiceClient<T> {
947        inner: tonic::client::Grpc<T>,
948    }
949    impl NativeExtractorServiceClient<tonic::transport::Channel> {
950        /// Attempt to create a new client by connecting to a given endpoint.
951        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
952        where
953            D: TryInto<tonic::transport::Endpoint>,
954            D::Error: Into<StdError>,
955        {
956            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
957            Ok(Self::new(conn))
958        }
959    }
960    impl<T> NativeExtractorServiceClient<T>
961    where
962        T: tonic::client::GrpcService<tonic::body::Body>,
963        T::Error: Into<StdError>,
964        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
965        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
966    {
967        pub fn new(inner: T) -> Self {
968            let inner = tonic::client::Grpc::new(inner);
969            Self { inner }
970        }
971        pub fn with_origin(inner: T, origin: Uri) -> Self {
972            let inner = tonic::client::Grpc::with_origin(inner, origin);
973            Self { inner }
974        }
975        pub fn with_interceptor<F>(
976            inner: T,
977            interceptor: F,
978        ) -> NativeExtractorServiceClient<InterceptedService<T, F>>
979        where
980            F: tonic::service::Interceptor,
981            T::ResponseBody: Default,
982            T: tonic::codegen::Service<
983                http::Request<tonic::body::Body>,
984                Response = http::Response<
985                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
986                >,
987            >,
988            <T as tonic::codegen::Service<
989                http::Request<tonic::body::Body>,
990            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
991        {
992            NativeExtractorServiceClient::new(
993                InterceptedService::new(inner, interceptor),
994            )
995        }
996        /// Compress requests with the given encoding.
997        ///
998        /// This requires the server to support it otherwise it might respond with an
999        /// error.
1000        #[must_use]
1001        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1002            self.inner = self.inner.send_compressed(encoding);
1003            self
1004        }
1005        /// Enable decompressing responses.
1006        #[must_use]
1007        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1008            self.inner = self.inner.accept_compressed(encoding);
1009            self
1010        }
1011        /// Limits the maximum size of a decoded message.
1012        ///
1013        /// Default: `4MB`
1014        #[must_use]
1015        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1016            self.inner = self.inner.max_decoding_message_size(limit);
1017            self
1018        }
1019        /// Limits the maximum size of an encoded message.
1020        ///
1021        /// Default: `usize::MAX`
1022        #[must_use]
1023        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1024            self.inner = self.inner.max_encoding_message_size(limit);
1025            self
1026        }
1027        pub async fn list_native_extractors(
1028            &mut self,
1029            request: impl tonic::IntoRequest<super::ListNativeExtractorsRequest>,
1030        ) -> std::result::Result<
1031            tonic::Response<super::ListNativeExtractorsResponse>,
1032            tonic::Status,
1033        > {
1034            self.inner
1035                .ready()
1036                .await
1037                .map_err(|e| {
1038                    tonic::Status::unknown(
1039                        format!("Service was not ready: {}", e.into()),
1040                    )
1041                })?;
1042            let codec = tonic::codec::ProstCodec::default();
1043            let path = http::uri::PathAndQuery::from_static(
1044                "/nominal.ingest.v2.NativeExtractorService/ListNativeExtractors",
1045            );
1046            let mut req = request.into_request();
1047            req.extensions_mut()
1048                .insert(
1049                    GrpcMethod::new(
1050                        "nominal.ingest.v2.NativeExtractorService",
1051                        "ListNativeExtractors",
1052                    ),
1053                );
1054            self.inner.unary(req, path, codec).await
1055        }
1056        pub async fn enable_native_extractor(
1057            &mut self,
1058            request: impl tonic::IntoRequest<super::EnableNativeExtractorRequest>,
1059        ) -> std::result::Result<
1060            tonic::Response<super::EnableNativeExtractorResponse>,
1061            tonic::Status,
1062        > {
1063            self.inner
1064                .ready()
1065                .await
1066                .map_err(|e| {
1067                    tonic::Status::unknown(
1068                        format!("Service was not ready: {}", e.into()),
1069                    )
1070                })?;
1071            let codec = tonic::codec::ProstCodec::default();
1072            let path = http::uri::PathAndQuery::from_static(
1073                "/nominal.ingest.v2.NativeExtractorService/EnableNativeExtractor",
1074            );
1075            let mut req = request.into_request();
1076            req.extensions_mut()
1077                .insert(
1078                    GrpcMethod::new(
1079                        "nominal.ingest.v2.NativeExtractorService",
1080                        "EnableNativeExtractor",
1081                    ),
1082                );
1083            self.inner.unary(req, path, codec).await
1084        }
1085        pub async fn disable_native_extractor(
1086            &mut self,
1087            request: impl tonic::IntoRequest<super::DisableNativeExtractorRequest>,
1088        ) -> std::result::Result<
1089            tonic::Response<super::DisableNativeExtractorResponse>,
1090            tonic::Status,
1091        > {
1092            self.inner
1093                .ready()
1094                .await
1095                .map_err(|e| {
1096                    tonic::Status::unknown(
1097                        format!("Service was not ready: {}", e.into()),
1098                    )
1099                })?;
1100            let codec = tonic::codec::ProstCodec::default();
1101            let path = http::uri::PathAndQuery::from_static(
1102                "/nominal.ingest.v2.NativeExtractorService/DisableNativeExtractor",
1103            );
1104            let mut req = request.into_request();
1105            req.extensions_mut()
1106                .insert(
1107                    GrpcMethod::new(
1108                        "nominal.ingest.v2.NativeExtractorService",
1109                        "DisableNativeExtractor",
1110                    ),
1111                );
1112            self.inner.unary(req, path, codec).await
1113        }
1114    }
1115}
1116#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1117pub struct TimeRange {
1118    #[prost(message, optional, tag = "1")]
1119    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1120    #[prost(message, optional, tag = "2")]
1121    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1122}
1123#[derive(Clone, PartialEq, ::prost::Message)]
1124pub struct CustomSourceAttribution {
1125    #[prost(string, tag = "1")]
1126    pub source_name: ::prost::alloc::string::String,
1127}
1128#[derive(Clone, PartialEq, ::prost::Message)]
1129pub struct DataConnectorSourceAttribution {
1130    #[prost(string, tag = "1")]
1131    pub data_connector_rid: ::prost::alloc::string::String,
1132}
1133#[derive(Clone, PartialEq, ::prost::Message)]
1134pub struct MeshSourceAttribution {
1135    #[prost(string, tag = "1")]
1136    pub source_dataset_rid: ::prost::alloc::string::String,
1137    #[prost(string, tag = "2")]
1138    pub source_org_rid: ::prost::alloc::string::String,
1139    #[prost(string, tag = "3")]
1140    pub origin_source_label: ::prost::alloc::string::String,
1141}
1142#[derive(Clone, PartialEq, ::prost::Message)]
1143pub struct StreamingSourceAttribution {
1144    #[prost(oneof = "streaming_source_attribution::Source", tags = "1, 2, 3")]
1145    pub source: ::core::option::Option<streaming_source_attribution::Source>,
1146}
1147/// Nested message and enum types in `StreamingSourceAttribution`.
1148pub mod streaming_source_attribution {
1149    #[derive(Clone, PartialEq, ::prost::Oneof)]
1150    pub enum Source {
1151        #[prost(message, tag = "1")]
1152        Mesh(super::MeshSourceAttribution),
1153        #[prost(message, tag = "2")]
1154        DataConnector(super::DataConnectorSourceAttribution),
1155        #[prost(message, tag = "3")]
1156        Custom(super::CustomSourceAttribution),
1157    }
1158}
1159#[derive(Clone, PartialEq, ::prost::Message)]
1160pub struct StreamingSession {
1161    #[prost(string, tag = "1")]
1162    pub streaming_session_rid: ::prost::alloc::string::String,
1163    #[prost(string, tag = "2")]
1164    pub dataset_rid: ::prost::alloc::string::String,
1165    #[prost(enumeration = "StreamingSessionStatus", tag = "3")]
1166    pub status: i32,
1167    #[prost(message, optional, tag = "4")]
1168    pub source: ::core::option::Option<StreamingSourceAttribution>,
1169    #[prost(message, optional, tag = "5")]
1170    pub data_bounds: ::core::option::Option<TimeRange>,
1171    #[prost(int64, tag = "6")]
1172    pub points_count: i64,
1173    #[prost(message, optional, tag = "7")]
1174    pub created_at: ::core::option::Option<
1175        super::super::super::google::protobuf::Timestamp,
1176    >,
1177    #[prost(message, optional, tag = "8")]
1178    pub last_seen_at: ::core::option::Option<
1179        super::super::super::google::protobuf::Timestamp,
1180    >,
1181    #[prost(message, optional, tag = "9")]
1182    pub completed_at: ::core::option::Option<
1183        super::super::super::google::protobuf::Timestamp,
1184    >,
1185}
1186#[derive(Clone, PartialEq, ::prost::Message)]
1187pub struct StreamingDatasetRidsFilter {
1188    #[prost(string, repeated, tag = "1")]
1189    pub dataset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1190}
1191#[derive(Clone, PartialEq, ::prost::Message)]
1192pub struct ExactStreamingSourceFilter {
1193    #[prost(string, tag = "1")]
1194    pub dataset_rid: ::prost::alloc::string::String,
1195    #[prost(message, optional, tag = "2")]
1196    pub source: ::core::option::Option<StreamingSourceAttribution>,
1197}
1198#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1199pub struct StreamingSessionDataBoundsFilter {
1200    #[prost(message, optional, tag = "1")]
1201    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1202    #[prost(message, optional, tag = "2")]
1203    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1204}
1205#[derive(Clone, PartialEq, ::prost::Message)]
1206pub struct StreamingWorkspaceFilter {
1207    #[prost(string, tag = "1")]
1208    pub workspace_rid: ::prost::alloc::string::String,
1209}
1210#[derive(Clone, PartialEq, ::prost::Message)]
1211pub struct StreamingSessionAndFilter {
1212    #[prost(message, repeated, tag = "1")]
1213    pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1214}
1215#[derive(Clone, PartialEq, ::prost::Message)]
1216pub struct StreamingSessionOrFilter {
1217    #[prost(message, repeated, tag = "1")]
1218    pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1219}
1220#[derive(Clone, PartialEq, ::prost::Message)]
1221pub struct StreamingSessionNotFilter {
1222    #[prost(message, optional, boxed, tag = "1")]
1223    pub filter: ::core::option::Option<
1224        ::prost::alloc::boxed::Box<StreamingSessionSearchFilter>,
1225    >,
1226}
1227#[derive(Clone, PartialEq, ::prost::Message)]
1228pub struct StreamingSessionSearchFilter {
1229    #[prost(
1230        oneof = "streaming_session_search_filter::Filter",
1231        tags = "1, 2, 3, 4, 5, 6, 7"
1232    )]
1233    pub filter: ::core::option::Option<streaming_session_search_filter::Filter>,
1234}
1235/// Nested message and enum types in `StreamingSessionSearchFilter`.
1236pub mod streaming_session_search_filter {
1237    #[derive(Clone, PartialEq, ::prost::Oneof)]
1238    pub enum Filter {
1239        #[prost(message, tag = "1")]
1240        DatasetRids(super::StreamingDatasetRidsFilter),
1241        #[prost(message, tag = "2")]
1242        Source(super::ExactStreamingSourceFilter),
1243        #[prost(message, tag = "3")]
1244        DataBoundsOverlap(super::StreamingSessionDataBoundsFilter),
1245        #[prost(message, tag = "4")]
1246        Workspace(super::StreamingWorkspaceFilter),
1247        #[prost(message, tag = "5")]
1248        And(super::StreamingSessionAndFilter),
1249        #[prost(message, tag = "6")]
1250        Or(super::StreamingSessionOrFilter),
1251        #[prost(message, tag = "7")]
1252        Not(::prost::alloc::boxed::Box<super::StreamingSessionNotFilter>),
1253    }
1254}
1255#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1256pub struct StreamingSessionSortOptions {
1257    #[prost(enumeration = "StreamingSessionSortField", tag = "1")]
1258    pub field: i32,
1259    #[prost(bool, tag = "2")]
1260    pub is_descending: bool,
1261}
1262#[derive(Clone, PartialEq, ::prost::Message)]
1263pub struct SearchStreamingSessionsRequest {
1264    #[prost(int32, optional, tag = "1")]
1265    pub page_size: ::core::option::Option<i32>,
1266    #[prost(string, optional, tag = "2")]
1267    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1268    #[prost(message, optional, tag = "3")]
1269    pub filter: ::core::option::Option<StreamingSessionSearchFilter>,
1270    #[prost(message, optional, tag = "4")]
1271    pub sort: ::core::option::Option<StreamingSessionSortOptions>,
1272}
1273#[derive(Clone, PartialEq, ::prost::Message)]
1274pub struct SearchStreamingSessionsResponse {
1275    #[prost(message, repeated, tag = "1")]
1276    pub streaming_sessions: ::prost::alloc::vec::Vec<StreamingSession>,
1277    #[prost(string, optional, tag = "2")]
1278    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1279}
1280#[derive(Clone, PartialEq, ::prost::Message)]
1281pub struct StreamingSource {
1282    #[prost(message, optional, tag = "1")]
1283    pub source: ::core::option::Option<StreamingSourceAttribution>,
1284    #[prost(string, tag = "2")]
1285    pub dataset_rid: ::prost::alloc::string::String,
1286    #[prost(int64, tag = "3")]
1287    pub session_count: i64,
1288    #[prost(int64, tag = "4")]
1289    pub total_points_count: i64,
1290    #[prost(message, optional, tag = "5")]
1291    pub earliest_created_at: ::core::option::Option<
1292        super::super::super::google::protobuf::Timestamp,
1293    >,
1294    #[prost(message, optional, tag = "6")]
1295    pub latest_last_seen_at: ::core::option::Option<
1296        super::super::super::google::protobuf::Timestamp,
1297    >,
1298    #[prost(message, optional, tag = "7")]
1299    pub merged_data_bounds: ::core::option::Option<TimeRange>,
1300    #[prost(bool, tag = "8")]
1301    pub any_in_progress: bool,
1302}
1303#[derive(Clone, PartialEq, ::prost::Message)]
1304pub struct StreamingSourceAndFilter {
1305    #[prost(message, repeated, tag = "1")]
1306    pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1307}
1308#[derive(Clone, PartialEq, ::prost::Message)]
1309pub struct StreamingSourceOrFilter {
1310    #[prost(message, repeated, tag = "1")]
1311    pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1312}
1313#[derive(Clone, PartialEq, ::prost::Message)]
1314pub struct StreamingSourceNotFilter {
1315    #[prost(message, optional, boxed, tag = "1")]
1316    pub filter: ::core::option::Option<
1317        ::prost::alloc::boxed::Box<StreamingSourceSearchFilter>,
1318    >,
1319}
1320#[derive(Clone, PartialEq, ::prost::Message)]
1321pub struct StreamingSourceSearchFilter {
1322    #[prost(oneof = "streaming_source_search_filter::Filter", tags = "1, 2, 3, 4, 5, 6")]
1323    pub filter: ::core::option::Option<streaming_source_search_filter::Filter>,
1324}
1325/// Nested message and enum types in `StreamingSourceSearchFilter`.
1326pub mod streaming_source_search_filter {
1327    #[derive(Clone, PartialEq, ::prost::Oneof)]
1328    pub enum Filter {
1329        #[prost(message, tag = "1")]
1330        DatasetRids(super::StreamingDatasetRidsFilter),
1331        #[prost(message, tag = "2")]
1332        Source(super::ExactStreamingSourceFilter),
1333        #[prost(message, tag = "3")]
1334        Workspace(super::StreamingWorkspaceFilter),
1335        #[prost(message, tag = "4")]
1336        And(super::StreamingSourceAndFilter),
1337        #[prost(message, tag = "5")]
1338        Or(super::StreamingSourceOrFilter),
1339        #[prost(message, tag = "6")]
1340        Not(::prost::alloc::boxed::Box<super::StreamingSourceNotFilter>),
1341    }
1342}
1343#[derive(Clone, PartialEq, ::prost::Message)]
1344pub struct SearchStreamingSourcesRequest {
1345    #[prost(int32, optional, tag = "1")]
1346    pub page_size: ::core::option::Option<i32>,
1347    #[prost(string, optional, tag = "2")]
1348    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1349    #[prost(message, optional, tag = "3")]
1350    pub filter: ::core::option::Option<StreamingSourceSearchFilter>,
1351    #[prost(message, optional, tag = "4")]
1352    pub last_seen_after: ::core::option::Option<
1353        super::super::super::google::protobuf::Timestamp,
1354    >,
1355}
1356#[derive(Clone, PartialEq, ::prost::Message)]
1357pub struct SearchStreamingSourcesResponse {
1358    #[prost(message, repeated, tag = "1")]
1359    pub streaming_sources: ::prost::alloc::vec::Vec<StreamingSource>,
1360    #[prost(string, optional, tag = "2")]
1361    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1362}
1363#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1364#[repr(i32)]
1365pub enum StreamingSessionError {
1366    Unspecified = 0,
1367    FilterTooComplex = 1,
1368}
1369impl StreamingSessionError {
1370    /// String value of the enum field names used in the ProtoBuf definition.
1371    ///
1372    /// The values are not transformed in any way and thus are considered stable
1373    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1374    pub fn as_str_name(&self) -> &'static str {
1375        match self {
1376            Self::Unspecified => "STREAMING_SESSION_ERROR_UNSPECIFIED",
1377            Self::FilterTooComplex => "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX",
1378        }
1379    }
1380    /// Creates an enum from field names used in the ProtoBuf definition.
1381    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1382        match value {
1383            "STREAMING_SESSION_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1384            "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX" => Some(Self::FilterTooComplex),
1385            _ => None,
1386        }
1387    }
1388}
1389#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1390#[repr(i32)]
1391pub enum StreamingSessionStatus {
1392    Unspecified = 0,
1393    InProgress = 1,
1394    Completed = 2,
1395}
1396impl StreamingSessionStatus {
1397    /// String value of the enum field names used in the ProtoBuf definition.
1398    ///
1399    /// The values are not transformed in any way and thus are considered stable
1400    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1401    pub fn as_str_name(&self) -> &'static str {
1402        match self {
1403            Self::Unspecified => "STREAMING_SESSION_STATUS_UNSPECIFIED",
1404            Self::InProgress => "STREAMING_SESSION_STATUS_IN_PROGRESS",
1405            Self::Completed => "STREAMING_SESSION_STATUS_COMPLETED",
1406        }
1407    }
1408    /// Creates an enum from field names used in the ProtoBuf definition.
1409    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1410        match value {
1411            "STREAMING_SESSION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1412            "STREAMING_SESSION_STATUS_IN_PROGRESS" => Some(Self::InProgress),
1413            "STREAMING_SESSION_STATUS_COMPLETED" => Some(Self::Completed),
1414            _ => None,
1415        }
1416    }
1417}
1418#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1419#[repr(i32)]
1420pub enum StreamingSessionSortField {
1421    Unspecified = 0,
1422    CreatedAt = 1,
1423    DataBoundsStart = 2,
1424}
1425impl StreamingSessionSortField {
1426    /// String value of the enum field names used in the ProtoBuf definition.
1427    ///
1428    /// The values are not transformed in any way and thus are considered stable
1429    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1430    pub fn as_str_name(&self) -> &'static str {
1431        match self {
1432            Self::Unspecified => "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED",
1433            Self::CreatedAt => "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
1434            Self::DataBoundsStart => "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START",
1435        }
1436    }
1437    /// Creates an enum from field names used in the ProtoBuf definition.
1438    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1439        match value {
1440            "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
1441            "STREAMING_SESSION_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
1442            "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START" => {
1443                Some(Self::DataBoundsStart)
1444            }
1445            _ => None,
1446        }
1447    }
1448}
1449/// Generated client implementations.
1450pub mod streaming_session_service_client {
1451    #![allow(
1452        unused_variables,
1453        dead_code,
1454        missing_docs,
1455        clippy::wildcard_imports,
1456        clippy::let_unit_value,
1457    )]
1458    use tonic::codegen::*;
1459    use tonic::codegen::http::Uri;
1460    #[derive(Debug, Clone)]
1461    pub struct StreamingSessionServiceClient<T> {
1462        inner: tonic::client::Grpc<T>,
1463    }
1464    impl StreamingSessionServiceClient<tonic::transport::Channel> {
1465        /// Attempt to create a new client by connecting to a given endpoint.
1466        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1467        where
1468            D: TryInto<tonic::transport::Endpoint>,
1469            D::Error: Into<StdError>,
1470        {
1471            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1472            Ok(Self::new(conn))
1473        }
1474    }
1475    impl<T> StreamingSessionServiceClient<T>
1476    where
1477        T: tonic::client::GrpcService<tonic::body::Body>,
1478        T::Error: Into<StdError>,
1479        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1480        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1481    {
1482        pub fn new(inner: T) -> Self {
1483            let inner = tonic::client::Grpc::new(inner);
1484            Self { inner }
1485        }
1486        pub fn with_origin(inner: T, origin: Uri) -> Self {
1487            let inner = tonic::client::Grpc::with_origin(inner, origin);
1488            Self { inner }
1489        }
1490        pub fn with_interceptor<F>(
1491            inner: T,
1492            interceptor: F,
1493        ) -> StreamingSessionServiceClient<InterceptedService<T, F>>
1494        where
1495            F: tonic::service::Interceptor,
1496            T::ResponseBody: Default,
1497            T: tonic::codegen::Service<
1498                http::Request<tonic::body::Body>,
1499                Response = http::Response<
1500                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1501                >,
1502            >,
1503            <T as tonic::codegen::Service<
1504                http::Request<tonic::body::Body>,
1505            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1506        {
1507            StreamingSessionServiceClient::new(
1508                InterceptedService::new(inner, interceptor),
1509            )
1510        }
1511        /// Compress requests with the given encoding.
1512        ///
1513        /// This requires the server to support it otherwise it might respond with an
1514        /// error.
1515        #[must_use]
1516        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1517            self.inner = self.inner.send_compressed(encoding);
1518            self
1519        }
1520        /// Enable decompressing responses.
1521        #[must_use]
1522        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1523            self.inner = self.inner.accept_compressed(encoding);
1524            self
1525        }
1526        /// Limits the maximum size of a decoded message.
1527        ///
1528        /// Default: `4MB`
1529        #[must_use]
1530        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1531            self.inner = self.inner.max_decoding_message_size(limit);
1532            self
1533        }
1534        /// Limits the maximum size of an encoded message.
1535        ///
1536        /// Default: `usize::MAX`
1537        #[must_use]
1538        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1539            self.inner = self.inner.max_encoding_message_size(limit);
1540            self
1541        }
1542        pub async fn search_streaming_sessions(
1543            &mut self,
1544            request: impl tonic::IntoRequest<super::SearchStreamingSessionsRequest>,
1545        ) -> std::result::Result<
1546            tonic::Response<super::SearchStreamingSessionsResponse>,
1547            tonic::Status,
1548        > {
1549            self.inner
1550                .ready()
1551                .await
1552                .map_err(|e| {
1553                    tonic::Status::unknown(
1554                        format!("Service was not ready: {}", e.into()),
1555                    )
1556                })?;
1557            let codec = tonic::codec::ProstCodec::default();
1558            let path = http::uri::PathAndQuery::from_static(
1559                "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSessions",
1560            );
1561            let mut req = request.into_request();
1562            req.extensions_mut()
1563                .insert(
1564                    GrpcMethod::new(
1565                        "nominal.ingest.v2.StreamingSessionService",
1566                        "SearchStreamingSessions",
1567                    ),
1568                );
1569            self.inner.unary(req, path, codec).await
1570        }
1571        pub async fn search_streaming_sources(
1572            &mut self,
1573            request: impl tonic::IntoRequest<super::SearchStreamingSourcesRequest>,
1574        ) -> std::result::Result<
1575            tonic::Response<super::SearchStreamingSourcesResponse>,
1576            tonic::Status,
1577        > {
1578            self.inner
1579                .ready()
1580                .await
1581                .map_err(|e| {
1582                    tonic::Status::unknown(
1583                        format!("Service was not ready: {}", e.into()),
1584                    )
1585                })?;
1586            let codec = tonic::codec::ProstCodec::default();
1587            let path = http::uri::PathAndQuery::from_static(
1588                "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSources",
1589            );
1590            let mut req = request.into_request();
1591            req.extensions_mut()
1592                .insert(
1593                    GrpcMethod::new(
1594                        "nominal.ingest.v2.StreamingSessionService",
1595                        "SearchStreamingSources",
1596                    ),
1597                );
1598            self.inner.unary(req, path, codec).await
1599        }
1600    }
1601}