Skip to main content

nominal_api_proto/proto/
nominal.nova.v1.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct ApiProxy {
4    #[prost(string, tag = "1")]
5    pub rid: ::prost::alloc::string::String,
6    #[prost(string, tag = "2")]
7    pub workspace_rid: ::prost::alloc::string::String,
8    #[prost(string, tag = "3")]
9    pub name: ::prost::alloc::string::String,
10    #[prost(string, tag = "4")]
11    pub base_url: ::prost::alloc::string::String,
12    #[prost(enumeration = "ApiProxyProtocol", tag = "5")]
13    pub protocol: i32,
14    #[prost(enumeration = "ApiProxyInteraction", tag = "6")]
15    pub interaction: i32,
16    #[prost(enumeration = "ApiProxyBodyFormat", tag = "7")]
17    pub body_format: i32,
18    #[prost(enumeration = "ApiProxyAuthKind", tag = "8")]
19    pub auth_kind: i32,
20    #[prost(string, tag = "9")]
21    pub created_by_user_rid: ::prost::alloc::string::String,
22    #[prost(message, optional, tag = "10")]
23    pub created_at: ::core::option::Option<
24        super::super::super::google::protobuf::Timestamp,
25    >,
26    #[prost(message, optional, tag = "11")]
27    pub updated_at: ::core::option::Option<
28        super::super::super::google::protobuf::Timestamp,
29    >,
30}
31#[derive(Clone, PartialEq, ::prost::Message)]
32pub struct CreateApiProxyRequest {
33    #[prost(string, tag = "1")]
34    pub workspace_rid: ::prost::alloc::string::String,
35    #[prost(string, tag = "2")]
36    pub name: ::prost::alloc::string::String,
37    #[prost(string, tag = "3")]
38    pub base_url: ::prost::alloc::string::String,
39    #[prost(enumeration = "ApiProxyProtocol", tag = "4")]
40    pub protocol: i32,
41    #[prost(enumeration = "ApiProxyInteraction", tag = "5")]
42    pub interaction: i32,
43    #[prost(enumeration = "ApiProxyBodyFormat", tag = "6")]
44    pub body_format: i32,
45    #[prost(enumeration = "ApiProxyAuthKind", tag = "7")]
46    pub auth_kind: i32,
47    #[prost(string, optional, tag = "8")]
48    pub auth_secret_rid: ::core::option::Option<::prost::alloc::string::String>,
49}
50#[derive(Clone, PartialEq, ::prost::Message)]
51pub struct CreateApiProxyResponse {
52    #[prost(message, optional, tag = "1")]
53    pub api_proxy: ::core::option::Option<ApiProxy>,
54}
55#[derive(Clone, PartialEq, ::prost::Message)]
56pub struct GetApiProxyRequest {
57    #[prost(string, tag = "1")]
58    pub api_proxy_rid: ::prost::alloc::string::String,
59}
60#[derive(Clone, PartialEq, ::prost::Message)]
61pub struct GetApiProxyResponse {
62    #[prost(message, optional, tag = "1")]
63    pub api_proxy: ::core::option::Option<ApiProxy>,
64}
65#[derive(Clone, PartialEq, ::prost::Message)]
66pub struct DeleteApiProxyRequest {
67    #[prost(string, tag = "1")]
68    pub api_proxy_rid: ::prost::alloc::string::String,
69}
70#[derive(Clone, Copy, PartialEq, ::prost::Message)]
71pub struct DeleteApiProxyResponse {}
72#[derive(Clone, PartialEq, ::prost::Message)]
73pub struct ListApiProxiesRequest {
74    #[prost(string, tag = "1")]
75    pub workspace_rid: ::prost::alloc::string::String,
76    #[prost(int32, optional, tag = "2")]
77    pub page_size: ::core::option::Option<i32>,
78    #[prost(string, optional, tag = "3")]
79    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
80}
81#[derive(Clone, PartialEq, ::prost::Message)]
82pub struct ListApiProxiesResponse {
83    #[prost(message, repeated, tag = "1")]
84    pub api_proxies: ::prost::alloc::vec::Vec<ApiProxy>,
85    #[prost(string, optional, tag = "2")]
86    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
87}
88#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
89#[repr(i32)]
90pub enum ApiProxyProtocol {
91    Unspecified = 0,
92    Http = 1,
93}
94impl ApiProxyProtocol {
95    /// String value of the enum field names used in the ProtoBuf definition.
96    ///
97    /// The values are not transformed in any way and thus are considered stable
98    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
99    pub fn as_str_name(&self) -> &'static str {
100        match self {
101            Self::Unspecified => "API_PROXY_PROTOCOL_UNSPECIFIED",
102            Self::Http => "API_PROXY_PROTOCOL_HTTP",
103        }
104    }
105    /// Creates an enum from field names used in the ProtoBuf definition.
106    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
107        match value {
108            "API_PROXY_PROTOCOL_UNSPECIFIED" => Some(Self::Unspecified),
109            "API_PROXY_PROTOCOL_HTTP" => Some(Self::Http),
110            _ => None,
111        }
112    }
113}
114#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
115#[repr(i32)]
116pub enum ApiProxyInteraction {
117    Unspecified = 0,
118    Unary = 1,
119}
120impl ApiProxyInteraction {
121    /// String value of the enum field names used in the ProtoBuf definition.
122    ///
123    /// The values are not transformed in any way and thus are considered stable
124    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
125    pub fn as_str_name(&self) -> &'static str {
126        match self {
127            Self::Unspecified => "API_PROXY_INTERACTION_UNSPECIFIED",
128            Self::Unary => "API_PROXY_INTERACTION_UNARY",
129        }
130    }
131    /// Creates an enum from field names used in the ProtoBuf definition.
132    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
133        match value {
134            "API_PROXY_INTERACTION_UNSPECIFIED" => Some(Self::Unspecified),
135            "API_PROXY_INTERACTION_UNARY" => Some(Self::Unary),
136            _ => None,
137        }
138    }
139}
140#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
141#[repr(i32)]
142pub enum ApiProxyBodyFormat {
143    Unspecified = 0,
144    Json = 1,
145}
146impl ApiProxyBodyFormat {
147    /// String value of the enum field names used in the ProtoBuf definition.
148    ///
149    /// The values are not transformed in any way and thus are considered stable
150    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
151    pub fn as_str_name(&self) -> &'static str {
152        match self {
153            Self::Unspecified => "API_PROXY_BODY_FORMAT_UNSPECIFIED",
154            Self::Json => "API_PROXY_BODY_FORMAT_JSON",
155        }
156    }
157    /// Creates an enum from field names used in the ProtoBuf definition.
158    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
159        match value {
160            "API_PROXY_BODY_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
161            "API_PROXY_BODY_FORMAT_JSON" => Some(Self::Json),
162            _ => None,
163        }
164    }
165}
166#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
167#[repr(i32)]
168pub enum ApiProxyAuthKind {
169    Unspecified = 0,
170    None = 1,
171    BearerToken = 2,
172}
173impl ApiProxyAuthKind {
174    /// String value of the enum field names used in the ProtoBuf definition.
175    ///
176    /// The values are not transformed in any way and thus are considered stable
177    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
178    pub fn as_str_name(&self) -> &'static str {
179        match self {
180            Self::Unspecified => "API_PROXY_AUTH_KIND_UNSPECIFIED",
181            Self::None => "API_PROXY_AUTH_KIND_NONE",
182            Self::BearerToken => "API_PROXY_AUTH_KIND_BEARER_TOKEN",
183        }
184    }
185    /// Creates an enum from field names used in the ProtoBuf definition.
186    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
187        match value {
188            "API_PROXY_AUTH_KIND_UNSPECIFIED" => Some(Self::Unspecified),
189            "API_PROXY_AUTH_KIND_NONE" => Some(Self::None),
190            "API_PROXY_AUTH_KIND_BEARER_TOKEN" => Some(Self::BearerToken),
191            _ => None,
192        }
193    }
194}
195/// Generated client implementations.
196pub mod api_proxy_service_client {
197    #![allow(
198        unused_variables,
199        dead_code,
200        missing_docs,
201        clippy::wildcard_imports,
202        clippy::let_unit_value,
203    )]
204    use tonic::codegen::*;
205    use tonic::codegen::http::Uri;
206    #[derive(Debug, Clone)]
207    pub struct ApiProxyServiceClient<T> {
208        inner: tonic::client::Grpc<T>,
209    }
210    impl ApiProxyServiceClient<tonic::transport::Channel> {
211        /// Attempt to create a new client by connecting to a given endpoint.
212        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
213        where
214            D: TryInto<tonic::transport::Endpoint>,
215            D::Error: Into<StdError>,
216        {
217            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
218            Ok(Self::new(conn))
219        }
220    }
221    impl<T> ApiProxyServiceClient<T>
222    where
223        T: tonic::client::GrpcService<tonic::body::Body>,
224        T::Error: Into<StdError>,
225        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
226        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
227    {
228        pub fn new(inner: T) -> Self {
229            let inner = tonic::client::Grpc::new(inner);
230            Self { inner }
231        }
232        pub fn with_origin(inner: T, origin: Uri) -> Self {
233            let inner = tonic::client::Grpc::with_origin(inner, origin);
234            Self { inner }
235        }
236        pub fn with_interceptor<F>(
237            inner: T,
238            interceptor: F,
239        ) -> ApiProxyServiceClient<InterceptedService<T, F>>
240        where
241            F: tonic::service::Interceptor,
242            T::ResponseBody: Default,
243            T: tonic::codegen::Service<
244                http::Request<tonic::body::Body>,
245                Response = http::Response<
246                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
247                >,
248            >,
249            <T as tonic::codegen::Service<
250                http::Request<tonic::body::Body>,
251            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
252        {
253            ApiProxyServiceClient::new(InterceptedService::new(inner, interceptor))
254        }
255        /// Compress requests with the given encoding.
256        ///
257        /// This requires the server to support it otherwise it might respond with an
258        /// error.
259        #[must_use]
260        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
261            self.inner = self.inner.send_compressed(encoding);
262            self
263        }
264        /// Enable decompressing responses.
265        #[must_use]
266        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
267            self.inner = self.inner.accept_compressed(encoding);
268            self
269        }
270        /// Limits the maximum size of a decoded message.
271        ///
272        /// Default: `4MB`
273        #[must_use]
274        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
275            self.inner = self.inner.max_decoding_message_size(limit);
276            self
277        }
278        /// Limits the maximum size of an encoded message.
279        ///
280        /// Default: `usize::MAX`
281        #[must_use]
282        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
283            self.inner = self.inner.max_encoding_message_size(limit);
284            self
285        }
286        pub async fn create_api_proxy(
287            &mut self,
288            request: impl tonic::IntoRequest<super::CreateApiProxyRequest>,
289        ) -> std::result::Result<
290            tonic::Response<super::CreateApiProxyResponse>,
291            tonic::Status,
292        > {
293            self.inner
294                .ready()
295                .await
296                .map_err(|e| {
297                    tonic::Status::unknown(
298                        format!("Service was not ready: {}", e.into()),
299                    )
300                })?;
301            let codec = tonic::codec::ProstCodec::default();
302            let path = http::uri::PathAndQuery::from_static(
303                "/nominal.nova.v1.ApiProxyService/CreateApiProxy",
304            );
305            let mut req = request.into_request();
306            req.extensions_mut()
307                .insert(
308                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "CreateApiProxy"),
309                );
310            self.inner.unary(req, path, codec).await
311        }
312        pub async fn get_api_proxy(
313            &mut self,
314            request: impl tonic::IntoRequest<super::GetApiProxyRequest>,
315        ) -> std::result::Result<
316            tonic::Response<super::GetApiProxyResponse>,
317            tonic::Status,
318        > {
319            self.inner
320                .ready()
321                .await
322                .map_err(|e| {
323                    tonic::Status::unknown(
324                        format!("Service was not ready: {}", e.into()),
325                    )
326                })?;
327            let codec = tonic::codec::ProstCodec::default();
328            let path = http::uri::PathAndQuery::from_static(
329                "/nominal.nova.v1.ApiProxyService/GetApiProxy",
330            );
331            let mut req = request.into_request();
332            req.extensions_mut()
333                .insert(
334                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "GetApiProxy"),
335                );
336            self.inner.unary(req, path, codec).await
337        }
338        pub async fn list_api_proxies(
339            &mut self,
340            request: impl tonic::IntoRequest<super::ListApiProxiesRequest>,
341        ) -> std::result::Result<
342            tonic::Response<super::ListApiProxiesResponse>,
343            tonic::Status,
344        > {
345            self.inner
346                .ready()
347                .await
348                .map_err(|e| {
349                    tonic::Status::unknown(
350                        format!("Service was not ready: {}", e.into()),
351                    )
352                })?;
353            let codec = tonic::codec::ProstCodec::default();
354            let path = http::uri::PathAndQuery::from_static(
355                "/nominal.nova.v1.ApiProxyService/ListApiProxies",
356            );
357            let mut req = request.into_request();
358            req.extensions_mut()
359                .insert(
360                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "ListApiProxies"),
361                );
362            self.inner.unary(req, path, codec).await
363        }
364        pub async fn delete_api_proxy(
365            &mut self,
366            request: impl tonic::IntoRequest<super::DeleteApiProxyRequest>,
367        ) -> std::result::Result<
368            tonic::Response<super::DeleteApiProxyResponse>,
369            tonic::Status,
370        > {
371            self.inner
372                .ready()
373                .await
374                .map_err(|e| {
375                    tonic::Status::unknown(
376                        format!("Service was not ready: {}", e.into()),
377                    )
378                })?;
379            let codec = tonic::codec::ProstCodec::default();
380            let path = http::uri::PathAndQuery::from_static(
381                "/nominal.nova.v1.ApiProxyService/DeleteApiProxy",
382            );
383            let mut req = request.into_request();
384            req.extensions_mut()
385                .insert(
386                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "DeleteApiProxy"),
387                );
388            self.inner.unary(req, path, codec).await
389        }
390    }
391}
392#[derive(Clone, PartialEq, ::prost::Message)]
393pub struct App {
394    #[prost(string, tag = "1")]
395    pub rid: ::prost::alloc::string::String,
396    #[prost(string, tag = "2")]
397    pub workspace_rid: ::prost::alloc::string::String,
398    #[prost(string, tag = "3")]
399    pub name: ::prost::alloc::string::String,
400    #[prost(string, tag = "4")]
401    pub title: ::prost::alloc::string::String,
402    #[prost(string, tag = "5")]
403    pub description: ::prost::alloc::string::String,
404    #[prost(string, repeated, tag = "6")]
405    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
406    #[prost(map = "string, string", tag = "7")]
407    pub properties: ::std::collections::HashMap<
408        ::prost::alloc::string::String,
409        ::prost::alloc::string::String,
410    >,
411    #[prost(string, tag = "8")]
412    pub created_by_user_rid: ::prost::alloc::string::String,
413    #[prost(message, optional, tag = "9")]
414    pub created_at: ::core::option::Option<
415        super::super::super::google::protobuf::Timestamp,
416    >,
417    #[prost(message, optional, tag = "10")]
418    pub updated_at: ::core::option::Option<
419        super::super::super::google::protobuf::Timestamp,
420    >,
421    #[prost(bool, optional, tag = "11")]
422    pub is_archived: ::core::option::Option<bool>,
423    #[prost(string, optional, tag = "12")]
424    pub embed_path: ::core::option::Option<::prost::alloc::string::String>,
425    #[prost(string, optional, tag = "13")]
426    pub archive_sha256: ::core::option::Option<::prost::alloc::string::String>,
427}
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct BundleSignature {
430    #[prost(string, tag = "1")]
431    pub key_id: ::prost::alloc::string::String,
432    #[prost(bytes = "vec", tag = "2")]
433    pub signature: ::prost::alloc::vec::Vec<u8>,
434}
435#[derive(Clone, PartialEq, ::prost::Message)]
436pub struct SignedAppBundle {
437    #[prost(string, tag = "1")]
438    pub upload_object_key: ::prost::alloc::string::String,
439    #[prost(message, optional, tag = "2")]
440    pub signature: ::core::option::Option<BundleSignature>,
441}
442#[derive(Clone, PartialEq, ::prost::Message)]
443pub struct CreateAppRequest {
444    #[prost(message, optional, tag = "1")]
445    pub app: ::core::option::Option<App>,
446    #[prost(message, optional, tag = "2")]
447    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
448}
449#[derive(Clone, PartialEq, ::prost::Message)]
450pub struct CreateAppResponse {
451    #[prost(message, optional, tag = "1")]
452    pub app: ::core::option::Option<App>,
453}
454#[derive(Clone, PartialEq, ::prost::Message)]
455pub struct GetAppRequest {
456    #[prost(string, tag = "1")]
457    pub app_rid: ::prost::alloc::string::String,
458}
459#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct GetAppResponse {
461    #[prost(message, optional, tag = "1")]
462    pub app: ::core::option::Option<App>,
463}
464#[derive(Clone, PartialEq, ::prost::Message)]
465pub struct UpdateAppRequest {
466    #[prost(string, tag = "1")]
467    pub app_rid: ::prost::alloc::string::String,
468    #[prost(message, optional, tag = "2")]
469    pub app: ::core::option::Option<App>,
470    #[prost(message, optional, tag = "3")]
471    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
472}
473#[derive(Clone, PartialEq, ::prost::Message)]
474pub struct UpdateAppResponse {
475    #[prost(message, optional, tag = "1")]
476    pub app: ::core::option::Option<App>,
477}
478#[derive(Clone, PartialEq, ::prost::Message)]
479pub struct DeleteAppRequest {
480    #[prost(string, tag = "1")]
481    pub app_rid: ::prost::alloc::string::String,
482}
483#[derive(Clone, Copy, PartialEq, ::prost::Message)]
484pub struct DeleteAppResponse {}
485#[derive(Clone, PartialEq, ::prost::Message)]
486pub struct AppSearchFilter {
487    #[prost(string, optional, tag = "1")]
488    pub name_contains: ::core::option::Option<::prost::alloc::string::String>,
489    #[prost(bool, optional, tag = "2")]
490    pub include_archived: ::core::option::Option<bool>,
491    #[prost(string, repeated, tag = "3")]
492    pub created_by_user_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
493    #[prost(string, repeated, tag = "4")]
494    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
495}
496#[derive(Clone, PartialEq, ::prost::Message)]
497pub struct SearchAppsRequest {
498    #[prost(string, tag = "1")]
499    pub workspace_rid: ::prost::alloc::string::String,
500    #[prost(message, optional, tag = "2")]
501    pub filter: ::core::option::Option<AppSearchFilter>,
502    #[prost(enumeration = "SearchAppsSortField", tag = "3")]
503    pub sort_field: i32,
504    #[prost(bool, tag = "4")]
505    pub descending: bool,
506    #[prost(int32, optional, tag = "5")]
507    pub page_size: ::core::option::Option<i32>,
508    #[prost(string, optional, tag = "6")]
509    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
510}
511#[derive(Clone, PartialEq, ::prost::Message)]
512pub struct SearchAppsResponse {
513    #[prost(message, repeated, tag = "1")]
514    pub apps: ::prost::alloc::vec::Vec<App>,
515    #[prost(string, optional, tag = "2")]
516    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
517}
518#[derive(Clone, PartialEq, ::prost::Message)]
519pub struct SearchAppLabelsRequest {
520    #[prost(string, tag = "1")]
521    pub workspace_rid: ::prost::alloc::string::String,
522    #[prost(int32, optional, tag = "2")]
523    pub page_size: ::core::option::Option<i32>,
524    #[prost(string, optional, tag = "3")]
525    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
526}
527#[derive(Clone, PartialEq, ::prost::Message)]
528pub struct SearchAppLabelsResponse {
529    #[prost(string, repeated, tag = "1")]
530    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
531    #[prost(string, optional, tag = "2")]
532    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
533}
534#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
535#[repr(i32)]
536pub enum NovaError {
537    AppNotFound = 0,
538    AppNameTaken = 1,
539    AppNameImmutable = 2,
540    ServerAssignedFieldSet = 3,
541    InvalidPageToken = 4,
542    InvalidBundle = 5,
543    BundleVerificationFailed = 6,
544    AppUpdateConflict = 7,
545    ApiProxyNotFound = 8,
546    ApiProxyNameTaken = 9,
547    ApiProxyInUse = 10,
548    AppProxyExists = 11,
549    AppArchived = 12,
550}
551impl NovaError {
552    /// String value of the enum field names used in the ProtoBuf definition.
553    ///
554    /// The values are not transformed in any way and thus are considered stable
555    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
556    pub fn as_str_name(&self) -> &'static str {
557        match self {
558            Self::AppNotFound => "NOVA_ERROR_APP_NOT_FOUND",
559            Self::AppNameTaken => "NOVA_ERROR_APP_NAME_TAKEN",
560            Self::AppNameImmutable => "NOVA_ERROR_APP_NAME_IMMUTABLE",
561            Self::ServerAssignedFieldSet => "NOVA_ERROR_SERVER_ASSIGNED_FIELD_SET",
562            Self::InvalidPageToken => "NOVA_ERROR_INVALID_PAGE_TOKEN",
563            Self::InvalidBundle => "NOVA_ERROR_INVALID_BUNDLE",
564            Self::BundleVerificationFailed => "NOVA_ERROR_BUNDLE_VERIFICATION_FAILED",
565            Self::AppUpdateConflict => "NOVA_ERROR_APP_UPDATE_CONFLICT",
566            Self::ApiProxyNotFound => "NOVA_ERROR_API_PROXY_NOT_FOUND",
567            Self::ApiProxyNameTaken => "NOVA_ERROR_API_PROXY_NAME_TAKEN",
568            Self::ApiProxyInUse => "NOVA_ERROR_API_PROXY_IN_USE",
569            Self::AppProxyExists => "NOVA_ERROR_APP_PROXY_EXISTS",
570            Self::AppArchived => "NOVA_ERROR_APP_ARCHIVED",
571        }
572    }
573    /// Creates an enum from field names used in the ProtoBuf definition.
574    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
575        match value {
576            "NOVA_ERROR_APP_NOT_FOUND" => Some(Self::AppNotFound),
577            "NOVA_ERROR_APP_NAME_TAKEN" => Some(Self::AppNameTaken),
578            "NOVA_ERROR_APP_NAME_IMMUTABLE" => Some(Self::AppNameImmutable),
579            "NOVA_ERROR_SERVER_ASSIGNED_FIELD_SET" => Some(Self::ServerAssignedFieldSet),
580            "NOVA_ERROR_INVALID_PAGE_TOKEN" => Some(Self::InvalidPageToken),
581            "NOVA_ERROR_INVALID_BUNDLE" => Some(Self::InvalidBundle),
582            "NOVA_ERROR_BUNDLE_VERIFICATION_FAILED" => {
583                Some(Self::BundleVerificationFailed)
584            }
585            "NOVA_ERROR_APP_UPDATE_CONFLICT" => Some(Self::AppUpdateConflict),
586            "NOVA_ERROR_API_PROXY_NOT_FOUND" => Some(Self::ApiProxyNotFound),
587            "NOVA_ERROR_API_PROXY_NAME_TAKEN" => Some(Self::ApiProxyNameTaken),
588            "NOVA_ERROR_API_PROXY_IN_USE" => Some(Self::ApiProxyInUse),
589            "NOVA_ERROR_APP_PROXY_EXISTS" => Some(Self::AppProxyExists),
590            "NOVA_ERROR_APP_ARCHIVED" => Some(Self::AppArchived),
591            _ => None,
592        }
593    }
594}
595#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
596#[repr(i32)]
597pub enum SearchAppsSortField {
598    Unspecified = 0,
599    Title = 1,
600    CreatedAt = 2,
601    UpdatedAt = 3,
602}
603impl SearchAppsSortField {
604    /// String value of the enum field names used in the ProtoBuf definition.
605    ///
606    /// The values are not transformed in any way and thus are considered stable
607    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
608    pub fn as_str_name(&self) -> &'static str {
609        match self {
610            Self::Unspecified => "SEARCH_APPS_SORT_FIELD_UNSPECIFIED",
611            Self::Title => "SEARCH_APPS_SORT_FIELD_TITLE",
612            Self::CreatedAt => "SEARCH_APPS_SORT_FIELD_CREATED_AT",
613            Self::UpdatedAt => "SEARCH_APPS_SORT_FIELD_UPDATED_AT",
614        }
615    }
616    /// Creates an enum from field names used in the ProtoBuf definition.
617    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
618        match value {
619            "SEARCH_APPS_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
620            "SEARCH_APPS_SORT_FIELD_TITLE" => Some(Self::Title),
621            "SEARCH_APPS_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
622            "SEARCH_APPS_SORT_FIELD_UPDATED_AT" => Some(Self::UpdatedAt),
623            _ => None,
624        }
625    }
626}
627/// Generated client implementations.
628pub mod nova_service_client {
629    #![allow(
630        unused_variables,
631        dead_code,
632        missing_docs,
633        clippy::wildcard_imports,
634        clippy::let_unit_value,
635    )]
636    use tonic::codegen::*;
637    use tonic::codegen::http::Uri;
638    #[derive(Debug, Clone)]
639    pub struct NovaServiceClient<T> {
640        inner: tonic::client::Grpc<T>,
641    }
642    impl NovaServiceClient<tonic::transport::Channel> {
643        /// Attempt to create a new client by connecting to a given endpoint.
644        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
645        where
646            D: TryInto<tonic::transport::Endpoint>,
647            D::Error: Into<StdError>,
648        {
649            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
650            Ok(Self::new(conn))
651        }
652    }
653    impl<T> NovaServiceClient<T>
654    where
655        T: tonic::client::GrpcService<tonic::body::Body>,
656        T::Error: Into<StdError>,
657        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
658        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
659    {
660        pub fn new(inner: T) -> Self {
661            let inner = tonic::client::Grpc::new(inner);
662            Self { inner }
663        }
664        pub fn with_origin(inner: T, origin: Uri) -> Self {
665            let inner = tonic::client::Grpc::with_origin(inner, origin);
666            Self { inner }
667        }
668        pub fn with_interceptor<F>(
669            inner: T,
670            interceptor: F,
671        ) -> NovaServiceClient<InterceptedService<T, F>>
672        where
673            F: tonic::service::Interceptor,
674            T::ResponseBody: Default,
675            T: tonic::codegen::Service<
676                http::Request<tonic::body::Body>,
677                Response = http::Response<
678                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
679                >,
680            >,
681            <T as tonic::codegen::Service<
682                http::Request<tonic::body::Body>,
683            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
684        {
685            NovaServiceClient::new(InterceptedService::new(inner, interceptor))
686        }
687        /// Compress requests with the given encoding.
688        ///
689        /// This requires the server to support it otherwise it might respond with an
690        /// error.
691        #[must_use]
692        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
693            self.inner = self.inner.send_compressed(encoding);
694            self
695        }
696        /// Enable decompressing responses.
697        #[must_use]
698        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
699            self.inner = self.inner.accept_compressed(encoding);
700            self
701        }
702        /// Limits the maximum size of a decoded message.
703        ///
704        /// Default: `4MB`
705        #[must_use]
706        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
707            self.inner = self.inner.max_decoding_message_size(limit);
708            self
709        }
710        /// Limits the maximum size of an encoded message.
711        ///
712        /// Default: `usize::MAX`
713        #[must_use]
714        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
715            self.inner = self.inner.max_encoding_message_size(limit);
716            self
717        }
718        pub async fn create_app(
719            &mut self,
720            request: impl tonic::IntoRequest<super::CreateAppRequest>,
721        ) -> std::result::Result<
722            tonic::Response<super::CreateAppResponse>,
723            tonic::Status,
724        > {
725            self.inner
726                .ready()
727                .await
728                .map_err(|e| {
729                    tonic::Status::unknown(
730                        format!("Service was not ready: {}", e.into()),
731                    )
732                })?;
733            let codec = tonic::codec::ProstCodec::default();
734            let path = http::uri::PathAndQuery::from_static(
735                "/nominal.nova.v1.NovaService/CreateApp",
736            );
737            let mut req = request.into_request();
738            req.extensions_mut()
739                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "CreateApp"));
740            self.inner.unary(req, path, codec).await
741        }
742        pub async fn get_app(
743            &mut self,
744            request: impl tonic::IntoRequest<super::GetAppRequest>,
745        ) -> std::result::Result<tonic::Response<super::GetAppResponse>, tonic::Status> {
746            self.inner
747                .ready()
748                .await
749                .map_err(|e| {
750                    tonic::Status::unknown(
751                        format!("Service was not ready: {}", e.into()),
752                    )
753                })?;
754            let codec = tonic::codec::ProstCodec::default();
755            let path = http::uri::PathAndQuery::from_static(
756                "/nominal.nova.v1.NovaService/GetApp",
757            );
758            let mut req = request.into_request();
759            req.extensions_mut()
760                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "GetApp"));
761            self.inner.unary(req, path, codec).await
762        }
763        pub async fn update_app(
764            &mut self,
765            request: impl tonic::IntoRequest<super::UpdateAppRequest>,
766        ) -> std::result::Result<
767            tonic::Response<super::UpdateAppResponse>,
768            tonic::Status,
769        > {
770            self.inner
771                .ready()
772                .await
773                .map_err(|e| {
774                    tonic::Status::unknown(
775                        format!("Service was not ready: {}", e.into()),
776                    )
777                })?;
778            let codec = tonic::codec::ProstCodec::default();
779            let path = http::uri::PathAndQuery::from_static(
780                "/nominal.nova.v1.NovaService/UpdateApp",
781            );
782            let mut req = request.into_request();
783            req.extensions_mut()
784                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "UpdateApp"));
785            self.inner.unary(req, path, codec).await
786        }
787        pub async fn delete_app(
788            &mut self,
789            request: impl tonic::IntoRequest<super::DeleteAppRequest>,
790        ) -> std::result::Result<
791            tonic::Response<super::DeleteAppResponse>,
792            tonic::Status,
793        > {
794            self.inner
795                .ready()
796                .await
797                .map_err(|e| {
798                    tonic::Status::unknown(
799                        format!("Service was not ready: {}", e.into()),
800                    )
801                })?;
802            let codec = tonic::codec::ProstCodec::default();
803            let path = http::uri::PathAndQuery::from_static(
804                "/nominal.nova.v1.NovaService/DeleteApp",
805            );
806            let mut req = request.into_request();
807            req.extensions_mut()
808                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "DeleteApp"));
809            self.inner.unary(req, path, codec).await
810        }
811        pub async fn search_apps(
812            &mut self,
813            request: impl tonic::IntoRequest<super::SearchAppsRequest>,
814        ) -> std::result::Result<
815            tonic::Response<super::SearchAppsResponse>,
816            tonic::Status,
817        > {
818            self.inner
819                .ready()
820                .await
821                .map_err(|e| {
822                    tonic::Status::unknown(
823                        format!("Service was not ready: {}", e.into()),
824                    )
825                })?;
826            let codec = tonic::codec::ProstCodec::default();
827            let path = http::uri::PathAndQuery::from_static(
828                "/nominal.nova.v1.NovaService/SearchApps",
829            );
830            let mut req = request.into_request();
831            req.extensions_mut()
832                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "SearchApps"));
833            self.inner.unary(req, path, codec).await
834        }
835        pub async fn search_app_labels(
836            &mut self,
837            request: impl tonic::IntoRequest<super::SearchAppLabelsRequest>,
838        ) -> std::result::Result<
839            tonic::Response<super::SearchAppLabelsResponse>,
840            tonic::Status,
841        > {
842            self.inner
843                .ready()
844                .await
845                .map_err(|e| {
846                    tonic::Status::unknown(
847                        format!("Service was not ready: {}", e.into()),
848                    )
849                })?;
850            let codec = tonic::codec::ProstCodec::default();
851            let path = http::uri::PathAndQuery::from_static(
852                "/nominal.nova.v1.NovaService/SearchAppLabels",
853            );
854            let mut req = request.into_request();
855            req.extensions_mut()
856                .insert(
857                    GrpcMethod::new("nominal.nova.v1.NovaService", "SearchAppLabels"),
858                );
859            self.inner.unary(req, path, codec).await
860        }
861    }
862}
863#[derive(Clone, PartialEq, ::prost::Message)]
864pub struct AppProxy {
865    #[prost(string, tag = "1")]
866    pub app_rid: ::prost::alloc::string::String,
867    #[prost(string, tag = "2")]
868    pub api_proxy_rid: ::prost::alloc::string::String,
869    #[prost(message, optional, tag = "3")]
870    pub created_at: ::core::option::Option<
871        super::super::super::google::protobuf::Timestamp,
872    >,
873}
874#[derive(Clone, PartialEq, ::prost::Message)]
875pub struct CreateAppProxyRequest {
876    #[prost(string, tag = "1")]
877    pub app_rid: ::prost::alloc::string::String,
878    #[prost(string, tag = "2")]
879    pub api_proxy_rid: ::prost::alloc::string::String,
880}
881#[derive(Clone, PartialEq, ::prost::Message)]
882pub struct CreateAppProxyResponse {
883    #[prost(message, optional, tag = "1")]
884    pub app_proxy: ::core::option::Option<AppProxy>,
885}
886#[derive(Clone, PartialEq, ::prost::Message)]
887pub struct DeleteAppProxyRequest {
888    #[prost(string, tag = "1")]
889    pub app_rid: ::prost::alloc::string::String,
890    #[prost(string, tag = "2")]
891    pub api_proxy_rid: ::prost::alloc::string::String,
892}
893#[derive(Clone, Copy, PartialEq, ::prost::Message)]
894pub struct DeleteAppProxyResponse {}
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct ListAppProxiesRequest {
897    #[prost(string, tag = "1")]
898    pub app_rid: ::prost::alloc::string::String,
899    #[prost(int32, optional, tag = "2")]
900    pub page_size: ::core::option::Option<i32>,
901    #[prost(string, optional, tag = "3")]
902    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
903}
904#[derive(Clone, PartialEq, ::prost::Message)]
905pub struct ListAppProxiesResponse {
906    #[prost(message, repeated, tag = "1")]
907    pub app_proxies: ::prost::alloc::vec::Vec<AppProxy>,
908    #[prost(string, optional, tag = "2")]
909    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
910}
911/// Generated client implementations.
912pub mod app_proxy_service_client {
913    #![allow(
914        unused_variables,
915        dead_code,
916        missing_docs,
917        clippy::wildcard_imports,
918        clippy::let_unit_value,
919    )]
920    use tonic::codegen::*;
921    use tonic::codegen::http::Uri;
922    #[derive(Debug, Clone)]
923    pub struct AppProxyServiceClient<T> {
924        inner: tonic::client::Grpc<T>,
925    }
926    impl AppProxyServiceClient<tonic::transport::Channel> {
927        /// Attempt to create a new client by connecting to a given endpoint.
928        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
929        where
930            D: TryInto<tonic::transport::Endpoint>,
931            D::Error: Into<StdError>,
932        {
933            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
934            Ok(Self::new(conn))
935        }
936    }
937    impl<T> AppProxyServiceClient<T>
938    where
939        T: tonic::client::GrpcService<tonic::body::Body>,
940        T::Error: Into<StdError>,
941        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
942        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
943    {
944        pub fn new(inner: T) -> Self {
945            let inner = tonic::client::Grpc::new(inner);
946            Self { inner }
947        }
948        pub fn with_origin(inner: T, origin: Uri) -> Self {
949            let inner = tonic::client::Grpc::with_origin(inner, origin);
950            Self { inner }
951        }
952        pub fn with_interceptor<F>(
953            inner: T,
954            interceptor: F,
955        ) -> AppProxyServiceClient<InterceptedService<T, F>>
956        where
957            F: tonic::service::Interceptor,
958            T::ResponseBody: Default,
959            T: tonic::codegen::Service<
960                http::Request<tonic::body::Body>,
961                Response = http::Response<
962                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
963                >,
964            >,
965            <T as tonic::codegen::Service<
966                http::Request<tonic::body::Body>,
967            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
968        {
969            AppProxyServiceClient::new(InterceptedService::new(inner, interceptor))
970        }
971        /// Compress requests with the given encoding.
972        ///
973        /// This requires the server to support it otherwise it might respond with an
974        /// error.
975        #[must_use]
976        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
977            self.inner = self.inner.send_compressed(encoding);
978            self
979        }
980        /// Enable decompressing responses.
981        #[must_use]
982        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
983            self.inner = self.inner.accept_compressed(encoding);
984            self
985        }
986        /// Limits the maximum size of a decoded message.
987        ///
988        /// Default: `4MB`
989        #[must_use]
990        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
991            self.inner = self.inner.max_decoding_message_size(limit);
992            self
993        }
994        /// Limits the maximum size of an encoded message.
995        ///
996        /// Default: `usize::MAX`
997        #[must_use]
998        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
999            self.inner = self.inner.max_encoding_message_size(limit);
1000            self
1001        }
1002        pub async fn create_app_proxy(
1003            &mut self,
1004            request: impl tonic::IntoRequest<super::CreateAppProxyRequest>,
1005        ) -> std::result::Result<
1006            tonic::Response<super::CreateAppProxyResponse>,
1007            tonic::Status,
1008        > {
1009            self.inner
1010                .ready()
1011                .await
1012                .map_err(|e| {
1013                    tonic::Status::unknown(
1014                        format!("Service was not ready: {}", e.into()),
1015                    )
1016                })?;
1017            let codec = tonic::codec::ProstCodec::default();
1018            let path = http::uri::PathAndQuery::from_static(
1019                "/nominal.nova.v1.AppProxyService/CreateAppProxy",
1020            );
1021            let mut req = request.into_request();
1022            req.extensions_mut()
1023                .insert(
1024                    GrpcMethod::new("nominal.nova.v1.AppProxyService", "CreateAppProxy"),
1025                );
1026            self.inner.unary(req, path, codec).await
1027        }
1028        pub async fn delete_app_proxy(
1029            &mut self,
1030            request: impl tonic::IntoRequest<super::DeleteAppProxyRequest>,
1031        ) -> std::result::Result<
1032            tonic::Response<super::DeleteAppProxyResponse>,
1033            tonic::Status,
1034        > {
1035            self.inner
1036                .ready()
1037                .await
1038                .map_err(|e| {
1039                    tonic::Status::unknown(
1040                        format!("Service was not ready: {}", e.into()),
1041                    )
1042                })?;
1043            let codec = tonic::codec::ProstCodec::default();
1044            let path = http::uri::PathAndQuery::from_static(
1045                "/nominal.nova.v1.AppProxyService/DeleteAppProxy",
1046            );
1047            let mut req = request.into_request();
1048            req.extensions_mut()
1049                .insert(
1050                    GrpcMethod::new("nominal.nova.v1.AppProxyService", "DeleteAppProxy"),
1051                );
1052            self.inner.unary(req, path, codec).await
1053        }
1054        pub async fn list_app_proxies(
1055            &mut self,
1056            request: impl tonic::IntoRequest<super::ListAppProxiesRequest>,
1057        ) -> std::result::Result<
1058            tonic::Response<super::ListAppProxiesResponse>,
1059            tonic::Status,
1060        > {
1061            self.inner
1062                .ready()
1063                .await
1064                .map_err(|e| {
1065                    tonic::Status::unknown(
1066                        format!("Service was not ready: {}", e.into()),
1067                    )
1068                })?;
1069            let codec = tonic::codec::ProstCodec::default();
1070            let path = http::uri::PathAndQuery::from_static(
1071                "/nominal.nova.v1.AppProxyService/ListAppProxies",
1072            );
1073            let mut req = request.into_request();
1074            req.extensions_mut()
1075                .insert(
1076                    GrpcMethod::new("nominal.nova.v1.AppProxyService", "ListAppProxies"),
1077                );
1078            self.inner.unary(req, path, codec).await
1079        }
1080    }
1081}
1082#[derive(Clone, PartialEq, ::prost::Message)]
1083pub struct KeyValueEntry {
1084    #[prost(string, tag = "1")]
1085    pub app_rid: ::prost::alloc::string::String,
1086    #[prost(string, tag = "2")]
1087    pub key: ::prost::alloc::string::String,
1088    #[prost(message, optional, tag = "3")]
1089    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1090    #[prost(message, optional, tag = "4")]
1091    pub created_at: ::core::option::Option<
1092        super::super::super::google::protobuf::Timestamp,
1093    >,
1094    #[prost(message, optional, tag = "5")]
1095    pub updated_at: ::core::option::Option<
1096        super::super::super::google::protobuf::Timestamp,
1097    >,
1098    #[prost(int64, tag = "6")]
1099    pub version: i64,
1100}
1101#[derive(Clone, PartialEq, ::prost::Message)]
1102pub struct CreateKeyValueEntryRequest {
1103    #[prost(string, tag = "1")]
1104    pub app_rid: ::prost::alloc::string::String,
1105    #[prost(string, tag = "2")]
1106    pub key: ::prost::alloc::string::String,
1107    #[prost(message, optional, tag = "3")]
1108    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1109}
1110#[derive(Clone, PartialEq, ::prost::Message)]
1111pub struct CreateKeyValueEntryResponse {
1112    #[prost(message, optional, tag = "1")]
1113    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1114}
1115#[derive(Clone, PartialEq, ::prost::Message)]
1116pub struct UpdateKeyValueEntryRequest {
1117    #[prost(string, tag = "1")]
1118    pub app_rid: ::prost::alloc::string::String,
1119    #[prost(string, tag = "2")]
1120    pub key: ::prost::alloc::string::String,
1121    #[prost(message, optional, tag = "3")]
1122    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1123    #[prost(int64, optional, tag = "4")]
1124    pub expected_version: ::core::option::Option<i64>,
1125}
1126#[derive(Clone, PartialEq, ::prost::Message)]
1127pub struct UpdateKeyValueEntryResponse {
1128    #[prost(message, optional, tag = "1")]
1129    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1130}
1131#[derive(Clone, PartialEq, ::prost::Message)]
1132pub struct GetKeyValueEntryRequest {
1133    #[prost(string, tag = "1")]
1134    pub app_rid: ::prost::alloc::string::String,
1135    #[prost(string, tag = "2")]
1136    pub key: ::prost::alloc::string::String,
1137}
1138#[derive(Clone, PartialEq, ::prost::Message)]
1139pub struct GetKeyValueEntryResponse {
1140    #[prost(message, optional, tag = "1")]
1141    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1142}
1143#[derive(Clone, PartialEq, ::prost::Message)]
1144pub struct DeleteKeyValueEntryRequest {
1145    #[prost(string, tag = "1")]
1146    pub app_rid: ::prost::alloc::string::String,
1147    #[prost(string, tag = "2")]
1148    pub key: ::prost::alloc::string::String,
1149}
1150#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1151pub struct DeleteKeyValueEntryResponse {}
1152#[derive(Clone, PartialEq, ::prost::Message)]
1153pub struct BatchGetKeyValueEntriesRequest {
1154    #[prost(string, tag = "1")]
1155    pub app_rid: ::prost::alloc::string::String,
1156    #[prost(string, repeated, tag = "2")]
1157    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1158}
1159#[derive(Clone, PartialEq, ::prost::Message)]
1160pub struct BatchGetKeyValueEntriesResponse {
1161    #[prost(message, repeated, tag = "1")]
1162    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1163}
1164#[derive(Clone, PartialEq, ::prost::Message)]
1165pub struct BatchCreateKeyValueEntriesRequest {
1166    #[prost(string, tag = "1")]
1167    pub app_rid: ::prost::alloc::string::String,
1168    #[prost(message, repeated, tag = "2")]
1169    pub writes: ::prost::alloc::vec::Vec<KeyValueEntryWrite>,
1170}
1171#[derive(Clone, PartialEq, ::prost::Message)]
1172pub struct BatchCreateKeyValueEntriesResponse {
1173    #[prost(message, repeated, tag = "1")]
1174    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1175}
1176#[derive(Clone, PartialEq, ::prost::Message)]
1177pub struct KeyValueEntryWrite {
1178    #[prost(string, tag = "1")]
1179    pub key: ::prost::alloc::string::String,
1180    #[prost(message, optional, tag = "2")]
1181    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1182    #[prost(int64, optional, tag = "3")]
1183    pub expected_version: ::core::option::Option<i64>,
1184}
1185#[derive(Clone, PartialEq, ::prost::Message)]
1186pub struct BatchUpdateKeyValueEntriesRequest {
1187    #[prost(string, tag = "1")]
1188    pub app_rid: ::prost::alloc::string::String,
1189    #[prost(message, repeated, tag = "2")]
1190    pub writes: ::prost::alloc::vec::Vec<KeyValueEntryWrite>,
1191}
1192#[derive(Clone, PartialEq, ::prost::Message)]
1193pub struct BatchUpdateKeyValueEntriesResponse {
1194    #[prost(message, repeated, tag = "1")]
1195    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1196}
1197#[derive(Clone, PartialEq, ::prost::Message)]
1198pub struct BatchDeleteKeyValueEntriesRequest {
1199    #[prost(string, tag = "1")]
1200    pub app_rid: ::prost::alloc::string::String,
1201    #[prost(string, repeated, tag = "2")]
1202    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1203}
1204#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1205pub struct BatchDeleteKeyValueEntriesResponse {}
1206#[derive(Clone, PartialEq, ::prost::Message)]
1207pub struct SearchKeyValueEntriesRequest {
1208    #[prost(string, tag = "1")]
1209    pub app_rid: ::prost::alloc::string::String,
1210    #[prost(string, optional, tag = "2")]
1211    pub key_prefix: ::core::option::Option<::prost::alloc::string::String>,
1212    #[prost(int32, optional, tag = "3")]
1213    pub page_size: ::core::option::Option<i32>,
1214    #[prost(string, optional, tag = "4")]
1215    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1216}
1217#[derive(Clone, PartialEq, ::prost::Message)]
1218pub struct SearchKeyValueEntriesResponse {
1219    #[prost(message, repeated, tag = "1")]
1220    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1221    #[prost(string, optional, tag = "2")]
1222    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1223}
1224#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1225#[repr(i32)]
1226pub enum NovaKeyValueError {
1227    VersionConflict = 0,
1228    QuotaExceeded = 1,
1229    RateLimited = 2,
1230    AppArchived = 3,
1231    ValueTooLarge = 4,
1232    EntryAlreadyExists = 6,
1233    EntryNotFound = 5,
1234}
1235impl NovaKeyValueError {
1236    /// String value of the enum field names used in the ProtoBuf definition.
1237    ///
1238    /// The values are not transformed in any way and thus are considered stable
1239    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1240    pub fn as_str_name(&self) -> &'static str {
1241        match self {
1242            Self::VersionConflict => "NOVA_KEY_VALUE_ERROR_VERSION_CONFLICT",
1243            Self::QuotaExceeded => "NOVA_KEY_VALUE_ERROR_QUOTA_EXCEEDED",
1244            Self::RateLimited => "NOVA_KEY_VALUE_ERROR_RATE_LIMITED",
1245            Self::AppArchived => "NOVA_KEY_VALUE_ERROR_APP_ARCHIVED",
1246            Self::ValueTooLarge => "NOVA_KEY_VALUE_ERROR_VALUE_TOO_LARGE",
1247            Self::EntryAlreadyExists => "NOVA_KEY_VALUE_ERROR_ENTRY_ALREADY_EXISTS",
1248            Self::EntryNotFound => "NOVA_KEY_VALUE_ERROR_ENTRY_NOT_FOUND",
1249        }
1250    }
1251    /// Creates an enum from field names used in the ProtoBuf definition.
1252    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1253        match value {
1254            "NOVA_KEY_VALUE_ERROR_VERSION_CONFLICT" => Some(Self::VersionConflict),
1255            "NOVA_KEY_VALUE_ERROR_QUOTA_EXCEEDED" => Some(Self::QuotaExceeded),
1256            "NOVA_KEY_VALUE_ERROR_RATE_LIMITED" => Some(Self::RateLimited),
1257            "NOVA_KEY_VALUE_ERROR_APP_ARCHIVED" => Some(Self::AppArchived),
1258            "NOVA_KEY_VALUE_ERROR_VALUE_TOO_LARGE" => Some(Self::ValueTooLarge),
1259            "NOVA_KEY_VALUE_ERROR_ENTRY_ALREADY_EXISTS" => Some(Self::EntryAlreadyExists),
1260            "NOVA_KEY_VALUE_ERROR_ENTRY_NOT_FOUND" => Some(Self::EntryNotFound),
1261            _ => None,
1262        }
1263    }
1264}
1265/// Generated client implementations.
1266pub mod nova_key_value_service_client {
1267    #![allow(
1268        unused_variables,
1269        dead_code,
1270        missing_docs,
1271        clippy::wildcard_imports,
1272        clippy::let_unit_value,
1273    )]
1274    use tonic::codegen::*;
1275    use tonic::codegen::http::Uri;
1276    #[derive(Debug, Clone)]
1277    pub struct NovaKeyValueServiceClient<T> {
1278        inner: tonic::client::Grpc<T>,
1279    }
1280    impl NovaKeyValueServiceClient<tonic::transport::Channel> {
1281        /// Attempt to create a new client by connecting to a given endpoint.
1282        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1283        where
1284            D: TryInto<tonic::transport::Endpoint>,
1285            D::Error: Into<StdError>,
1286        {
1287            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1288            Ok(Self::new(conn))
1289        }
1290    }
1291    impl<T> NovaKeyValueServiceClient<T>
1292    where
1293        T: tonic::client::GrpcService<tonic::body::Body>,
1294        T::Error: Into<StdError>,
1295        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1296        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1297    {
1298        pub fn new(inner: T) -> Self {
1299            let inner = tonic::client::Grpc::new(inner);
1300            Self { inner }
1301        }
1302        pub fn with_origin(inner: T, origin: Uri) -> Self {
1303            let inner = tonic::client::Grpc::with_origin(inner, origin);
1304            Self { inner }
1305        }
1306        pub fn with_interceptor<F>(
1307            inner: T,
1308            interceptor: F,
1309        ) -> NovaKeyValueServiceClient<InterceptedService<T, F>>
1310        where
1311            F: tonic::service::Interceptor,
1312            T::ResponseBody: Default,
1313            T: tonic::codegen::Service<
1314                http::Request<tonic::body::Body>,
1315                Response = http::Response<
1316                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1317                >,
1318            >,
1319            <T as tonic::codegen::Service<
1320                http::Request<tonic::body::Body>,
1321            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1322        {
1323            NovaKeyValueServiceClient::new(InterceptedService::new(inner, interceptor))
1324        }
1325        /// Compress requests with the given encoding.
1326        ///
1327        /// This requires the server to support it otherwise it might respond with an
1328        /// error.
1329        #[must_use]
1330        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1331            self.inner = self.inner.send_compressed(encoding);
1332            self
1333        }
1334        /// Enable decompressing responses.
1335        #[must_use]
1336        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1337            self.inner = self.inner.accept_compressed(encoding);
1338            self
1339        }
1340        /// Limits the maximum size of a decoded message.
1341        ///
1342        /// Default: `4MB`
1343        #[must_use]
1344        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1345            self.inner = self.inner.max_decoding_message_size(limit);
1346            self
1347        }
1348        /// Limits the maximum size of an encoded message.
1349        ///
1350        /// Default: `usize::MAX`
1351        #[must_use]
1352        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1353            self.inner = self.inner.max_encoding_message_size(limit);
1354            self
1355        }
1356        pub async fn create_key_value_entry(
1357            &mut self,
1358            request: impl tonic::IntoRequest<super::CreateKeyValueEntryRequest>,
1359        ) -> std::result::Result<
1360            tonic::Response<super::CreateKeyValueEntryResponse>,
1361            tonic::Status,
1362        > {
1363            self.inner
1364                .ready()
1365                .await
1366                .map_err(|e| {
1367                    tonic::Status::unknown(
1368                        format!("Service was not ready: {}", e.into()),
1369                    )
1370                })?;
1371            let codec = tonic::codec::ProstCodec::default();
1372            let path = http::uri::PathAndQuery::from_static(
1373                "/nominal.nova.v1.NovaKeyValueService/CreateKeyValueEntry",
1374            );
1375            let mut req = request.into_request();
1376            req.extensions_mut()
1377                .insert(
1378                    GrpcMethod::new(
1379                        "nominal.nova.v1.NovaKeyValueService",
1380                        "CreateKeyValueEntry",
1381                    ),
1382                );
1383            self.inner.unary(req, path, codec).await
1384        }
1385        pub async fn update_key_value_entry(
1386            &mut self,
1387            request: impl tonic::IntoRequest<super::UpdateKeyValueEntryRequest>,
1388        ) -> std::result::Result<
1389            tonic::Response<super::UpdateKeyValueEntryResponse>,
1390            tonic::Status,
1391        > {
1392            self.inner
1393                .ready()
1394                .await
1395                .map_err(|e| {
1396                    tonic::Status::unknown(
1397                        format!("Service was not ready: {}", e.into()),
1398                    )
1399                })?;
1400            let codec = tonic::codec::ProstCodec::default();
1401            let path = http::uri::PathAndQuery::from_static(
1402                "/nominal.nova.v1.NovaKeyValueService/UpdateKeyValueEntry",
1403            );
1404            let mut req = request.into_request();
1405            req.extensions_mut()
1406                .insert(
1407                    GrpcMethod::new(
1408                        "nominal.nova.v1.NovaKeyValueService",
1409                        "UpdateKeyValueEntry",
1410                    ),
1411                );
1412            self.inner.unary(req, path, codec).await
1413        }
1414        pub async fn get_key_value_entry(
1415            &mut self,
1416            request: impl tonic::IntoRequest<super::GetKeyValueEntryRequest>,
1417        ) -> std::result::Result<
1418            tonic::Response<super::GetKeyValueEntryResponse>,
1419            tonic::Status,
1420        > {
1421            self.inner
1422                .ready()
1423                .await
1424                .map_err(|e| {
1425                    tonic::Status::unknown(
1426                        format!("Service was not ready: {}", e.into()),
1427                    )
1428                })?;
1429            let codec = tonic::codec::ProstCodec::default();
1430            let path = http::uri::PathAndQuery::from_static(
1431                "/nominal.nova.v1.NovaKeyValueService/GetKeyValueEntry",
1432            );
1433            let mut req = request.into_request();
1434            req.extensions_mut()
1435                .insert(
1436                    GrpcMethod::new(
1437                        "nominal.nova.v1.NovaKeyValueService",
1438                        "GetKeyValueEntry",
1439                    ),
1440                );
1441            self.inner.unary(req, path, codec).await
1442        }
1443        pub async fn delete_key_value_entry(
1444            &mut self,
1445            request: impl tonic::IntoRequest<super::DeleteKeyValueEntryRequest>,
1446        ) -> std::result::Result<
1447            tonic::Response<super::DeleteKeyValueEntryResponse>,
1448            tonic::Status,
1449        > {
1450            self.inner
1451                .ready()
1452                .await
1453                .map_err(|e| {
1454                    tonic::Status::unknown(
1455                        format!("Service was not ready: {}", e.into()),
1456                    )
1457                })?;
1458            let codec = tonic::codec::ProstCodec::default();
1459            let path = http::uri::PathAndQuery::from_static(
1460                "/nominal.nova.v1.NovaKeyValueService/DeleteKeyValueEntry",
1461            );
1462            let mut req = request.into_request();
1463            req.extensions_mut()
1464                .insert(
1465                    GrpcMethod::new(
1466                        "nominal.nova.v1.NovaKeyValueService",
1467                        "DeleteKeyValueEntry",
1468                    ),
1469                );
1470            self.inner.unary(req, path, codec).await
1471        }
1472        pub async fn batch_get_key_value_entries(
1473            &mut self,
1474            request: impl tonic::IntoRequest<super::BatchGetKeyValueEntriesRequest>,
1475        ) -> std::result::Result<
1476            tonic::Response<super::BatchGetKeyValueEntriesResponse>,
1477            tonic::Status,
1478        > {
1479            self.inner
1480                .ready()
1481                .await
1482                .map_err(|e| {
1483                    tonic::Status::unknown(
1484                        format!("Service was not ready: {}", e.into()),
1485                    )
1486                })?;
1487            let codec = tonic::codec::ProstCodec::default();
1488            let path = http::uri::PathAndQuery::from_static(
1489                "/nominal.nova.v1.NovaKeyValueService/BatchGetKeyValueEntries",
1490            );
1491            let mut req = request.into_request();
1492            req.extensions_mut()
1493                .insert(
1494                    GrpcMethod::new(
1495                        "nominal.nova.v1.NovaKeyValueService",
1496                        "BatchGetKeyValueEntries",
1497                    ),
1498                );
1499            self.inner.unary(req, path, codec).await
1500        }
1501        pub async fn batch_create_key_value_entries(
1502            &mut self,
1503            request: impl tonic::IntoRequest<super::BatchCreateKeyValueEntriesRequest>,
1504        ) -> std::result::Result<
1505            tonic::Response<super::BatchCreateKeyValueEntriesResponse>,
1506            tonic::Status,
1507        > {
1508            self.inner
1509                .ready()
1510                .await
1511                .map_err(|e| {
1512                    tonic::Status::unknown(
1513                        format!("Service was not ready: {}", e.into()),
1514                    )
1515                })?;
1516            let codec = tonic::codec::ProstCodec::default();
1517            let path = http::uri::PathAndQuery::from_static(
1518                "/nominal.nova.v1.NovaKeyValueService/BatchCreateKeyValueEntries",
1519            );
1520            let mut req = request.into_request();
1521            req.extensions_mut()
1522                .insert(
1523                    GrpcMethod::new(
1524                        "nominal.nova.v1.NovaKeyValueService",
1525                        "BatchCreateKeyValueEntries",
1526                    ),
1527                );
1528            self.inner.unary(req, path, codec).await
1529        }
1530        pub async fn batch_update_key_value_entries(
1531            &mut self,
1532            request: impl tonic::IntoRequest<super::BatchUpdateKeyValueEntriesRequest>,
1533        ) -> std::result::Result<
1534            tonic::Response<super::BatchUpdateKeyValueEntriesResponse>,
1535            tonic::Status,
1536        > {
1537            self.inner
1538                .ready()
1539                .await
1540                .map_err(|e| {
1541                    tonic::Status::unknown(
1542                        format!("Service was not ready: {}", e.into()),
1543                    )
1544                })?;
1545            let codec = tonic::codec::ProstCodec::default();
1546            let path = http::uri::PathAndQuery::from_static(
1547                "/nominal.nova.v1.NovaKeyValueService/BatchUpdateKeyValueEntries",
1548            );
1549            let mut req = request.into_request();
1550            req.extensions_mut()
1551                .insert(
1552                    GrpcMethod::new(
1553                        "nominal.nova.v1.NovaKeyValueService",
1554                        "BatchUpdateKeyValueEntries",
1555                    ),
1556                );
1557            self.inner.unary(req, path, codec).await
1558        }
1559        pub async fn batch_delete_key_value_entries(
1560            &mut self,
1561            request: impl tonic::IntoRequest<super::BatchDeleteKeyValueEntriesRequest>,
1562        ) -> std::result::Result<
1563            tonic::Response<super::BatchDeleteKeyValueEntriesResponse>,
1564            tonic::Status,
1565        > {
1566            self.inner
1567                .ready()
1568                .await
1569                .map_err(|e| {
1570                    tonic::Status::unknown(
1571                        format!("Service was not ready: {}", e.into()),
1572                    )
1573                })?;
1574            let codec = tonic::codec::ProstCodec::default();
1575            let path = http::uri::PathAndQuery::from_static(
1576                "/nominal.nova.v1.NovaKeyValueService/BatchDeleteKeyValueEntries",
1577            );
1578            let mut req = request.into_request();
1579            req.extensions_mut()
1580                .insert(
1581                    GrpcMethod::new(
1582                        "nominal.nova.v1.NovaKeyValueService",
1583                        "BatchDeleteKeyValueEntries",
1584                    ),
1585                );
1586            self.inner.unary(req, path, codec).await
1587        }
1588        pub async fn search_key_value_entries(
1589            &mut self,
1590            request: impl tonic::IntoRequest<super::SearchKeyValueEntriesRequest>,
1591        ) -> std::result::Result<
1592            tonic::Response<super::SearchKeyValueEntriesResponse>,
1593            tonic::Status,
1594        > {
1595            self.inner
1596                .ready()
1597                .await
1598                .map_err(|e| {
1599                    tonic::Status::unknown(
1600                        format!("Service was not ready: {}", e.into()),
1601                    )
1602                })?;
1603            let codec = tonic::codec::ProstCodec::default();
1604            let path = http::uri::PathAndQuery::from_static(
1605                "/nominal.nova.v1.NovaKeyValueService/SearchKeyValueEntries",
1606            );
1607            let mut req = request.into_request();
1608            req.extensions_mut()
1609                .insert(
1610                    GrpcMethod::new(
1611                        "nominal.nova.v1.NovaKeyValueService",
1612                        "SearchKeyValueEntries",
1613                    ),
1614                );
1615            self.inner.unary(req, path, codec).await
1616        }
1617    }
1618}
1619#[derive(Clone, PartialEq, ::prost::Message)]
1620pub struct ProxyHeader {
1621    #[prost(string, tag = "1")]
1622    pub name: ::prost::alloc::string::String,
1623    #[prost(string, tag = "2")]
1624    pub value: ::prost::alloc::string::String,
1625}
1626#[derive(Clone, PartialEq, ::prost::Message)]
1627pub struct CallApiProxyRequest {
1628    #[prost(string, tag = "1")]
1629    pub app_rid: ::prost::alloc::string::String,
1630    #[prost(string, tag = "2")]
1631    pub api_proxy_rid: ::prost::alloc::string::String,
1632    #[prost(enumeration = "ProxyHttpMethod", tag = "3")]
1633    pub method: i32,
1634    #[prost(string, tag = "4")]
1635    pub path: ::prost::alloc::string::String,
1636    #[prost(string, tag = "5")]
1637    pub query: ::prost::alloc::string::String,
1638    #[prost(message, repeated, tag = "6")]
1639    pub headers: ::prost::alloc::vec::Vec<ProxyHeader>,
1640    #[prost(bytes = "vec", tag = "7")]
1641    pub body: ::prost::alloc::vec::Vec<u8>,
1642}
1643#[derive(Clone, PartialEq, ::prost::Message)]
1644pub struct CallApiProxyResponse {
1645    #[prost(int32, tag = "1")]
1646    pub status_code: i32,
1647    #[prost(message, repeated, tag = "2")]
1648    pub headers: ::prost::alloc::vec::Vec<ProxyHeader>,
1649    #[prost(bytes = "vec", tag = "3")]
1650    pub body: ::prost::alloc::vec::Vec<u8>,
1651}
1652#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1653#[repr(i32)]
1654pub enum ProxyHttpMethod {
1655    Unspecified = 0,
1656    Get = 1,
1657    Head = 2,
1658    Post = 3,
1659    Put = 4,
1660    Patch = 5,
1661    Delete = 6,
1662}
1663impl ProxyHttpMethod {
1664    /// String value of the enum field names used in the ProtoBuf definition.
1665    ///
1666    /// The values are not transformed in any way and thus are considered stable
1667    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1668    pub fn as_str_name(&self) -> &'static str {
1669        match self {
1670            Self::Unspecified => "PROXY_HTTP_METHOD_UNSPECIFIED",
1671            Self::Get => "PROXY_HTTP_METHOD_GET",
1672            Self::Head => "PROXY_HTTP_METHOD_HEAD",
1673            Self::Post => "PROXY_HTTP_METHOD_POST",
1674            Self::Put => "PROXY_HTTP_METHOD_PUT",
1675            Self::Patch => "PROXY_HTTP_METHOD_PATCH",
1676            Self::Delete => "PROXY_HTTP_METHOD_DELETE",
1677        }
1678    }
1679    /// Creates an enum from field names used in the ProtoBuf definition.
1680    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1681        match value {
1682            "PROXY_HTTP_METHOD_UNSPECIFIED" => Some(Self::Unspecified),
1683            "PROXY_HTTP_METHOD_GET" => Some(Self::Get),
1684            "PROXY_HTTP_METHOD_HEAD" => Some(Self::Head),
1685            "PROXY_HTTP_METHOD_POST" => Some(Self::Post),
1686            "PROXY_HTTP_METHOD_PUT" => Some(Self::Put),
1687            "PROXY_HTTP_METHOD_PATCH" => Some(Self::Patch),
1688            "PROXY_HTTP_METHOD_DELETE" => Some(Self::Delete),
1689            _ => None,
1690        }
1691    }
1692}
1693/// Generated client implementations.
1694pub mod nova_proxy_service_client {
1695    #![allow(
1696        unused_variables,
1697        dead_code,
1698        missing_docs,
1699        clippy::wildcard_imports,
1700        clippy::let_unit_value,
1701    )]
1702    use tonic::codegen::*;
1703    use tonic::codegen::http::Uri;
1704    #[derive(Debug, Clone)]
1705    pub struct NovaProxyServiceClient<T> {
1706        inner: tonic::client::Grpc<T>,
1707    }
1708    impl NovaProxyServiceClient<tonic::transport::Channel> {
1709        /// Attempt to create a new client by connecting to a given endpoint.
1710        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1711        where
1712            D: TryInto<tonic::transport::Endpoint>,
1713            D::Error: Into<StdError>,
1714        {
1715            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1716            Ok(Self::new(conn))
1717        }
1718    }
1719    impl<T> NovaProxyServiceClient<T>
1720    where
1721        T: tonic::client::GrpcService<tonic::body::Body>,
1722        T::Error: Into<StdError>,
1723        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1724        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1725    {
1726        pub fn new(inner: T) -> Self {
1727            let inner = tonic::client::Grpc::new(inner);
1728            Self { inner }
1729        }
1730        pub fn with_origin(inner: T, origin: Uri) -> Self {
1731            let inner = tonic::client::Grpc::with_origin(inner, origin);
1732            Self { inner }
1733        }
1734        pub fn with_interceptor<F>(
1735            inner: T,
1736            interceptor: F,
1737        ) -> NovaProxyServiceClient<InterceptedService<T, F>>
1738        where
1739            F: tonic::service::Interceptor,
1740            T::ResponseBody: Default,
1741            T: tonic::codegen::Service<
1742                http::Request<tonic::body::Body>,
1743                Response = http::Response<
1744                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1745                >,
1746            >,
1747            <T as tonic::codegen::Service<
1748                http::Request<tonic::body::Body>,
1749            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1750        {
1751            NovaProxyServiceClient::new(InterceptedService::new(inner, interceptor))
1752        }
1753        /// Compress requests with the given encoding.
1754        ///
1755        /// This requires the server to support it otherwise it might respond with an
1756        /// error.
1757        #[must_use]
1758        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1759            self.inner = self.inner.send_compressed(encoding);
1760            self
1761        }
1762        /// Enable decompressing responses.
1763        #[must_use]
1764        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1765            self.inner = self.inner.accept_compressed(encoding);
1766            self
1767        }
1768        /// Limits the maximum size of a decoded message.
1769        ///
1770        /// Default: `4MB`
1771        #[must_use]
1772        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1773            self.inner = self.inner.max_decoding_message_size(limit);
1774            self
1775        }
1776        /// Limits the maximum size of an encoded message.
1777        ///
1778        /// Default: `usize::MAX`
1779        #[must_use]
1780        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1781            self.inner = self.inner.max_encoding_message_size(limit);
1782            self
1783        }
1784        pub async fn call_api_proxy(
1785            &mut self,
1786            request: impl tonic::IntoRequest<super::CallApiProxyRequest>,
1787        ) -> std::result::Result<
1788            tonic::Response<super::CallApiProxyResponse>,
1789            tonic::Status,
1790        > {
1791            self.inner
1792                .ready()
1793                .await
1794                .map_err(|e| {
1795                    tonic::Status::unknown(
1796                        format!("Service was not ready: {}", e.into()),
1797                    )
1798                })?;
1799            let codec = tonic::codec::ProstCodec::default();
1800            let path = http::uri::PathAndQuery::from_static(
1801                "/nominal.nova.v1.NovaProxyService/CallApiProxy",
1802            );
1803            let mut req = request.into_request();
1804            req.extensions_mut()
1805                .insert(
1806                    GrpcMethod::new("nominal.nova.v1.NovaProxyService", "CallApiProxy"),
1807                );
1808            self.inner.unary(req, path, codec).await
1809        }
1810    }
1811}