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