1#[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}
7pub 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 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 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}
204pub 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 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 #[must_use]
271 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
272 self.inner = self.inner.send_compressed(encoding);
273 self
274 }
275 #[must_use]
277 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
278 self.inner = self.inner.accept_compressed(encoding);
279 self
280 }
281 #[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 #[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}
487pub 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}
522pub 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}
537pub 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}
591pub 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}
654pub 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}
690pub 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}
705pub 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}
746pub 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}
766pub 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 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 #[must_use]
831 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
832 self.inner = self.inner.send_compressed(encoding);
833 self
834 }
835 #[must_use]
837 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
838 self.inner = self.inner.accept_compressed(encoding);
839 self
840 }
841 #[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 #[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 {}
932pub 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 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 #[must_use]
999 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1000 self.inner = self.inner.send_compressed(encoding);
1001 self
1002 }
1003 #[must_use]
1005 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1006 self.inner = self.inner.accept_compressed(encoding);
1007 self
1008 }
1009 #[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 #[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}