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 VideoIngestItem {
50 #[prost(message, optional, tag = "1")]
51 pub source: ::core::option::Option<IngestSource>,
52 #[prost(message, optional, tag = "2")]
53 pub ingest: ::core::option::Option<VideoIngestOptions>,
54 #[prost(message, repeated, tag = "3")]
55 pub additional_sources: ::prost::alloc::vec::Vec<IngestSource>,
56}
57#[derive(Clone, PartialEq, ::prost::Message)]
58pub struct VideoIngestOptions {
59 #[prost(message, optional, tag = "1")]
60 pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
61 #[prost(string, tag = "2")]
62 pub channel: ::prost::alloc::string::String,
63 #[prost(bool, optional, tag = "3")]
64 pub overwrite_segments: ::core::option::Option<bool>,
65}
66#[derive(Clone, PartialEq, ::prost::Message)]
67pub struct VideoTimestampManifest {
68 #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2, 3")]
69 pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
70}
71pub mod video_timestamp_manifest {
73 #[derive(Clone, PartialEq, ::prost::Oneof)]
74 pub enum Manifest {
75 #[prost(message, tag = "1")]
76 NoManifest(super::NoTimestampManifest),
77 #[prost(message, tag = "2")]
78 TimestampManifestFiles(super::TimestampManifestFiles),
79 #[prost(message, tag = "3")]
80 Mcap(super::McapTimestampManifest),
81 }
82}
83#[derive(Clone, Copy, PartialEq, ::prost::Message)]
84pub struct NoTimestampManifest {
85 #[prost(message, optional, tag = "1")]
86 pub starting_timestamp: ::core::option::Option<
87 super::super::super::google::protobuf::Timestamp,
88 >,
89 #[prost(message, optional, tag = "2")]
90 pub scale_parameter: ::core::option::Option<ScaleParameter>,
91}
92#[derive(Clone, PartialEq, ::prost::Message)]
93pub struct TimestampManifestFiles {
94 #[prost(message, repeated, tag = "1")]
95 pub sources: ::prost::alloc::vec::Vec<IngestSource>,
96}
97#[derive(Clone, PartialEq, ::prost::Message)]
98pub struct McapTimestampManifest {
99 #[prost(message, optional, tag = "1")]
100 pub channel_locator: ::core::option::Option<McapChannelLocator>,
101}
102#[derive(Clone, PartialEq, ::prost::Message)]
103pub struct McapChannelLocator {
104 #[prost(oneof = "mcap_channel_locator::Locator", tags = "1, 2")]
105 pub locator: ::core::option::Option<mcap_channel_locator::Locator>,
106}
107pub mod mcap_channel_locator {
109 #[derive(Clone, PartialEq, ::prost::Oneof)]
110 pub enum Locator {
111 #[prost(string, tag = "1")]
112 Topic(::prost::alloc::string::String),
113 #[prost(int32, tag = "2")]
114 Id(i32),
115 }
116}
117#[derive(Clone, Copy, PartialEq, ::prost::Message)]
118pub struct ScaleParameter {
119 #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
120 pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
121}
122pub mod scale_parameter {
124 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
125 pub enum ScaleParameter {
126 #[prost(double, tag = "1")]
127 TrueFrameRate(f64),
128 #[prost(message, tag = "2")]
129 EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
130 #[prost(double, tag = "3")]
131 ScaleFactor(f64),
132 }
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct ContainerizedExtractor {
136 #[prost(string, tag = "1")]
137 pub rid: ::prost::alloc::string::String,
138 #[prost(string, tag = "2")]
139 pub workspace_rid: ::prost::alloc::string::String,
140 #[prost(string, tag = "3")]
141 pub name: ::prost::alloc::string::String,
142 #[prost(string, optional, tag = "4")]
143 pub description: ::core::option::Option<::prost::alloc::string::String>,
144 #[prost(message, optional, tag = "5")]
145 pub created_at: ::core::option::Option<
146 super::super::super::google::protobuf::Timestamp,
147 >,
148 #[prost(bool, tag = "6")]
149 pub is_archived: bool,
150 #[prost(message, optional, tag = "7")]
151 pub active_container_image: ::core::option::Option<
152 super::super::registry::v2::ContainerImage,
153 >,
154 #[prost(enumeration = "ExtractorOrigin", tag = "8")]
155 pub origin: i32,
156 #[prost(string, optional, tag = "9")]
157 pub catalog_id: ::core::option::Option<::prost::alloc::string::String>,
158 #[prost(map = "string, string", tag = "10")]
159 pub properties: ::std::collections::HashMap<
160 ::prost::alloc::string::String,
161 ::prost::alloc::string::String,
162 >,
163 #[prost(string, repeated, tag = "11")]
164 pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
165}
166#[derive(Clone, PartialEq, ::prost::Message)]
167pub struct CreateContainerizedExtractorRequest {
168 #[prost(string, tag = "1")]
169 pub workspace_rid: ::prost::alloc::string::String,
170 #[prost(string, tag = "2")]
171 pub name: ::prost::alloc::string::String,
172 #[prost(string, optional, tag = "3")]
173 pub description: ::core::option::Option<::prost::alloc::string::String>,
174 #[prost(map = "string, string", tag = "4")]
175 pub properties: ::std::collections::HashMap<
176 ::prost::alloc::string::String,
177 ::prost::alloc::string::String,
178 >,
179 #[prost(string, repeated, tag = "5")]
180 pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
181}
182#[derive(Clone, PartialEq, ::prost::Message)]
183pub struct CreateContainerizedExtractorResponse {
184 #[prost(message, optional, tag = "1")]
185 pub extractor: ::core::option::Option<ContainerizedExtractor>,
186}
187#[derive(Clone, PartialEq, ::prost::Message)]
188pub struct GetContainerizedExtractorRequest {
189 #[prost(string, tag = "1")]
190 pub rid: ::prost::alloc::string::String,
191 #[prost(string, tag = "2")]
192 pub workspace_rid: ::prost::alloc::string::String,
193}
194#[derive(Clone, PartialEq, ::prost::Message)]
195pub struct GetContainerizedExtractorResponse {
196 #[prost(message, optional, tag = "1")]
197 pub extractor: ::core::option::Option<ContainerizedExtractor>,
198}
199#[derive(Clone, PartialEq, ::prost::Message)]
200pub struct UpdateContainerizedExtractorRequest {
201 #[prost(string, tag = "1")]
202 pub rid: ::prost::alloc::string::String,
203 #[prost(string, tag = "2")]
204 pub workspace_rid: ::prost::alloc::string::String,
205 #[prost(string, optional, tag = "3")]
206 pub name: ::core::option::Option<::prost::alloc::string::String>,
207 #[prost(string, optional, tag = "4")]
208 pub description: ::core::option::Option<::prost::alloc::string::String>,
209 #[prost(bool, optional, tag = "5")]
210 pub is_archived: ::core::option::Option<bool>,
211 #[prost(string, optional, tag = "6")]
212 pub active_container_image_rid: ::core::option::Option<
213 ::prost::alloc::string::String,
214 >,
215 #[prost(message, optional, tag = "7")]
216 pub properties: ::core::option::Option<super::super::types::PropertyUpdateWrapper>,
217 #[prost(message, optional, tag = "8")]
218 pub labels: ::core::option::Option<super::super::types::LabelUpdateWrapper>,
219}
220#[derive(Clone, PartialEq, ::prost::Message)]
221pub struct UpdateContainerizedExtractorResponse {
222 #[prost(message, optional, tag = "1")]
223 pub extractor: ::core::option::Option<ContainerizedExtractor>,
224}
225#[derive(Clone, PartialEq, ::prost::Message)]
226pub struct ArchiveContainerizedExtractorRequest {
227 #[prost(string, tag = "1")]
228 pub rid: ::prost::alloc::string::String,
229 #[prost(string, tag = "2")]
230 pub workspace_rid: ::prost::alloc::string::String,
231}
232#[derive(Clone, Copy, PartialEq, ::prost::Message)]
233pub struct ArchiveContainerizedExtractorResponse {}
234#[derive(Clone, PartialEq, ::prost::Message)]
235pub struct UnarchiveContainerizedExtractorRequest {
236 #[prost(string, tag = "1")]
237 pub rid: ::prost::alloc::string::String,
238 #[prost(string, tag = "2")]
239 pub workspace_rid: ::prost::alloc::string::String,
240}
241#[derive(Clone, Copy, PartialEq, ::prost::Message)]
242pub struct UnarchiveContainerizedExtractorResponse {}
243#[derive(Clone, PartialEq, ::prost::Message)]
244pub struct SearchContainerizedExtractorsRequest {
245 #[prost(string, tag = "1")]
246 pub workspace_rid: ::prost::alloc::string::String,
247 #[prost(bool, tag = "2")]
248 pub include_archived: bool,
249 #[prost(int32, tag = "3")]
250 pub page_size: i32,
251 #[prost(string, optional, tag = "4")]
252 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
253 #[prost(string, optional, tag = "5")]
254 pub file_extension: ::core::option::Option<::prost::alloc::string::String>,
255 #[prost(map = "string, string", tag = "6")]
256 pub properties: ::std::collections::HashMap<
257 ::prost::alloc::string::String,
258 ::prost::alloc::string::String,
259 >,
260 #[prost(string, repeated, tag = "7")]
261 pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
262}
263#[derive(Clone, PartialEq, ::prost::Message)]
264pub struct SearchContainerizedExtractorsResponse {
265 #[prost(message, repeated, tag = "1")]
266 pub extractors: ::prost::alloc::vec::Vec<ContainerizedExtractor>,
267 #[prost(string, optional, tag = "2")]
268 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
269}
270#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
271#[repr(i32)]
272pub enum ExtractorOrigin {
273 Unspecified = 0,
274 Customer = 1,
275 FirstParty = 2,
276}
277impl ExtractorOrigin {
278 pub fn as_str_name(&self) -> &'static str {
283 match self {
284 Self::Unspecified => "EXTRACTOR_ORIGIN_UNSPECIFIED",
285 Self::Customer => "EXTRACTOR_ORIGIN_CUSTOMER",
286 Self::FirstParty => "EXTRACTOR_ORIGIN_FIRST_PARTY",
287 }
288 }
289 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
291 match value {
292 "EXTRACTOR_ORIGIN_UNSPECIFIED" => Some(Self::Unspecified),
293 "EXTRACTOR_ORIGIN_CUSTOMER" => Some(Self::Customer),
294 "EXTRACTOR_ORIGIN_FIRST_PARTY" => Some(Self::FirstParty),
295 _ => None,
296 }
297 }
298}
299pub mod containerized_extractor_service_client {
301 #![allow(
302 unused_variables,
303 dead_code,
304 missing_docs,
305 clippy::wildcard_imports,
306 clippy::let_unit_value,
307 )]
308 use tonic::codegen::*;
309 use tonic::codegen::http::Uri;
310 #[derive(Debug, Clone)]
311 pub struct ContainerizedExtractorServiceClient<T> {
312 inner: tonic::client::Grpc<T>,
313 }
314 impl ContainerizedExtractorServiceClient<tonic::transport::Channel> {
315 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
317 where
318 D: TryInto<tonic::transport::Endpoint>,
319 D::Error: Into<StdError>,
320 {
321 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
322 Ok(Self::new(conn))
323 }
324 }
325 impl<T> ContainerizedExtractorServiceClient<T>
326 where
327 T: tonic::client::GrpcService<tonic::body::Body>,
328 T::Error: Into<StdError>,
329 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
330 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
331 {
332 pub fn new(inner: T) -> Self {
333 let inner = tonic::client::Grpc::new(inner);
334 Self { inner }
335 }
336 pub fn with_origin(inner: T, origin: Uri) -> Self {
337 let inner = tonic::client::Grpc::with_origin(inner, origin);
338 Self { inner }
339 }
340 pub fn with_interceptor<F>(
341 inner: T,
342 interceptor: F,
343 ) -> ContainerizedExtractorServiceClient<InterceptedService<T, F>>
344 where
345 F: tonic::service::Interceptor,
346 T::ResponseBody: Default,
347 T: tonic::codegen::Service<
348 http::Request<tonic::body::Body>,
349 Response = http::Response<
350 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
351 >,
352 >,
353 <T as tonic::codegen::Service<
354 http::Request<tonic::body::Body>,
355 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
356 {
357 ContainerizedExtractorServiceClient::new(
358 InterceptedService::new(inner, interceptor),
359 )
360 }
361 #[must_use]
366 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
367 self.inner = self.inner.send_compressed(encoding);
368 self
369 }
370 #[must_use]
372 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
373 self.inner = self.inner.accept_compressed(encoding);
374 self
375 }
376 #[must_use]
380 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
381 self.inner = self.inner.max_decoding_message_size(limit);
382 self
383 }
384 #[must_use]
388 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
389 self.inner = self.inner.max_encoding_message_size(limit);
390 self
391 }
392 pub async fn create_containerized_extractor(
393 &mut self,
394 request: impl tonic::IntoRequest<super::CreateContainerizedExtractorRequest>,
395 ) -> std::result::Result<
396 tonic::Response<super::CreateContainerizedExtractorResponse>,
397 tonic::Status,
398 > {
399 self.inner
400 .ready()
401 .await
402 .map_err(|e| {
403 tonic::Status::unknown(
404 format!("Service was not ready: {}", e.into()),
405 )
406 })?;
407 let codec = tonic::codec::ProstCodec::default();
408 let path = http::uri::PathAndQuery::from_static(
409 "/nominal.ingest.v2.ContainerizedExtractorService/CreateContainerizedExtractor",
410 );
411 let mut req = request.into_request();
412 req.extensions_mut()
413 .insert(
414 GrpcMethod::new(
415 "nominal.ingest.v2.ContainerizedExtractorService",
416 "CreateContainerizedExtractor",
417 ),
418 );
419 self.inner.unary(req, path, codec).await
420 }
421 pub async fn get_containerized_extractor(
422 &mut self,
423 request: impl tonic::IntoRequest<super::GetContainerizedExtractorRequest>,
424 ) -> std::result::Result<
425 tonic::Response<super::GetContainerizedExtractorResponse>,
426 tonic::Status,
427 > {
428 self.inner
429 .ready()
430 .await
431 .map_err(|e| {
432 tonic::Status::unknown(
433 format!("Service was not ready: {}", e.into()),
434 )
435 })?;
436 let codec = tonic::codec::ProstCodec::default();
437 let path = http::uri::PathAndQuery::from_static(
438 "/nominal.ingest.v2.ContainerizedExtractorService/GetContainerizedExtractor",
439 );
440 let mut req = request.into_request();
441 req.extensions_mut()
442 .insert(
443 GrpcMethod::new(
444 "nominal.ingest.v2.ContainerizedExtractorService",
445 "GetContainerizedExtractor",
446 ),
447 );
448 self.inner.unary(req, path, codec).await
449 }
450 pub async fn update_containerized_extractor(
451 &mut self,
452 request: impl tonic::IntoRequest<super::UpdateContainerizedExtractorRequest>,
453 ) -> std::result::Result<
454 tonic::Response<super::UpdateContainerizedExtractorResponse>,
455 tonic::Status,
456 > {
457 self.inner
458 .ready()
459 .await
460 .map_err(|e| {
461 tonic::Status::unknown(
462 format!("Service was not ready: {}", e.into()),
463 )
464 })?;
465 let codec = tonic::codec::ProstCodec::default();
466 let path = http::uri::PathAndQuery::from_static(
467 "/nominal.ingest.v2.ContainerizedExtractorService/UpdateContainerizedExtractor",
468 );
469 let mut req = request.into_request();
470 req.extensions_mut()
471 .insert(
472 GrpcMethod::new(
473 "nominal.ingest.v2.ContainerizedExtractorService",
474 "UpdateContainerizedExtractor",
475 ),
476 );
477 self.inner.unary(req, path, codec).await
478 }
479 pub async fn archive_containerized_extractor(
480 &mut self,
481 request: impl tonic::IntoRequest<super::ArchiveContainerizedExtractorRequest>,
482 ) -> std::result::Result<
483 tonic::Response<super::ArchiveContainerizedExtractorResponse>,
484 tonic::Status,
485 > {
486 self.inner
487 .ready()
488 .await
489 .map_err(|e| {
490 tonic::Status::unknown(
491 format!("Service was not ready: {}", e.into()),
492 )
493 })?;
494 let codec = tonic::codec::ProstCodec::default();
495 let path = http::uri::PathAndQuery::from_static(
496 "/nominal.ingest.v2.ContainerizedExtractorService/ArchiveContainerizedExtractor",
497 );
498 let mut req = request.into_request();
499 req.extensions_mut()
500 .insert(
501 GrpcMethod::new(
502 "nominal.ingest.v2.ContainerizedExtractorService",
503 "ArchiveContainerizedExtractor",
504 ),
505 );
506 self.inner.unary(req, path, codec).await
507 }
508 pub async fn unarchive_containerized_extractor(
509 &mut self,
510 request: impl tonic::IntoRequest<
511 super::UnarchiveContainerizedExtractorRequest,
512 >,
513 ) -> std::result::Result<
514 tonic::Response<super::UnarchiveContainerizedExtractorResponse>,
515 tonic::Status,
516 > {
517 self.inner
518 .ready()
519 .await
520 .map_err(|e| {
521 tonic::Status::unknown(
522 format!("Service was not ready: {}", e.into()),
523 )
524 })?;
525 let codec = tonic::codec::ProstCodec::default();
526 let path = http::uri::PathAndQuery::from_static(
527 "/nominal.ingest.v2.ContainerizedExtractorService/UnarchiveContainerizedExtractor",
528 );
529 let mut req = request.into_request();
530 req.extensions_mut()
531 .insert(
532 GrpcMethod::new(
533 "nominal.ingest.v2.ContainerizedExtractorService",
534 "UnarchiveContainerizedExtractor",
535 ),
536 );
537 self.inner.unary(req, path, codec).await
538 }
539 pub async fn search_containerized_extractors(
540 &mut self,
541 request: impl tonic::IntoRequest<super::SearchContainerizedExtractorsRequest>,
542 ) -> std::result::Result<
543 tonic::Response<super::SearchContainerizedExtractorsResponse>,
544 tonic::Status,
545 > {
546 self.inner
547 .ready()
548 .await
549 .map_err(|e| {
550 tonic::Status::unknown(
551 format!("Service was not ready: {}", e.into()),
552 )
553 })?;
554 let codec = tonic::codec::ProstCodec::default();
555 let path = http::uri::PathAndQuery::from_static(
556 "/nominal.ingest.v2.ContainerizedExtractorService/SearchContainerizedExtractors",
557 );
558 let mut req = request.into_request();
559 req.extensions_mut()
560 .insert(
561 GrpcMethod::new(
562 "nominal.ingest.v2.ContainerizedExtractorService",
563 "SearchContainerizedExtractors",
564 ),
565 );
566 self.inner.unary(req, path, codec).await
567 }
568 }
569}
570#[derive(Clone, PartialEq, ::prost::Message)]
571pub struct ContainerizedIngestItem {
572 #[prost(string, tag = "1")]
573 pub extractor_rid: ::prost::alloc::string::String,
574 #[prost(map = "string, message", tag = "2")]
575 pub sources: ::std::collections::HashMap<
576 ::prost::alloc::string::String,
577 IngestSource,
578 >,
579 #[prost(map = "string, string", tag = "3")]
580 pub arguments: ::std::collections::HashMap<
581 ::prost::alloc::string::String,
582 ::prost::alloc::string::String,
583 >,
584 #[prost(message, optional, tag = "4")]
585 pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
586}
587#[derive(Clone, PartialEq, ::prost::Message)]
588pub struct FileIngestItem {
589 #[prost(message, optional, tag = "1")]
590 pub source: ::core::option::Option<IngestSource>,
591 #[prost(message, optional, tag = "2")]
592 pub ingest: ::core::option::Option<FileIngestOptions>,
593}
594#[derive(Clone, PartialEq, ::prost::Message)]
595pub struct FileIngestOptions {
596 #[prost(message, optional, tag = "1")]
597 pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
598 #[prost(map = "string, string", tag = "2")]
599 pub units: ::std::collections::HashMap<
600 ::prost::alloc::string::String,
601 ::prost::alloc::string::String,
602 >,
603 #[prost(string, optional, tag = "3")]
604 pub channel_prefix: ::core::option::Option<::prost::alloc::string::String>,
605 #[prost(map = "string, string", tag = "7")]
606 pub channel_name_overrides: ::std::collections::HashMap<
607 ::prost::alloc::string::String,
608 ::prost::alloc::string::String,
609 >,
610 #[prost(oneof = "file_ingest_options::Ingest", tags = "4, 5, 6")]
611 pub ingest: ::core::option::Option<file_ingest_options::Ingest>,
612}
613pub mod file_ingest_options {
615 #[derive(Clone, PartialEq, ::prost::Oneof)]
616 pub enum Ingest {
617 #[prost(message, tag = "4")]
618 Csv(super::CsvIngestOptions),
619 #[prost(message, tag = "5")]
620 Parquet(super::ParquetIngestOptions),
621 #[prost(message, tag = "6")]
622 Avro(super::AvroIngestOptions),
623 }
624}
625#[derive(Clone, PartialEq, ::prost::Message)]
626pub struct CsvIngestOptions {
627 #[prost(message, optional, tag = "1")]
628 pub format: ::core::option::Option<CsvFormat>,
629 #[prost(int32, optional, tag = "4")]
630 pub header_row: ::core::option::Option<i32>,
631 #[prost(int32, optional, tag = "5")]
632 pub data_row: ::core::option::Option<i32>,
633 #[prost(int32, optional, tag = "6")]
634 pub units_row: ::core::option::Option<i32>,
635}
636#[derive(Clone, PartialEq, ::prost::Message)]
637pub struct ParquetIngestOptions {
638 #[prost(message, optional, tag = "1")]
639 pub format: ::core::option::Option<ParquetFormat>,
640 #[prost(bool, tag = "2")]
641 pub is_archive: bool,
642}
643#[derive(Clone, Copy, PartialEq, ::prost::Message)]
644pub struct AvroIngestOptions {}
645#[derive(Clone, PartialEq, ::prost::Message)]
646pub struct CsvFormat {
647 #[prost(oneof = "csv_format::Format", tags = "1, 2")]
648 pub format: ::core::option::Option<csv_format::Format>,
649}
650pub mod csv_format {
652 #[derive(Clone, PartialEq, ::prost::Oneof)]
653 pub enum Format {
654 #[prost(message, tag = "1")]
655 Wide(super::WideFormat),
656 #[prost(message, tag = "2")]
657 Long(super::LongFormat),
658 }
659}
660#[derive(Clone, PartialEq, ::prost::Message)]
661pub struct ParquetFormat {
662 #[prost(oneof = "parquet_format::Format", tags = "1, 2")]
663 pub format: ::core::option::Option<parquet_format::Format>,
664}
665pub mod parquet_format {
667 #[derive(Clone, PartialEq, ::prost::Oneof)]
668 pub enum Format {
669 #[prost(message, tag = "1")]
670 Wide(super::WideFormat),
671 #[prost(message, tag = "2")]
672 Long(super::LongFormat),
673 }
674}
675#[derive(Clone, PartialEq, ::prost::Message)]
676pub struct WideFormat {
677 #[prost(map = "string, string", tag = "1")]
678 pub tag_columns: ::std::collections::HashMap<
679 ::prost::alloc::string::String,
680 ::prost::alloc::string::String,
681 >,
682 #[prost(string, repeated, tag = "2")]
683 pub exclude_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
684}
685#[derive(Clone, PartialEq, ::prost::Message)]
686pub struct LongFormat {
687 #[prost(string, optional, tag = "1")]
688 pub channel_column: ::core::option::Option<::prost::alloc::string::String>,
689 #[prost(string, optional, tag = "2")]
690 pub value_column: ::core::option::Option<::prost::alloc::string::String>,
691 #[prost(string, optional, tag = "3")]
692 pub tags_column: ::core::option::Option<::prost::alloc::string::String>,
693}
694#[derive(Clone, PartialEq, ::prost::Message)]
695pub struct LogIngestItem {
696 #[prost(message, optional, tag = "1")]
697 pub source: ::core::option::Option<IngestSource>,
698 #[prost(string, optional, tag = "2")]
699 pub channel: ::core::option::Option<::prost::alloc::string::String>,
700 #[prost(message, optional, tag = "3")]
701 pub timestamp_metadata: ::core::option::Option<TimestampMetadata>,
702 #[prost(string, optional, tag = "4")]
703 pub message_field: ::core::option::Option<::prost::alloc::string::String>,
704}
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct McapIngestItem {
707 #[prost(message, optional, tag = "1")]
708 pub source: ::core::option::Option<IngestSource>,
709 #[prost(message, optional, tag = "2")]
710 pub channels: ::core::option::Option<McapChannelSelection>,
711 #[prost(bool, tag = "3")]
712 pub ignore_invalid_topics: bool,
713}
714#[derive(Clone, PartialEq, ::prost::Message)]
715pub struct McapChannelSelection {
716 #[prost(oneof = "mcap_channel_selection::Selection", tags = "1, 2")]
717 pub selection: ::core::option::Option<mcap_channel_selection::Selection>,
718}
719pub mod mcap_channel_selection {
721 #[derive(Clone, PartialEq, ::prost::Oneof)]
722 pub enum Selection {
723 #[prost(message, tag = "1")]
724 IncludeTopics(super::McapTopicNames),
725 #[prost(message, tag = "2")]
726 ExcludeTopics(super::McapTopicNames),
727 }
728}
729#[derive(Clone, PartialEq, ::prost::Message)]
730pub struct McapTopicNames {
731 #[prost(string, repeated, tag = "1")]
732 pub topics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
733}
734#[derive(Clone, PartialEq, ::prost::Message)]
735pub struct DataflashIngestItem {
736 #[prost(message, optional, tag = "1")]
737 pub source: ::core::option::Option<IngestSource>,
738}
739#[derive(Clone, PartialEq, ::prost::Message)]
740pub struct PointCloudIngestItem {
741 #[prost(message, optional, tag = "1")]
742 pub source: ::core::option::Option<IngestSource>,
743 #[prost(message, optional, tag = "2")]
744 pub ingest: ::core::option::Option<PointCloudIngestOptions>,
745}
746#[derive(Clone, PartialEq, ::prost::Message)]
747pub struct PointCloudIngestOptions {
748 #[prost(message, optional, tag = "1")]
749 pub sensor_metadata: ::core::option::Option<PointCloudSensorMetadata>,
750 #[prost(string, tag = "2")]
751 pub channel: ::prost::alloc::string::String,
752}
753#[derive(Clone, PartialEq, ::prost::Message)]
754pub struct PointCloudSensorMetadata {
755 #[prost(map = "string, string", tag = "1")]
756 pub properties: ::std::collections::HashMap<
757 ::prost::alloc::string::String,
758 ::prost::alloc::string::String,
759 >,
760}
761#[derive(Clone, PartialEq, ::prost::Message)]
762pub struct IngestRequest {
763 #[prost(string, tag = "1")]
764 pub dataset_rid: ::prost::alloc::string::String,
765 #[prost(string, repeated, tag = "2")]
766 pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
767 #[prost(message, repeated, tag = "3")]
768 pub items: ::prost::alloc::vec::Vec<IngestItem>,
769 #[prost(map = "string, string", tag = "4")]
770 pub tags: ::std::collections::HashMap<
771 ::prost::alloc::string::String,
772 ::prost::alloc::string::String,
773 >,
774}
775#[derive(Clone, PartialEq, ::prost::Message)]
776pub struct IngestResponse {
777 #[prost(string, tag = "1")]
778 pub ingest_job_rid: ::prost::alloc::string::String,
779}
780#[derive(Clone, PartialEq, ::prost::Message)]
781pub struct IngestItem {
782 #[prost(map = "string, string", tag = "1")]
783 pub tags: ::std::collections::HashMap<
784 ::prost::alloc::string::String,
785 ::prost::alloc::string::String,
786 >,
787 #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
788 pub item: ::core::option::Option<ingest_item::Item>,
789}
790pub mod ingest_item {
792 #[derive(Clone, PartialEq, ::prost::Oneof)]
793 pub enum Item {
794 #[prost(message, tag = "2")]
795 File(super::FileIngestItem),
796 #[prost(message, tag = "3")]
797 Log(super::LogIngestItem),
798 #[prost(message, tag = "4")]
799 Containerized(super::ContainerizedIngestItem),
800 #[prost(message, tag = "5")]
801 Video(super::VideoIngestItem),
802 #[prost(message, tag = "6")]
803 PointCloud(super::PointCloudIngestItem),
804 #[prost(message, tag = "7")]
805 Mcap(super::McapIngestItem),
806 #[prost(message, tag = "8")]
807 Dataflash(super::DataflashIngestItem),
808 }
809}
810pub mod ingest_service_client {
812 #![allow(
813 unused_variables,
814 dead_code,
815 missing_docs,
816 clippy::wildcard_imports,
817 clippy::let_unit_value,
818 )]
819 use tonic::codegen::*;
820 use tonic::codegen::http::Uri;
821 #[derive(Debug, Clone)]
822 pub struct IngestServiceClient<T> {
823 inner: tonic::client::Grpc<T>,
824 }
825 impl IngestServiceClient<tonic::transport::Channel> {
826 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
828 where
829 D: TryInto<tonic::transport::Endpoint>,
830 D::Error: Into<StdError>,
831 {
832 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
833 Ok(Self::new(conn))
834 }
835 }
836 impl<T> IngestServiceClient<T>
837 where
838 T: tonic::client::GrpcService<tonic::body::Body>,
839 T::Error: Into<StdError>,
840 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
841 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
842 {
843 pub fn new(inner: T) -> Self {
844 let inner = tonic::client::Grpc::new(inner);
845 Self { inner }
846 }
847 pub fn with_origin(inner: T, origin: Uri) -> Self {
848 let inner = tonic::client::Grpc::with_origin(inner, origin);
849 Self { inner }
850 }
851 pub fn with_interceptor<F>(
852 inner: T,
853 interceptor: F,
854 ) -> IngestServiceClient<InterceptedService<T, F>>
855 where
856 F: tonic::service::Interceptor,
857 T::ResponseBody: Default,
858 T: tonic::codegen::Service<
859 http::Request<tonic::body::Body>,
860 Response = http::Response<
861 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
862 >,
863 >,
864 <T as tonic::codegen::Service<
865 http::Request<tonic::body::Body>,
866 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
867 {
868 IngestServiceClient::new(InterceptedService::new(inner, interceptor))
869 }
870 #[must_use]
875 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
876 self.inner = self.inner.send_compressed(encoding);
877 self
878 }
879 #[must_use]
881 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
882 self.inner = self.inner.accept_compressed(encoding);
883 self
884 }
885 #[must_use]
889 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
890 self.inner = self.inner.max_decoding_message_size(limit);
891 self
892 }
893 #[must_use]
897 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
898 self.inner = self.inner.max_encoding_message_size(limit);
899 self
900 }
901 pub async fn ingest(
902 &mut self,
903 request: impl tonic::IntoRequest<super::IngestRequest>,
904 ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
905 self.inner
906 .ready()
907 .await
908 .map_err(|e| {
909 tonic::Status::unknown(
910 format!("Service was not ready: {}", e.into()),
911 )
912 })?;
913 let codec = tonic::codec::ProstCodec::default();
914 let path = http::uri::PathAndQuery::from_static(
915 "/nominal.ingest.v2.IngestService/Ingest",
916 );
917 let mut req = request.into_request();
918 req.extensions_mut()
919 .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
920 self.inner.unary(req, path, codec).await
921 }
922 }
923}
924#[derive(Clone, PartialEq, ::prost::Message)]
925pub struct NativeExtractor {
926 #[prost(string, tag = "1")]
927 pub catalog_id: ::prost::alloc::string::String,
928 #[prost(string, repeated, tag = "2")]
929 pub available_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
930 #[prost(message, optional, tag = "3")]
931 pub installation: ::core::option::Option<ContainerizedExtractor>,
932 #[prost(string, optional, tag = "4")]
933 pub desired_version: ::core::option::Option<::prost::alloc::string::String>,
934 #[prost(string, tag = "5")]
935 pub display_name: ::prost::alloc::string::String,
936 #[prost(string, optional, tag = "6")]
937 pub description: ::core::option::Option<::prost::alloc::string::String>,
938}
939#[derive(Clone, PartialEq, ::prost::Message)]
940pub struct ListNativeExtractorsRequest {
941 #[prost(string, tag = "1")]
942 pub workspace_rid: ::prost::alloc::string::String,
943 #[prost(int32, tag = "2")]
944 pub page_size: i32,
945 #[prost(string, optional, tag = "3")]
946 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
947}
948#[derive(Clone, PartialEq, ::prost::Message)]
949pub struct ListNativeExtractorsResponse {
950 #[prost(message, repeated, tag = "1")]
951 pub extractors: ::prost::alloc::vec::Vec<NativeExtractor>,
952 #[prost(string, optional, tag = "2")]
953 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
954}
955#[derive(Clone, PartialEq, ::prost::Message)]
956pub struct EnableNativeExtractorRequest {
957 #[prost(string, tag = "1")]
958 pub workspace_rid: ::prost::alloc::string::String,
959 #[prost(string, tag = "2")]
960 pub catalog_id: ::prost::alloc::string::String,
961}
962#[derive(Clone, PartialEq, ::prost::Message)]
963pub struct EnableNativeExtractorResponse {
964 #[prost(message, optional, tag = "1")]
965 pub extractor: ::core::option::Option<NativeExtractor>,
966}
967#[derive(Clone, PartialEq, ::prost::Message)]
968pub struct DisableNativeExtractorRequest {
969 #[prost(string, tag = "1")]
970 pub workspace_rid: ::prost::alloc::string::String,
971 #[prost(string, tag = "2")]
972 pub catalog_id: ::prost::alloc::string::String,
973}
974#[derive(Clone, Copy, PartialEq, ::prost::Message)]
975pub struct DisableNativeExtractorResponse {}
976pub mod native_extractor_service_client {
978 #![allow(
979 unused_variables,
980 dead_code,
981 missing_docs,
982 clippy::wildcard_imports,
983 clippy::let_unit_value,
984 )]
985 use tonic::codegen::*;
986 use tonic::codegen::http::Uri;
987 #[derive(Debug, Clone)]
988 pub struct NativeExtractorServiceClient<T> {
989 inner: tonic::client::Grpc<T>,
990 }
991 impl NativeExtractorServiceClient<tonic::transport::Channel> {
992 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
994 where
995 D: TryInto<tonic::transport::Endpoint>,
996 D::Error: Into<StdError>,
997 {
998 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
999 Ok(Self::new(conn))
1000 }
1001 }
1002 impl<T> NativeExtractorServiceClient<T>
1003 where
1004 T: tonic::client::GrpcService<tonic::body::Body>,
1005 T::Error: Into<StdError>,
1006 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1007 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1008 {
1009 pub fn new(inner: T) -> Self {
1010 let inner = tonic::client::Grpc::new(inner);
1011 Self { inner }
1012 }
1013 pub fn with_origin(inner: T, origin: Uri) -> Self {
1014 let inner = tonic::client::Grpc::with_origin(inner, origin);
1015 Self { inner }
1016 }
1017 pub fn with_interceptor<F>(
1018 inner: T,
1019 interceptor: F,
1020 ) -> NativeExtractorServiceClient<InterceptedService<T, F>>
1021 where
1022 F: tonic::service::Interceptor,
1023 T::ResponseBody: Default,
1024 T: tonic::codegen::Service<
1025 http::Request<tonic::body::Body>,
1026 Response = http::Response<
1027 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1028 >,
1029 >,
1030 <T as tonic::codegen::Service<
1031 http::Request<tonic::body::Body>,
1032 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1033 {
1034 NativeExtractorServiceClient::new(
1035 InterceptedService::new(inner, interceptor),
1036 )
1037 }
1038 #[must_use]
1043 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1044 self.inner = self.inner.send_compressed(encoding);
1045 self
1046 }
1047 #[must_use]
1049 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1050 self.inner = self.inner.accept_compressed(encoding);
1051 self
1052 }
1053 #[must_use]
1057 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1058 self.inner = self.inner.max_decoding_message_size(limit);
1059 self
1060 }
1061 #[must_use]
1065 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1066 self.inner = self.inner.max_encoding_message_size(limit);
1067 self
1068 }
1069 pub async fn list_native_extractors(
1070 &mut self,
1071 request: impl tonic::IntoRequest<super::ListNativeExtractorsRequest>,
1072 ) -> std::result::Result<
1073 tonic::Response<super::ListNativeExtractorsResponse>,
1074 tonic::Status,
1075 > {
1076 self.inner
1077 .ready()
1078 .await
1079 .map_err(|e| {
1080 tonic::Status::unknown(
1081 format!("Service was not ready: {}", e.into()),
1082 )
1083 })?;
1084 let codec = tonic::codec::ProstCodec::default();
1085 let path = http::uri::PathAndQuery::from_static(
1086 "/nominal.ingest.v2.NativeExtractorService/ListNativeExtractors",
1087 );
1088 let mut req = request.into_request();
1089 req.extensions_mut()
1090 .insert(
1091 GrpcMethod::new(
1092 "nominal.ingest.v2.NativeExtractorService",
1093 "ListNativeExtractors",
1094 ),
1095 );
1096 self.inner.unary(req, path, codec).await
1097 }
1098 pub async fn enable_native_extractor(
1099 &mut self,
1100 request: impl tonic::IntoRequest<super::EnableNativeExtractorRequest>,
1101 ) -> std::result::Result<
1102 tonic::Response<super::EnableNativeExtractorResponse>,
1103 tonic::Status,
1104 > {
1105 self.inner
1106 .ready()
1107 .await
1108 .map_err(|e| {
1109 tonic::Status::unknown(
1110 format!("Service was not ready: {}", e.into()),
1111 )
1112 })?;
1113 let codec = tonic::codec::ProstCodec::default();
1114 let path = http::uri::PathAndQuery::from_static(
1115 "/nominal.ingest.v2.NativeExtractorService/EnableNativeExtractor",
1116 );
1117 let mut req = request.into_request();
1118 req.extensions_mut()
1119 .insert(
1120 GrpcMethod::new(
1121 "nominal.ingest.v2.NativeExtractorService",
1122 "EnableNativeExtractor",
1123 ),
1124 );
1125 self.inner.unary(req, path, codec).await
1126 }
1127 pub async fn disable_native_extractor(
1128 &mut self,
1129 request: impl tonic::IntoRequest<super::DisableNativeExtractorRequest>,
1130 ) -> std::result::Result<
1131 tonic::Response<super::DisableNativeExtractorResponse>,
1132 tonic::Status,
1133 > {
1134 self.inner
1135 .ready()
1136 .await
1137 .map_err(|e| {
1138 tonic::Status::unknown(
1139 format!("Service was not ready: {}", e.into()),
1140 )
1141 })?;
1142 let codec = tonic::codec::ProstCodec::default();
1143 let path = http::uri::PathAndQuery::from_static(
1144 "/nominal.ingest.v2.NativeExtractorService/DisableNativeExtractor",
1145 );
1146 let mut req = request.into_request();
1147 req.extensions_mut()
1148 .insert(
1149 GrpcMethod::new(
1150 "nominal.ingest.v2.NativeExtractorService",
1151 "DisableNativeExtractor",
1152 ),
1153 );
1154 self.inner.unary(req, path, codec).await
1155 }
1156 }
1157}
1158#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1159pub struct TimeRange {
1160 #[prost(message, optional, tag = "1")]
1161 pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1162 #[prost(message, optional, tag = "2")]
1163 pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1164}
1165#[derive(Clone, PartialEq, ::prost::Message)]
1166pub struct CustomSourceAttribution {
1167 #[prost(string, tag = "1")]
1168 pub source_name: ::prost::alloc::string::String,
1169}
1170#[derive(Clone, PartialEq, ::prost::Message)]
1171pub struct DataConnectorSourceAttribution {
1172 #[prost(string, tag = "1")]
1173 pub data_connector_rid: ::prost::alloc::string::String,
1174}
1175#[derive(Clone, PartialEq, ::prost::Message)]
1176pub struct MeshSourceAttribution {
1177 #[prost(string, tag = "1")]
1178 pub source_dataset_rid: ::prost::alloc::string::String,
1179 #[prost(string, tag = "2")]
1180 pub source_org_rid: ::prost::alloc::string::String,
1181 #[prost(string, tag = "3")]
1182 pub origin_source_label: ::prost::alloc::string::String,
1183}
1184#[derive(Clone, PartialEq, ::prost::Message)]
1185pub struct StreamingSourceAttribution {
1186 #[prost(oneof = "streaming_source_attribution::Source", tags = "1, 2, 3")]
1187 pub source: ::core::option::Option<streaming_source_attribution::Source>,
1188}
1189pub mod streaming_source_attribution {
1191 #[derive(Clone, PartialEq, ::prost::Oneof)]
1192 pub enum Source {
1193 #[prost(message, tag = "1")]
1194 Mesh(super::MeshSourceAttribution),
1195 #[prost(message, tag = "2")]
1196 DataConnector(super::DataConnectorSourceAttribution),
1197 #[prost(message, tag = "3")]
1198 Custom(super::CustomSourceAttribution),
1199 }
1200}
1201#[derive(Clone, PartialEq, ::prost::Message)]
1202pub struct StreamingSession {
1203 #[prost(string, tag = "1")]
1204 pub streaming_session_rid: ::prost::alloc::string::String,
1205 #[prost(string, tag = "2")]
1206 pub dataset_rid: ::prost::alloc::string::String,
1207 #[prost(enumeration = "StreamingSessionStatus", tag = "3")]
1208 pub status: i32,
1209 #[prost(message, optional, tag = "4")]
1210 pub source: ::core::option::Option<StreamingSourceAttribution>,
1211 #[prost(message, optional, tag = "5")]
1212 pub data_bounds: ::core::option::Option<TimeRange>,
1213 #[prost(int64, tag = "6")]
1214 pub points_count: i64,
1215 #[prost(message, optional, tag = "7")]
1216 pub created_at: ::core::option::Option<
1217 super::super::super::google::protobuf::Timestamp,
1218 >,
1219 #[prost(message, optional, tag = "8")]
1220 pub last_seen_at: ::core::option::Option<
1221 super::super::super::google::protobuf::Timestamp,
1222 >,
1223 #[prost(message, optional, tag = "9")]
1224 pub completed_at: ::core::option::Option<
1225 super::super::super::google::protobuf::Timestamp,
1226 >,
1227}
1228#[derive(Clone, PartialEq, ::prost::Message)]
1229pub struct StreamingDatasetRidsFilter {
1230 #[prost(string, repeated, tag = "1")]
1231 pub dataset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1232}
1233#[derive(Clone, PartialEq, ::prost::Message)]
1234pub struct ExactStreamingSourceFilter {
1235 #[prost(string, tag = "1")]
1236 pub dataset_rid: ::prost::alloc::string::String,
1237 #[prost(message, optional, tag = "2")]
1238 pub source: ::core::option::Option<StreamingSourceAttribution>,
1239}
1240#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1241pub struct StreamingSessionDataBoundsFilter {
1242 #[prost(message, optional, tag = "1")]
1243 pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1244 #[prost(message, optional, tag = "2")]
1245 pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1246}
1247#[derive(Clone, PartialEq, ::prost::Message)]
1248pub struct StreamingWorkspaceFilter {
1249 #[prost(string, tag = "1")]
1250 pub workspace_rid: ::prost::alloc::string::String,
1251}
1252#[derive(Clone, PartialEq, ::prost::Message)]
1253pub struct StreamingSessionAndFilter {
1254 #[prost(message, repeated, tag = "1")]
1255 pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1256}
1257#[derive(Clone, PartialEq, ::prost::Message)]
1258pub struct StreamingSessionOrFilter {
1259 #[prost(message, repeated, tag = "1")]
1260 pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1261}
1262#[derive(Clone, PartialEq, ::prost::Message)]
1263pub struct StreamingSessionNotFilter {
1264 #[prost(message, optional, boxed, tag = "1")]
1265 pub filter: ::core::option::Option<
1266 ::prost::alloc::boxed::Box<StreamingSessionSearchFilter>,
1267 >,
1268}
1269#[derive(Clone, PartialEq, ::prost::Message)]
1270pub struct StreamingSessionSearchFilter {
1271 #[prost(
1272 oneof = "streaming_session_search_filter::Filter",
1273 tags = "1, 2, 3, 4, 5, 6, 7"
1274 )]
1275 pub filter: ::core::option::Option<streaming_session_search_filter::Filter>,
1276}
1277pub mod streaming_session_search_filter {
1279 #[derive(Clone, PartialEq, ::prost::Oneof)]
1280 pub enum Filter {
1281 #[prost(message, tag = "1")]
1282 DatasetRids(super::StreamingDatasetRidsFilter),
1283 #[prost(message, tag = "2")]
1284 Source(super::ExactStreamingSourceFilter),
1285 #[prost(message, tag = "3")]
1286 DataBoundsOverlap(super::StreamingSessionDataBoundsFilter),
1287 #[prost(message, tag = "4")]
1288 Workspace(super::StreamingWorkspaceFilter),
1289 #[prost(message, tag = "5")]
1290 And(super::StreamingSessionAndFilter),
1291 #[prost(message, tag = "6")]
1292 Or(super::StreamingSessionOrFilter),
1293 #[prost(message, tag = "7")]
1294 Not(::prost::alloc::boxed::Box<super::StreamingSessionNotFilter>),
1295 }
1296}
1297#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1298pub struct StreamingSessionSortOptions {
1299 #[prost(enumeration = "StreamingSessionSortField", tag = "1")]
1300 pub field: i32,
1301 #[prost(bool, tag = "2")]
1302 pub is_descending: bool,
1303}
1304#[derive(Clone, PartialEq, ::prost::Message)]
1305pub struct SearchStreamingSessionsRequest {
1306 #[prost(int32, optional, tag = "1")]
1307 pub page_size: ::core::option::Option<i32>,
1308 #[prost(string, optional, tag = "2")]
1309 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1310 #[prost(message, optional, tag = "3")]
1311 pub filter: ::core::option::Option<StreamingSessionSearchFilter>,
1312 #[prost(message, optional, tag = "4")]
1313 pub sort: ::core::option::Option<StreamingSessionSortOptions>,
1314}
1315#[derive(Clone, PartialEq, ::prost::Message)]
1316pub struct SearchStreamingSessionsResponse {
1317 #[prost(message, repeated, tag = "1")]
1318 pub streaming_sessions: ::prost::alloc::vec::Vec<StreamingSession>,
1319 #[prost(string, optional, tag = "2")]
1320 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1321}
1322#[derive(Clone, PartialEq, ::prost::Message)]
1323pub struct StreamingSource {
1324 #[prost(message, optional, tag = "1")]
1325 pub source: ::core::option::Option<StreamingSourceAttribution>,
1326 #[prost(string, tag = "2")]
1327 pub dataset_rid: ::prost::alloc::string::String,
1328 #[prost(int64, tag = "3")]
1329 pub session_count: i64,
1330 #[prost(int64, tag = "4")]
1331 pub total_points_count: i64,
1332 #[prost(message, optional, tag = "5")]
1333 pub earliest_created_at: ::core::option::Option<
1334 super::super::super::google::protobuf::Timestamp,
1335 >,
1336 #[prost(message, optional, tag = "6")]
1337 pub latest_last_seen_at: ::core::option::Option<
1338 super::super::super::google::protobuf::Timestamp,
1339 >,
1340 #[prost(message, optional, tag = "7")]
1341 pub merged_data_bounds: ::core::option::Option<TimeRange>,
1342 #[prost(bool, tag = "8")]
1343 pub any_in_progress: bool,
1344}
1345#[derive(Clone, PartialEq, ::prost::Message)]
1346pub struct StreamingSourceAndFilter {
1347 #[prost(message, repeated, tag = "1")]
1348 pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1349}
1350#[derive(Clone, PartialEq, ::prost::Message)]
1351pub struct StreamingSourceOrFilter {
1352 #[prost(message, repeated, tag = "1")]
1353 pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1354}
1355#[derive(Clone, PartialEq, ::prost::Message)]
1356pub struct StreamingSourceNotFilter {
1357 #[prost(message, optional, boxed, tag = "1")]
1358 pub filter: ::core::option::Option<
1359 ::prost::alloc::boxed::Box<StreamingSourceSearchFilter>,
1360 >,
1361}
1362#[derive(Clone, PartialEq, ::prost::Message)]
1363pub struct StreamingSourceSearchFilter {
1364 #[prost(oneof = "streaming_source_search_filter::Filter", tags = "1, 2, 3, 4, 5, 6")]
1365 pub filter: ::core::option::Option<streaming_source_search_filter::Filter>,
1366}
1367pub mod streaming_source_search_filter {
1369 #[derive(Clone, PartialEq, ::prost::Oneof)]
1370 pub enum Filter {
1371 #[prost(message, tag = "1")]
1372 DatasetRids(super::StreamingDatasetRidsFilter),
1373 #[prost(message, tag = "2")]
1374 Source(super::ExactStreamingSourceFilter),
1375 #[prost(message, tag = "3")]
1376 Workspace(super::StreamingWorkspaceFilter),
1377 #[prost(message, tag = "4")]
1378 And(super::StreamingSourceAndFilter),
1379 #[prost(message, tag = "5")]
1380 Or(super::StreamingSourceOrFilter),
1381 #[prost(message, tag = "6")]
1382 Not(::prost::alloc::boxed::Box<super::StreamingSourceNotFilter>),
1383 }
1384}
1385#[derive(Clone, PartialEq, ::prost::Message)]
1386pub struct SearchStreamingSourcesRequest {
1387 #[prost(int32, optional, tag = "1")]
1388 pub page_size: ::core::option::Option<i32>,
1389 #[prost(string, optional, tag = "2")]
1390 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1391 #[prost(message, optional, tag = "3")]
1392 pub filter: ::core::option::Option<StreamingSourceSearchFilter>,
1393 #[prost(message, optional, tag = "4")]
1394 pub last_seen_after: ::core::option::Option<
1395 super::super::super::google::protobuf::Timestamp,
1396 >,
1397}
1398#[derive(Clone, PartialEq, ::prost::Message)]
1399pub struct SearchStreamingSourcesResponse {
1400 #[prost(message, repeated, tag = "1")]
1401 pub streaming_sources: ::prost::alloc::vec::Vec<StreamingSource>,
1402 #[prost(string, optional, tag = "2")]
1403 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1404}
1405#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1406#[repr(i32)]
1407pub enum StreamingSessionError {
1408 Unspecified = 0,
1409 FilterTooComplex = 1,
1410}
1411impl StreamingSessionError {
1412 pub fn as_str_name(&self) -> &'static str {
1417 match self {
1418 Self::Unspecified => "STREAMING_SESSION_ERROR_UNSPECIFIED",
1419 Self::FilterTooComplex => "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX",
1420 }
1421 }
1422 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1424 match value {
1425 "STREAMING_SESSION_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1426 "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX" => Some(Self::FilterTooComplex),
1427 _ => None,
1428 }
1429 }
1430}
1431#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1432#[repr(i32)]
1433pub enum StreamingSessionStatus {
1434 Unspecified = 0,
1435 InProgress = 1,
1436 Completed = 2,
1437}
1438impl StreamingSessionStatus {
1439 pub fn as_str_name(&self) -> &'static str {
1444 match self {
1445 Self::Unspecified => "STREAMING_SESSION_STATUS_UNSPECIFIED",
1446 Self::InProgress => "STREAMING_SESSION_STATUS_IN_PROGRESS",
1447 Self::Completed => "STREAMING_SESSION_STATUS_COMPLETED",
1448 }
1449 }
1450 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1452 match value {
1453 "STREAMING_SESSION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1454 "STREAMING_SESSION_STATUS_IN_PROGRESS" => Some(Self::InProgress),
1455 "STREAMING_SESSION_STATUS_COMPLETED" => Some(Self::Completed),
1456 _ => None,
1457 }
1458 }
1459}
1460#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1461#[repr(i32)]
1462pub enum StreamingSessionSortField {
1463 Unspecified = 0,
1464 CreatedAt = 1,
1465 DataBoundsStart = 2,
1466}
1467impl StreamingSessionSortField {
1468 pub fn as_str_name(&self) -> &'static str {
1473 match self {
1474 Self::Unspecified => "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED",
1475 Self::CreatedAt => "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
1476 Self::DataBoundsStart => "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START",
1477 }
1478 }
1479 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1481 match value {
1482 "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
1483 "STREAMING_SESSION_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
1484 "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START" => {
1485 Some(Self::DataBoundsStart)
1486 }
1487 _ => None,
1488 }
1489 }
1490}
1491pub mod streaming_session_service_client {
1493 #![allow(
1494 unused_variables,
1495 dead_code,
1496 missing_docs,
1497 clippy::wildcard_imports,
1498 clippy::let_unit_value,
1499 )]
1500 use tonic::codegen::*;
1501 use tonic::codegen::http::Uri;
1502 #[derive(Debug, Clone)]
1503 pub struct StreamingSessionServiceClient<T> {
1504 inner: tonic::client::Grpc<T>,
1505 }
1506 impl StreamingSessionServiceClient<tonic::transport::Channel> {
1507 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1509 where
1510 D: TryInto<tonic::transport::Endpoint>,
1511 D::Error: Into<StdError>,
1512 {
1513 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1514 Ok(Self::new(conn))
1515 }
1516 }
1517 impl<T> StreamingSessionServiceClient<T>
1518 where
1519 T: tonic::client::GrpcService<tonic::body::Body>,
1520 T::Error: Into<StdError>,
1521 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1522 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1523 {
1524 pub fn new(inner: T) -> Self {
1525 let inner = tonic::client::Grpc::new(inner);
1526 Self { inner }
1527 }
1528 pub fn with_origin(inner: T, origin: Uri) -> Self {
1529 let inner = tonic::client::Grpc::with_origin(inner, origin);
1530 Self { inner }
1531 }
1532 pub fn with_interceptor<F>(
1533 inner: T,
1534 interceptor: F,
1535 ) -> StreamingSessionServiceClient<InterceptedService<T, F>>
1536 where
1537 F: tonic::service::Interceptor,
1538 T::ResponseBody: Default,
1539 T: tonic::codegen::Service<
1540 http::Request<tonic::body::Body>,
1541 Response = http::Response<
1542 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1543 >,
1544 >,
1545 <T as tonic::codegen::Service<
1546 http::Request<tonic::body::Body>,
1547 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1548 {
1549 StreamingSessionServiceClient::new(
1550 InterceptedService::new(inner, interceptor),
1551 )
1552 }
1553 #[must_use]
1558 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1559 self.inner = self.inner.send_compressed(encoding);
1560 self
1561 }
1562 #[must_use]
1564 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1565 self.inner = self.inner.accept_compressed(encoding);
1566 self
1567 }
1568 #[must_use]
1572 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1573 self.inner = self.inner.max_decoding_message_size(limit);
1574 self
1575 }
1576 #[must_use]
1580 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1581 self.inner = self.inner.max_encoding_message_size(limit);
1582 self
1583 }
1584 pub async fn search_streaming_sessions(
1585 &mut self,
1586 request: impl tonic::IntoRequest<super::SearchStreamingSessionsRequest>,
1587 ) -> std::result::Result<
1588 tonic::Response<super::SearchStreamingSessionsResponse>,
1589 tonic::Status,
1590 > {
1591 self.inner
1592 .ready()
1593 .await
1594 .map_err(|e| {
1595 tonic::Status::unknown(
1596 format!("Service was not ready: {}", e.into()),
1597 )
1598 })?;
1599 let codec = tonic::codec::ProstCodec::default();
1600 let path = http::uri::PathAndQuery::from_static(
1601 "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSessions",
1602 );
1603 let mut req = request.into_request();
1604 req.extensions_mut()
1605 .insert(
1606 GrpcMethod::new(
1607 "nominal.ingest.v2.StreamingSessionService",
1608 "SearchStreamingSessions",
1609 ),
1610 );
1611 self.inner.unary(req, path, codec).await
1612 }
1613 pub async fn search_streaming_sources(
1614 &mut self,
1615 request: impl tonic::IntoRequest<super::SearchStreamingSourcesRequest>,
1616 ) -> std::result::Result<
1617 tonic::Response<super::SearchStreamingSourcesResponse>,
1618 tonic::Status,
1619 > {
1620 self.inner
1621 .ready()
1622 .await
1623 .map_err(|e| {
1624 tonic::Status::unknown(
1625 format!("Service was not ready: {}", e.into()),
1626 )
1627 })?;
1628 let codec = tonic::codec::ProstCodec::default();
1629 let path = http::uri::PathAndQuery::from_static(
1630 "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSources",
1631 );
1632 let mut req = request.into_request();
1633 req.extensions_mut()
1634 .insert(
1635 GrpcMethod::new(
1636 "nominal.ingest.v2.StreamingSessionService",
1637 "SearchStreamingSources",
1638 ),
1639 );
1640 self.inner.unary(req, path, codec).await
1641 }
1642 }
1643}