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 #[prost(message, repeated, tag = "3")]
642 pub additional_sources: ::prost::alloc::vec::Vec<IngestSource>,
643}
644#[derive(Clone, PartialEq, ::prost::Message)]
645pub struct VideoIngestOptions {
646 #[prost(message, optional, tag = "1")]
647 pub timestamp_manifest: ::core::option::Option<VideoTimestampManifest>,
648 #[prost(string, tag = "2")]
649 pub channel: ::prost::alloc::string::String,
650 #[prost(bool, optional, tag = "3")]
651 pub overwrite_segments: ::core::option::Option<bool>,
652}
653#[derive(Clone, PartialEq, ::prost::Message)]
654pub struct VideoTimestampManifest {
655 #[prost(oneof = "video_timestamp_manifest::Manifest", tags = "1, 2, 3")]
656 pub manifest: ::core::option::Option<video_timestamp_manifest::Manifest>,
657}
658pub mod video_timestamp_manifest {
660 #[derive(Clone, PartialEq, ::prost::Oneof)]
661 pub enum Manifest {
662 #[prost(message, tag = "1")]
663 NoManifest(super::NoTimestampManifest),
664 #[prost(message, tag = "2")]
665 TimestampManifestFiles(super::TimestampManifestFiles),
666 #[prost(message, tag = "3")]
667 Mcap(super::McapTimestampManifest),
668 }
669}
670#[derive(Clone, Copy, PartialEq, ::prost::Message)]
671pub struct NoTimestampManifest {
672 #[prost(message, optional, tag = "1")]
673 pub starting_timestamp: ::core::option::Option<
674 super::super::super::google::protobuf::Timestamp,
675 >,
676 #[prost(message, optional, tag = "2")]
677 pub scale_parameter: ::core::option::Option<ScaleParameter>,
678}
679#[derive(Clone, PartialEq, ::prost::Message)]
680pub struct TimestampManifestFiles {
681 #[prost(message, repeated, tag = "1")]
682 pub sources: ::prost::alloc::vec::Vec<IngestSource>,
683}
684#[derive(Clone, PartialEq, ::prost::Message)]
685pub struct McapTimestampManifest {
686 #[prost(message, optional, tag = "1")]
687 pub channel_locator: ::core::option::Option<McapChannelLocator>,
688}
689#[derive(Clone, PartialEq, ::prost::Message)]
690pub struct McapChannelLocator {
691 #[prost(oneof = "mcap_channel_locator::Locator", tags = "1, 2")]
692 pub locator: ::core::option::Option<mcap_channel_locator::Locator>,
693}
694pub mod mcap_channel_locator {
696 #[derive(Clone, PartialEq, ::prost::Oneof)]
697 pub enum Locator {
698 #[prost(string, tag = "1")]
699 Topic(::prost::alloc::string::String),
700 #[prost(int32, tag = "2")]
701 Id(i32),
702 }
703}
704#[derive(Clone, Copy, PartialEq, ::prost::Message)]
705pub struct ScaleParameter {
706 #[prost(oneof = "scale_parameter::ScaleParameter", tags = "1, 2, 3")]
707 pub scale_parameter: ::core::option::Option<scale_parameter::ScaleParameter>,
708}
709pub mod scale_parameter {
711 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
712 pub enum ScaleParameter {
713 #[prost(double, tag = "1")]
714 TrueFrameRate(f64),
715 #[prost(message, tag = "2")]
716 EndingTimestamp(super::super::super::super::google::protobuf::Timestamp),
717 #[prost(double, tag = "3")]
718 ScaleFactor(f64),
719 }
720}
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct IngestRequest {
723 #[prost(string, tag = "1")]
724 pub dataset_rid: ::prost::alloc::string::String,
725 #[prost(string, repeated, tag = "2")]
726 pub runs_to_expand: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
727 #[prost(message, repeated, tag = "3")]
728 pub items: ::prost::alloc::vec::Vec<IngestItem>,
729 #[prost(map = "string, string", tag = "4")]
730 pub tags: ::std::collections::HashMap<
731 ::prost::alloc::string::String,
732 ::prost::alloc::string::String,
733 >,
734}
735#[derive(Clone, PartialEq, ::prost::Message)]
736pub struct IngestResponse {
737 #[prost(string, tag = "1")]
738 pub ingest_job_rid: ::prost::alloc::string::String,
739}
740#[derive(Clone, PartialEq, ::prost::Message)]
741pub struct IngestItem {
742 #[prost(map = "string, string", tag = "1")]
743 pub tags: ::std::collections::HashMap<
744 ::prost::alloc::string::String,
745 ::prost::alloc::string::String,
746 >,
747 #[prost(oneof = "ingest_item::Item", tags = "2, 3, 4, 5, 6, 7, 8")]
748 pub item: ::core::option::Option<ingest_item::Item>,
749}
750pub mod ingest_item {
752 #[derive(Clone, PartialEq, ::prost::Oneof)]
753 pub enum Item {
754 #[prost(message, tag = "2")]
755 File(super::FileIngestItem),
756 #[prost(message, tag = "3")]
757 Log(super::LogIngestItem),
758 #[prost(message, tag = "4")]
759 Containerized(super::ContainerizedIngestItem),
760 #[prost(message, tag = "5")]
761 Video(super::VideoIngestItem),
762 #[prost(message, tag = "6")]
763 PointCloud(super::PointCloudIngestItem),
764 #[prost(message, tag = "7")]
765 Mcap(super::McapIngestItem),
766 #[prost(message, tag = "8")]
767 Dataflash(super::DataflashIngestItem),
768 }
769}
770pub mod ingest_service_client {
772 #![allow(
773 unused_variables,
774 dead_code,
775 missing_docs,
776 clippy::wildcard_imports,
777 clippy::let_unit_value,
778 )]
779 use tonic::codegen::*;
780 use tonic::codegen::http::Uri;
781 #[derive(Debug, Clone)]
782 pub struct IngestServiceClient<T> {
783 inner: tonic::client::Grpc<T>,
784 }
785 impl IngestServiceClient<tonic::transport::Channel> {
786 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
788 where
789 D: TryInto<tonic::transport::Endpoint>,
790 D::Error: Into<StdError>,
791 {
792 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
793 Ok(Self::new(conn))
794 }
795 }
796 impl<T> IngestServiceClient<T>
797 where
798 T: tonic::client::GrpcService<tonic::body::Body>,
799 T::Error: Into<StdError>,
800 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
801 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
802 {
803 pub fn new(inner: T) -> Self {
804 let inner = tonic::client::Grpc::new(inner);
805 Self { inner }
806 }
807 pub fn with_origin(inner: T, origin: Uri) -> Self {
808 let inner = tonic::client::Grpc::with_origin(inner, origin);
809 Self { inner }
810 }
811 pub fn with_interceptor<F>(
812 inner: T,
813 interceptor: F,
814 ) -> IngestServiceClient<InterceptedService<T, F>>
815 where
816 F: tonic::service::Interceptor,
817 T::ResponseBody: Default,
818 T: tonic::codegen::Service<
819 http::Request<tonic::body::Body>,
820 Response = http::Response<
821 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
822 >,
823 >,
824 <T as tonic::codegen::Service<
825 http::Request<tonic::body::Body>,
826 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
827 {
828 IngestServiceClient::new(InterceptedService::new(inner, interceptor))
829 }
830 #[must_use]
835 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
836 self.inner = self.inner.send_compressed(encoding);
837 self
838 }
839 #[must_use]
841 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
842 self.inner = self.inner.accept_compressed(encoding);
843 self
844 }
845 #[must_use]
849 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
850 self.inner = self.inner.max_decoding_message_size(limit);
851 self
852 }
853 #[must_use]
857 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
858 self.inner = self.inner.max_encoding_message_size(limit);
859 self
860 }
861 pub async fn ingest(
862 &mut self,
863 request: impl tonic::IntoRequest<super::IngestRequest>,
864 ) -> std::result::Result<tonic::Response<super::IngestResponse>, tonic::Status> {
865 self.inner
866 .ready()
867 .await
868 .map_err(|e| {
869 tonic::Status::unknown(
870 format!("Service was not ready: {}", e.into()),
871 )
872 })?;
873 let codec = tonic::codec::ProstCodec::default();
874 let path = http::uri::PathAndQuery::from_static(
875 "/nominal.ingest.v2.IngestService/Ingest",
876 );
877 let mut req = request.into_request();
878 req.extensions_mut()
879 .insert(GrpcMethod::new("nominal.ingest.v2.IngestService", "Ingest"));
880 self.inner.unary(req, path, codec).await
881 }
882 }
883}
884#[derive(Clone, PartialEq, ::prost::Message)]
885pub struct NativeExtractor {
886 #[prost(string, tag = "1")]
887 pub catalog_id: ::prost::alloc::string::String,
888 #[prost(string, repeated, tag = "2")]
889 pub available_versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
890 #[prost(message, optional, tag = "3")]
891 pub installation: ::core::option::Option<ContainerizedExtractor>,
892 #[prost(string, optional, tag = "4")]
893 pub desired_version: ::core::option::Option<::prost::alloc::string::String>,
894 #[prost(string, tag = "5")]
895 pub display_name: ::prost::alloc::string::String,
896 #[prost(string, optional, tag = "6")]
897 pub description: ::core::option::Option<::prost::alloc::string::String>,
898}
899#[derive(Clone, PartialEq, ::prost::Message)]
900pub struct ListNativeExtractorsRequest {
901 #[prost(string, tag = "1")]
902 pub workspace_rid: ::prost::alloc::string::String,
903 #[prost(int32, tag = "2")]
904 pub page_size: i32,
905 #[prost(string, optional, tag = "3")]
906 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
907}
908#[derive(Clone, PartialEq, ::prost::Message)]
909pub struct ListNativeExtractorsResponse {
910 #[prost(message, repeated, tag = "1")]
911 pub extractors: ::prost::alloc::vec::Vec<NativeExtractor>,
912 #[prost(string, optional, tag = "2")]
913 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
914}
915#[derive(Clone, PartialEq, ::prost::Message)]
916pub struct EnableNativeExtractorRequest {
917 #[prost(string, tag = "1")]
918 pub workspace_rid: ::prost::alloc::string::String,
919 #[prost(string, tag = "2")]
920 pub catalog_id: ::prost::alloc::string::String,
921}
922#[derive(Clone, PartialEq, ::prost::Message)]
923pub struct EnableNativeExtractorResponse {
924 #[prost(message, optional, tag = "1")]
925 pub extractor: ::core::option::Option<NativeExtractor>,
926}
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct DisableNativeExtractorRequest {
929 #[prost(string, tag = "1")]
930 pub workspace_rid: ::prost::alloc::string::String,
931 #[prost(string, tag = "2")]
932 pub catalog_id: ::prost::alloc::string::String,
933}
934#[derive(Clone, Copy, PartialEq, ::prost::Message)]
935pub struct DisableNativeExtractorResponse {}
936pub mod native_extractor_service_client {
938 #![allow(
939 unused_variables,
940 dead_code,
941 missing_docs,
942 clippy::wildcard_imports,
943 clippy::let_unit_value,
944 )]
945 use tonic::codegen::*;
946 use tonic::codegen::http::Uri;
947 #[derive(Debug, Clone)]
948 pub struct NativeExtractorServiceClient<T> {
949 inner: tonic::client::Grpc<T>,
950 }
951 impl NativeExtractorServiceClient<tonic::transport::Channel> {
952 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
954 where
955 D: TryInto<tonic::transport::Endpoint>,
956 D::Error: Into<StdError>,
957 {
958 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
959 Ok(Self::new(conn))
960 }
961 }
962 impl<T> NativeExtractorServiceClient<T>
963 where
964 T: tonic::client::GrpcService<tonic::body::Body>,
965 T::Error: Into<StdError>,
966 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
967 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
968 {
969 pub fn new(inner: T) -> Self {
970 let inner = tonic::client::Grpc::new(inner);
971 Self { inner }
972 }
973 pub fn with_origin(inner: T, origin: Uri) -> Self {
974 let inner = tonic::client::Grpc::with_origin(inner, origin);
975 Self { inner }
976 }
977 pub fn with_interceptor<F>(
978 inner: T,
979 interceptor: F,
980 ) -> NativeExtractorServiceClient<InterceptedService<T, F>>
981 where
982 F: tonic::service::Interceptor,
983 T::ResponseBody: Default,
984 T: tonic::codegen::Service<
985 http::Request<tonic::body::Body>,
986 Response = http::Response<
987 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
988 >,
989 >,
990 <T as tonic::codegen::Service<
991 http::Request<tonic::body::Body>,
992 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
993 {
994 NativeExtractorServiceClient::new(
995 InterceptedService::new(inner, interceptor),
996 )
997 }
998 #[must_use]
1003 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1004 self.inner = self.inner.send_compressed(encoding);
1005 self
1006 }
1007 #[must_use]
1009 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1010 self.inner = self.inner.accept_compressed(encoding);
1011 self
1012 }
1013 #[must_use]
1017 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1018 self.inner = self.inner.max_decoding_message_size(limit);
1019 self
1020 }
1021 #[must_use]
1025 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1026 self.inner = self.inner.max_encoding_message_size(limit);
1027 self
1028 }
1029 pub async fn list_native_extractors(
1030 &mut self,
1031 request: impl tonic::IntoRequest<super::ListNativeExtractorsRequest>,
1032 ) -> std::result::Result<
1033 tonic::Response<super::ListNativeExtractorsResponse>,
1034 tonic::Status,
1035 > {
1036 self.inner
1037 .ready()
1038 .await
1039 .map_err(|e| {
1040 tonic::Status::unknown(
1041 format!("Service was not ready: {}", e.into()),
1042 )
1043 })?;
1044 let codec = tonic::codec::ProstCodec::default();
1045 let path = http::uri::PathAndQuery::from_static(
1046 "/nominal.ingest.v2.NativeExtractorService/ListNativeExtractors",
1047 );
1048 let mut req = request.into_request();
1049 req.extensions_mut()
1050 .insert(
1051 GrpcMethod::new(
1052 "nominal.ingest.v2.NativeExtractorService",
1053 "ListNativeExtractors",
1054 ),
1055 );
1056 self.inner.unary(req, path, codec).await
1057 }
1058 pub async fn enable_native_extractor(
1059 &mut self,
1060 request: impl tonic::IntoRequest<super::EnableNativeExtractorRequest>,
1061 ) -> std::result::Result<
1062 tonic::Response<super::EnableNativeExtractorResponse>,
1063 tonic::Status,
1064 > {
1065 self.inner
1066 .ready()
1067 .await
1068 .map_err(|e| {
1069 tonic::Status::unknown(
1070 format!("Service was not ready: {}", e.into()),
1071 )
1072 })?;
1073 let codec = tonic::codec::ProstCodec::default();
1074 let path = http::uri::PathAndQuery::from_static(
1075 "/nominal.ingest.v2.NativeExtractorService/EnableNativeExtractor",
1076 );
1077 let mut req = request.into_request();
1078 req.extensions_mut()
1079 .insert(
1080 GrpcMethod::new(
1081 "nominal.ingest.v2.NativeExtractorService",
1082 "EnableNativeExtractor",
1083 ),
1084 );
1085 self.inner.unary(req, path, codec).await
1086 }
1087 pub async fn disable_native_extractor(
1088 &mut self,
1089 request: impl tonic::IntoRequest<super::DisableNativeExtractorRequest>,
1090 ) -> std::result::Result<
1091 tonic::Response<super::DisableNativeExtractorResponse>,
1092 tonic::Status,
1093 > {
1094 self.inner
1095 .ready()
1096 .await
1097 .map_err(|e| {
1098 tonic::Status::unknown(
1099 format!("Service was not ready: {}", e.into()),
1100 )
1101 })?;
1102 let codec = tonic::codec::ProstCodec::default();
1103 let path = http::uri::PathAndQuery::from_static(
1104 "/nominal.ingest.v2.NativeExtractorService/DisableNativeExtractor",
1105 );
1106 let mut req = request.into_request();
1107 req.extensions_mut()
1108 .insert(
1109 GrpcMethod::new(
1110 "nominal.ingest.v2.NativeExtractorService",
1111 "DisableNativeExtractor",
1112 ),
1113 );
1114 self.inner.unary(req, path, codec).await
1115 }
1116 }
1117}
1118#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1119pub struct TimeRange {
1120 #[prost(message, optional, tag = "1")]
1121 pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1122 #[prost(message, optional, tag = "2")]
1123 pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1124}
1125#[derive(Clone, PartialEq, ::prost::Message)]
1126pub struct CustomSourceAttribution {
1127 #[prost(string, tag = "1")]
1128 pub source_name: ::prost::alloc::string::String,
1129}
1130#[derive(Clone, PartialEq, ::prost::Message)]
1131pub struct DataConnectorSourceAttribution {
1132 #[prost(string, tag = "1")]
1133 pub data_connector_rid: ::prost::alloc::string::String,
1134}
1135#[derive(Clone, PartialEq, ::prost::Message)]
1136pub struct MeshSourceAttribution {
1137 #[prost(string, tag = "1")]
1138 pub source_dataset_rid: ::prost::alloc::string::String,
1139 #[prost(string, tag = "2")]
1140 pub source_org_rid: ::prost::alloc::string::String,
1141 #[prost(string, tag = "3")]
1142 pub origin_source_label: ::prost::alloc::string::String,
1143}
1144#[derive(Clone, PartialEq, ::prost::Message)]
1145pub struct StreamingSourceAttribution {
1146 #[prost(oneof = "streaming_source_attribution::Source", tags = "1, 2, 3")]
1147 pub source: ::core::option::Option<streaming_source_attribution::Source>,
1148}
1149pub mod streaming_source_attribution {
1151 #[derive(Clone, PartialEq, ::prost::Oneof)]
1152 pub enum Source {
1153 #[prost(message, tag = "1")]
1154 Mesh(super::MeshSourceAttribution),
1155 #[prost(message, tag = "2")]
1156 DataConnector(super::DataConnectorSourceAttribution),
1157 #[prost(message, tag = "3")]
1158 Custom(super::CustomSourceAttribution),
1159 }
1160}
1161#[derive(Clone, PartialEq, ::prost::Message)]
1162pub struct StreamingSession {
1163 #[prost(string, tag = "1")]
1164 pub streaming_session_rid: ::prost::alloc::string::String,
1165 #[prost(string, tag = "2")]
1166 pub dataset_rid: ::prost::alloc::string::String,
1167 #[prost(enumeration = "StreamingSessionStatus", tag = "3")]
1168 pub status: i32,
1169 #[prost(message, optional, tag = "4")]
1170 pub source: ::core::option::Option<StreamingSourceAttribution>,
1171 #[prost(message, optional, tag = "5")]
1172 pub data_bounds: ::core::option::Option<TimeRange>,
1173 #[prost(int64, tag = "6")]
1174 pub points_count: i64,
1175 #[prost(message, optional, tag = "7")]
1176 pub created_at: ::core::option::Option<
1177 super::super::super::google::protobuf::Timestamp,
1178 >,
1179 #[prost(message, optional, tag = "8")]
1180 pub last_seen_at: ::core::option::Option<
1181 super::super::super::google::protobuf::Timestamp,
1182 >,
1183 #[prost(message, optional, tag = "9")]
1184 pub completed_at: ::core::option::Option<
1185 super::super::super::google::protobuf::Timestamp,
1186 >,
1187}
1188#[derive(Clone, PartialEq, ::prost::Message)]
1189pub struct StreamingDatasetRidsFilter {
1190 #[prost(string, repeated, tag = "1")]
1191 pub dataset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1192}
1193#[derive(Clone, PartialEq, ::prost::Message)]
1194pub struct ExactStreamingSourceFilter {
1195 #[prost(string, tag = "1")]
1196 pub dataset_rid: ::prost::alloc::string::String,
1197 #[prost(message, optional, tag = "2")]
1198 pub source: ::core::option::Option<StreamingSourceAttribution>,
1199}
1200#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1201pub struct StreamingSessionDataBoundsFilter {
1202 #[prost(message, optional, tag = "1")]
1203 pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1204 #[prost(message, optional, tag = "2")]
1205 pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
1206}
1207#[derive(Clone, PartialEq, ::prost::Message)]
1208pub struct StreamingWorkspaceFilter {
1209 #[prost(string, tag = "1")]
1210 pub workspace_rid: ::prost::alloc::string::String,
1211}
1212#[derive(Clone, PartialEq, ::prost::Message)]
1213pub struct StreamingSessionAndFilter {
1214 #[prost(message, repeated, tag = "1")]
1215 pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1216}
1217#[derive(Clone, PartialEq, ::prost::Message)]
1218pub struct StreamingSessionOrFilter {
1219 #[prost(message, repeated, tag = "1")]
1220 pub filters: ::prost::alloc::vec::Vec<StreamingSessionSearchFilter>,
1221}
1222#[derive(Clone, PartialEq, ::prost::Message)]
1223pub struct StreamingSessionNotFilter {
1224 #[prost(message, optional, boxed, tag = "1")]
1225 pub filter: ::core::option::Option<
1226 ::prost::alloc::boxed::Box<StreamingSessionSearchFilter>,
1227 >,
1228}
1229#[derive(Clone, PartialEq, ::prost::Message)]
1230pub struct StreamingSessionSearchFilter {
1231 #[prost(
1232 oneof = "streaming_session_search_filter::Filter",
1233 tags = "1, 2, 3, 4, 5, 6, 7"
1234 )]
1235 pub filter: ::core::option::Option<streaming_session_search_filter::Filter>,
1236}
1237pub mod streaming_session_search_filter {
1239 #[derive(Clone, PartialEq, ::prost::Oneof)]
1240 pub enum Filter {
1241 #[prost(message, tag = "1")]
1242 DatasetRids(super::StreamingDatasetRidsFilter),
1243 #[prost(message, tag = "2")]
1244 Source(super::ExactStreamingSourceFilter),
1245 #[prost(message, tag = "3")]
1246 DataBoundsOverlap(super::StreamingSessionDataBoundsFilter),
1247 #[prost(message, tag = "4")]
1248 Workspace(super::StreamingWorkspaceFilter),
1249 #[prost(message, tag = "5")]
1250 And(super::StreamingSessionAndFilter),
1251 #[prost(message, tag = "6")]
1252 Or(super::StreamingSessionOrFilter),
1253 #[prost(message, tag = "7")]
1254 Not(::prost::alloc::boxed::Box<super::StreamingSessionNotFilter>),
1255 }
1256}
1257#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1258pub struct StreamingSessionSortOptions {
1259 #[prost(enumeration = "StreamingSessionSortField", tag = "1")]
1260 pub field: i32,
1261 #[prost(bool, tag = "2")]
1262 pub is_descending: bool,
1263}
1264#[derive(Clone, PartialEq, ::prost::Message)]
1265pub struct SearchStreamingSessionsRequest {
1266 #[prost(int32, optional, tag = "1")]
1267 pub page_size: ::core::option::Option<i32>,
1268 #[prost(string, optional, tag = "2")]
1269 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1270 #[prost(message, optional, tag = "3")]
1271 pub filter: ::core::option::Option<StreamingSessionSearchFilter>,
1272 #[prost(message, optional, tag = "4")]
1273 pub sort: ::core::option::Option<StreamingSessionSortOptions>,
1274}
1275#[derive(Clone, PartialEq, ::prost::Message)]
1276pub struct SearchStreamingSessionsResponse {
1277 #[prost(message, repeated, tag = "1")]
1278 pub streaming_sessions: ::prost::alloc::vec::Vec<StreamingSession>,
1279 #[prost(string, optional, tag = "2")]
1280 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1281}
1282#[derive(Clone, PartialEq, ::prost::Message)]
1283pub struct StreamingSource {
1284 #[prost(message, optional, tag = "1")]
1285 pub source: ::core::option::Option<StreamingSourceAttribution>,
1286 #[prost(string, tag = "2")]
1287 pub dataset_rid: ::prost::alloc::string::String,
1288 #[prost(int64, tag = "3")]
1289 pub session_count: i64,
1290 #[prost(int64, tag = "4")]
1291 pub total_points_count: i64,
1292 #[prost(message, optional, tag = "5")]
1293 pub earliest_created_at: ::core::option::Option<
1294 super::super::super::google::protobuf::Timestamp,
1295 >,
1296 #[prost(message, optional, tag = "6")]
1297 pub latest_last_seen_at: ::core::option::Option<
1298 super::super::super::google::protobuf::Timestamp,
1299 >,
1300 #[prost(message, optional, tag = "7")]
1301 pub merged_data_bounds: ::core::option::Option<TimeRange>,
1302 #[prost(bool, tag = "8")]
1303 pub any_in_progress: bool,
1304}
1305#[derive(Clone, PartialEq, ::prost::Message)]
1306pub struct StreamingSourceAndFilter {
1307 #[prost(message, repeated, tag = "1")]
1308 pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1309}
1310#[derive(Clone, PartialEq, ::prost::Message)]
1311pub struct StreamingSourceOrFilter {
1312 #[prost(message, repeated, tag = "1")]
1313 pub filters: ::prost::alloc::vec::Vec<StreamingSourceSearchFilter>,
1314}
1315#[derive(Clone, PartialEq, ::prost::Message)]
1316pub struct StreamingSourceNotFilter {
1317 #[prost(message, optional, boxed, tag = "1")]
1318 pub filter: ::core::option::Option<
1319 ::prost::alloc::boxed::Box<StreamingSourceSearchFilter>,
1320 >,
1321}
1322#[derive(Clone, PartialEq, ::prost::Message)]
1323pub struct StreamingSourceSearchFilter {
1324 #[prost(oneof = "streaming_source_search_filter::Filter", tags = "1, 2, 3, 4, 5, 6")]
1325 pub filter: ::core::option::Option<streaming_source_search_filter::Filter>,
1326}
1327pub mod streaming_source_search_filter {
1329 #[derive(Clone, PartialEq, ::prost::Oneof)]
1330 pub enum Filter {
1331 #[prost(message, tag = "1")]
1332 DatasetRids(super::StreamingDatasetRidsFilter),
1333 #[prost(message, tag = "2")]
1334 Source(super::ExactStreamingSourceFilter),
1335 #[prost(message, tag = "3")]
1336 Workspace(super::StreamingWorkspaceFilter),
1337 #[prost(message, tag = "4")]
1338 And(super::StreamingSourceAndFilter),
1339 #[prost(message, tag = "5")]
1340 Or(super::StreamingSourceOrFilter),
1341 #[prost(message, tag = "6")]
1342 Not(::prost::alloc::boxed::Box<super::StreamingSourceNotFilter>),
1343 }
1344}
1345#[derive(Clone, PartialEq, ::prost::Message)]
1346pub struct SearchStreamingSourcesRequest {
1347 #[prost(int32, optional, tag = "1")]
1348 pub page_size: ::core::option::Option<i32>,
1349 #[prost(string, optional, tag = "2")]
1350 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1351 #[prost(message, optional, tag = "3")]
1352 pub filter: ::core::option::Option<StreamingSourceSearchFilter>,
1353 #[prost(message, optional, tag = "4")]
1354 pub last_seen_after: ::core::option::Option<
1355 super::super::super::google::protobuf::Timestamp,
1356 >,
1357}
1358#[derive(Clone, PartialEq, ::prost::Message)]
1359pub struct SearchStreamingSourcesResponse {
1360 #[prost(message, repeated, tag = "1")]
1361 pub streaming_sources: ::prost::alloc::vec::Vec<StreamingSource>,
1362 #[prost(string, optional, tag = "2")]
1363 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1364}
1365#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1366#[repr(i32)]
1367pub enum StreamingSessionError {
1368 Unspecified = 0,
1369 FilterTooComplex = 1,
1370}
1371impl StreamingSessionError {
1372 pub fn as_str_name(&self) -> &'static str {
1377 match self {
1378 Self::Unspecified => "STREAMING_SESSION_ERROR_UNSPECIFIED",
1379 Self::FilterTooComplex => "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX",
1380 }
1381 }
1382 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1384 match value {
1385 "STREAMING_SESSION_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1386 "STREAMING_SESSION_ERROR_FILTER_TOO_COMPLEX" => Some(Self::FilterTooComplex),
1387 _ => None,
1388 }
1389 }
1390}
1391#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1392#[repr(i32)]
1393pub enum StreamingSessionStatus {
1394 Unspecified = 0,
1395 InProgress = 1,
1396 Completed = 2,
1397}
1398impl StreamingSessionStatus {
1399 pub fn as_str_name(&self) -> &'static str {
1404 match self {
1405 Self::Unspecified => "STREAMING_SESSION_STATUS_UNSPECIFIED",
1406 Self::InProgress => "STREAMING_SESSION_STATUS_IN_PROGRESS",
1407 Self::Completed => "STREAMING_SESSION_STATUS_COMPLETED",
1408 }
1409 }
1410 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1412 match value {
1413 "STREAMING_SESSION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1414 "STREAMING_SESSION_STATUS_IN_PROGRESS" => Some(Self::InProgress),
1415 "STREAMING_SESSION_STATUS_COMPLETED" => Some(Self::Completed),
1416 _ => None,
1417 }
1418 }
1419}
1420#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1421#[repr(i32)]
1422pub enum StreamingSessionSortField {
1423 Unspecified = 0,
1424 CreatedAt = 1,
1425 DataBoundsStart = 2,
1426}
1427impl StreamingSessionSortField {
1428 pub fn as_str_name(&self) -> &'static str {
1433 match self {
1434 Self::Unspecified => "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED",
1435 Self::CreatedAt => "STREAMING_SESSION_SORT_FIELD_CREATED_AT",
1436 Self::DataBoundsStart => "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START",
1437 }
1438 }
1439 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1441 match value {
1442 "STREAMING_SESSION_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
1443 "STREAMING_SESSION_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
1444 "STREAMING_SESSION_SORT_FIELD_DATA_BOUNDS_START" => {
1445 Some(Self::DataBoundsStart)
1446 }
1447 _ => None,
1448 }
1449 }
1450}
1451pub mod streaming_session_service_client {
1453 #![allow(
1454 unused_variables,
1455 dead_code,
1456 missing_docs,
1457 clippy::wildcard_imports,
1458 clippy::let_unit_value,
1459 )]
1460 use tonic::codegen::*;
1461 use tonic::codegen::http::Uri;
1462 #[derive(Debug, Clone)]
1463 pub struct StreamingSessionServiceClient<T> {
1464 inner: tonic::client::Grpc<T>,
1465 }
1466 impl StreamingSessionServiceClient<tonic::transport::Channel> {
1467 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1469 where
1470 D: TryInto<tonic::transport::Endpoint>,
1471 D::Error: Into<StdError>,
1472 {
1473 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1474 Ok(Self::new(conn))
1475 }
1476 }
1477 impl<T> StreamingSessionServiceClient<T>
1478 where
1479 T: tonic::client::GrpcService<tonic::body::Body>,
1480 T::Error: Into<StdError>,
1481 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1482 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1483 {
1484 pub fn new(inner: T) -> Self {
1485 let inner = tonic::client::Grpc::new(inner);
1486 Self { inner }
1487 }
1488 pub fn with_origin(inner: T, origin: Uri) -> Self {
1489 let inner = tonic::client::Grpc::with_origin(inner, origin);
1490 Self { inner }
1491 }
1492 pub fn with_interceptor<F>(
1493 inner: T,
1494 interceptor: F,
1495 ) -> StreamingSessionServiceClient<InterceptedService<T, F>>
1496 where
1497 F: tonic::service::Interceptor,
1498 T::ResponseBody: Default,
1499 T: tonic::codegen::Service<
1500 http::Request<tonic::body::Body>,
1501 Response = http::Response<
1502 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1503 >,
1504 >,
1505 <T as tonic::codegen::Service<
1506 http::Request<tonic::body::Body>,
1507 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1508 {
1509 StreamingSessionServiceClient::new(
1510 InterceptedService::new(inner, interceptor),
1511 )
1512 }
1513 #[must_use]
1518 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1519 self.inner = self.inner.send_compressed(encoding);
1520 self
1521 }
1522 #[must_use]
1524 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1525 self.inner = self.inner.accept_compressed(encoding);
1526 self
1527 }
1528 #[must_use]
1532 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1533 self.inner = self.inner.max_decoding_message_size(limit);
1534 self
1535 }
1536 #[must_use]
1540 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1541 self.inner = self.inner.max_encoding_message_size(limit);
1542 self
1543 }
1544 pub async fn search_streaming_sessions(
1545 &mut self,
1546 request: impl tonic::IntoRequest<super::SearchStreamingSessionsRequest>,
1547 ) -> std::result::Result<
1548 tonic::Response<super::SearchStreamingSessionsResponse>,
1549 tonic::Status,
1550 > {
1551 self.inner
1552 .ready()
1553 .await
1554 .map_err(|e| {
1555 tonic::Status::unknown(
1556 format!("Service was not ready: {}", e.into()),
1557 )
1558 })?;
1559 let codec = tonic::codec::ProstCodec::default();
1560 let path = http::uri::PathAndQuery::from_static(
1561 "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSessions",
1562 );
1563 let mut req = request.into_request();
1564 req.extensions_mut()
1565 .insert(
1566 GrpcMethod::new(
1567 "nominal.ingest.v2.StreamingSessionService",
1568 "SearchStreamingSessions",
1569 ),
1570 );
1571 self.inner.unary(req, path, codec).await
1572 }
1573 pub async fn search_streaming_sources(
1574 &mut self,
1575 request: impl tonic::IntoRequest<super::SearchStreamingSourcesRequest>,
1576 ) -> std::result::Result<
1577 tonic::Response<super::SearchStreamingSourcesResponse>,
1578 tonic::Status,
1579 > {
1580 self.inner
1581 .ready()
1582 .await
1583 .map_err(|e| {
1584 tonic::Status::unknown(
1585 format!("Service was not ready: {}", e.into()),
1586 )
1587 })?;
1588 let codec = tonic::codec::ProstCodec::default();
1589 let path = http::uri::PathAndQuery::from_static(
1590 "/nominal.ingest.v2.StreamingSessionService/SearchStreamingSources",
1591 );
1592 let mut req = request.into_request();
1593 req.extensions_mut()
1594 .insert(
1595 GrpcMethod::new(
1596 "nominal.ingest.v2.StreamingSessionService",
1597 "SearchStreamingSources",
1598 ),
1599 );
1600 self.inner.unary(req, path, codec).await
1601 }
1602 }
1603}