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    #[prost(message, repeated, tag = "3")]
642    pub additional_sources: ::prost::alloc::vec::Vec<IngestSource>,
643}
644#[derive(Clone, PartialEq, ::prost::Message)]
645pub struct VideoIngestOptions {
646    #[prost(message, optional, tag = "1")]
647    pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
648    #[prost(string, tag = "2")]
649    pub channel: ::prost::alloc::string::String,
650    #[prost(bool, optional, tag = "3")]
651    pub overwrite_segments: ::core::option::Option<bool>,
652}
653#[derive(Clone, PartialEq, ::prost::Message)]
654pub struct VideoTimestampManifest {
655    #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2, 3")]
656    pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
657}
658/// Nested message and enum types in `VideoTimestampManifest`.
659pub mod video_timestamp_manifest {
660    #[derive(Clone, PartialEq, ::prost::Oneof)]
661    pub enum Manifest {
662        #[prost(message, tag = "1")]
663        NoManifest(super::NoTimestampManifest),
664        #[prost(message, tag = "2")]
665        TimestampManifestFiles(super::TimestampManifestFiles),
666        #[prost(message, tag = "3")]
667        Mcap(super::McapTimestampManifest),
668    }
669}
670#[derive(Clone, Copy, PartialEq, ::prost::Message)]
671pub struct NoTimestampManifest {
672    #[prost(message, optional, tag = "1")]
673    pub starting_timestamp: ::core::option::Option<
674        super::super::super::google::protobuf::Timestamp,
675    >,
676    #[prost(message, optional, tag = "2")]
677    pub scale_parameter: ::core::option::Option<ScaleParameter>,
678}
679#[derive(Clone, PartialEq, ::prost::Message)]
680pub struct TimestampManifestFiles {
681    #[prost(message, repeated, tag = "1")]
682    pub sources: ::prost::alloc::vec::Vec<IngestSource>,
683}
684#[derive(Clone, PartialEq, ::prost::Message)]
685pub struct McapTimestampManifest {
686    #[prost(message, optional, tag = "1")]
687    pub channel_locator: ::core::option::Option<McapChannelLocator>,
688}
689#[derive(Clone, PartialEq, ::prost::Message)]
690pub struct McapChannelLocator {
691    #[prost(oneof = "mcap_channel_locator::Locator", tags = "1, 2")]
692    pub locator: ::core::option::Option<mcap_channel_locator::Locator>,
693}
694/// Nested message and enum types in `McapChannelLocator`.
695pub mod mcap_channel_locator {
696    #[derive(Clone, PartialEq, ::prost::Oneof)]
697    pub enum Locator {
698        #[prost(string, tag = "1")]
699        Topic(::prost::alloc::string::String),
700        #[prost(int32, tag = "2")]
701        Id(i32),
702    }
703}
704#[derive(Clone, Copy, PartialEq, ::prost::Message)]
705pub struct ScaleParameter {
706    #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
707    pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
708}
709/// Nested message and enum types in `ScaleParameter`.
710pub mod scale_parameter {
711    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
712    pub enum ScaleParameter {
713        #[prost(double, tag = "1")]
714        TrueFrameRate(f64),
715        #[prost(message, tag = "2")]
716        EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
717        #[prost(double, tag = "3")]
718        ScaleFactor(f64),
719    }
720}
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct IngestRequest {
723    #[prost(string, tag = "1")]
724    pub dataset_rid: ::prost::alloc::string::String,
725    #[prost(string, repeated, tag = "2")]
726    pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
727    #[prost(message, repeated, tag = "3")]
728    pub items: ::prost::alloc::vec::Vec<IngestItem>,
729    #[prost(map = "string, string", tag = "4")]
730    pub tags: ::std::collections::HashMap<
731        ::prost::alloc::string::String,
732        ::prost::alloc::string::String,
733    >,
734}
735#[derive(Clone, PartialEq, ::prost::Message)]
736pub struct IngestResponse {
737    #[prost(string, tag = "1")]
738    pub ingest_job_rid: ::prost::alloc::string::String,
739}
740#[derive(Clone, PartialEq, ::prost::Message)]
741pub struct IngestItem {
742    #[prost(map = "string, string", tag = "1")]
743    pub tags: ::std::collections::HashMap<
744        ::prost::alloc::string::String,
745        ::prost::alloc::string::String,
746    >,
747    #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
748    pub item: ::core::option::Option<ingest_item::Item>,
749}
750/// Nested message and enum types in `IngestItem`.
751pub mod ingest_item {
752    #[derive(Clone, PartialEq, ::prost::Oneof)]
753    pub enum Item {
754        #[prost(message, tag = "2")]
755        File(super::FileIngestItem),
756        #[prost(message, tag = "3")]
757        Log(super::LogIngestItem),
758        #[prost(message, tag = "4")]
759        Containerized(super::ContainerizedIngestItem),
760        #[prost(message, tag = "5")]
761        Video(super::VideoIngestItem),
762        #[prost(message, tag = "6")]
763        PointCloud(super::PointCloudIngestItem),
764        #[prost(message, tag = "7")]
765        Mcap(super::McapIngestItem),
766        #[prost(message, tag = "8")]
767        Dataflash(super::DataflashIngestItem),
768    }
769}
770/// Generated client implementations.
771pub mod ingest_service_client {
772    #![allow(
773        unused_variables,
774        dead_code,
775        missing_docs,
776        clippy::wildcard_imports,
777        clippy::let_unit_value,
778    )]
779    use tonic::codegen::*;
780    use tonic::codegen::http::Uri;
781    #[derive(Debug, Clone)]
782    pub struct IngestServiceClient<T> {
783        inner: tonic::client::Grpc<T>,
784    }
785    impl IngestServiceClient<tonic::transport::Channel> {
786        /// Attempt to create a new client by connecting to a given endpoint.
787        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
788        where
789            D: TryInto<tonic::transport::Endpoint>,
790            D::Error: Into<StdError>,
791        {
792            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
793            Ok(Self::new(conn))
794        }
795    }
796    impl<T> IngestServiceClient<T>
797    where
798        T: tonic::client::GrpcService<tonic::body::Body>,
799        T::Error: Into<StdError>,
800        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
801        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
802    {
803        pub fn new(inner: T) -> Self {
804            let inner = tonic::client::Grpc::new(inner);
805            Self { inner }
806        }
807        pub fn with_origin(inner: T, origin: Uri) -> Self {
808            let inner = tonic::client::Grpc::with_origin(inner, origin);
809            Self { inner }
810        }
811        pub fn with_interceptor<F>(
812            inner: T,
813            interceptor: F,
814        ) -> IngestServiceClient<InterceptedService<T, F>>
815        where
816            F: tonic::service::Interceptor,
817            T::ResponseBody: Default,
818            T: tonic::codegen::Service<
819                http::Request<tonic::body::Body>,
820                Response = http::Response<
821                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
822                >,
823            >,
824            <T as tonic::codegen::Service<
825                http::Request<tonic::body::Body>,
826            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
827        {
828            IngestServiceClient::new(InterceptedService::new(inner, interceptor))
829        }
830        /// Compress requests with the given encoding.
831        ///
832        /// This requires the server to support it otherwise it might respond with an
833        /// error.
834        #[must_use]
835        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
836            self.inner = self.inner.send_compressed(encoding);
837            self
838        }
839        /// Enable decompressing responses.
840        #[must_use]
841        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
842            self.inner = self.inner.accept_compressed(encoding);
843            self
844        }
845        /// Limits the maximum size of a decoded message.
846        ///
847        /// Default: `4MB`
848        #[must_use]
849        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
850            self.inner = self.inner.max_decoding_message_size(limit);
851            self
852        }
853        /// Limits the maximum size of an encoded message.
854        ///
855        /// Default: `usize::MAX`
856        #[must_use]
857        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
858            self.inner = self.inner.max_encoding_message_size(limit);
859            self
860        }
861        pub async fn ingest(
862            &mut self,
863            request: impl tonic::IntoRequest<super::IngestRequest>,
864        ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
865            self.inner
866                .ready()
867                .await
868                .map_err(|e| {
869                    tonic::Status::unknown(
870                        format!("Service was not ready: {}", e.into()),
871                    )
872                })?;
873            let codec = tonic::codec::ProstCodec::default();
874            let path = http::uri::PathAndQuery::from_static(
875                "/nominal.ingest.v2.IngestService/Ingest",
876            );
877            let mut req = request.into_request();
878            req.extensions_mut()
879                .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
880            self.inner.unary(req, path, codec).await
881        }
882    }
883}
884#[derive(Clone, PartialEq, ::prost::Message)]
885pub struct NativeExtractor {
886    #[prost(string, tag = "1")]
887    pub catalog_id: ::prost::alloc::string::String,
888    #[prost(string, repeated, tag = "2")]
889    pub available_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
890    #[prost(message, optional, tag = "3")]
891    pub installation: ::core::option::Option<ContainerizedExtractor>,
892    #[prost(string, optional, tag = "4")]
893    pub desired_version: ::core::option::Option<::prost::alloc::string::String>,
894    #[prost(string, tag = "5")]
895    pub display_name: ::prost::alloc::string::String,
896    #[prost(string, optional, tag = "6")]
897    pub description: ::core::option::Option<::prost::alloc::string::String>,
898}
899#[derive(Clone, PartialEq, ::prost::Message)]
900pub struct ListNativeExtractorsRequest {
901    #[prost(string, tag = "1")]
902    pub workspace_rid: ::prost::alloc::string::String,
903    #[prost(int32, tag = "2")]
904    pub page_size: i32,
905    #[prost(string, optional, tag = "3")]
906    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
907}
908#[derive(Clone, PartialEq, ::prost::Message)]
909pub struct ListNativeExtractorsResponse {
910    #[prost(message, repeated, tag = "1")]
911    pub extractors: ::prost::alloc::vec::Vec<NativeExtractor>,
912    #[prost(string, optional, tag = "2")]
913    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
914}
915#[derive(Clone, PartialEq, ::prost::Message)]
916pub struct EnableNativeExtractorRequest {
917    #[prost(string, tag = "1")]
918    pub workspace_rid: ::prost::alloc::string::String,
919    #[prost(string, tag = "2")]
920    pub catalog_id: ::prost::alloc::string::String,
921}
922#[derive(Clone, PartialEq, ::prost::Message)]
923pub struct EnableNativeExtractorResponse {
924    #[prost(message, optional, tag = "1")]
925    pub extractor: ::core::option::Option<NativeExtractor>,
926}
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct DisableNativeExtractorRequest {
929    #[prost(string, tag = "1")]
930    pub workspace_rid: ::prost::alloc::string::String,
931    #[prost(string, tag = "2")]
932    pub catalog_id: ::prost::alloc::string::String,
933}
934#[derive(Clone, Copy, PartialEq, ::prost::Message)]
935pub struct DisableNativeExtractorResponse {}
936/// Generated client implementations.
937pub mod native_extractor_service_client {
938    #![allow(
939        unused_variables,
940        dead_code,
941        missing_docs,
942        clippy::wildcard_imports,
943        clippy::let_unit_value,
944    )]
945    use tonic::codegen::*;
946    use tonic::codegen::http::Uri;
947    #[derive(Debug, Clone)]
948    pub struct NativeExtractorServiceClient<T> {
949        inner: tonic::client::Grpc<T>,
950    }
951    impl NativeExtractorServiceClient<tonic::transport::Channel> {
952        /// Attempt to create a new client by connecting to a given endpoint.
953        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
954        where
955            D: TryInto<tonic::transport::Endpoint>,
956            D::Error: Into<StdError>,
957        {
958            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
959            Ok(Self::new(conn))
960        }
961    }
962    impl<T> NativeExtractorServiceClient<T>
963    where
964        T: tonic::client::GrpcService<tonic::body::Body>,
965        T::Error: Into<StdError>,
966        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
967        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
968    {
969        pub fn new(inner: T) -> Self {
970            let inner = tonic::client::Grpc::new(inner);
971            Self { inner }
972        }
973        pub fn with_origin(inner: T, origin: Uri) -> Self {
974            let inner = tonic::client::Grpc::with_origin(inner, origin);
975            Self { inner }
976        }
977        pub fn with_interceptor<F>(
978            inner: T,
979            interceptor: F,
980        ) -> NativeExtractorServiceClient<InterceptedService<T, F>>
981        where
982            F: tonic::service::Interceptor,
983            T::ResponseBody: Default,
984            T: tonic::codegen::Service<
985                http::Request<tonic::body::Body>,
986                Response = http::Response<
987                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
988                >,
989            >,
990            <T as tonic::codegen::Service<
991                http::Request<tonic::body::Body>,
992            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
993        {
994            NativeExtractorServiceClient::new(
995                InterceptedService::new(inner, interceptor),
996            )
997        }
998        /// Compress requests with the given encoding.
999        ///
1000        /// This requires the server to support it otherwise it might respond with an
1001        /// error.
1002        #[must_use]
1003        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1004            self.inner = self.inner.send_compressed(encoding);
1005            self
1006        }
1007        /// Enable decompressing responses.
1008        #[must_use]
1009        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1010            self.inner = self.inner.accept_compressed(encoding);
1011            self
1012        }
1013        /// Limits the maximum size of a decoded message.
1014        ///
1015        /// Default: `4MB`
1016        #[must_use]
1017        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1018            self.inner = self.inner.max_decoding_message_size(limit);
1019            self
1020        }
1021        /// Limits the maximum size of an encoded message.
1022        ///
1023        /// Default: `usize::MAX`
1024        #[must_use]
1025        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1026            self.inner = self.inner.max_encoding_message_size(limit);
1027            self
1028        }
1029        pub async fn list_native_extractors(
1030            &mut self,
1031            request: impl tonic::IntoRequest<super::ListNativeExtractorsRequest>,
1032        ) -> std::result::Result<
1033            tonic::Response<super::ListNativeExtractorsResponse>,
1034            tonic::Status,
1035        > {
1036            self.inner
1037                .ready()
1038                .await
1039                .map_err(|e| {
1040                    tonic::Status::unknown(
1041                        format!("Service was not ready: {}", e.into()),
1042                    )
1043                })?;
1044            let codec = tonic::codec::ProstCodec::default();
1045            let path = http::uri::PathAndQuery::from_static(
1046                "/nominal.ingest.v2.NativeExtractorService/ListNativeExtractors",
1047            );
1048            let mut req = request.into_request();
1049            req.extensions_mut()
1050                .insert(
1051                    GrpcMethod::new(
1052                        "nominal.ingest.v2.NativeExtractorService",
1053                        "ListNativeExtractors",
1054                    ),
1055                );
1056            self.inner.unary(req, path, codec).await
1057        }
1058        pub async fn enable_native_extractor(
1059            &mut self,
1060            request: impl tonic::IntoRequest<super::EnableNativeExtractorRequest>,
1061        ) -> std::result::Result<
1062            tonic::Response<super::EnableNativeExtractorResponse>,
1063            tonic::Status,
1064        > {
1065            self.inner
1066                .ready()
1067                .await
1068                .map_err(|e| {
1069                    tonic::Status::unknown(
1070                        format!("Service was not ready: {}", e.into()),
1071                    )
1072                })?;
1073            let codec = tonic::codec::ProstCodec::default();
1074            let path = http::uri::PathAndQuery::from_static(
1075                "/nominal.ingest.v2.NativeExtractorService/EnableNativeExtractor",
1076            );
1077            let mut req = request.into_request();
1078            req.extensions_mut()
1079                .insert(
1080                    GrpcMethod::new(
1081                        "nominal.ingest.v2.NativeExtractorService",
1082                        "EnableNativeExtractor",
1083                    ),
1084                );
1085            self.inner.unary(req, path, codec).await
1086        }
1087        pub async fn disable_native_extractor(
1088            &mut self,
1089            request: impl tonic::IntoRequest<super::DisableNativeExtractorRequest>,
1090        ) -> std::result::Result<
1091            tonic::Response<super::DisableNativeExtractorResponse>,
1092            tonic::Status,
1093        > {
1094            self.inner
1095                .ready()
1096                .await
1097                .map_err(|e| {
1098                    tonic::Status::unknown(
1099                        format!("Service was not ready: {}", e.into()),
1100                    )
1101                })?;
1102            let codec = tonic::codec::ProstCodec::default();
1103            let path = http::uri::PathAndQuery::from_static(
1104                "/nominal.ingest.v2.NativeExtractorService/DisableNativeExtractor",
1105            );
1106            let mut req = request.into_request();
1107            req.extensions_mut()
1108                .insert(
1109                    GrpcMethod::new(
1110                        "nominal.ingest.v2.NativeExtractorService",
1111                        "DisableNativeExtractor",
1112                    ),
1113                );
1114            self.inner.unary(req, path, codec).await
1115        }
1116    }
1117}
1118#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1119pub struct TimeRange {
1120    #[prost(message, optional, tag = "1")]
1121    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1122    #[prost(message, optional, tag = "2")]
1123    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1124}
1125#[derive(Clone, PartialEq, ::prost::Message)]
1126pub struct CustomSourceAttribution {
1127    #[prost(string, tag = "1")]
1128    pub source_name: ::prost::alloc::string::String,
1129}
1130#[derive(Clone, PartialEq, ::prost::Message)]
1131pub struct DataConnectorSourceAttribution {
1132    #[prost(string, tag = "1")]
1133    pub data_connector_rid: ::prost::alloc::string::String,
1134}
1135#[derive(Clone, PartialEq, ::prost::Message)]
1136pub struct MeshSourceAttribution {
1137    #[prost(string, tag = "1")]
1138    pub source_dataset_rid: ::prost::alloc::string::String,
1139    #[prost(string, tag = "2")]
1140    pub source_org_rid: ::prost::alloc::string::String,
1141    #[prost(string, tag = "3")]
1142    pub origin_source_label: ::prost::alloc::string::String,
1143}
1144#[derive(Clone, PartialEq, ::prost::Message)]
1145pub struct StreamingSourceAttribution {
1146    #[prost(oneof = "streaming_source_attribution::Source", tags = "1, 2, 3")]
1147    pub source: ::core::option::Option<streaming_source_attribution::Source>,
1148}
1149/// Nested message and enum types in `StreamingSourceAttribution`.
1150pub mod streaming_source_attribution {
1151    #[derive(Clone, PartialEq, ::prost::Oneof)]
1152    pub enum Source {
1153        #[prost(message, tag = "1")]
1154        Mesh(super::MeshSourceAttribution),
1155        #[prost(message, tag = "2")]
1156        DataConnector(super::DataConnectorSourceAttribution),
1157        #[prost(message, tag = "3")]
1158        Custom(super::CustomSourceAttribution),
1159    }
1160}
1161#[derive(Clone, PartialEq, ::prost::Message)]
1162pub struct StreamingSession {
1163    #[prost(string, tag = "1")]
1164    pub streaming_session_rid: ::prost::alloc::string::String,
1165    #[prost(string, tag = "2")]
1166    pub dataset_rid: ::prost::alloc::string::String,
1167    #[prost(enumeration = "StreamingSessionStatus", tag = "3")]
1168    pub status: i32,
1169    #[prost(message, optional, tag = "4")]
1170    pub source: ::core::option::Option<StreamingSourceAttribution>,
1171    #[prost(message, optional, tag = "5")]
1172    pub data_bounds: ::core::option::Option<TimeRange>,
1173    #[prost(int64, tag = "6")]
1174    pub points_count: i64,
1175    #[prost(message, optional, tag = "7")]
1176    pub created_at: ::core::option::Option<
1177        super::super::super::google::protobuf::Timestamp,
1178    >,
1179    #[prost(message, optional, tag = "8")]
1180    pub last_seen_at: ::core::option::Option<
1181        super::super::super::google::protobuf::Timestamp,
1182    >,
1183    #[prost(message, optional, tag = "9")]
1184    pub completed_at: ::core::option::Option<
1185        super::super::super::google::protobuf::Timestamp,
1186    >,
1187}
1188#[derive(Clone, PartialEq, ::prost::Message)]
1189pub struct StreamingDatasetRidsFilter {
1190    #[prost(string, repeated, tag = "1")]
1191    pub dataset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1192}
1193#[derive(Clone, PartialEq, ::prost::Message)]
1194pub struct ExactStreamingSourceFilter {
1195    #[prost(string, tag = "1")]
1196    pub dataset_rid: ::prost::alloc::string::String,
1197    #[prost(message, optional, tag = "2")]
1198    pub source: ::core::option::Option<StreamingSourceAttribution>,
1199}
1200#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1201pub struct StreamingSessionDataBoundsFilter {
1202    #[prost(message, optional, tag = "1")]
1203    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1204    #[prost(message, optional, tag = "2")]
1205    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1206}
1207#[derive(Clone, PartialEq, ::prost::Message)]
1208pub struct StreamingWorkspaceFilter {
1209    #[prost(string, tag = "1")]
1210    pub workspace_rid: ::prost::alloc::string::String,
1211}
1212#[derive(Clone, PartialEq, ::prost::Message)]
1213pub struct StreamingSessionAndFilter {
1214    #[prost(message, repeated, tag = "1")]
1215    pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1216}
1217#[derive(Clone, PartialEq, ::prost::Message)]
1218pub struct StreamingSessionOrFilter {
1219    #[prost(message, repeated, tag = "1")]
1220    pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1221}
1222#[derive(Clone, PartialEq, ::prost::Message)]
1223pub struct StreamingSessionNotFilter {
1224    #[prost(message, optional, boxed, tag = "1")]
1225    pub filter: ::core::option::Option<
1226        ::prost::alloc::boxed::Box<StreamingSessionSearchFilter>,
1227    >,
1228}
1229#[derive(Clone, PartialEq, ::prost::Message)]
1230pub struct StreamingSessionSearchFilter {
1231    #[prost(
1232        oneof = "streaming_session_search_filter::Filter",
1233        tags = "1, 2, 3, 4, 5, 6, 7"
1234    )]
1235    pub filter: ::core::option::Option<streaming_session_search_filter::Filter>,
1236}
1237/// Nested message and enum types in `StreamingSessionSearchFilter`.
1238pub mod streaming_session_search_filter {
1239    #[derive(Clone, PartialEq, ::prost::Oneof)]
1240    pub enum Filter {
1241        #[prost(message, tag = "1")]
1242        DatasetRids(super::StreamingDatasetRidsFilter),
1243        #[prost(message, tag = "2")]
1244        Source(super::ExactStreamingSourceFilter),
1245        #[prost(message, tag = "3")]
1246        DataBoundsOverlap(super::StreamingSessionDataBoundsFilter),
1247        #[prost(message, tag = "4")]
1248        Workspace(super::StreamingWorkspaceFilter),
1249        #[prost(message, tag = "5")]
1250        And(super::StreamingSessionAndFilter),
1251        #[prost(message, tag = "6")]
1252        Or(super::StreamingSessionOrFilter),
1253        #[prost(message, tag = "7")]
1254        Not(::prost::alloc::boxed::Box<super::StreamingSessionNotFilter>),
1255    }
1256}
1257#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1258pub struct StreamingSessionSortOptions {
1259    #[prost(enumeration = "StreamingSessionSortField", tag = "1")]
1260    pub field: i32,
1261    #[prost(bool, tag = "2")]
1262    pub is_descending: bool,
1263}
1264#[derive(Clone, PartialEq, ::prost::Message)]
1265pub struct SearchStreamingSessionsRequest {
1266    #[prost(int32, optional, tag = "1")]
1267    pub page_size: ::core::option::Option<i32>,
1268    #[prost(string, optional, tag = "2")]
1269    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1270    #[prost(message, optional, tag = "3")]
1271    pub filter: ::core::option::Option<StreamingSessionSearchFilter>,
1272    #[prost(message, optional, tag = "4")]
1273    pub sort: ::core::option::Option<StreamingSessionSortOptions>,
1274}
1275#[derive(Clone, PartialEq, ::prost::Message)]
1276pub struct SearchStreamingSessionsResponse {
1277    #[prost(message, repeated, tag = "1")]
1278    pub streaming_sessions: ::prost::alloc::vec::Vec<StreamingSession>,
1279    #[prost(string, optional, tag = "2")]
1280    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1281}
1282#[derive(Clone, PartialEq, ::prost::Message)]
1283pub struct StreamingSource {
1284    #[prost(message, optional, tag = "1")]
1285    pub source: ::core::option::Option<StreamingSourceAttribution>,
1286    #[prost(string, tag = "2")]
1287    pub dataset_rid: ::prost::alloc::string::String,
1288    #[prost(int64, tag = "3")]
1289    pub session_count: i64,
1290    #[prost(int64, tag = "4")]
1291    pub total_points_count: i64,
1292    #[prost(message, optional, tag = "5")]
1293    pub earliest_created_at: ::core::option::Option<
1294        super::super::super::google::protobuf::Timestamp,
1295    >,
1296    #[prost(message, optional, tag = "6")]
1297    pub latest_last_seen_at: ::core::option::Option<
1298        super::super::super::google::protobuf::Timestamp,
1299    >,
1300    #[prost(message, optional, tag = "7")]
1301    pub merged_data_bounds: ::core::option::Option<TimeRange>,
1302    #[prost(bool, tag = "8")]
1303    pub any_in_progress: bool,
1304}
1305#[derive(Clone, PartialEq, ::prost::Message)]
1306pub struct StreamingSourceAndFilter {
1307    #[prost(message, repeated, tag = "1")]
1308    pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1309}
1310#[derive(Clone, PartialEq, ::prost::Message)]
1311pub struct StreamingSourceOrFilter {
1312    #[prost(message, repeated, tag = "1")]
1313    pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1314}
1315#[derive(Clone, PartialEq, ::prost::Message)]
1316pub struct StreamingSourceNotFilter {
1317    #[prost(message, optional, boxed, tag = "1")]
1318    pub filter: ::core::option::Option<
1319        ::prost::alloc::boxed::Box<StreamingSourceSearchFilter>,
1320    >,
1321}
1322#[derive(Clone, PartialEq, ::prost::Message)]
1323pub struct StreamingSourceSearchFilter {
1324    #[prost(oneof = "streaming_source_search_filter::Filter", tags = "1, 2, 3, 4, 5, 6")]
1325    pub filter: ::core::option::Option<streaming_source_search_filter::Filter>,
1326}
1327/// Nested message and enum types in `StreamingSourceSearchFilter`.
1328pub mod streaming_source_search_filter {
1329    #[derive(Clone, PartialEq, ::prost::Oneof)]
1330    pub enum Filter {
1331        #[prost(message, tag = "1")]
1332        DatasetRids(super::StreamingDatasetRidsFilter),
1333        #[prost(message, tag = "2")]
1334        Source(super::ExactStreamingSourceFilter),
1335        #[prost(message, tag = "3")]
1336        Workspace(super::StreamingWorkspaceFilter),
1337        #[prost(message, tag = "4")]
1338        And(super::StreamingSourceAndFilter),
1339        #[prost(message, tag = "5")]
1340        Or(super::StreamingSourceOrFilter),
1341        #[prost(message, tag = "6")]
1342        Not(::prost::alloc::boxed::Box<super::StreamingSourceNotFilter>),
1343    }
1344}
1345#[derive(Clone, PartialEq, ::prost::Message)]
1346pub struct SearchStreamingSourcesRequest {
1347    #[prost(int32, optional, tag = "1")]
1348    pub page_size: ::core::option::Option<i32>,
1349    #[prost(string, optional, tag = "2")]
1350    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1351    #[prost(message, optional, tag = "3")]
1352    pub filter: ::core::option::Option<StreamingSourceSearchFilter>,
1353    #[prost(message, optional, tag = "4")]
1354    pub last_seen_after: ::core::option::Option<
1355        super::super::super::google::protobuf::Timestamp,
1356    >,
1357}
1358#[derive(Clone, PartialEq, ::prost::Message)]
1359pub struct SearchStreamingSourcesResponse {
1360    #[prost(message, repeated, tag = "1")]
1361    pub streaming_sources: ::prost::alloc::vec::Vec<StreamingSource>,
1362    #[prost(string, optional, tag = "2")]
1363    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1364}
1365#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1366#[repr(i32)]
1367pub enum StreamingSessionError {
1368    Unspecified = 0,
1369    FilterTooComplex = 1,
1370}
1371impl StreamingSessionError {
1372    /// String value of the enum field names used in the ProtoBuf definition.
1373    ///
1374    /// The values are not transformed in any way and thus are considered stable
1375    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1376    pub fn as_str_name(&self) -> &'static str {
1377        match self {
1378            Self::Unspecified => "STREAMING_SESSION_ERROR_UNSPECIFIED",
1379            Self::FilterTooComplex => "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX",
1380        }
1381    }
1382    /// Creates an enum from field names used in the ProtoBuf definition.
1383    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1384        match value {
1385            "STREAMING_SESSION_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1386            "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX" => Some(Self::FilterTooComplex),
1387            _ => None,
1388        }
1389    }
1390}
1391#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1392#[repr(i32)]
1393pub enum StreamingSessionStatus {
1394    Unspecified = 0,
1395    InProgress = 1,
1396    Completed = 2,
1397}
1398impl StreamingSessionStatus {
1399    /// String value of the enum field names used in the ProtoBuf definition.
1400    ///
1401    /// The values are not transformed in any way and thus are considered stable
1402    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1403    pub fn as_str_name(&self) -> &'static str {
1404        match self {
1405            Self::Unspecified => "STREAMING_SESSION_STATUS_UNSPECIFIED",
1406            Self::InProgress => "STREAMING_SESSION_STATUS_IN_PROGRESS",
1407            Self::Completed => "STREAMING_SESSION_STATUS_COMPLETED",
1408        }
1409    }
1410    /// Creates an enum from field names used in the ProtoBuf definition.
1411    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1412        match value {
1413            "STREAMING_SESSION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1414            "STREAMING_SESSION_STATUS_IN_PROGRESS" => Some(Self::InProgress),
1415            "STREAMING_SESSION_STATUS_COMPLETED" => Some(Self::Completed),
1416            _ => None,
1417        }
1418    }
1419}
1420#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1421#[repr(i32)]
1422pub enum StreamingSessionSortField {
1423    Unspecified = 0,
1424    CreatedAt = 1,
1425    DataBoundsStart = 2,
1426}
1427impl StreamingSessionSortField {
1428    /// String value of the enum field names used in the ProtoBuf definition.
1429    ///
1430    /// The values are not transformed in any way and thus are considered stable
1431    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1432    pub fn as_str_name(&self) -> &'static str {
1433        match self {
1434            Self::Unspecified => "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED",
1435            Self::CreatedAt => "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
1436            Self::DataBoundsStart => "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START",
1437        }
1438    }
1439    /// Creates an enum from field names used in the ProtoBuf definition.
1440    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1441        match value {
1442            "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
1443            "STREAMING_SESSION_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
1444            "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START" => {
1445                Some(Self::DataBoundsStart)
1446            }
1447            _ => None,
1448        }
1449    }
1450}
1451/// Generated client implementations.
1452pub mod streaming_session_service_client {
1453    #![allow(
1454        unused_variables,
1455        dead_code,
1456        missing_docs,
1457        clippy::wildcard_imports,
1458        clippy::let_unit_value,
1459    )]
1460    use tonic::codegen::*;
1461    use tonic::codegen::http::Uri;
1462    #[derive(Debug, Clone)]
1463    pub struct StreamingSessionServiceClient<T> {
1464        inner: tonic::client::Grpc<T>,
1465    }
1466    impl StreamingSessionServiceClient<tonic::transport::Channel> {
1467        /// Attempt to create a new client by connecting to a given endpoint.
1468        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1469        where
1470            D: TryInto<tonic::transport::Endpoint>,
1471            D::Error: Into<StdError>,
1472        {
1473            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1474            Ok(Self::new(conn))
1475        }
1476    }
1477    impl<T> StreamingSessionServiceClient<T>
1478    where
1479        T: tonic::client::GrpcService<tonic::body::Body>,
1480        T::Error: Into<StdError>,
1481        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1482        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1483    {
1484        pub fn new(inner: T) -> Self {
1485            let inner = tonic::client::Grpc::new(inner);
1486            Self { inner }
1487        }
1488        pub fn with_origin(inner: T, origin: Uri) -> Self {
1489            let inner = tonic::client::Grpc::with_origin(inner, origin);
1490            Self { inner }
1491        }
1492        pub fn with_interceptor<F>(
1493            inner: T,
1494            interceptor: F,
1495        ) -> StreamingSessionServiceClient<InterceptedService<T, F>>
1496        where
1497            F: tonic::service::Interceptor,
1498            T::ResponseBody: Default,
1499            T: tonic::codegen::Service<
1500                http::Request<tonic::body::Body>,
1501                Response = http::Response<
1502                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1503                >,
1504            >,
1505            <T as tonic::codegen::Service<
1506                http::Request<tonic::body::Body>,
1507            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1508        {
1509            StreamingSessionServiceClient::new(
1510                InterceptedService::new(inner, interceptor),
1511            )
1512        }
1513        /// Compress requests with the given encoding.
1514        ///
1515        /// This requires the server to support it otherwise it might respond with an
1516        /// error.
1517        #[must_use]
1518        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1519            self.inner = self.inner.send_compressed(encoding);
1520            self
1521        }
1522        /// Enable decompressing responses.
1523        #[must_use]
1524        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1525            self.inner = self.inner.accept_compressed(encoding);
1526            self
1527        }
1528        /// Limits the maximum size of a decoded message.
1529        ///
1530        /// Default: `4MB`
1531        #[must_use]
1532        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1533            self.inner = self.inner.max_decoding_message_size(limit);
1534            self
1535        }
1536        /// Limits the maximum size of an encoded message.
1537        ///
1538        /// Default: `usize::MAX`
1539        #[must_use]
1540        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1541            self.inner = self.inner.max_encoding_message_size(limit);
1542            self
1543        }
1544        pub async fn search_streaming_sessions(
1545            &mut self,
1546            request: impl tonic::IntoRequest<super::SearchStreamingSessionsRequest>,
1547        ) -> std::result::Result<
1548            tonic::Response<super::SearchStreamingSessionsResponse>,
1549            tonic::Status,
1550        > {
1551            self.inner
1552                .ready()
1553                .await
1554                .map_err(|e| {
1555                    tonic::Status::unknown(
1556                        format!("Service was not ready: {}", e.into()),
1557                    )
1558                })?;
1559            let codec = tonic::codec::ProstCodec::default();
1560            let path = http::uri::PathAndQuery::from_static(
1561                "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSessions",
1562            );
1563            let mut req = request.into_request();
1564            req.extensions_mut()
1565                .insert(
1566                    GrpcMethod::new(
1567                        "nominal.ingest.v2.StreamingSessionService",
1568                        "SearchStreamingSessions",
1569                    ),
1570                );
1571            self.inner.unary(req, path, codec).await
1572        }
1573        pub async fn search_streaming_sources(
1574            &mut self,
1575            request: impl tonic::IntoRequest<super::SearchStreamingSourcesRequest>,
1576        ) -> std::result::Result<
1577            tonic::Response<super::SearchStreamingSourcesResponse>,
1578            tonic::Status,
1579        > {
1580            self.inner
1581                .ready()
1582                .await
1583                .map_err(|e| {
1584                    tonic::Status::unknown(
1585                        format!("Service was not ready: {}", e.into()),
1586                    )
1587                })?;
1588            let codec = tonic::codec::ProstCodec::default();
1589            let path = http::uri::PathAndQuery::from_static(
1590                "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSources",
1591            );
1592            let mut req = request.into_request();
1593            req.extensions_mut()
1594                .insert(
1595                    GrpcMethod::new(
1596                        "nominal.ingest.v2.StreamingSessionService",
1597                        "SearchStreamingSources",
1598                    ),
1599                );
1600            self.inner.unary(req, path, codec).await
1601        }
1602    }
1603}