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