Skip to main content

nominal_api_proto/proto/
nominal.ingest.v2.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct IngestSource {
4    #[prost(oneof = "ingest_source::Source", tags = "1, 2, 3, 4")]
5    pub source: ::core::option::Option<ingest_source::Source>,
6}
7/// Nested message and enum types in `IngestSource`.
8pub mod ingest_source {
9    #[derive(Clone, PartialEq, ::prost::Oneof)]
10    pub enum Source {
11        #[prost(message, tag = "1")]
12        S3(super::S3IngestSource),
13        #[prost(message, tag = "2")]
14        Gcs(super::GcsIngestSource),
15        #[prost(message, tag = "3")]
16        PresignedFile(super::PresignedFileIngestSource),
17        #[prost(message, tag = "4")]
18        FileStore(super::FileStoreIngestSource),
19    }
20}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct S3IngestSource {
23    #[prost(string, tag = "1")]
24    pub path: ::prost::alloc::string::String,
25}
26#[derive(Clone, PartialEq, ::prost::Message)]
27pub struct GcsIngestSource {
28    #[prost(string, tag = "1")]
29    pub path: ::prost::alloc::string::String,
30}
31#[derive(Clone, PartialEq, ::prost::Message)]
32pub struct PresignedFileIngestSource {
33    #[prost(string, tag = "1")]
34    pub url: ::prost::alloc::string::String,
35}
36#[derive(Clone, PartialEq, ::prost::Message)]
37pub struct FileStoreIngestSource {
38    #[prost(string, tag = "1")]
39    pub file_revision_rid: ::prost::alloc::string::String,
40}
41#[derive(Clone, PartialEq, ::prost::Message)]
42pub struct TimestampMetadata {
43    #[prost(string, tag = "1")]
44    pub column: ::prost::alloc::string::String,
45    #[prost(message, optional, tag = "2")]
46    pub r#type: ::core::option::Option<super::super::types::time::TimestampType>,
47}
48#[derive(Clone, PartialEq, ::prost::Message)]
49pub struct ContainerizedExtractor {
50    #[prost(string, tag = "1")]
51    pub rid: ::prost::alloc::string::String,
52    #[prost(string, tag = "2")]
53    pub workspace_rid: ::prost::alloc::string::String,
54    #[prost(string, tag = "3")]
55    pub name: ::prost::alloc::string::String,
56    #[prost(string, optional, tag = "4")]
57    pub description: ::core::option::Option<::prost::alloc::string::String>,
58    #[prost(message, optional, tag = "5")]
59    pub created_at: ::core::option::Option<
60        super::super::super::google::protobuf::Timestamp,
61    >,
62    #[prost(bool, tag = "6")]
63    pub is_archived: bool,
64    #[prost(message, optional, tag = "7")]
65    pub active_container_image: ::core::option::Option<
66        super::super::registry::v2::ContainerImage,
67    >,
68    #[prost(enumeration = "ExtractorOrigin", tag = "8")]
69    pub origin: i32,
70    #[prost(string, optional, tag = "9")]
71    pub catalog_id: ::core::option::Option<::prost::alloc::string::String>,
72    #[prost(map = "string, string", tag = "10")]
73    pub properties: ::std::collections::HashMap<
74        ::prost::alloc::string::String,
75        ::prost::alloc::string::String,
76    >,
77    #[prost(string, repeated, tag = "11")]
78    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
79}
80#[derive(Clone, PartialEq, ::prost::Message)]
81pub struct CreateContainerizedExtractorRequest {
82    #[prost(string, tag = "1")]
83    pub workspace_rid: ::prost::alloc::string::String,
84    #[prost(string, tag = "2")]
85    pub name: ::prost::alloc::string::String,
86    #[prost(string, optional, tag = "3")]
87    pub description: ::core::option::Option<::prost::alloc::string::String>,
88    #[prost(map = "string, string", tag = "4")]
89    pub properties: ::std::collections::HashMap<
90        ::prost::alloc::string::String,
91        ::prost::alloc::string::String,
92    >,
93    #[prost(string, repeated, tag = "5")]
94    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
95}
96#[derive(Clone, PartialEq, ::prost::Message)]
97pub struct CreateContainerizedExtractorResponse {
98    #[prost(message, optional, tag = "1")]
99    pub extractor: ::core::option::Option<ContainerizedExtractor>,
100}
101#[derive(Clone, PartialEq, ::prost::Message)]
102pub struct GetContainerizedExtractorRequest {
103    #[prost(string, tag = "1")]
104    pub rid: ::prost::alloc::string::String,
105    #[prost(string, tag = "2")]
106    pub workspace_rid: ::prost::alloc::string::String,
107}
108#[derive(Clone, PartialEq, ::prost::Message)]
109pub struct GetContainerizedExtractorResponse {
110    #[prost(message, optional, tag = "1")]
111    pub extractor: ::core::option::Option<ContainerizedExtractor>,
112}
113#[derive(Clone, PartialEq, ::prost::Message)]
114pub struct UpdateContainerizedExtractorRequest {
115    #[prost(string, tag = "1")]
116    pub rid: ::prost::alloc::string::String,
117    #[prost(string, tag = "2")]
118    pub workspace_rid: ::prost::alloc::string::String,
119    #[prost(string, optional, tag = "3")]
120    pub name: ::core::option::Option<::prost::alloc::string::String>,
121    #[prost(string, optional, tag = "4")]
122    pub description: ::core::option::Option<::prost::alloc::string::String>,
123    #[prost(bool, optional, tag = "5")]
124    pub is_archived: ::core::option::Option<bool>,
125    #[prost(string, optional, tag = "6")]
126    pub active_container_image_rid: ::core::option::Option<
127        ::prost::alloc::string::String,
128    >,
129    #[prost(message, optional, tag = "7")]
130    pub properties: ::core::option::Option<super::super::types::PropertyUpdateWrapper>,
131    #[prost(message, optional, tag = "8")]
132    pub labels: ::core::option::Option<super::super::types::LabelUpdateWrapper>,
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct UpdateContainerizedExtractorResponse {
136    #[prost(message, optional, tag = "1")]
137    pub extractor: ::core::option::Option<ContainerizedExtractor>,
138}
139#[derive(Clone, PartialEq, ::prost::Message)]
140pub struct ArchiveContainerizedExtractorRequest {
141    #[prost(string, tag = "1")]
142    pub rid: ::prost::alloc::string::String,
143    #[prost(string, tag = "2")]
144    pub workspace_rid: ::prost::alloc::string::String,
145}
146#[derive(Clone, Copy, PartialEq, ::prost::Message)]
147pub struct ArchiveContainerizedExtractorResponse {}
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct SearchContainerizedExtractorsRequest {
150    #[prost(string, tag = "1")]
151    pub workspace_rid: ::prost::alloc::string::String,
152    #[prost(bool, tag = "2")]
153    pub include_archived: bool,
154    #[prost(int32, tag = "3")]
155    pub page_size: i32,
156    #[prost(string, optional, tag = "4")]
157    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
158    #[prost(string, optional, tag = "5")]
159    pub file_extension: ::core::option::Option<::prost::alloc::string::String>,
160    #[prost(map = "string, string", tag = "6")]
161    pub properties: ::std::collections::HashMap<
162        ::prost::alloc::string::String,
163        ::prost::alloc::string::String,
164    >,
165    #[prost(string, repeated, tag = "7")]
166    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
167}
168#[derive(Clone, PartialEq, ::prost::Message)]
169pub struct SearchContainerizedExtractorsResponse {
170    #[prost(message, repeated, tag = "1")]
171    pub extractors: ::prost::alloc::vec::Vec<ContainerizedExtractor>,
172    #[prost(string, optional, tag = "2")]
173    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
174}
175#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
176#[repr(i32)]
177pub enum ExtractorOrigin {
178    Unspecified = 0,
179    Customer = 1,
180    FirstParty = 2,
181}
182impl ExtractorOrigin {
183    /// String value of the enum field names used in the ProtoBuf definition.
184    ///
185    /// The values are not transformed in any way and thus are considered stable
186    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
187    pub fn as_str_name(&self) -> &'static str {
188        match self {
189            Self::Unspecified => "EXTRACTOR_ORIGIN_UNSPECIFIED",
190            Self::Customer => "EXTRACTOR_ORIGIN_CUSTOMER",
191            Self::FirstParty => "EXTRACTOR_ORIGIN_FIRST_PARTY",
192        }
193    }
194    /// Creates an enum from field names used in the ProtoBuf definition.
195    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
196        match value {
197            "EXTRACTOR_ORIGIN_UNSPECIFIED" => Some(Self::Unspecified),
198            "EXTRACTOR_ORIGIN_CUSTOMER" => Some(Self::Customer),
199            "EXTRACTOR_ORIGIN_FIRST_PARTY" => Some(Self::FirstParty),
200            _ => None,
201        }
202    }
203}
204/// Generated client implementations.
205pub mod containerized_extractor_service_client {
206    #![allow(
207        unused_variables,
208        dead_code,
209        missing_docs,
210        clippy::wildcard_imports,
211        clippy::let_unit_value,
212    )]
213    use tonic::codegen::*;
214    use tonic::codegen::http::Uri;
215    #[derive(Debug, Clone)]
216    pub struct ContainerizedExtractorServiceClient<T> {
217        inner: tonic::client::Grpc<T>,
218    }
219    impl ContainerizedExtractorServiceClient<tonic::transport::Channel> {
220        /// Attempt to create a new client by connecting to a given endpoint.
221        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
222        where
223            D: TryInto<tonic::transport::Endpoint>,
224            D::Error: Into<StdError>,
225        {
226            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
227            Ok(Self::new(conn))
228        }
229    }
230    impl<T> ContainerizedExtractorServiceClient<T>
231    where
232        T: tonic::client::GrpcService<tonic::body::Body>,
233        T::Error: Into<StdError>,
234        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
235        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
236    {
237        pub fn new(inner: T) -> Self {
238            let inner = tonic::client::Grpc::new(inner);
239            Self { inner }
240        }
241        pub fn with_origin(inner: T, origin: Uri) -> Self {
242            let inner = tonic::client::Grpc::with_origin(inner, origin);
243            Self { inner }
244        }
245        pub fn with_interceptor<F>(
246            inner: T,
247            interceptor: F,
248        ) -> ContainerizedExtractorServiceClient<InterceptedService<T, F>>
249        where
250            F: tonic::service::Interceptor,
251            T::ResponseBody: Default,
252            T: tonic::codegen::Service<
253                http::Request<tonic::body::Body>,
254                Response = http::Response<
255                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
256                >,
257            >,
258            <T as tonic::codegen::Service<
259                http::Request<tonic::body::Body>,
260            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
261        {
262            ContainerizedExtractorServiceClient::new(
263                InterceptedService::new(inner, interceptor),
264            )
265        }
266        /// Compress requests with the given encoding.
267        ///
268        /// This requires the server to support it otherwise it might respond with an
269        /// error.
270        #[must_use]
271        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
272            self.inner = self.inner.send_compressed(encoding);
273            self
274        }
275        /// Enable decompressing responses.
276        #[must_use]
277        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
278            self.inner = self.inner.accept_compressed(encoding);
279            self
280        }
281        /// Limits the maximum size of a decoded message.
282        ///
283        /// Default: `4MB`
284        #[must_use]
285        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
286            self.inner = self.inner.max_decoding_message_size(limit);
287            self
288        }
289        /// Limits the maximum size of an encoded message.
290        ///
291        /// Default: `usize::MAX`
292        #[must_use]
293        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
294            self.inner = self.inner.max_encoding_message_size(limit);
295            self
296        }
297        pub async fn create_containerized_extractor(
298            &mut self,
299            request: impl tonic::IntoRequest<super::CreateContainerizedExtractorRequest>,
300        ) -> std::result::Result<
301            tonic::Response<super::CreateContainerizedExtractorResponse>,
302            tonic::Status,
303        > {
304            self.inner
305                .ready()
306                .await
307                .map_err(|e| {
308                    tonic::Status::unknown(
309                        format!("Service was not ready: {}", e.into()),
310                    )
311                })?;
312            let codec = tonic::codec::ProstCodec::default();
313            let path = http::uri::PathAndQuery::from_static(
314                "/nominal.ingest.v2.ContainerizedExtractorService/CreateContainerizedExtractor",
315            );
316            let mut req = request.into_request();
317            req.extensions_mut()
318                .insert(
319                    GrpcMethod::new(
320                        "nominal.ingest.v2.ContainerizedExtractorService",
321                        "CreateContainerizedExtractor",
322                    ),
323                );
324            self.inner.unary(req, path, codec).await
325        }
326        pub async fn get_containerized_extractor(
327            &mut self,
328            request: impl tonic::IntoRequest<super::GetContainerizedExtractorRequest>,
329        ) -> std::result::Result<
330            tonic::Response<super::GetContainerizedExtractorResponse>,
331            tonic::Status,
332        > {
333            self.inner
334                .ready()
335                .await
336                .map_err(|e| {
337                    tonic::Status::unknown(
338                        format!("Service was not ready: {}", e.into()),
339                    )
340                })?;
341            let codec = tonic::codec::ProstCodec::default();
342            let path = http::uri::PathAndQuery::from_static(
343                "/nominal.ingest.v2.ContainerizedExtractorService/GetContainerizedExtractor",
344            );
345            let mut req = request.into_request();
346            req.extensions_mut()
347                .insert(
348                    GrpcMethod::new(
349                        "nominal.ingest.v2.ContainerizedExtractorService",
350                        "GetContainerizedExtractor",
351                    ),
352                );
353            self.inner.unary(req, path, codec).await
354        }
355        pub async fn update_containerized_extractor(
356            &mut self,
357            request: impl tonic::IntoRequest<super::UpdateContainerizedExtractorRequest>,
358        ) -> std::result::Result<
359            tonic::Response<super::UpdateContainerizedExtractorResponse>,
360            tonic::Status,
361        > {
362            self.inner
363                .ready()
364                .await
365                .map_err(|e| {
366                    tonic::Status::unknown(
367                        format!("Service was not ready: {}", e.into()),
368                    )
369                })?;
370            let codec = tonic::codec::ProstCodec::default();
371            let path = http::uri::PathAndQuery::from_static(
372                "/nominal.ingest.v2.ContainerizedExtractorService/UpdateContainerizedExtractor",
373            );
374            let mut req = request.into_request();
375            req.extensions_mut()
376                .insert(
377                    GrpcMethod::new(
378                        "nominal.ingest.v2.ContainerizedExtractorService",
379                        "UpdateContainerizedExtractor",
380                    ),
381                );
382            self.inner.unary(req, path, codec).await
383        }
384        pub async fn archive_containerized_extractor(
385            &mut self,
386            request: impl tonic::IntoRequest<super::ArchiveContainerizedExtractorRequest>,
387        ) -> std::result::Result<
388            tonic::Response<super::ArchiveContainerizedExtractorResponse>,
389            tonic::Status,
390        > {
391            self.inner
392                .ready()
393                .await
394                .map_err(|e| {
395                    tonic::Status::unknown(
396                        format!("Service was not ready: {}", e.into()),
397                    )
398                })?;
399            let codec = tonic::codec::ProstCodec::default();
400            let path = http::uri::PathAndQuery::from_static(
401                "/nominal.ingest.v2.ContainerizedExtractorService/ArchiveContainerizedExtractor",
402            );
403            let mut req = request.into_request();
404            req.extensions_mut()
405                .insert(
406                    GrpcMethod::new(
407                        "nominal.ingest.v2.ContainerizedExtractorService",
408                        "ArchiveContainerizedExtractor",
409                    ),
410                );
411            self.inner.unary(req, path, codec).await
412        }
413        pub async fn search_containerized_extractors(
414            &mut self,
415            request: impl tonic::IntoRequest<super::SearchContainerizedExtractorsRequest>,
416        ) -> std::result::Result<
417            tonic::Response<super::SearchContainerizedExtractorsResponse>,
418            tonic::Status,
419        > {
420            self.inner
421                .ready()
422                .await
423                .map_err(|e| {
424                    tonic::Status::unknown(
425                        format!("Service was not ready: {}", e.into()),
426                    )
427                })?;
428            let codec = tonic::codec::ProstCodec::default();
429            let path = http::uri::PathAndQuery::from_static(
430                "/nominal.ingest.v2.ContainerizedExtractorService/SearchContainerizedExtractors",
431            );
432            let mut req = request.into_request();
433            req.extensions_mut()
434                .insert(
435                    GrpcMethod::new(
436                        "nominal.ingest.v2.ContainerizedExtractorService",
437                        "SearchContainerizedExtractors",
438                    ),
439                );
440            self.inner.unary(req, path, codec).await
441        }
442    }
443}
444#[derive(Clone, PartialEq, ::prost::Message)]
445pub struct ContainerizedIngestItem {
446    #[prost(string, tag = "1")]
447    pub extractor_rid: ::prost::alloc::string::String,
448    #[prost(map = "string, message", tag = "2")]
449    pub sources: ::std::collections::HashMap<
450        ::prost::alloc::string::String,
451        IngestSource,
452    >,
453    #[prost(map = "string, string", tag = "3")]
454    pub arguments: ::std::collections::HashMap<
455        ::prost::alloc::string::String,
456        ::prost::alloc::string::String,
457    >,
458    #[prost(message, optional, tag = "4")]
459    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
460}
461#[derive(Clone, PartialEq, ::prost::Message)]
462pub struct FileIngestItem {
463    #[prost(message, optional, tag = "1")]
464    pub source: ::core::option::Option<IngestSource>,
465    #[prost(message, optional, tag = "2")]
466    pub ingest: ::core::option::Option<FileIngestOptions>,
467}
468#[derive(Clone, PartialEq, ::prost::Message)]
469pub struct FileIngestOptions {
470    #[prost(message, optional, tag = "1")]
471    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
472    #[prost(map = "string, string", tag = "2")]
473    pub units: ::std::collections::HashMap<
474        ::prost::alloc::string::String,
475        ::prost::alloc::string::String,
476    >,
477    #[prost(string, optional, tag = "3")]
478    pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
479    #[prost(map = "string, string", tag = "7")]
480    pub channel_name_overrides: ::std::collections::HashMap<
481        ::prost::alloc::string::String,
482        ::prost::alloc::string::String,
483    >,
484    #[prost(oneof = "file_ingest_options::Ingest", tags = "4, 5, 6")]
485    pub ingest: ::core::option::Option<file_ingest_options::Ingest>,
486}
487/// Nested message and enum types in `FileIngestOptions`.
488pub mod file_ingest_options {
489    #[derive(Clone, PartialEq, ::prost::Oneof)]
490    pub enum Ingest {
491        #[prost(message, tag = "4")]
492        Csv(super::CsvIngestOptions),
493        #[prost(message, tag = "5")]
494        Parquet(super::ParquetIngestOptions),
495        #[prost(message, tag = "6")]
496        Avro(super::AvroIngestOptions),
497    }
498}
499#[derive(Clone, PartialEq, ::prost::Message)]
500pub struct CsvIngestOptions {
501    #[prost(message, optional, tag = "1")]
502    pub format: ::core::option::Option<CsvFormat>,
503    #[prost(int32, optional, tag = "4")]
504    pub header_row: ::core::option::Option<i32>,
505    #[prost(int32, optional, tag = "5")]
506    pub data_row: ::core::option::Option<i32>,
507    #[prost(int32, optional, tag = "6")]
508    pub units_row: ::core::option::Option<i32>,
509}
510#[derive(Clone, PartialEq, ::prost::Message)]
511pub struct ParquetIngestOptions {
512    #[prost(message, optional, tag = "1")]
513    pub format: ::core::option::Option<ParquetFormat>,
514    #[prost(bool, tag = "2")]
515    pub is_archive: bool,
516}
517#[derive(Clone, Copy, PartialEq, ::prost::Message)]
518pub struct AvroIngestOptions {}
519#[derive(Clone, PartialEq, ::prost::Message)]
520pub struct CsvFormat {
521    #[prost(oneof = "csv_format::Format", tags = "1, 2")]
522    pub format: ::core::option::Option<csv_format::Format>,
523}
524/// Nested message and enum types in `CsvFormat`.
525pub mod csv_format {
526    #[derive(Clone, PartialEq, ::prost::Oneof)]
527    pub enum Format {
528        #[prost(message, tag = "1")]
529        Wide(super::WideFormat),
530        #[prost(message, tag = "2")]
531        Long(super::LongFormat),
532    }
533}
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct ParquetFormat {
536    #[prost(oneof = "parquet_format::Format", tags = "1, 2")]
537    pub format: ::core::option::Option<parquet_format::Format>,
538}
539/// Nested message and enum types in `ParquetFormat`.
540pub mod parquet_format {
541    #[derive(Clone, PartialEq, ::prost::Oneof)]
542    pub enum Format {
543        #[prost(message, tag = "1")]
544        Wide(super::WideFormat),
545        #[prost(message, tag = "2")]
546        Long(super::LongFormat),
547    }
548}
549#[derive(Clone, PartialEq, ::prost::Message)]
550pub struct WideFormat {
551    #[prost(map = "string, string", tag = "1")]
552    pub tag_columns: ::std::collections::HashMap<
553        ::prost::alloc::string::String,
554        ::prost::alloc::string::String,
555    >,
556    #[prost(string, repeated, tag = "2")]
557    pub exclude_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
558}
559#[derive(Clone, PartialEq, ::prost::Message)]
560pub struct LongFormat {
561    #[prost(string, optional, tag = "1")]
562    pub channel_column: ::core::option::Option<::prost::alloc::string::String>,
563    #[prost(string, optional, tag = "2")]
564    pub value_column: ::core::option::Option<::prost::alloc::string::String>,
565    #[prost(string, optional, tag = "3")]
566    pub tags_column: ::core::option::Option<::prost::alloc::string::String>,
567}
568#[derive(Clone, PartialEq, ::prost::Message)]
569pub struct LogIngestItem {
570    #[prost(message, optional, tag = "1")]
571    pub source: ::core::option::Option<IngestSource>,
572    #[prost(string, optional, tag = "2")]
573    pub channel: ::core::option::Option<::prost::alloc::string::String>,
574    #[prost(message, optional, tag = "3")]
575    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
576    #[prost(string, optional, tag = "4")]
577    pub message_field: ::core::option::Option<::prost::alloc::string::String>,
578}
579#[derive(Clone, PartialEq, ::prost::Message)]
580pub struct McapIngestItem {
581    #[prost(message, optional, tag = "1")]
582    pub source: ::core::option::Option<IngestSource>,
583    #[prost(message, optional, tag = "2")]
584    pub channels: ::core::option::Option<McapChannelSelection>,
585    #[prost(bool, tag = "3")]
586    pub ignore_invalid_topics: bool,
587}
588#[derive(Clone, PartialEq, ::prost::Message)]
589pub struct McapChannelSelection {
590    #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
591    pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
592}
593/// Nested message and enum types in `McapChannelSelection`.
594pub mod mcap_channel_selection {
595    #[derive(Clone, PartialEq, ::prost::Oneof)]
596    pub enum Selection {
597        #[prost(message, tag = "1")]
598        IncludeTopics(super::McapTopicNames),
599        #[prost(message, tag = "2")]
600        ExcludeTopics(super::McapTopicNames),
601    }
602}
603#[derive(Clone, PartialEq, ::prost::Message)]
604pub struct McapTopicNames {
605    #[prost(string, repeated, tag = "1")]
606    pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
607}
608#[derive(Clone, PartialEq, ::prost::Message)]
609pub struct DataflashIngestItem {
610    #[prost(message, optional, tag = "1")]
611    pub source: ::core::option::Option<IngestSource>,
612}
613#[derive(Clone, PartialEq, ::prost::Message)]
614pub struct PointCloudIngestItem {
615    #[prost(message, optional, tag = "1")]
616    pub source: ::core::option::Option<IngestSource>,
617    #[prost(message, optional, tag = "2")]
618    pub ingest: ::core::option::Option<PointCloudIngestOptions>,
619}
620#[derive(Clone, PartialEq, ::prost::Message)]
621pub struct PointCloudIngestOptions {
622    #[prost(message, optional, tag = "1")]
623    pub sensor_metadata: ::core::option::Option<PointCloudSensorMetadata>,
624    #[prost(string, tag = "2")]
625    pub channel: ::prost::alloc::string::String,
626}
627#[derive(Clone, PartialEq, ::prost::Message)]
628pub struct PointCloudSensorMetadata {
629    #[prost(map = "string, string", tag = "1")]
630    pub properties: ::std::collections::HashMap<
631        ::prost::alloc::string::String,
632        ::prost::alloc::string::String,
633    >,
634}
635#[derive(Clone, PartialEq, ::prost::Message)]
636pub struct VideoIngestItem {
637    #[prost(message, optional, tag = "1")]
638    pub source: ::core::option::Option<IngestSource>,
639    #[prost(message, optional, tag = "2")]
640    pub ingest: ::core::option::Option<VideoIngestOptions>,
641}
642#[derive(Clone, PartialEq, ::prost::Message)]
643pub struct VideoIngestOptions {
644    #[prost(message, optional, tag = "1")]
645    pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
646    #[prost(string, tag = "2")]
647    pub channel: ::prost::alloc::string::String,
648    #[prost(bool, optional, tag = "3")]
649    pub overwrite_segments: ::core::option::Option<bool>,
650}
651#[derive(Clone, PartialEq, ::prost::Message)]
652pub struct VideoTimestampManifest {
653    #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2, 3")]
654    pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
655}
656/// Nested message and enum types in `VideoTimestampManifest`.
657pub mod video_timestamp_manifest {
658    #[derive(Clone, PartialEq, ::prost::Oneof)]
659    pub enum Manifest {
660        #[prost(message, tag = "1")]
661        NoManifest(super::NoTimestampManifest),
662        #[prost(message, tag = "2")]
663        TimestampManifestFiles(super::TimestampManifestFiles),
664        #[prost(message, tag = "3")]
665        Mcap(super::McapTimestampManifest),
666    }
667}
668#[derive(Clone, Copy, PartialEq, ::prost::Message)]
669pub struct NoTimestampManifest {
670    #[prost(message, optional, tag = "1")]
671    pub starting_timestamp: ::core::option::Option<
672        super::super::super::google::protobuf::Timestamp,
673    >,
674    #[prost(message, optional, tag = "2")]
675    pub scale_parameter: ::core::option::Option<ScaleParameter>,
676}
677#[derive(Clone, PartialEq, ::prost::Message)]
678pub struct TimestampManifestFiles {
679    #[prost(message, repeated, tag = "1")]
680    pub sources: ::prost::alloc::vec::Vec<IngestSource>,
681}
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct McapTimestampManifest {
684    #[prost(message, optional, tag = "1")]
685    pub channel_locator: ::core::option::Option<McapChannelLocator>,
686}
687#[derive(Clone, PartialEq, ::prost::Message)]
688pub struct McapChannelLocator {
689    #[prost(oneof = "mcap_channel_locator::Locator", tags = "1, 2")]
690    pub locator: ::core::option::Option<mcap_channel_locator::Locator>,
691}
692/// Nested message and enum types in `McapChannelLocator`.
693pub mod mcap_channel_locator {
694    #[derive(Clone, PartialEq, ::prost::Oneof)]
695    pub enum Locator {
696        #[prost(string, tag = "1")]
697        Topic(::prost::alloc::string::String),
698        #[prost(int32, tag = "2")]
699        Id(i32),
700    }
701}
702#[derive(Clone, Copy, PartialEq, ::prost::Message)]
703pub struct ScaleParameter {
704    #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
705    pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
706}
707/// Nested message and enum types in `ScaleParameter`.
708pub mod scale_parameter {
709    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
710    pub enum ScaleParameter {
711        #[prost(double, tag = "1")]
712        TrueFrameRate(f64),
713        #[prost(message, tag = "2")]
714        EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
715        #[prost(double, tag = "3")]
716        ScaleFactor(f64),
717    }
718}
719#[derive(Clone, PartialEq, ::prost::Message)]
720pub struct IngestRequest {
721    #[prost(string, tag = "1")]
722    pub dataset_rid: ::prost::alloc::string::String,
723    #[prost(string, repeated, tag = "2")]
724    pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
725    #[prost(message, repeated, tag = "3")]
726    pub items: ::prost::alloc::vec::Vec<IngestItem>,
727    #[prost(map = "string, string", tag = "4")]
728    pub tags: ::std::collections::HashMap<
729        ::prost::alloc::string::String,
730        ::prost::alloc::string::String,
731    >,
732}
733#[derive(Clone, PartialEq, ::prost::Message)]
734pub struct IngestResponse {
735    #[prost(string, tag = "1")]
736    pub ingest_job_rid: ::prost::alloc::string::String,
737}
738#[derive(Clone, PartialEq, ::prost::Message)]
739pub struct IngestItem {
740    #[prost(map = "string, string", tag = "1")]
741    pub tags: ::std::collections::HashMap<
742        ::prost::alloc::string::String,
743        ::prost::alloc::string::String,
744    >,
745    #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
746    pub item: ::core::option::Option<ingest_item::Item>,
747}
748/// Nested message and enum types in `IngestItem`.
749pub mod ingest_item {
750    #[derive(Clone, PartialEq, ::prost::Oneof)]
751    pub enum Item {
752        #[prost(message, tag = "2")]
753        File(super::FileIngestItem),
754        #[prost(message, tag = "3")]
755        Log(super::LogIngestItem),
756        #[prost(message, tag = "4")]
757        Containerized(super::ContainerizedIngestItem),
758        #[prost(message, tag = "5")]
759        Video(super::VideoIngestItem),
760        #[prost(message, tag = "6")]
761        PointCloud(super::PointCloudIngestItem),
762        #[prost(message, tag = "7")]
763        Mcap(super::McapIngestItem),
764        #[prost(message, tag = "8")]
765        Dataflash(super::DataflashIngestItem),
766    }
767}
768/// Generated client implementations.
769pub mod ingest_service_client {
770    #![allow(
771        unused_variables,
772        dead_code,
773        missing_docs,
774        clippy::wildcard_imports,
775        clippy::let_unit_value,
776    )]
777    use tonic::codegen::*;
778    use tonic::codegen::http::Uri;
779    #[derive(Debug, Clone)]
780    pub struct IngestServiceClient<T> {
781        inner: tonic::client::Grpc<T>,
782    }
783    impl IngestServiceClient<tonic::transport::Channel> {
784        /// Attempt to create a new client by connecting to a given endpoint.
785        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
786        where
787            D: TryInto<tonic::transport::Endpoint>,
788            D::Error: Into<StdError>,
789        {
790            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
791            Ok(Self::new(conn))
792        }
793    }
794    impl<T> IngestServiceClient<T>
795    where
796        T: tonic::client::GrpcService<tonic::body::Body>,
797        T::Error: Into<StdError>,
798        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
799        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
800    {
801        pub fn new(inner: T) -> Self {
802            let inner = tonic::client::Grpc::new(inner);
803            Self { inner }
804        }
805        pub fn with_origin(inner: T, origin: Uri) -> Self {
806            let inner = tonic::client::Grpc::with_origin(inner, origin);
807            Self { inner }
808        }
809        pub fn with_interceptor<F>(
810            inner: T,
811            interceptor: F,
812        ) -> IngestServiceClient<InterceptedService<T, F>>
813        where
814            F: tonic::service::Interceptor,
815            T::ResponseBody: Default,
816            T: tonic::codegen::Service<
817                http::Request<tonic::body::Body>,
818                Response = http::Response<
819                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
820                >,
821            >,
822            <T as tonic::codegen::Service<
823                http::Request<tonic::body::Body>,
824            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
825        {
826            IngestServiceClient::new(InterceptedService::new(inner, interceptor))
827        }
828        /// Compress requests with the given encoding.
829        ///
830        /// This requires the server to support it otherwise it might respond with an
831        /// error.
832        #[must_use]
833        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
834            self.inner = self.inner.send_compressed(encoding);
835            self
836        }
837        /// Enable decompressing responses.
838        #[must_use]
839        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
840            self.inner = self.inner.accept_compressed(encoding);
841            self
842        }
843        /// Limits the maximum size of a decoded message.
844        ///
845        /// Default: `4MB`
846        #[must_use]
847        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
848            self.inner = self.inner.max_decoding_message_size(limit);
849            self
850        }
851        /// Limits the maximum size of an encoded message.
852        ///
853        /// Default: `usize::MAX`
854        #[must_use]
855        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
856            self.inner = self.inner.max_encoding_message_size(limit);
857            self
858        }
859        pub async fn ingest(
860            &mut self,
861            request: impl tonic::IntoRequest<super::IngestRequest>,
862        ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
863            self.inner
864                .ready()
865                .await
866                .map_err(|e| {
867                    tonic::Status::unknown(
868                        format!("Service was not ready: {}", e.into()),
869                    )
870                })?;
871            let codec = tonic::codec::ProstCodec::default();
872            let path = http::uri::PathAndQuery::from_static(
873                "/nominal.ingest.v2.IngestService/Ingest",
874            );
875            let mut req = request.into_request();
876            req.extensions_mut()
877                .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
878            self.inner.unary(req, path, codec).await
879        }
880    }
881}
882#[derive(Clone, PartialEq, ::prost::Message)]
883pub struct NativeExtractor {
884    #[prost(string, tag = "1")]
885    pub catalog_id: ::prost::alloc::string::String,
886    #[prost(string, repeated, tag = "2")]
887    pub available_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
888    #[prost(message, optional, tag = "3")]
889    pub installation: ::core::option::Option<ContainerizedExtractor>,
890    #[prost(string, optional, tag = "4")]
891    pub desired_version: ::core::option::Option<::prost::alloc::string::String>,
892    #[prost(string, tag = "5")]
893    pub display_name: ::prost::alloc::string::String,
894    #[prost(string, optional, tag = "6")]
895    pub description: ::core::option::Option<::prost::alloc::string::String>,
896}
897#[derive(Clone, PartialEq, ::prost::Message)]
898pub struct ListNativeExtractorsRequest {
899    #[prost(string, tag = "1")]
900    pub workspace_rid: ::prost::alloc::string::String,
901    #[prost(int32, tag = "2")]
902    pub page_size: i32,
903    #[prost(string, optional, tag = "3")]
904    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
905}
906#[derive(Clone, PartialEq, ::prost::Message)]
907pub struct ListNativeExtractorsResponse {
908    #[prost(message, repeated, tag = "1")]
909    pub extractors: ::prost::alloc::vec::Vec<NativeExtractor>,
910    #[prost(string, optional, tag = "2")]
911    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
912}
913#[derive(Clone, PartialEq, ::prost::Message)]
914pub struct EnableNativeExtractorRequest {
915    #[prost(string, tag = "1")]
916    pub workspace_rid: ::prost::alloc::string::String,
917    #[prost(string, tag = "2")]
918    pub catalog_id: ::prost::alloc::string::String,
919}
920#[derive(Clone, PartialEq, ::prost::Message)]
921pub struct EnableNativeExtractorResponse {
922    #[prost(message, optional, tag = "1")]
923    pub extractor: ::core::option::Option<NativeExtractor>,
924}
925#[derive(Clone, PartialEq, ::prost::Message)]
926pub struct DisableNativeExtractorRequest {
927    #[prost(string, tag = "1")]
928    pub workspace_rid: ::prost::alloc::string::String,
929    #[prost(string, tag = "2")]
930    pub catalog_id: ::prost::alloc::string::String,
931}
932#[derive(Clone, Copy, PartialEq, ::prost::Message)]
933pub struct DisableNativeExtractorResponse {}
934/// Generated client implementations.
935pub mod native_extractor_service_client {
936    #![allow(
937        unused_variables,
938        dead_code,
939        missing_docs,
940        clippy::wildcard_imports,
941        clippy::let_unit_value,
942    )]
943    use tonic::codegen::*;
944    use tonic::codegen::http::Uri;
945    #[derive(Debug, Clone)]
946    pub struct NativeExtractorServiceClient<T> {
947        inner: tonic::client::Grpc<T>,
948    }
949    impl NativeExtractorServiceClient<tonic::transport::Channel> {
950        /// Attempt to create a new client by connecting to a given endpoint.
951        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
952        where
953            D: TryInto<tonic::transport::Endpoint>,
954            D::Error: Into<StdError>,
955        {
956            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
957            Ok(Self::new(conn))
958        }
959    }
960    impl<T> NativeExtractorServiceClient<T>
961    where
962        T: tonic::client::GrpcService<tonic::body::Body>,
963        T::Error: Into<StdError>,
964        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
965        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
966    {
967        pub fn new(inner: T) -> Self {
968            let inner = tonic::client::Grpc::new(inner);
969            Self { inner }
970        }
971        pub fn with_origin(inner: T, origin: Uri) -> Self {
972            let inner = tonic::client::Grpc::with_origin(inner, origin);
973            Self { inner }
974        }
975        pub fn with_interceptor<F>(
976            inner: T,
977            interceptor: F,
978        ) -> NativeExtractorServiceClient<InterceptedService<T, F>>
979        where
980            F: tonic::service::Interceptor,
981            T::ResponseBody: Default,
982            T: tonic::codegen::Service<
983                http::Request<tonic::body::Body>,
984                Response = http::Response<
985                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
986                >,
987            >,
988            <T as tonic::codegen::Service<
989                http::Request<tonic::body::Body>,
990            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
991        {
992            NativeExtractorServiceClient::new(
993                InterceptedService::new(inner, interceptor),
994            )
995        }
996        /// Compress requests with the given encoding.
997        ///
998        /// This requires the server to support it otherwise it might respond with an
999        /// error.
1000        #[must_use]
1001        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1002            self.inner = self.inner.send_compressed(encoding);
1003            self
1004        }
1005        /// Enable decompressing responses.
1006        #[must_use]
1007        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1008            self.inner = self.inner.accept_compressed(encoding);
1009            self
1010        }
1011        /// Limits the maximum size of a decoded message.
1012        ///
1013        /// Default: `4MB`
1014        #[must_use]
1015        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1016            self.inner = self.inner.max_decoding_message_size(limit);
1017            self
1018        }
1019        /// Limits the maximum size of an encoded message.
1020        ///
1021        /// Default: `usize::MAX`
1022        #[must_use]
1023        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1024            self.inner = self.inner.max_encoding_message_size(limit);
1025            self
1026        }
1027        pub async fn list_native_extractors(
1028            &mut self,
1029            request: impl tonic::IntoRequest<super::ListNativeExtractorsRequest>,
1030        ) -> std::result::Result<
1031            tonic::Response<super::ListNativeExtractorsResponse>,
1032            tonic::Status,
1033        > {
1034            self.inner
1035                .ready()
1036                .await
1037                .map_err(|e| {
1038                    tonic::Status::unknown(
1039                        format!("Service was not ready: {}", e.into()),
1040                    )
1041                })?;
1042            let codec = tonic::codec::ProstCodec::default();
1043            let path = http::uri::PathAndQuery::from_static(
1044                "/nominal.ingest.v2.NativeExtractorService/ListNativeExtractors",
1045            );
1046            let mut req = request.into_request();
1047            req.extensions_mut()
1048                .insert(
1049                    GrpcMethod::new(
1050                        "nominal.ingest.v2.NativeExtractorService",
1051                        "ListNativeExtractors",
1052                    ),
1053                );
1054            self.inner.unary(req, path, codec).await
1055        }
1056        pub async fn enable_native_extractor(
1057            &mut self,
1058            request: impl tonic::IntoRequest<super::EnableNativeExtractorRequest>,
1059        ) -> std::result::Result<
1060            tonic::Response<super::EnableNativeExtractorResponse>,
1061            tonic::Status,
1062        > {
1063            self.inner
1064                .ready()
1065                .await
1066                .map_err(|e| {
1067                    tonic::Status::unknown(
1068                        format!("Service was not ready: {}", e.into()),
1069                    )
1070                })?;
1071            let codec = tonic::codec::ProstCodec::default();
1072            let path = http::uri::PathAndQuery::from_static(
1073                "/nominal.ingest.v2.NativeExtractorService/EnableNativeExtractor",
1074            );
1075            let mut req = request.into_request();
1076            req.extensions_mut()
1077                .insert(
1078                    GrpcMethod::new(
1079                        "nominal.ingest.v2.NativeExtractorService",
1080                        "EnableNativeExtractor",
1081                    ),
1082                );
1083            self.inner.unary(req, path, codec).await
1084        }
1085        pub async fn disable_native_extractor(
1086            &mut self,
1087            request: impl tonic::IntoRequest<super::DisableNativeExtractorRequest>,
1088        ) -> std::result::Result<
1089            tonic::Response<super::DisableNativeExtractorResponse>,
1090            tonic::Status,
1091        > {
1092            self.inner
1093                .ready()
1094                .await
1095                .map_err(|e| {
1096                    tonic::Status::unknown(
1097                        format!("Service was not ready: {}", e.into()),
1098                    )
1099                })?;
1100            let codec = tonic::codec::ProstCodec::default();
1101            let path = http::uri::PathAndQuery::from_static(
1102                "/nominal.ingest.v2.NativeExtractorService/DisableNativeExtractor",
1103            );
1104            let mut req = request.into_request();
1105            req.extensions_mut()
1106                .insert(
1107                    GrpcMethod::new(
1108                        "nominal.ingest.v2.NativeExtractorService",
1109                        "DisableNativeExtractor",
1110                    ),
1111                );
1112            self.inner.unary(req, path, codec).await
1113        }
1114    }
1115}