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