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")]
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    }
18}
19#[derive(Clone, PartialEq, ::prost::Message)]
20pub struct S3IngestSource {
21    #[prost(string, tag = "1")]
22    pub path: ::prost::alloc::string::String,
23}
24#[derive(Clone, PartialEq, ::prost::Message)]
25pub struct GcsIngestSource {
26    #[prost(string, tag = "1")]
27    pub path: ::prost::alloc::string::String,
28}
29#[derive(Clone, PartialEq, ::prost::Message)]
30pub struct PresignedFileIngestSource {
31    #[prost(string, tag = "1")]
32    pub url: ::prost::alloc::string::String,
33}
34#[derive(Clone, PartialEq, ::prost::Message)]
35pub struct TimestampMetadata {
36    #[prost(string, tag = "1")]
37    pub column: ::prost::alloc::string::String,
38    #[prost(message, optional, tag = "2")]
39    pub r#type: ::core::option::Option<super::super::types::time::TimestampType>,
40}
41#[derive(Clone, PartialEq, ::prost::Message)]
42pub struct ContainerizedExtractor {
43    #[prost(string, tag = "1")]
44    pub rid: ::prost::alloc::string::String,
45    #[prost(string, tag = "2")]
46    pub workspace_rid: ::prost::alloc::string::String,
47    #[prost(string, tag = "3")]
48    pub name: ::prost::alloc::string::String,
49    #[prost(string, optional, tag = "4")]
50    pub description: ::core::option::Option<::prost::alloc::string::String>,
51    #[prost(message, optional, tag = "5")]
52    pub created_at: ::core::option::Option<
53        super::super::super::google::protobuf::Timestamp,
54    >,
55    #[prost(bool, tag = "6")]
56    pub is_archived: bool,
57    #[prost(message, optional, tag = "7")]
58    pub active_container_image: ::core::option::Option<
59        super::super::registry::v2::ContainerImage,
60    >,
61}
62#[derive(Clone, PartialEq, ::prost::Message)]
63pub struct CreateContainerizedExtractorRequest {
64    #[prost(string, tag = "1")]
65    pub workspace_rid: ::prost::alloc::string::String,
66    #[prost(string, tag = "2")]
67    pub name: ::prost::alloc::string::String,
68    #[prost(string, optional, tag = "3")]
69    pub description: ::core::option::Option<::prost::alloc::string::String>,
70}
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct CreateContainerizedExtractorResponse {
73    #[prost(message, optional, tag = "1")]
74    pub extractor: ::core::option::Option<ContainerizedExtractor>,
75}
76#[derive(Clone, PartialEq, ::prost::Message)]
77pub struct GetContainerizedExtractorRequest {
78    #[prost(string, tag = "1")]
79    pub rid: ::prost::alloc::string::String,
80    #[prost(string, tag = "2")]
81    pub workspace_rid: ::prost::alloc::string::String,
82}
83#[derive(Clone, PartialEq, ::prost::Message)]
84pub struct GetContainerizedExtractorResponse {
85    #[prost(message, optional, tag = "1")]
86    pub extractor: ::core::option::Option<ContainerizedExtractor>,
87}
88#[derive(Clone, PartialEq, ::prost::Message)]
89pub struct UpdateContainerizedExtractorRequest {
90    #[prost(string, tag = "1")]
91    pub rid: ::prost::alloc::string::String,
92    #[prost(string, tag = "2")]
93    pub workspace_rid: ::prost::alloc::string::String,
94    #[prost(string, optional, tag = "3")]
95    pub name: ::core::option::Option<::prost::alloc::string::String>,
96    #[prost(string, optional, tag = "4")]
97    pub description: ::core::option::Option<::prost::alloc::string::String>,
98    #[prost(bool, optional, tag = "5")]
99    pub is_archived: ::core::option::Option<bool>,
100    #[prost(string, optional, tag = "6")]
101    pub active_container_image_rid: ::core::option::Option<
102        ::prost::alloc::string::String,
103    >,
104}
105#[derive(Clone, PartialEq, ::prost::Message)]
106pub struct UpdateContainerizedExtractorResponse {
107    #[prost(message, optional, tag = "1")]
108    pub extractor: ::core::option::Option<ContainerizedExtractor>,
109}
110#[derive(Clone, PartialEq, ::prost::Message)]
111pub struct SearchContainerizedExtractorsRequest {
112    #[prost(string, tag = "1")]
113    pub workspace_rid: ::prost::alloc::string::String,
114    #[prost(bool, tag = "2")]
115    pub include_archived: bool,
116    #[prost(int32, tag = "3")]
117    pub page_size: i32,
118    #[prost(string, optional, tag = "4")]
119    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
120    #[prost(string, optional, tag = "5")]
121    pub file_extension: ::core::option::Option<::prost::alloc::string::String>,
122}
123#[derive(Clone, PartialEq, ::prost::Message)]
124pub struct SearchContainerizedExtractorsResponse {
125    #[prost(message, repeated, tag = "1")]
126    pub extractors: ::prost::alloc::vec::Vec<ContainerizedExtractor>,
127    #[prost(string, optional, tag = "2")]
128    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
129}
130/// Generated client implementations.
131pub mod containerized_extractor_service_client {
132    #![allow(
133        unused_variables,
134        dead_code,
135        missing_docs,
136        clippy::wildcard_imports,
137        clippy::let_unit_value,
138    )]
139    use tonic::codegen::*;
140    use tonic::codegen::http::Uri;
141    #[derive(Debug, Clone)]
142    pub struct ContainerizedExtractorServiceClient<T> {
143        inner: tonic::client::Grpc<T>,
144    }
145    impl ContainerizedExtractorServiceClient<tonic::transport::Channel> {
146        /// Attempt to create a new client by connecting to a given endpoint.
147        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
148        where
149            D: TryInto<tonic::transport::Endpoint>,
150            D::Error: Into<StdError>,
151        {
152            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
153            Ok(Self::new(conn))
154        }
155    }
156    impl<T> ContainerizedExtractorServiceClient<T>
157    where
158        T: tonic::client::GrpcService<tonic::body::Body>,
159        T::Error: Into<StdError>,
160        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
161        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
162    {
163        pub fn new(inner: T) -> Self {
164            let inner = tonic::client::Grpc::new(inner);
165            Self { inner }
166        }
167        pub fn with_origin(inner: T, origin: Uri) -> Self {
168            let inner = tonic::client::Grpc::with_origin(inner, origin);
169            Self { inner }
170        }
171        pub fn with_interceptor<F>(
172            inner: T,
173            interceptor: F,
174        ) -> ContainerizedExtractorServiceClient<InterceptedService<T, F>>
175        where
176            F: tonic::service::Interceptor,
177            T::ResponseBody: Default,
178            T: tonic::codegen::Service<
179                http::Request<tonic::body::Body>,
180                Response = http::Response<
181                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
182                >,
183            >,
184            <T as tonic::codegen::Service<
185                http::Request<tonic::body::Body>,
186            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
187        {
188            ContainerizedExtractorServiceClient::new(
189                InterceptedService::new(inner, interceptor),
190            )
191        }
192        /// Compress requests with the given encoding.
193        ///
194        /// This requires the server to support it otherwise it might respond with an
195        /// error.
196        #[must_use]
197        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
198            self.inner = self.inner.send_compressed(encoding);
199            self
200        }
201        /// Enable decompressing responses.
202        #[must_use]
203        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
204            self.inner = self.inner.accept_compressed(encoding);
205            self
206        }
207        /// Limits the maximum size of a decoded message.
208        ///
209        /// Default: `4MB`
210        #[must_use]
211        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
212            self.inner = self.inner.max_decoding_message_size(limit);
213            self
214        }
215        /// Limits the maximum size of an encoded message.
216        ///
217        /// Default: `usize::MAX`
218        #[must_use]
219        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
220            self.inner = self.inner.max_encoding_message_size(limit);
221            self
222        }
223        pub async fn create_containerized_extractor(
224            &mut self,
225            request: impl tonic::IntoRequest<super::CreateContainerizedExtractorRequest>,
226        ) -> std::result::Result<
227            tonic::Response<super::CreateContainerizedExtractorResponse>,
228            tonic::Status,
229        > {
230            self.inner
231                .ready()
232                .await
233                .map_err(|e| {
234                    tonic::Status::unknown(
235                        format!("Service was not ready: {}", e.into()),
236                    )
237                })?;
238            let codec = tonic::codec::ProstCodec::default();
239            let path = http::uri::PathAndQuery::from_static(
240                "/nominal.ingest.v2.ContainerizedExtractorService/CreateContainerizedExtractor",
241            );
242            let mut req = request.into_request();
243            req.extensions_mut()
244                .insert(
245                    GrpcMethod::new(
246                        "nominal.ingest.v2.ContainerizedExtractorService",
247                        "CreateContainerizedExtractor",
248                    ),
249                );
250            self.inner.unary(req, path, codec).await
251        }
252        pub async fn get_containerized_extractor(
253            &mut self,
254            request: impl tonic::IntoRequest<super::GetContainerizedExtractorRequest>,
255        ) -> std::result::Result<
256            tonic::Response<super::GetContainerizedExtractorResponse>,
257            tonic::Status,
258        > {
259            self.inner
260                .ready()
261                .await
262                .map_err(|e| {
263                    tonic::Status::unknown(
264                        format!("Service was not ready: {}", e.into()),
265                    )
266                })?;
267            let codec = tonic::codec::ProstCodec::default();
268            let path = http::uri::PathAndQuery::from_static(
269                "/nominal.ingest.v2.ContainerizedExtractorService/GetContainerizedExtractor",
270            );
271            let mut req = request.into_request();
272            req.extensions_mut()
273                .insert(
274                    GrpcMethod::new(
275                        "nominal.ingest.v2.ContainerizedExtractorService",
276                        "GetContainerizedExtractor",
277                    ),
278                );
279            self.inner.unary(req, path, codec).await
280        }
281        pub async fn update_containerized_extractor(
282            &mut self,
283            request: impl tonic::IntoRequest<super::UpdateContainerizedExtractorRequest>,
284        ) -> std::result::Result<
285            tonic::Response<super::UpdateContainerizedExtractorResponse>,
286            tonic::Status,
287        > {
288            self.inner
289                .ready()
290                .await
291                .map_err(|e| {
292                    tonic::Status::unknown(
293                        format!("Service was not ready: {}", e.into()),
294                    )
295                })?;
296            let codec = tonic::codec::ProstCodec::default();
297            let path = http::uri::PathAndQuery::from_static(
298                "/nominal.ingest.v2.ContainerizedExtractorService/UpdateContainerizedExtractor",
299            );
300            let mut req = request.into_request();
301            req.extensions_mut()
302                .insert(
303                    GrpcMethod::new(
304                        "nominal.ingest.v2.ContainerizedExtractorService",
305                        "UpdateContainerizedExtractor",
306                    ),
307                );
308            self.inner.unary(req, path, codec).await
309        }
310        pub async fn search_containerized_extractors(
311            &mut self,
312            request: impl tonic::IntoRequest<super::SearchContainerizedExtractorsRequest>,
313        ) -> std::result::Result<
314            tonic::Response<super::SearchContainerizedExtractorsResponse>,
315            tonic::Status,
316        > {
317            self.inner
318                .ready()
319                .await
320                .map_err(|e| {
321                    tonic::Status::unknown(
322                        format!("Service was not ready: {}", e.into()),
323                    )
324                })?;
325            let codec = tonic::codec::ProstCodec::default();
326            let path = http::uri::PathAndQuery::from_static(
327                "/nominal.ingest.v2.ContainerizedExtractorService/SearchContainerizedExtractors",
328            );
329            let mut req = request.into_request();
330            req.extensions_mut()
331                .insert(
332                    GrpcMethod::new(
333                        "nominal.ingest.v2.ContainerizedExtractorService",
334                        "SearchContainerizedExtractors",
335                    ),
336                );
337            self.inner.unary(req, path, codec).await
338        }
339    }
340}
341#[derive(Clone, PartialEq, ::prost::Message)]
342pub struct ContainerizedIngestItem {
343    #[prost(string, tag = "1")]
344    pub extractor_rid: ::prost::alloc::string::String,
345    #[prost(map = "string, message", tag = "2")]
346    pub sources: ::std::collections::HashMap<
347        ::prost::alloc::string::String,
348        IngestSource,
349    >,
350    #[prost(map = "string, string", tag = "3")]
351    pub arguments: ::std::collections::HashMap<
352        ::prost::alloc::string::String,
353        ::prost::alloc::string::String,
354    >,
355    #[prost(message, optional, tag = "4")]
356    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
357}
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct FileIngestItem {
360    #[prost(message, optional, tag = "1")]
361    pub source: ::core::option::Option<IngestSource>,
362    #[prost(message, optional, tag = "2")]
363    pub ingest: ::core::option::Option<FileIngestOptions>,
364}
365#[derive(Clone, PartialEq, ::prost::Message)]
366pub struct FileIngestOptions {
367    #[prost(message, optional, tag = "1")]
368    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
369    #[prost(map = "string, string", tag = "2")]
370    pub units: ::std::collections::HashMap<
371        ::prost::alloc::string::String,
372        ::prost::alloc::string::String,
373    >,
374    #[prost(string, optional, tag = "3")]
375    pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
376    #[prost(map = "string, string", tag = "7")]
377    pub channel_name_overrides: ::std::collections::HashMap<
378        ::prost::alloc::string::String,
379        ::prost::alloc::string::String,
380    >,
381    #[prost(oneof = "file_ingest_options::Ingest", tags = "4, 5, 6")]
382    pub ingest: ::core::option::Option<file_ingest_options::Ingest>,
383}
384/// Nested message and enum types in `FileIngestOptions`.
385pub mod file_ingest_options {
386    #[derive(Clone, PartialEq, ::prost::Oneof)]
387    pub enum Ingest {
388        #[prost(message, tag = "4")]
389        Csv(super::CsvIngestOptions),
390        #[prost(message, tag = "5")]
391        Parquet(super::ParquetIngestOptions),
392        #[prost(message, tag = "6")]
393        Avro(super::AvroIngestOptions),
394    }
395}
396#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct CsvIngestOptions {
398    #[prost(message, optional, tag = "1")]
399    pub format: ::core::option::Option<CsvFormat>,
400}
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct ParquetIngestOptions {
403    #[prost(message, optional, tag = "1")]
404    pub format: ::core::option::Option<ParquetFormat>,
405    #[prost(bool, tag = "2")]
406    pub is_archive: bool,
407}
408#[derive(Clone, Copy, PartialEq, ::prost::Message)]
409pub struct AvroIngestOptions {}
410#[derive(Clone, PartialEq, ::prost::Message)]
411pub struct CsvFormat {
412    #[prost(oneof = "csv_format::Format", tags = "1, 2")]
413    pub format: ::core::option::Option<csv_format::Format>,
414}
415/// Nested message and enum types in `CsvFormat`.
416pub mod csv_format {
417    #[derive(Clone, PartialEq, ::prost::Oneof)]
418    pub enum Format {
419        #[prost(message, tag = "1")]
420        Wide(super::WideFormat),
421        #[prost(message, tag = "2")]
422        Long(super::LongFormat),
423    }
424}
425#[derive(Clone, PartialEq, ::prost::Message)]
426pub struct ParquetFormat {
427    #[prost(oneof = "parquet_format::Format", tags = "1, 2")]
428    pub format: ::core::option::Option<parquet_format::Format>,
429}
430/// Nested message and enum types in `ParquetFormat`.
431pub mod parquet_format {
432    #[derive(Clone, PartialEq, ::prost::Oneof)]
433    pub enum Format {
434        #[prost(message, tag = "1")]
435        Wide(super::WideFormat),
436        #[prost(message, tag = "2")]
437        Long(super::LongFormat),
438    }
439}
440#[derive(Clone, PartialEq, ::prost::Message)]
441pub struct WideFormat {
442    #[prost(map = "string, string", tag = "1")]
443    pub tag_columns: ::std::collections::HashMap<
444        ::prost::alloc::string::String,
445        ::prost::alloc::string::String,
446    >,
447    #[prost(string, repeated, tag = "2")]
448    pub exclude_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
449}
450#[derive(Clone, PartialEq, ::prost::Message)]
451pub struct LongFormat {
452    #[prost(string, optional, tag = "1")]
453    pub channel_column: ::core::option::Option<::prost::alloc::string::String>,
454    #[prost(string, optional, tag = "2")]
455    pub value_column: ::core::option::Option<::prost::alloc::string::String>,
456    #[prost(string, optional, tag = "3")]
457    pub tags_column: ::core::option::Option<::prost::alloc::string::String>,
458}
459#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct LogIngestItem {
461    #[prost(message, optional, tag = "1")]
462    pub source: ::core::option::Option<IngestSource>,
463    #[prost(string, optional, tag = "2")]
464    pub channel: ::core::option::Option<::prost::alloc::string::String>,
465    #[prost(message, optional, tag = "3")]
466    pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
467}
468#[derive(Clone, PartialEq, ::prost::Message)]
469pub struct McapIngestItem {
470    #[prost(message, optional, tag = "1")]
471    pub source: ::core::option::Option<IngestSource>,
472    #[prost(message, optional, tag = "2")]
473    pub channels: ::core::option::Option<McapChannelSelection>,
474    #[prost(bool, tag = "3")]
475    pub ignore_invalid_topics: bool,
476}
477#[derive(Clone, PartialEq, ::prost::Message)]
478pub struct McapChannelSelection {
479    #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
480    pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
481}
482/// Nested message and enum types in `McapChannelSelection`.
483pub mod mcap_channel_selection {
484    #[derive(Clone, PartialEq, ::prost::Oneof)]
485    pub enum Selection {
486        #[prost(message, tag = "1")]
487        IncludeTopics(super::McapTopicNames),
488        #[prost(message, tag = "2")]
489        ExcludeTopics(super::McapTopicNames),
490    }
491}
492#[derive(Clone, PartialEq, ::prost::Message)]
493pub struct McapTopicNames {
494    #[prost(string, repeated, tag = "1")]
495    pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
496}
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct DataflashIngestItem {
499    #[prost(message, optional, tag = "1")]
500    pub source: ::core::option::Option<IngestSource>,
501}
502#[derive(Clone, PartialEq, ::prost::Message)]
503pub struct PointCloudIngestItem {
504    #[prost(message, optional, tag = "1")]
505    pub source: ::core::option::Option<IngestSource>,
506    #[prost(message, optional, tag = "2")]
507    pub ingest: ::core::option::Option<PointCloudIngestOptions>,
508}
509#[derive(Clone, PartialEq, ::prost::Message)]
510pub struct PointCloudIngestOptions {
511    #[prost(message, optional, tag = "1")]
512    pub sensor_metadata: ::core::option::Option<PointCloudSensorMetadata>,
513    #[prost(string, tag = "2")]
514    pub channel: ::prost::alloc::string::String,
515}
516#[derive(Clone, PartialEq, ::prost::Message)]
517pub struct PointCloudSensorMetadata {
518    #[prost(map = "string, string", tag = "1")]
519    pub properties: ::std::collections::HashMap<
520        ::prost::alloc::string::String,
521        ::prost::alloc::string::String,
522    >,
523}
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct VideoIngestItem {
526    #[prost(message, optional, tag = "1")]
527    pub source: ::core::option::Option<IngestSource>,
528    #[prost(message, optional, tag = "2")]
529    pub ingest: ::core::option::Option<VideoIngestOptions>,
530}
531#[derive(Clone, PartialEq, ::prost::Message)]
532pub struct VideoIngestOptions {
533    #[prost(message, optional, tag = "1")]
534    pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
535    #[prost(string, tag = "2")]
536    pub channel: ::prost::alloc::string::String,
537    #[prost(bool, optional, tag = "3")]
538    pub overwrite_segments: ::core::option::Option<bool>,
539}
540#[derive(Clone, PartialEq, ::prost::Message)]
541pub struct VideoTimestampManifest {
542    #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2")]
543    pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
544}
545/// Nested message and enum types in `VideoTimestampManifest`.
546pub mod video_timestamp_manifest {
547    #[derive(Clone, PartialEq, ::prost::Oneof)]
548    pub enum Manifest {
549        #[prost(message, tag = "1")]
550        NoManifest(super::NoTimestampManifest),
551        #[prost(message, tag = "2")]
552        TimestampManifestFiles(super::TimestampManifestFiles),
553    }
554}
555#[derive(Clone, Copy, PartialEq, ::prost::Message)]
556pub struct NoTimestampManifest {
557    #[prost(message, optional, tag = "1")]
558    pub starting_timestamp: ::core::option::Option<
559        super::super::super::google::protobuf::Timestamp,
560    >,
561    #[prost(message, optional, tag = "2")]
562    pub scale_parameter: ::core::option::Option<ScaleParameter>,
563}
564#[derive(Clone, PartialEq, ::prost::Message)]
565pub struct TimestampManifestFiles {
566    #[prost(message, repeated, tag = "1")]
567    pub sources: ::prost::alloc::vec::Vec<IngestSource>,
568}
569#[derive(Clone, Copy, PartialEq, ::prost::Message)]
570pub struct ScaleParameter {
571    #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
572    pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
573}
574/// Nested message and enum types in `ScaleParameter`.
575pub mod scale_parameter {
576    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
577    pub enum ScaleParameter {
578        #[prost(double, tag = "1")]
579        TrueFrameRate(f64),
580        #[prost(message, tag = "2")]
581        EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
582        #[prost(double, tag = "3")]
583        ScaleFactor(f64),
584    }
585}
586#[derive(Clone, PartialEq, ::prost::Message)]
587pub struct IngestRequest {
588    #[prost(string, tag = "1")]
589    pub dataset_rid: ::prost::alloc::string::String,
590    #[prost(string, repeated, tag = "2")]
591    pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
592    #[prost(message, repeated, tag = "3")]
593    pub items: ::prost::alloc::vec::Vec<IngestItem>,
594    #[prost(map = "string, string", tag = "4")]
595    pub tags: ::std::collections::HashMap<
596        ::prost::alloc::string::String,
597        ::prost::alloc::string::String,
598    >,
599}
600#[derive(Clone, PartialEq, ::prost::Message)]
601pub struct IngestResponse {
602    #[prost(string, tag = "1")]
603    pub ingest_job_rid: ::prost::alloc::string::String,
604}
605#[derive(Clone, PartialEq, ::prost::Message)]
606pub struct IngestItem {
607    #[prost(map = "string, string", tag = "1")]
608    pub tags: ::std::collections::HashMap<
609        ::prost::alloc::string::String,
610        ::prost::alloc::string::String,
611    >,
612    #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
613    pub item: ::core::option::Option<ingest_item::Item>,
614}
615/// Nested message and enum types in `IngestItem`.
616pub mod ingest_item {
617    #[derive(Clone, PartialEq, ::prost::Oneof)]
618    pub enum Item {
619        #[prost(message, tag = "2")]
620        File(super::FileIngestItem),
621        #[prost(message, tag = "3")]
622        Log(super::LogIngestItem),
623        #[prost(message, tag = "4")]
624        Containerized(super::ContainerizedIngestItem),
625        #[prost(message, tag = "5")]
626        Video(super::VideoIngestItem),
627        #[prost(message, tag = "6")]
628        PointCloud(super::PointCloudIngestItem),
629        #[prost(message, tag = "7")]
630        Mcap(super::McapIngestItem),
631        #[prost(message, tag = "8")]
632        Dataflash(super::DataflashIngestItem),
633    }
634}
635/// Generated client implementations.
636pub mod ingest_service_client {
637    #![allow(
638        unused_variables,
639        dead_code,
640        missing_docs,
641        clippy::wildcard_imports,
642        clippy::let_unit_value,
643    )]
644    use tonic::codegen::*;
645    use tonic::codegen::http::Uri;
646    #[derive(Debug, Clone)]
647    pub struct IngestServiceClient<T> {
648        inner: tonic::client::Grpc<T>,
649    }
650    impl IngestServiceClient<tonic::transport::Channel> {
651        /// Attempt to create a new client by connecting to a given endpoint.
652        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
653        where
654            D: TryInto<tonic::transport::Endpoint>,
655            D::Error: Into<StdError>,
656        {
657            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
658            Ok(Self::new(conn))
659        }
660    }
661    impl<T> IngestServiceClient<T>
662    where
663        T: tonic::client::GrpcService<tonic::body::Body>,
664        T::Error: Into<StdError>,
665        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
666        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
667    {
668        pub fn new(inner: T) -> Self {
669            let inner = tonic::client::Grpc::new(inner);
670            Self { inner }
671        }
672        pub fn with_origin(inner: T, origin: Uri) -> Self {
673            let inner = tonic::client::Grpc::with_origin(inner, origin);
674            Self { inner }
675        }
676        pub fn with_interceptor<F>(
677            inner: T,
678            interceptor: F,
679        ) -> IngestServiceClient<InterceptedService<T, F>>
680        where
681            F: tonic::service::Interceptor,
682            T::ResponseBody: Default,
683            T: tonic::codegen::Service<
684                http::Request<tonic::body::Body>,
685                Response = http::Response<
686                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
687                >,
688            >,
689            <T as tonic::codegen::Service<
690                http::Request<tonic::body::Body>,
691            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
692        {
693            IngestServiceClient::new(InterceptedService::new(inner, interceptor))
694        }
695        /// Compress requests with the given encoding.
696        ///
697        /// This requires the server to support it otherwise it might respond with an
698        /// error.
699        #[must_use]
700        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
701            self.inner = self.inner.send_compressed(encoding);
702            self
703        }
704        /// Enable decompressing responses.
705        #[must_use]
706        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
707            self.inner = self.inner.accept_compressed(encoding);
708            self
709        }
710        /// Limits the maximum size of a decoded message.
711        ///
712        /// Default: `4MB`
713        #[must_use]
714        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
715            self.inner = self.inner.max_decoding_message_size(limit);
716            self
717        }
718        /// Limits the maximum size of an encoded message.
719        ///
720        /// Default: `usize::MAX`
721        #[must_use]
722        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
723            self.inner = self.inner.max_encoding_message_size(limit);
724            self
725        }
726        pub async fn ingest(
727            &mut self,
728            request: impl tonic::IntoRequest<super::IngestRequest>,
729        ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
730            self.inner
731                .ready()
732                .await
733                .map_err(|e| {
734                    tonic::Status::unknown(
735                        format!("Service was not ready: {}", e.into()),
736                    )
737                })?;
738            let codec = tonic::codec::ProstCodec::default();
739            let path = http::uri::PathAndQuery::from_static(
740                "/nominal.ingest.v2.IngestService/Ingest",
741            );
742            let mut req = request.into_request();
743            req.extensions_mut()
744                .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
745            self.inner.unary(req, path, codec).await
746        }
747    }
748}