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 = "2")]
504    pub rows_to_skip_before_header: ::core::option::Option<i32>,
505    #[prost(int32, optional, tag = "3")]
506    pub rows_to_skip_after_header: ::core::option::Option<i32>,
507}
508#[derive(Clone, PartialEq, ::prost::Message)]
509pub struct ParquetIngestOptions {
510    #[prost(message, optional, tag = "1")]
511    pub format: ::core::option::Option<ParquetFormat>,
512    #[prost(bool, tag = "2")]
513    pub is_archive: bool,
514}
515#[derive(Clone, Copy, PartialEq, ::prost::Message)]
516pub struct AvroIngestOptions {}
517#[derive(Clone, PartialEq, ::prost::Message)]
518pub struct CsvFormat {
519    #[prost(oneof = "csv_format::Format", tags = "1, 2")]
520    pub format: ::core::option::Option<csv_format::Format>,
521}
522/// Nested message and enum types in `CsvFormat`.
523pub mod csv_format {
524    #[derive(Clone, PartialEq, ::prost::Oneof)]
525    pub enum Format {
526        #[prost(message, tag = "1")]
527        Wide(super::WideFormat),
528        #[prost(message, tag = "2")]
529        Long(super::LongFormat),
530    }
531}
532#[derive(Clone, PartialEq, ::prost::Message)]
533pub struct ParquetFormat {
534    #[prost(oneof = "parquet_format::Format", tags = "1, 2")]
535    pub format: ::core::option::Option<parquet_format::Format>,
536}
537/// Nested message and enum types in `ParquetFormat`.
538pub mod parquet_format {
539    #[derive(Clone, PartialEq, ::prost::Oneof)]
540    pub enum Format {
541        #[prost(message, tag = "1")]
542        Wide(super::WideFormat),
543        #[prost(message, tag = "2")]
544        Long(super::LongFormat),
545    }
546}
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct WideFormat {
549    #[prost(map = "string, string", tag = "1")]
550    pub tag_columns: ::std::collections::HashMap<
551        ::prost::alloc::string::String,
552        ::prost::alloc::string::String,
553    >,
554    #[prost(string, repeated, tag = "2")]
555    pub exclude_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
556}
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct LongFormat {
559    #[prost(string, optional, tag = "1")]
560    pub channel_column: ::core::option::Option<::prost::alloc::string::String>,
561    #[prost(string, optional, tag = "2")]
562    pub value_column: ::core::option::Option<::prost::alloc::string::String>,
563    #[prost(string, optional, tag = "3")]
564    pub tags_column: ::core::option::Option<::prost::alloc::string::String>,
565}
566#[derive(Clone, PartialEq, ::prost::Message)]
567pub struct LogIngestItem {
568    #[prost(message, optional, tag = "1")]
569    pub source: ::core::option::Option<IngestSource>,
570    #[prost(string, optional, tag = "2")]
571    pub channel: ::core::option::Option<::prost::alloc::string::String>,
572    #[prost(message, optional, tag = "3")]
573    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
574    #[prost(string, optional, tag = "4")]
575    pub message_field: ::core::option::Option<::prost::alloc::string::String>,
576}
577#[derive(Clone, PartialEq, ::prost::Message)]
578pub struct McapIngestItem {
579    #[prost(message, optional, tag = "1")]
580    pub source: ::core::option::Option<IngestSource>,
581    #[prost(message, optional, tag = "2")]
582    pub channels: ::core::option::Option<McapChannelSelection>,
583    #[prost(bool, tag = "3")]
584    pub ignore_invalid_topics: bool,
585}
586#[derive(Clone, PartialEq, ::prost::Message)]
587pub struct McapChannelSelection {
588    #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
589    pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
590}
591/// Nested message and enum types in `McapChannelSelection`.
592pub mod mcap_channel_selection {
593    #[derive(Clone, PartialEq, ::prost::Oneof)]
594    pub enum Selection {
595        #[prost(message, tag = "1")]
596        IncludeTopics(super::McapTopicNames),
597        #[prost(message, tag = "2")]
598        ExcludeTopics(super::McapTopicNames),
599    }
600}
601#[derive(Clone, PartialEq, ::prost::Message)]
602pub struct McapTopicNames {
603    #[prost(string, repeated, tag = "1")]
604    pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
605}
606#[derive(Clone, PartialEq, ::prost::Message)]
607pub struct DataflashIngestItem {
608    #[prost(message, optional, tag = "1")]
609    pub source: ::core::option::Option<IngestSource>,
610}
611#[derive(Clone, PartialEq, ::prost::Message)]
612pub struct PointCloudIngestItem {
613    #[prost(message, optional, tag = "1")]
614    pub source: ::core::option::Option<IngestSource>,
615    #[prost(message, optional, tag = "2")]
616    pub ingest: ::core::option::Option<PointCloudIngestOptions>,
617}
618#[derive(Clone, PartialEq, ::prost::Message)]
619pub struct PointCloudIngestOptions {
620    #[prost(message, optional, tag = "1")]
621    pub sensor_metadata: ::core::option::Option<PointCloudSensorMetadata>,
622    #[prost(string, tag = "2")]
623    pub channel: ::prost::alloc::string::String,
624}
625#[derive(Clone, PartialEq, ::prost::Message)]
626pub struct PointCloudSensorMetadata {
627    #[prost(map = "string, string", tag = "1")]
628    pub properties: ::std::collections::HashMap<
629        ::prost::alloc::string::String,
630        ::prost::alloc::string::String,
631    >,
632}
633#[derive(Clone, PartialEq, ::prost::Message)]
634pub struct VideoIngestItem {
635    #[prost(message, optional, tag = "1")]
636    pub source: ::core::option::Option<IngestSource>,
637    #[prost(message, optional, tag = "2")]
638    pub ingest: ::core::option::Option<VideoIngestOptions>,
639}
640#[derive(Clone, PartialEq, ::prost::Message)]
641pub struct VideoIngestOptions {
642    #[prost(message, optional, tag = "1")]
643    pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
644    #[prost(string, tag = "2")]
645    pub channel: ::prost::alloc::string::String,
646    #[prost(bool, optional, tag = "3")]
647    pub overwrite_segments: ::core::option::Option<bool>,
648}
649#[derive(Clone, PartialEq, ::prost::Message)]
650pub struct VideoTimestampManifest {
651    #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2, 3")]
652    pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
653}
654/// Nested message and enum types in `VideoTimestampManifest`.
655pub mod video_timestamp_manifest {
656    #[derive(Clone, PartialEq, ::prost::Oneof)]
657    pub enum Manifest {
658        #[prost(message, tag = "1")]
659        NoManifest(super::NoTimestampManifest),
660        #[prost(message, tag = "2")]
661        TimestampManifestFiles(super::TimestampManifestFiles),
662        #[prost(message, tag = "3")]
663        Mcap(super::McapTimestampManifest),
664    }
665}
666#[derive(Clone, Copy, PartialEq, ::prost::Message)]
667pub struct NoTimestampManifest {
668    #[prost(message, optional, tag = "1")]
669    pub starting_timestamp: ::core::option::Option<
670        super::super::super::google::protobuf::Timestamp,
671    >,
672    #[prost(message, optional, tag = "2")]
673    pub scale_parameter: ::core::option::Option<ScaleParameter>,
674}
675#[derive(Clone, PartialEq, ::prost::Message)]
676pub struct TimestampManifestFiles {
677    #[prost(message, repeated, tag = "1")]
678    pub sources: ::prost::alloc::vec::Vec<IngestSource>,
679}
680#[derive(Clone, PartialEq, ::prost::Message)]
681pub struct McapTimestampManifest {
682    #[prost(message, optional, tag = "1")]
683    pub channel_locator: ::core::option::Option<McapChannelLocator>,
684}
685#[derive(Clone, PartialEq, ::prost::Message)]
686pub struct McapChannelLocator {
687    #[prost(oneof = "mcap_channel_locator::Locator", tags = "1, 2")]
688    pub locator: ::core::option::Option<mcap_channel_locator::Locator>,
689}
690/// Nested message and enum types in `McapChannelLocator`.
691pub mod mcap_channel_locator {
692    #[derive(Clone, PartialEq, ::prost::Oneof)]
693    pub enum Locator {
694        #[prost(string, tag = "1")]
695        Topic(::prost::alloc::string::String),
696        #[prost(int32, tag = "2")]
697        Id(i32),
698    }
699}
700#[derive(Clone, Copy, PartialEq, ::prost::Message)]
701pub struct ScaleParameter {
702    #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
703    pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
704}
705/// Nested message and enum types in `ScaleParameter`.
706pub mod scale_parameter {
707    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
708    pub enum ScaleParameter {
709        #[prost(double, tag = "1")]
710        TrueFrameRate(f64),
711        #[prost(message, tag = "2")]
712        EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
713        #[prost(double, tag = "3")]
714        ScaleFactor(f64),
715    }
716}
717#[derive(Clone, PartialEq, ::prost::Message)]
718pub struct IngestRequest {
719    #[prost(string, tag = "1")]
720    pub dataset_rid: ::prost::alloc::string::String,
721    #[prost(string, repeated, tag = "2")]
722    pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
723    #[prost(message, repeated, tag = "3")]
724    pub items: ::prost::alloc::vec::Vec<IngestItem>,
725    #[prost(map = "string, string", tag = "4")]
726    pub tags: ::std::collections::HashMap<
727        ::prost::alloc::string::String,
728        ::prost::alloc::string::String,
729    >,
730}
731#[derive(Clone, PartialEq, ::prost::Message)]
732pub struct IngestResponse {
733    #[prost(string, tag = "1")]
734    pub ingest_job_rid: ::prost::alloc::string::String,
735}
736#[derive(Clone, PartialEq, ::prost::Message)]
737pub struct IngestItem {
738    #[prost(map = "string, string", tag = "1")]
739    pub tags: ::std::collections::HashMap<
740        ::prost::alloc::string::String,
741        ::prost::alloc::string::String,
742    >,
743    #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
744    pub item: ::core::option::Option<ingest_item::Item>,
745}
746/// Nested message and enum types in `IngestItem`.
747pub mod ingest_item {
748    #[derive(Clone, PartialEq, ::prost::Oneof)]
749    pub enum Item {
750        #[prost(message, tag = "2")]
751        File(super::FileIngestItem),
752        #[prost(message, tag = "3")]
753        Log(super::LogIngestItem),
754        #[prost(message, tag = "4")]
755        Containerized(super::ContainerizedIngestItem),
756        #[prost(message, tag = "5")]
757        Video(super::VideoIngestItem),
758        #[prost(message, tag = "6")]
759        PointCloud(super::PointCloudIngestItem),
760        #[prost(message, tag = "7")]
761        Mcap(super::McapIngestItem),
762        #[prost(message, tag = "8")]
763        Dataflash(super::DataflashIngestItem),
764    }
765}
766/// Generated client implementations.
767pub mod ingest_service_client {
768    #![allow(
769        unused_variables,
770        dead_code,
771        missing_docs,
772        clippy::wildcard_imports,
773        clippy::let_unit_value,
774    )]
775    use tonic::codegen::*;
776    use tonic::codegen::http::Uri;
777    #[derive(Debug, Clone)]
778    pub struct IngestServiceClient<T> {
779        inner: tonic::client::Grpc<T>,
780    }
781    impl IngestServiceClient<tonic::transport::Channel> {
782        /// Attempt to create a new client by connecting to a given endpoint.
783        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
784        where
785            D: TryInto<tonic::transport::Endpoint>,
786            D::Error: Into<StdError>,
787        {
788            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
789            Ok(Self::new(conn))
790        }
791    }
792    impl<T> IngestServiceClient<T>
793    where
794        T: tonic::client::GrpcService<tonic::body::Body>,
795        T::Error: Into<StdError>,
796        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
797        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
798    {
799        pub fn new(inner: T) -> Self {
800            let inner = tonic::client::Grpc::new(inner);
801            Self { inner }
802        }
803        pub fn with_origin(inner: T, origin: Uri) -> Self {
804            let inner = tonic::client::Grpc::with_origin(inner, origin);
805            Self { inner }
806        }
807        pub fn with_interceptor<F>(
808            inner: T,
809            interceptor: F,
810        ) -> IngestServiceClient<InterceptedService<T, F>>
811        where
812            F: tonic::service::Interceptor,
813            T::ResponseBody: Default,
814            T: tonic::codegen::Service<
815                http::Request<tonic::body::Body>,
816                Response = http::Response<
817                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
818                >,
819            >,
820            <T as tonic::codegen::Service<
821                http::Request<tonic::body::Body>,
822            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
823        {
824            IngestServiceClient::new(InterceptedService::new(inner, interceptor))
825        }
826        /// Compress requests with the given encoding.
827        ///
828        /// This requires the server to support it otherwise it might respond with an
829        /// error.
830        #[must_use]
831        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
832            self.inner = self.inner.send_compressed(encoding);
833            self
834        }
835        /// Enable decompressing responses.
836        #[must_use]
837        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
838            self.inner = self.inner.accept_compressed(encoding);
839            self
840        }
841        /// Limits the maximum size of a decoded message.
842        ///
843        /// Default: `4MB`
844        #[must_use]
845        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
846            self.inner = self.inner.max_decoding_message_size(limit);
847            self
848        }
849        /// Limits the maximum size of an encoded message.
850        ///
851        /// Default: `usize::MAX`
852        #[must_use]
853        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
854            self.inner = self.inner.max_encoding_message_size(limit);
855            self
856        }
857        pub async fn ingest(
858            &mut self,
859            request: impl tonic::IntoRequest<super::IngestRequest>,
860        ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
861            self.inner
862                .ready()
863                .await
864                .map_err(|e| {
865                    tonic::Status::unknown(
866                        format!("Service was not ready: {}", e.into()),
867                    )
868                })?;
869            let codec = tonic::codec::ProstCodec::default();
870            let path = http::uri::PathAndQuery::from_static(
871                "/nominal.ingest.v2.IngestService/Ingest",
872            );
873            let mut req = request.into_request();
874            req.extensions_mut()
875                .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
876            self.inner.unary(req, path, codec).await
877        }
878    }
879}
880#[derive(Clone, PartialEq, ::prost::Message)]
881pub struct NativeExtractor {
882    #[prost(string, tag = "1")]
883    pub catalog_id: ::prost::alloc::string::String,
884    #[prost(string, repeated, tag = "2")]
885    pub available_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
886    #[prost(message, optional, tag = "3")]
887    pub installation: ::core::option::Option<ContainerizedExtractor>,
888    #[prost(string, optional, tag = "4")]
889    pub desired_version: ::core::option::Option<::prost::alloc::string::String>,
890    #[prost(string, tag = "5")]
891    pub display_name: ::prost::alloc::string::String,
892    #[prost(string, optional, tag = "6")]
893    pub description: ::core::option::Option<::prost::alloc::string::String>,
894}
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct ListNativeExtractorsRequest {
897    #[prost(string, tag = "1")]
898    pub workspace_rid: ::prost::alloc::string::String,
899    #[prost(int32, tag = "2")]
900    pub page_size: i32,
901    #[prost(string, optional, tag = "3")]
902    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
903}
904#[derive(Clone, PartialEq, ::prost::Message)]
905pub struct ListNativeExtractorsResponse {
906    #[prost(message, repeated, tag = "1")]
907    pub extractors: ::prost::alloc::vec::Vec<NativeExtractor>,
908    #[prost(string, optional, tag = "2")]
909    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
910}
911#[derive(Clone, PartialEq, ::prost::Message)]
912pub struct EnableNativeExtractorRequest {
913    #[prost(string, tag = "1")]
914    pub workspace_rid: ::prost::alloc::string::String,
915    #[prost(string, tag = "2")]
916    pub catalog_id: ::prost::alloc::string::String,
917}
918#[derive(Clone, PartialEq, ::prost::Message)]
919pub struct EnableNativeExtractorResponse {
920    #[prost(message, optional, tag = "1")]
921    pub extractor: ::core::option::Option<NativeExtractor>,
922}
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct DisableNativeExtractorRequest {
925    #[prost(string, tag = "1")]
926    pub workspace_rid: ::prost::alloc::string::String,
927    #[prost(string, tag = "2")]
928    pub catalog_id: ::prost::alloc::string::String,
929}
930#[derive(Clone, Copy, PartialEq, ::prost::Message)]
931pub struct DisableNativeExtractorResponse {}
932/// Generated client implementations.
933pub mod native_extractor_service_client {
934    #![allow(
935        unused_variables,
936        dead_code,
937        missing_docs,
938        clippy::wildcard_imports,
939        clippy::let_unit_value,
940    )]
941    use tonic::codegen::*;
942    use tonic::codegen::http::Uri;
943    #[derive(Debug, Clone)]
944    pub struct NativeExtractorServiceClient<T> {
945        inner: tonic::client::Grpc<T>,
946    }
947    impl NativeExtractorServiceClient<tonic::transport::Channel> {
948        /// Attempt to create a new client by connecting to a given endpoint.
949        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
950        where
951            D: TryInto<tonic::transport::Endpoint>,
952            D::Error: Into<StdError>,
953        {
954            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
955            Ok(Self::new(conn))
956        }
957    }
958    impl<T> NativeExtractorServiceClient<T>
959    where
960        T: tonic::client::GrpcService<tonic::body::Body>,
961        T::Error: Into<StdError>,
962        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
963        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
964    {
965        pub fn new(inner: T) -> Self {
966            let inner = tonic::client::Grpc::new(inner);
967            Self { inner }
968        }
969        pub fn with_origin(inner: T, origin: Uri) -> Self {
970            let inner = tonic::client::Grpc::with_origin(inner, origin);
971            Self { inner }
972        }
973        pub fn with_interceptor<F>(
974            inner: T,
975            interceptor: F,
976        ) -> NativeExtractorServiceClient<InterceptedService<T, F>>
977        where
978            F: tonic::service::Interceptor,
979            T::ResponseBody: Default,
980            T: tonic::codegen::Service<
981                http::Request<tonic::body::Body>,
982                Response = http::Response<
983                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
984                >,
985            >,
986            <T as tonic::codegen::Service<
987                http::Request<tonic::body::Body>,
988            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
989        {
990            NativeExtractorServiceClient::new(
991                InterceptedService::new(inner, interceptor),
992            )
993        }
994        /// Compress requests with the given encoding.
995        ///
996        /// This requires the server to support it otherwise it might respond with an
997        /// error.
998        #[must_use]
999        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1000            self.inner = self.inner.send_compressed(encoding);
1001            self
1002        }
1003        /// Enable decompressing responses.
1004        #[must_use]
1005        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1006            self.inner = self.inner.accept_compressed(encoding);
1007            self
1008        }
1009        /// Limits the maximum size of a decoded message.
1010        ///
1011        /// Default: `4MB`
1012        #[must_use]
1013        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1014            self.inner = self.inner.max_decoding_message_size(limit);
1015            self
1016        }
1017        /// Limits the maximum size of an encoded message.
1018        ///
1019        /// Default: `usize::MAX`
1020        #[must_use]
1021        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1022            self.inner = self.inner.max_encoding_message_size(limit);
1023            self
1024        }
1025        pub async fn list_native_extractors(
1026            &mut self,
1027            request: impl tonic::IntoRequest<super::ListNativeExtractorsRequest>,
1028        ) -> std::result::Result<
1029            tonic::Response<super::ListNativeExtractorsResponse>,
1030            tonic::Status,
1031        > {
1032            self.inner
1033                .ready()
1034                .await
1035                .map_err(|e| {
1036                    tonic::Status::unknown(
1037                        format!("Service was not ready: {}", e.into()),
1038                    )
1039                })?;
1040            let codec = tonic::codec::ProstCodec::default();
1041            let path = http::uri::PathAndQuery::from_static(
1042                "/nominal.ingest.v2.NativeExtractorService/ListNativeExtractors",
1043            );
1044            let mut req = request.into_request();
1045            req.extensions_mut()
1046                .insert(
1047                    GrpcMethod::new(
1048                        "nominal.ingest.v2.NativeExtractorService",
1049                        "ListNativeExtractors",
1050                    ),
1051                );
1052            self.inner.unary(req, path, codec).await
1053        }
1054        pub async fn enable_native_extractor(
1055            &mut self,
1056            request: impl tonic::IntoRequest<super::EnableNativeExtractorRequest>,
1057        ) -> std::result::Result<
1058            tonic::Response<super::EnableNativeExtractorResponse>,
1059            tonic::Status,
1060        > {
1061            self.inner
1062                .ready()
1063                .await
1064                .map_err(|e| {
1065                    tonic::Status::unknown(
1066                        format!("Service was not ready: {}", e.into()),
1067                    )
1068                })?;
1069            let codec = tonic::codec::ProstCodec::default();
1070            let path = http::uri::PathAndQuery::from_static(
1071                "/nominal.ingest.v2.NativeExtractorService/EnableNativeExtractor",
1072            );
1073            let mut req = request.into_request();
1074            req.extensions_mut()
1075                .insert(
1076                    GrpcMethod::new(
1077                        "nominal.ingest.v2.NativeExtractorService",
1078                        "EnableNativeExtractor",
1079                    ),
1080                );
1081            self.inner.unary(req, path, codec).await
1082        }
1083        pub async fn disable_native_extractor(
1084            &mut self,
1085            request: impl tonic::IntoRequest<super::DisableNativeExtractorRequest>,
1086        ) -> std::result::Result<
1087            tonic::Response<super::DisableNativeExtractorResponse>,
1088            tonic::Status,
1089        > {
1090            self.inner
1091                .ready()
1092                .await
1093                .map_err(|e| {
1094                    tonic::Status::unknown(
1095                        format!("Service was not ready: {}", e.into()),
1096                    )
1097                })?;
1098            let codec = tonic::codec::ProstCodec::default();
1099            let path = http::uri::PathAndQuery::from_static(
1100                "/nominal.ingest.v2.NativeExtractorService/DisableNativeExtractor",
1101            );
1102            let mut req = request.into_request();
1103            req.extensions_mut()
1104                .insert(
1105                    GrpcMethod::new(
1106                        "nominal.ingest.v2.NativeExtractorService",
1107                        "DisableNativeExtractor",
1108                    ),
1109                );
1110            self.inner.unary(req, path, codec).await
1111        }
1112    }
1113}