Skip to main content

nominal_api_proto/proto/
nominal.metadata.v2.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct MatchCount {
4    #[prost(string, tag = "1")]
5    pub value: ::prost::alloc::string::String,
6    #[prost(int32, tag = "2")]
7    pub document_count: i32,
8}
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct LabelWithCount {
11    #[prost(string, tag = "1")]
12    pub label: ::prost::alloc::string::String,
13    #[prost(int32, tag = "2")]
14    pub document_count: i32,
15}
16#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17pub struct StringPropertySummary {
18    #[prost(int32, tag = "1")]
19    pub document_count: i32,
20    #[prost(int32, tag = "2")]
21    pub distinct_value_count: i32,
22}
23#[derive(Clone, Copy, PartialEq, ::prost::Message)]
24pub struct NumericPropertySummary {
25    #[prost(int32, tag = "1")]
26    pub document_count: i32,
27    #[prost(double, tag = "4")]
28    pub mean: f64,
29}
30#[derive(Clone, PartialEq, ::prost::Message)]
31pub struct PropertyKeyWithCount {
32    #[prost(string, tag = "1")]
33    pub property_key: ::prost::alloc::string::String,
34    #[prost(int32, tag = "2")]
35    pub document_count: i32,
36    #[deprecated]
37    #[prost(int32, tag = "3")]
38    pub value_count: i32,
39    #[prost(message, optional, tag = "4")]
40    pub string: ::core::option::Option<StringPropertySummary>,
41    #[prost(message, optional, tag = "5")]
42    pub numeric: ::core::option::Option<NumericPropertySummary>,
43}
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct PropertyValueWithCount {
46    #[prost(string, tag = "1")]
47    pub property_value: ::prost::alloc::string::String,
48    #[prost(int32, tag = "2")]
49    pub document_count: i32,
50}
51#[derive(Clone, PartialEq, ::prost::Message)]
52pub struct ListPropertiesAndLabelsRequest {
53    #[prost(enumeration = "ResourceType", repeated, tag = "1")]
54    pub resource_types: ::prost::alloc::vec::Vec<i32>,
55    #[prost(string, repeated, tag = "2")]
56    pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
57}
58#[derive(Clone, PartialEq, ::prost::Message)]
59pub struct ListPropertiesAndLabelsResponse {
60    #[prost(map = "string, message", tag = "1")]
61    pub properties: ::std::collections::HashMap<
62        ::prost::alloc::string::String,
63        list_properties_and_labels_response::PropertyValues,
64    >,
65    #[prost(string, repeated, tag = "2")]
66    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
67}
68/// Nested message and enum types in `ListPropertiesAndLabelsResponse`.
69pub mod list_properties_and_labels_response {
70    #[derive(Clone, PartialEq, ::prost::Message)]
71    pub struct PropertyValues {
72        #[prost(string, repeated, tag = "1")]
73        pub value: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
74    }
75}
76#[derive(Clone, PartialEq, ::prost::Message)]
77pub struct MetadataUsageQuery {
78    #[prost(oneof = "metadata_usage_query::MetadataUsageQuery", tags = "1, 2, 3")]
79    pub metadata_usage_query: ::core::option::Option<
80        metadata_usage_query::MetadataUsageQuery,
81    >,
82}
83/// Nested message and enum types in `MetadataUsageQuery`.
84pub mod metadata_usage_query {
85    #[derive(Clone, PartialEq, ::prost::Oneof)]
86    pub enum MetadataUsageQuery {
87        #[prost(string, tag = "1")]
88        Label(::prost::alloc::string::String),
89        #[prost(string, tag = "2")]
90        PropertyName(::prost::alloc::string::String),
91        #[prost(message, tag = "3")]
92        Property(super::super::super::types::Property),
93    }
94}
95#[derive(Clone, PartialEq, ::prost::Message)]
96pub struct GetMetadataUsageCountRequest {
97    #[prost(message, optional, tag = "1")]
98    pub query: ::core::option::Option<MetadataUsageQuery>,
99    #[prost(enumeration = "ResourceType", repeated, tag = "2")]
100    pub resource_types: ::prost::alloc::vec::Vec<i32>,
101    #[prost(string, repeated, tag = "3")]
102    pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
103}
104#[derive(Clone, Copy, PartialEq, ::prost::Message)]
105pub struct GetMetadataUsageCountResponse {
106    #[prost(int32, tag = "1")]
107    pub count: i32,
108}
109#[derive(Clone, PartialEq, ::prost::Message)]
110pub struct FindSimilarLabelMatchesRequest {
111    #[prost(enumeration = "ResourceType", repeated, tag = "1")]
112    pub resource_types: ::prost::alloc::vec::Vec<i32>,
113    #[prost(string, repeated, tag = "2")]
114    pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
115    #[prost(string, repeated, tag = "3")]
116    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
117}
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct FindSimilarLabelMatchesResponse {
120    #[prost(map = "string, message", tag = "1")]
121    pub matches: ::std::collections::HashMap<
122        ::prost::alloc::string::String,
123        find_similar_label_matches_response::Matches,
124    >,
125}
126/// Nested message and enum types in `FindSimilarLabelMatchesResponse`.
127pub mod find_similar_label_matches_response {
128    #[derive(Clone, PartialEq, ::prost::Message)]
129    pub struct Matches {
130        #[prost(message, repeated, tag = "1")]
131        pub value: ::prost::alloc::vec::Vec<super::MatchCount>,
132    }
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct FindSimilarPropertyKeyMatchesRequest {
136    #[prost(enumeration = "ResourceType", repeated, tag = "1")]
137    pub resource_types: ::prost::alloc::vec::Vec<i32>,
138    #[prost(string, repeated, tag = "2")]
139    pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
140    #[prost(string, repeated, tag = "3")]
141    pub property_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
142}
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct FindSimilarPropertyKeyMatchesResponse {
145    #[prost(map = "string, message", tag = "1")]
146    pub key_matches: ::std::collections::HashMap<
147        ::prost::alloc::string::String,
148        find_similar_property_key_matches_response::Matches,
149    >,
150}
151/// Nested message and enum types in `FindSimilarPropertyKeyMatchesResponse`.
152pub mod find_similar_property_key_matches_response {
153    #[derive(Clone, PartialEq, ::prost::Message)]
154    pub struct Matches {
155        #[prost(message, repeated, tag = "1")]
156        pub value: ::prost::alloc::vec::Vec<super::MatchCount>,
157    }
158}
159#[derive(Clone, PartialEq, ::prost::Message)]
160pub struct MetadataSearchParams {
161    #[prost(enumeration = "ResourceType", repeated, tag = "1")]
162    pub resource_types: ::prost::alloc::vec::Vec<i32>,
163    #[prost(string, repeated, tag = "2")]
164    pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
165    #[prost(string, optional, tag = "3")]
166    pub search_text: ::core::option::Option<::prost::alloc::string::String>,
167    #[prost(int32, optional, tag = "4")]
168    pub page_size: ::core::option::Option<i32>,
169    #[prost(string, optional, tag = "5")]
170    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
171    #[prost(enumeration = "MetadataSortField", tag = "6")]
172    pub sort_by: i32,
173    #[prost(bool, optional, tag = "7")]
174    pub descending: ::core::option::Option<bool>,
175}
176#[derive(Clone, PartialEq, ::prost::Message)]
177pub struct SearchLabelsRequest {
178    #[prost(message, optional, tag = "1")]
179    pub params: ::core::option::Option<MetadataSearchParams>,
180}
181#[derive(Clone, PartialEq, ::prost::Message)]
182pub struct SearchLabelsResponse {
183    #[prost(message, repeated, tag = "1")]
184    pub labels: ::prost::alloc::vec::Vec<LabelWithCount>,
185    #[prost(string, optional, tag = "2")]
186    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
187}
188#[derive(Clone, PartialEq, ::prost::Message)]
189pub struct SearchPropertyKeysRequest {
190    #[prost(message, optional, tag = "1")]
191    pub params: ::core::option::Option<MetadataSearchParams>,
192}
193#[derive(Clone, PartialEq, ::prost::Message)]
194pub struct SearchPropertyKeysResponse {
195    #[prost(message, repeated, tag = "1")]
196    pub property_keys: ::prost::alloc::vec::Vec<PropertyKeyWithCount>,
197    #[prost(string, optional, tag = "2")]
198    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
199}
200#[derive(Clone, PartialEq, ::prost::Message)]
201pub struct SearchPropertyValuesRequest {
202    #[prost(message, optional, tag = "1")]
203    pub params: ::core::option::Option<MetadataSearchParams>,
204    #[prost(string, tag = "2")]
205    pub property_key: ::prost::alloc::string::String,
206}
207#[derive(Clone, PartialEq, ::prost::Message)]
208pub struct SearchPropertyValuesResponse {
209    #[prost(message, repeated, tag = "1")]
210    pub property_values: ::prost::alloc::vec::Vec<PropertyValueWithCount>,
211    #[prost(string, optional, tag = "2")]
212    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
213}
214#[derive(Clone, Copy, PartialEq, ::prost::Message)]
215pub struct NumericPropertyStatistics {
216    #[prost(double, tag = "1")]
217    pub min: f64,
218    #[prost(double, tag = "2")]
219    pub max: f64,
220}
221#[derive(Clone, PartialEq, ::prost::Message)]
222pub struct GetNumericPropertyStatisticsRequest {
223    #[prost(string, tag = "1")]
224    pub property_key: ::prost::alloc::string::String,
225    #[prost(enumeration = "ResourceType", repeated, tag = "2")]
226    pub resource_types: ::prost::alloc::vec::Vec<i32>,
227    #[prost(string, repeated, tag = "3")]
228    pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
229}
230#[derive(Clone, Copy, PartialEq, ::prost::Message)]
231pub struct GetNumericPropertyStatisticsResponse {
232    #[prost(message, optional, tag = "1")]
233    pub statistics: ::core::option::Option<NumericPropertyStatistics>,
234}
235#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
236#[repr(i32)]
237pub enum ResourceType {
238    Unspecified = 0,
239    Run = 1,
240    Video = 2,
241    Asset = 3,
242    Event = 4,
243    Dataset = 5,
244    Module = 6,
245    ProcedureExecution = 7,
246    Procedure = 8,
247    SavedView = 9,
248    Plan = 10,
249}
250impl ResourceType {
251    /// String value of the enum field names used in the ProtoBuf definition.
252    ///
253    /// The values are not transformed in any way and thus are considered stable
254    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
255    pub fn as_str_name(&self) -> &'static str {
256        match self {
257            Self::Unspecified => "RESOURCE_TYPE_UNSPECIFIED",
258            Self::Run => "RUN",
259            Self::Video => "VIDEO",
260            Self::Asset => "ASSET",
261            Self::Event => "EVENT",
262            Self::Dataset => "DATASET",
263            Self::Module => "MODULE",
264            Self::ProcedureExecution => "PROCEDURE_EXECUTION",
265            Self::Procedure => "PROCEDURE",
266            Self::SavedView => "SAVED_VIEW",
267            Self::Plan => "PLAN",
268        }
269    }
270    /// Creates an enum from field names used in the ProtoBuf definition.
271    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
272        match value {
273            "RESOURCE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
274            "RUN" => Some(Self::Run),
275            "VIDEO" => Some(Self::Video),
276            "ASSET" => Some(Self::Asset),
277            "EVENT" => Some(Self::Event),
278            "DATASET" => Some(Self::Dataset),
279            "MODULE" => Some(Self::Module),
280            "PROCEDURE_EXECUTION" => Some(Self::ProcedureExecution),
281            "PROCEDURE" => Some(Self::Procedure),
282            "SAVED_VIEW" => Some(Self::SavedView),
283            "PLAN" => Some(Self::Plan),
284            _ => None,
285        }
286    }
287}
288#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
289#[repr(i32)]
290pub enum MetadataSortField {
291    Unspecified = 0,
292    Alphabetical = 1,
293    UsageCount = 2,
294    PropertyValueCount = 3,
295}
296impl MetadataSortField {
297    /// String value of the enum field names used in the ProtoBuf definition.
298    ///
299    /// The values are not transformed in any way and thus are considered stable
300    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
301    pub fn as_str_name(&self) -> &'static str {
302        match self {
303            Self::Unspecified => "METADATA_SORT_FIELD_UNSPECIFIED",
304            Self::Alphabetical => "ALPHABETICAL",
305            Self::UsageCount => "USAGE_COUNT",
306            Self::PropertyValueCount => "PROPERTY_VALUE_COUNT",
307        }
308    }
309    /// Creates an enum from field names used in the ProtoBuf definition.
310    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
311        match value {
312            "METADATA_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
313            "ALPHABETICAL" => Some(Self::Alphabetical),
314            "USAGE_COUNT" => Some(Self::UsageCount),
315            "PROPERTY_VALUE_COUNT" => Some(Self::PropertyValueCount),
316            _ => None,
317        }
318    }
319}
320#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
321#[repr(i32)]
322pub enum MetadataError {
323    InvalidMetadataRequest = 0,
324    QueryTooBroad = 1,
325}
326impl MetadataError {
327    /// String value of the enum field names used in the ProtoBuf definition.
328    ///
329    /// The values are not transformed in any way and thus are considered stable
330    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
331    pub fn as_str_name(&self) -> &'static str {
332        match self {
333            Self::InvalidMetadataRequest => "METADATA_ERROR_INVALID_METADATA_REQUEST",
334            Self::QueryTooBroad => "METADATA_ERROR_QUERY_TOO_BROAD",
335        }
336    }
337    /// Creates an enum from field names used in the ProtoBuf definition.
338    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
339        match value {
340            "METADATA_ERROR_INVALID_METADATA_REQUEST" => {
341                Some(Self::InvalidMetadataRequest)
342            }
343            "METADATA_ERROR_QUERY_TOO_BROAD" => Some(Self::QueryTooBroad),
344            _ => None,
345        }
346    }
347}
348/// Generated client implementations.
349pub mod resource_metadata_service_client {
350    #![allow(
351        unused_variables,
352        dead_code,
353        missing_docs,
354        clippy::wildcard_imports,
355        clippy::let_unit_value,
356    )]
357    use tonic::codegen::*;
358    use tonic::codegen::http::Uri;
359    #[derive(Debug, Clone)]
360    pub struct ResourceMetadataServiceClient<T> {
361        inner: tonic::client::Grpc<T>,
362    }
363    impl ResourceMetadataServiceClient<tonic::transport::Channel> {
364        /// Attempt to create a new client by connecting to a given endpoint.
365        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
366        where
367            D: TryInto<tonic::transport::Endpoint>,
368            D::Error: Into<StdError>,
369        {
370            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
371            Ok(Self::new(conn))
372        }
373    }
374    impl<T> ResourceMetadataServiceClient<T>
375    where
376        T: tonic::client::GrpcService<tonic::body::Body>,
377        T::Error: Into<StdError>,
378        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
379        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
380    {
381        pub fn new(inner: T) -> Self {
382            let inner = tonic::client::Grpc::new(inner);
383            Self { inner }
384        }
385        pub fn with_origin(inner: T, origin: Uri) -> Self {
386            let inner = tonic::client::Grpc::with_origin(inner, origin);
387            Self { inner }
388        }
389        pub fn with_interceptor<F>(
390            inner: T,
391            interceptor: F,
392        ) -> ResourceMetadataServiceClient<InterceptedService<T, F>>
393        where
394            F: tonic::service::Interceptor,
395            T::ResponseBody: Default,
396            T: tonic::codegen::Service<
397                http::Request<tonic::body::Body>,
398                Response = http::Response<
399                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
400                >,
401            >,
402            <T as tonic::codegen::Service<
403                http::Request<tonic::body::Body>,
404            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
405        {
406            ResourceMetadataServiceClient::new(
407                InterceptedService::new(inner, interceptor),
408            )
409        }
410        /// Compress requests with the given encoding.
411        ///
412        /// This requires the server to support it otherwise it might respond with an
413        /// error.
414        #[must_use]
415        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
416            self.inner = self.inner.send_compressed(encoding);
417            self
418        }
419        /// Enable decompressing responses.
420        #[must_use]
421        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
422            self.inner = self.inner.accept_compressed(encoding);
423            self
424        }
425        /// Limits the maximum size of a decoded message.
426        ///
427        /// Default: `4MB`
428        #[must_use]
429        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
430            self.inner = self.inner.max_decoding_message_size(limit);
431            self
432        }
433        /// Limits the maximum size of an encoded message.
434        ///
435        /// Default: `usize::MAX`
436        #[must_use]
437        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
438            self.inner = self.inner.max_encoding_message_size(limit);
439            self
440        }
441        pub async fn list_properties_and_labels(
442            &mut self,
443            request: impl tonic::IntoRequest<super::ListPropertiesAndLabelsRequest>,
444        ) -> std::result::Result<
445            tonic::Response<super::ListPropertiesAndLabelsResponse>,
446            tonic::Status,
447        > {
448            self.inner
449                .ready()
450                .await
451                .map_err(|e| {
452                    tonic::Status::unknown(
453                        format!("Service was not ready: {}", e.into()),
454                    )
455                })?;
456            let codec = tonic::codec::ProstCodec::default();
457            let path = http::uri::PathAndQuery::from_static(
458                "/nominal.metadata.v2.ResourceMetadataService/ListPropertiesAndLabels",
459            );
460            let mut req = request.into_request();
461            req.extensions_mut()
462                .insert(
463                    GrpcMethod::new(
464                        "nominal.metadata.v2.ResourceMetadataService",
465                        "ListPropertiesAndLabels",
466                    ),
467                );
468            self.inner.unary(req, path, codec).await
469        }
470        pub async fn get_metadata_usage_count(
471            &mut self,
472            request: impl tonic::IntoRequest<super::GetMetadataUsageCountRequest>,
473        ) -> std::result::Result<
474            tonic::Response<super::GetMetadataUsageCountResponse>,
475            tonic::Status,
476        > {
477            self.inner
478                .ready()
479                .await
480                .map_err(|e| {
481                    tonic::Status::unknown(
482                        format!("Service was not ready: {}", e.into()),
483                    )
484                })?;
485            let codec = tonic::codec::ProstCodec::default();
486            let path = http::uri::PathAndQuery::from_static(
487                "/nominal.metadata.v2.ResourceMetadataService/GetMetadataUsageCount",
488            );
489            let mut req = request.into_request();
490            req.extensions_mut()
491                .insert(
492                    GrpcMethod::new(
493                        "nominal.metadata.v2.ResourceMetadataService",
494                        "GetMetadataUsageCount",
495                    ),
496                );
497            self.inner.unary(req, path, codec).await
498        }
499        pub async fn find_similar_label_matches(
500            &mut self,
501            request: impl tonic::IntoRequest<super::FindSimilarLabelMatchesRequest>,
502        ) -> std::result::Result<
503            tonic::Response<super::FindSimilarLabelMatchesResponse>,
504            tonic::Status,
505        > {
506            self.inner
507                .ready()
508                .await
509                .map_err(|e| {
510                    tonic::Status::unknown(
511                        format!("Service was not ready: {}", e.into()),
512                    )
513                })?;
514            let codec = tonic::codec::ProstCodec::default();
515            let path = http::uri::PathAndQuery::from_static(
516                "/nominal.metadata.v2.ResourceMetadataService/FindSimilarLabelMatches",
517            );
518            let mut req = request.into_request();
519            req.extensions_mut()
520                .insert(
521                    GrpcMethod::new(
522                        "nominal.metadata.v2.ResourceMetadataService",
523                        "FindSimilarLabelMatches",
524                    ),
525                );
526            self.inner.unary(req, path, codec).await
527        }
528        pub async fn find_similar_property_key_matches(
529            &mut self,
530            request: impl tonic::IntoRequest<super::FindSimilarPropertyKeyMatchesRequest>,
531        ) -> std::result::Result<
532            tonic::Response<super::FindSimilarPropertyKeyMatchesResponse>,
533            tonic::Status,
534        > {
535            self.inner
536                .ready()
537                .await
538                .map_err(|e| {
539                    tonic::Status::unknown(
540                        format!("Service was not ready: {}", e.into()),
541                    )
542                })?;
543            let codec = tonic::codec::ProstCodec::default();
544            let path = http::uri::PathAndQuery::from_static(
545                "/nominal.metadata.v2.ResourceMetadataService/FindSimilarPropertyKeyMatches",
546            );
547            let mut req = request.into_request();
548            req.extensions_mut()
549                .insert(
550                    GrpcMethod::new(
551                        "nominal.metadata.v2.ResourceMetadataService",
552                        "FindSimilarPropertyKeyMatches",
553                    ),
554                );
555            self.inner.unary(req, path, codec).await
556        }
557        pub async fn search_labels(
558            &mut self,
559            request: impl tonic::IntoRequest<super::SearchLabelsRequest>,
560        ) -> std::result::Result<
561            tonic::Response<super::SearchLabelsResponse>,
562            tonic::Status,
563        > {
564            self.inner
565                .ready()
566                .await
567                .map_err(|e| {
568                    tonic::Status::unknown(
569                        format!("Service was not ready: {}", e.into()),
570                    )
571                })?;
572            let codec = tonic::codec::ProstCodec::default();
573            let path = http::uri::PathAndQuery::from_static(
574                "/nominal.metadata.v2.ResourceMetadataService/SearchLabels",
575            );
576            let mut req = request.into_request();
577            req.extensions_mut()
578                .insert(
579                    GrpcMethod::new(
580                        "nominal.metadata.v2.ResourceMetadataService",
581                        "SearchLabels",
582                    ),
583                );
584            self.inner.unary(req, path, codec).await
585        }
586        pub async fn search_property_keys(
587            &mut self,
588            request: impl tonic::IntoRequest<super::SearchPropertyKeysRequest>,
589        ) -> std::result::Result<
590            tonic::Response<super::SearchPropertyKeysResponse>,
591            tonic::Status,
592        > {
593            self.inner
594                .ready()
595                .await
596                .map_err(|e| {
597                    tonic::Status::unknown(
598                        format!("Service was not ready: {}", e.into()),
599                    )
600                })?;
601            let codec = tonic::codec::ProstCodec::default();
602            let path = http::uri::PathAndQuery::from_static(
603                "/nominal.metadata.v2.ResourceMetadataService/SearchPropertyKeys",
604            );
605            let mut req = request.into_request();
606            req.extensions_mut()
607                .insert(
608                    GrpcMethod::new(
609                        "nominal.metadata.v2.ResourceMetadataService",
610                        "SearchPropertyKeys",
611                    ),
612                );
613            self.inner.unary(req, path, codec).await
614        }
615        pub async fn search_property_values(
616            &mut self,
617            request: impl tonic::IntoRequest<super::SearchPropertyValuesRequest>,
618        ) -> std::result::Result<
619            tonic::Response<super::SearchPropertyValuesResponse>,
620            tonic::Status,
621        > {
622            self.inner
623                .ready()
624                .await
625                .map_err(|e| {
626                    tonic::Status::unknown(
627                        format!("Service was not ready: {}", e.into()),
628                    )
629                })?;
630            let codec = tonic::codec::ProstCodec::default();
631            let path = http::uri::PathAndQuery::from_static(
632                "/nominal.metadata.v2.ResourceMetadataService/SearchPropertyValues",
633            );
634            let mut req = request.into_request();
635            req.extensions_mut()
636                .insert(
637                    GrpcMethod::new(
638                        "nominal.metadata.v2.ResourceMetadataService",
639                        "SearchPropertyValues",
640                    ),
641                );
642            self.inner.unary(req, path, codec).await
643        }
644        pub async fn get_numeric_property_statistics(
645            &mut self,
646            request: impl tonic::IntoRequest<super::GetNumericPropertyStatisticsRequest>,
647        ) -> std::result::Result<
648            tonic::Response<super::GetNumericPropertyStatisticsResponse>,
649            tonic::Status,
650        > {
651            self.inner
652                .ready()
653                .await
654                .map_err(|e| {
655                    tonic::Status::unknown(
656                        format!("Service was not ready: {}", e.into()),
657                    )
658                })?;
659            let codec = tonic::codec::ProstCodec::default();
660            let path = http::uri::PathAndQuery::from_static(
661                "/nominal.metadata.v2.ResourceMetadataService/GetNumericPropertyStatistics",
662            );
663            let mut req = request.into_request();
664            req.extensions_mut()
665                .insert(
666                    GrpcMethod::new(
667                        "nominal.metadata.v2.ResourceMetadataService",
668                        "GetNumericPropertyStatistics",
669                    ),
670                );
671            self.inner.unary(req, path, codec).await
672        }
673    }
674}