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