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    Basic = 3,
173}
174impl ApiProxyAuthKind {
175    /// String value of the enum field names used in the ProtoBuf definition.
176    ///
177    /// The values are not transformed in any way and thus are considered stable
178    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
179    pub fn as_str_name(&self) -> &'static str {
180        match self {
181            Self::Unspecified => "API_PROXY_AUTH_KIND_UNSPECIFIED",
182            Self::None => "API_PROXY_AUTH_KIND_NONE",
183            Self::BearerToken => "API_PROXY_AUTH_KIND_BEARER_TOKEN",
184            Self::Basic => "API_PROXY_AUTH_KIND_BASIC",
185        }
186    }
187    /// Creates an enum from field names used in the ProtoBuf definition.
188    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
189        match value {
190            "API_PROXY_AUTH_KIND_UNSPECIFIED" => Some(Self::Unspecified),
191            "API_PROXY_AUTH_KIND_NONE" => Some(Self::None),
192            "API_PROXY_AUTH_KIND_BEARER_TOKEN" => Some(Self::BearerToken),
193            "API_PROXY_AUTH_KIND_BASIC" => Some(Self::Basic),
194            _ => None,
195        }
196    }
197}
198/// Generated client implementations.
199pub mod api_proxy_service_client {
200    #![allow(
201        unused_variables,
202        dead_code,
203        missing_docs,
204        clippy::wildcard_imports,
205        clippy::let_unit_value,
206    )]
207    use tonic::codegen::*;
208    use tonic::codegen::http::Uri;
209    #[derive(Debug, Clone)]
210    pub struct ApiProxyServiceClient<T> {
211        inner: tonic::client::Grpc<T>,
212    }
213    impl ApiProxyServiceClient<tonic::transport::Channel> {
214        /// Attempt to create a new client by connecting to a given endpoint.
215        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
216        where
217            D: TryInto<tonic::transport::Endpoint>,
218            D::Error: Into<StdError>,
219        {
220            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
221            Ok(Self::new(conn))
222        }
223    }
224    impl<T> ApiProxyServiceClient<T>
225    where
226        T: tonic::client::GrpcService<tonic::body::Body>,
227        T::Error: Into<StdError>,
228        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
229        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
230    {
231        pub fn new(inner: T) -> Self {
232            let inner = tonic::client::Grpc::new(inner);
233            Self { inner }
234        }
235        pub fn with_origin(inner: T, origin: Uri) -> Self {
236            let inner = tonic::client::Grpc::with_origin(inner, origin);
237            Self { inner }
238        }
239        pub fn with_interceptor<F>(
240            inner: T,
241            interceptor: F,
242        ) -> ApiProxyServiceClient<InterceptedService<T, F>>
243        where
244            F: tonic::service::Interceptor,
245            T::ResponseBody: Default,
246            T: tonic::codegen::Service<
247                http::Request<tonic::body::Body>,
248                Response = http::Response<
249                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
250                >,
251            >,
252            <T as tonic::codegen::Service<
253                http::Request<tonic::body::Body>,
254            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
255        {
256            ApiProxyServiceClient::new(InterceptedService::new(inner, interceptor))
257        }
258        /// Compress requests with the given encoding.
259        ///
260        /// This requires the server to support it otherwise it might respond with an
261        /// error.
262        #[must_use]
263        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
264            self.inner = self.inner.send_compressed(encoding);
265            self
266        }
267        /// Enable decompressing responses.
268        #[must_use]
269        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
270            self.inner = self.inner.accept_compressed(encoding);
271            self
272        }
273        /// Limits the maximum size of a decoded message.
274        ///
275        /// Default: `4MB`
276        #[must_use]
277        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
278            self.inner = self.inner.max_decoding_message_size(limit);
279            self
280        }
281        /// Limits the maximum size of an encoded message.
282        ///
283        /// Default: `usize::MAX`
284        #[must_use]
285        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
286            self.inner = self.inner.max_encoding_message_size(limit);
287            self
288        }
289        pub async fn create_api_proxy(
290            &mut self,
291            request: impl tonic::IntoRequest<super::CreateApiProxyRequest>,
292        ) -> std::result::Result<
293            tonic::Response<super::CreateApiProxyResponse>,
294            tonic::Status,
295        > {
296            self.inner
297                .ready()
298                .await
299                .map_err(|e| {
300                    tonic::Status::unknown(
301                        format!("Service was not ready: {}", e.into()),
302                    )
303                })?;
304            let codec = tonic::codec::ProstCodec::default();
305            let path = http::uri::PathAndQuery::from_static(
306                "/nominal.nova.v1.ApiProxyService/CreateApiProxy",
307            );
308            let mut req = request.into_request();
309            req.extensions_mut()
310                .insert(
311                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "CreateApiProxy"),
312                );
313            self.inner.unary(req, path, codec).await
314        }
315        pub async fn get_api_proxy(
316            &mut self,
317            request: impl tonic::IntoRequest<super::GetApiProxyRequest>,
318        ) -> std::result::Result<
319            tonic::Response<super::GetApiProxyResponse>,
320            tonic::Status,
321        > {
322            self.inner
323                .ready()
324                .await
325                .map_err(|e| {
326                    tonic::Status::unknown(
327                        format!("Service was not ready: {}", e.into()),
328                    )
329                })?;
330            let codec = tonic::codec::ProstCodec::default();
331            let path = http::uri::PathAndQuery::from_static(
332                "/nominal.nova.v1.ApiProxyService/GetApiProxy",
333            );
334            let mut req = request.into_request();
335            req.extensions_mut()
336                .insert(
337                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "GetApiProxy"),
338                );
339            self.inner.unary(req, path, codec).await
340        }
341        pub async fn list_api_proxies(
342            &mut self,
343            request: impl tonic::IntoRequest<super::ListApiProxiesRequest>,
344        ) -> std::result::Result<
345            tonic::Response<super::ListApiProxiesResponse>,
346            tonic::Status,
347        > {
348            self.inner
349                .ready()
350                .await
351                .map_err(|e| {
352                    tonic::Status::unknown(
353                        format!("Service was not ready: {}", e.into()),
354                    )
355                })?;
356            let codec = tonic::codec::ProstCodec::default();
357            let path = http::uri::PathAndQuery::from_static(
358                "/nominal.nova.v1.ApiProxyService/ListApiProxies",
359            );
360            let mut req = request.into_request();
361            req.extensions_mut()
362                .insert(
363                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "ListApiProxies"),
364                );
365            self.inner.unary(req, path, codec).await
366        }
367        pub async fn delete_api_proxy(
368            &mut self,
369            request: impl tonic::IntoRequest<super::DeleteApiProxyRequest>,
370        ) -> std::result::Result<
371            tonic::Response<super::DeleteApiProxyResponse>,
372            tonic::Status,
373        > {
374            self.inner
375                .ready()
376                .await
377                .map_err(|e| {
378                    tonic::Status::unknown(
379                        format!("Service was not ready: {}", e.into()),
380                    )
381                })?;
382            let codec = tonic::codec::ProstCodec::default();
383            let path = http::uri::PathAndQuery::from_static(
384                "/nominal.nova.v1.ApiProxyService/DeleteApiProxy",
385            );
386            let mut req = request.into_request();
387            req.extensions_mut()
388                .insert(
389                    GrpcMethod::new("nominal.nova.v1.ApiProxyService", "DeleteApiProxy"),
390                );
391            self.inner.unary(req, path, codec).await
392        }
393    }
394}
395#[derive(Clone, PartialEq, ::prost::Message)]
396pub struct App {
397    #[prost(string, tag = "1")]
398    pub rid: ::prost::alloc::string::String,
399    #[prost(string, tag = "2")]
400    pub workspace_rid: ::prost::alloc::string::String,
401    #[prost(string, tag = "3")]
402    pub name: ::prost::alloc::string::String,
403    #[prost(string, tag = "4")]
404    pub title: ::prost::alloc::string::String,
405    #[prost(string, tag = "5")]
406    pub description: ::prost::alloc::string::String,
407    #[prost(string, repeated, tag = "6")]
408    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
409    #[prost(map = "string, string", tag = "7")]
410    pub properties: ::std::collections::HashMap<
411        ::prost::alloc::string::String,
412        ::prost::alloc::string::String,
413    >,
414    #[prost(string, tag = "8")]
415    pub created_by_user_rid: ::prost::alloc::string::String,
416    #[prost(message, optional, tag = "9")]
417    pub created_at: ::core::option::Option<
418        super::super::super::google::protobuf::Timestamp,
419    >,
420    #[prost(message, optional, tag = "10")]
421    pub updated_at: ::core::option::Option<
422        super::super::super::google::protobuf::Timestamp,
423    >,
424    #[prost(bool, optional, tag = "11")]
425    pub is_archived: ::core::option::Option<bool>,
426    #[deprecated]
427    #[prost(string, optional, tag = "12")]
428    pub embed_path: ::core::option::Option<::prost::alloc::string::String>,
429    #[deprecated]
430    #[prost(string, optional, tag = "13")]
431    pub archive_sha256: ::core::option::Option<::prost::alloc::string::String>,
432    #[prost(string, optional, tag = "14")]
433    pub default_version_rid: ::core::option::Option<::prost::alloc::string::String>,
434}
435#[derive(Clone, PartialEq, ::prost::Message)]
436pub struct BundleSignature {
437    #[prost(string, tag = "1")]
438    pub key_id: ::prost::alloc::string::String,
439    #[prost(bytes = "vec", tag = "2")]
440    pub signature: ::prost::alloc::vec::Vec<u8>,
441}
442#[derive(Clone, PartialEq, ::prost::Message)]
443pub struct SignedAppBundle {
444    #[prost(string, tag = "1")]
445    pub upload_object_key: ::prost::alloc::string::String,
446    #[prost(message, optional, tag = "2")]
447    pub signature: ::core::option::Option<BundleSignature>,
448}
449#[derive(Clone, PartialEq, ::prost::Message)]
450pub struct CreateAppRequest {
451    #[prost(message, optional, tag = "1")]
452    pub app: ::core::option::Option<App>,
453    #[deprecated]
454    #[prost(message, optional, tag = "2")]
455    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
456}
457#[derive(Clone, PartialEq, ::prost::Message)]
458pub struct CreateAppResponse {
459    #[prost(message, optional, tag = "1")]
460    pub app: ::core::option::Option<App>,
461}
462#[derive(Clone, PartialEq, ::prost::Message)]
463pub struct GetAppRequest {
464    #[prost(string, tag = "1")]
465    pub app_rid: ::prost::alloc::string::String,
466}
467#[derive(Clone, PartialEq, ::prost::Message)]
468pub struct GetAppResponse {
469    #[prost(message, optional, tag = "1")]
470    pub app: ::core::option::Option<App>,
471}
472#[derive(Clone, PartialEq, ::prost::Message)]
473pub struct UpdateAppRequest {
474    #[prost(string, tag = "1")]
475    pub app_rid: ::prost::alloc::string::String,
476    #[prost(message, optional, tag = "2")]
477    pub app: ::core::option::Option<App>,
478    #[deprecated]
479    #[prost(message, optional, tag = "3")]
480    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
481    #[prost(message, optional, tag = "4")]
482    pub update_mask: ::core::option::Option<
483        super::super::super::google::protobuf::FieldMask,
484    >,
485}
486#[derive(Clone, PartialEq, ::prost::Message)]
487pub struct UpdateAppResponse {
488    #[prost(message, optional, tag = "1")]
489    pub app: ::core::option::Option<App>,
490}
491#[derive(Clone, PartialEq, ::prost::Message)]
492pub struct DeleteAppRequest {
493    #[prost(string, tag = "1")]
494    pub app_rid: ::prost::alloc::string::String,
495}
496#[derive(Clone, Copy, PartialEq, ::prost::Message)]
497pub struct DeleteAppResponse {}
498#[derive(Clone, PartialEq, ::prost::Message)]
499pub struct AppSearchFilter {
500    #[prost(string, optional, tag = "1")]
501    pub name_contains: ::core::option::Option<::prost::alloc::string::String>,
502    #[prost(bool, optional, tag = "2")]
503    pub include_archived: ::core::option::Option<bool>,
504    #[prost(string, repeated, tag = "3")]
505    pub created_by_user_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
506    #[prost(string, repeated, tag = "4")]
507    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
508}
509#[derive(Clone, PartialEq, ::prost::Message)]
510pub struct SearchAppsRequest {
511    #[prost(string, tag = "1")]
512    pub workspace_rid: ::prost::alloc::string::String,
513    #[prost(message, optional, tag = "2")]
514    pub filter: ::core::option::Option<AppSearchFilter>,
515    #[prost(enumeration = "SearchAppsSortField", tag = "3")]
516    pub sort_field: i32,
517    #[prost(bool, tag = "4")]
518    pub descending: bool,
519    #[prost(int32, optional, tag = "5")]
520    pub page_size: ::core::option::Option<i32>,
521    #[prost(string, optional, tag = "6")]
522    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
523}
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct SearchAppsResponse {
526    #[prost(message, repeated, tag = "1")]
527    pub apps: ::prost::alloc::vec::Vec<App>,
528    #[prost(string, optional, tag = "2")]
529    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
530}
531#[derive(Clone, PartialEq, ::prost::Message)]
532pub struct SearchAppLabelsRequest {
533    #[prost(string, tag = "1")]
534    pub workspace_rid: ::prost::alloc::string::String,
535    #[prost(int32, optional, tag = "2")]
536    pub page_size: ::core::option::Option<i32>,
537    #[prost(string, optional, tag = "3")]
538    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
539}
540#[derive(Clone, PartialEq, ::prost::Message)]
541pub struct SearchAppLabelsResponse {
542    #[prost(string, repeated, tag = "1")]
543    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
544    #[prost(string, optional, tag = "2")]
545    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
546}
547#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
548#[repr(i32)]
549pub enum NovaError {
550    AppNotFound = 0,
551    AppNameTaken = 1,
552    AppNameImmutable = 2,
553    ServerAssignedFieldSet = 3,
554    InvalidPageToken = 4,
555    InvalidBundle = 5,
556    BundleVerificationFailed = 6,
557    AppUpdateConflict = 7,
558    ApiProxyNotFound = 8,
559    ApiProxyNameTaken = 9,
560    ApiProxyInUse = 10,
561    AppProxyExists = 11,
562    AppArchived = 12,
563    AppVersionNotFound = 13,
564    AppVersionTagTaken = 14,
565    AppVersionImmutable = 15,
566    AppVersionNotReleased = 16,
567    AppVersionNotActive = 17,
568    AppVersionArchived = 18,
569    AppVersionIsDefault = 19,
570    AppVersionNotArchived = 20,
571}
572impl NovaError {
573    /// String value of the enum field names used in the ProtoBuf definition.
574    ///
575    /// The values are not transformed in any way and thus are considered stable
576    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
577    pub fn as_str_name(&self) -> &'static str {
578        match self {
579            Self::AppNotFound => "NOVA_ERROR_APP_NOT_FOUND",
580            Self::AppNameTaken => "NOVA_ERROR_APP_NAME_TAKEN",
581            Self::AppNameImmutable => "NOVA_ERROR_APP_NAME_IMMUTABLE",
582            Self::ServerAssignedFieldSet => "NOVA_ERROR_SERVER_ASSIGNED_FIELD_SET",
583            Self::InvalidPageToken => "NOVA_ERROR_INVALID_PAGE_TOKEN",
584            Self::InvalidBundle => "NOVA_ERROR_INVALID_BUNDLE",
585            Self::BundleVerificationFailed => "NOVA_ERROR_BUNDLE_VERIFICATION_FAILED",
586            Self::AppUpdateConflict => "NOVA_ERROR_APP_UPDATE_CONFLICT",
587            Self::ApiProxyNotFound => "NOVA_ERROR_API_PROXY_NOT_FOUND",
588            Self::ApiProxyNameTaken => "NOVA_ERROR_API_PROXY_NAME_TAKEN",
589            Self::ApiProxyInUse => "NOVA_ERROR_API_PROXY_IN_USE",
590            Self::AppProxyExists => "NOVA_ERROR_APP_PROXY_EXISTS",
591            Self::AppArchived => "NOVA_ERROR_APP_ARCHIVED",
592            Self::AppVersionNotFound => "NOVA_ERROR_APP_VERSION_NOT_FOUND",
593            Self::AppVersionTagTaken => "NOVA_ERROR_APP_VERSION_TAG_TAKEN",
594            Self::AppVersionImmutable => "NOVA_ERROR_APP_VERSION_IMMUTABLE",
595            Self::AppVersionNotReleased => "NOVA_ERROR_APP_VERSION_NOT_RELEASED",
596            Self::AppVersionNotActive => "NOVA_ERROR_APP_VERSION_NOT_ACTIVE",
597            Self::AppVersionArchived => "NOVA_ERROR_APP_VERSION_ARCHIVED",
598            Self::AppVersionIsDefault => "NOVA_ERROR_APP_VERSION_IS_DEFAULT",
599            Self::AppVersionNotArchived => "NOVA_ERROR_APP_VERSION_NOT_ARCHIVED",
600        }
601    }
602    /// Creates an enum from field names used in the ProtoBuf definition.
603    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
604        match value {
605            "NOVA_ERROR_APP_NOT_FOUND" => Some(Self::AppNotFound),
606            "NOVA_ERROR_APP_NAME_TAKEN" => Some(Self::AppNameTaken),
607            "NOVA_ERROR_APP_NAME_IMMUTABLE" => Some(Self::AppNameImmutable),
608            "NOVA_ERROR_SERVER_ASSIGNED_FIELD_SET" => Some(Self::ServerAssignedFieldSet),
609            "NOVA_ERROR_INVALID_PAGE_TOKEN" => Some(Self::InvalidPageToken),
610            "NOVA_ERROR_INVALID_BUNDLE" => Some(Self::InvalidBundle),
611            "NOVA_ERROR_BUNDLE_VERIFICATION_FAILED" => {
612                Some(Self::BundleVerificationFailed)
613            }
614            "NOVA_ERROR_APP_UPDATE_CONFLICT" => Some(Self::AppUpdateConflict),
615            "NOVA_ERROR_API_PROXY_NOT_FOUND" => Some(Self::ApiProxyNotFound),
616            "NOVA_ERROR_API_PROXY_NAME_TAKEN" => Some(Self::ApiProxyNameTaken),
617            "NOVA_ERROR_API_PROXY_IN_USE" => Some(Self::ApiProxyInUse),
618            "NOVA_ERROR_APP_PROXY_EXISTS" => Some(Self::AppProxyExists),
619            "NOVA_ERROR_APP_ARCHIVED" => Some(Self::AppArchived),
620            "NOVA_ERROR_APP_VERSION_NOT_FOUND" => Some(Self::AppVersionNotFound),
621            "NOVA_ERROR_APP_VERSION_TAG_TAKEN" => Some(Self::AppVersionTagTaken),
622            "NOVA_ERROR_APP_VERSION_IMMUTABLE" => Some(Self::AppVersionImmutable),
623            "NOVA_ERROR_APP_VERSION_NOT_RELEASED" => Some(Self::AppVersionNotReleased),
624            "NOVA_ERROR_APP_VERSION_NOT_ACTIVE" => Some(Self::AppVersionNotActive),
625            "NOVA_ERROR_APP_VERSION_ARCHIVED" => Some(Self::AppVersionArchived),
626            "NOVA_ERROR_APP_VERSION_IS_DEFAULT" => Some(Self::AppVersionIsDefault),
627            "NOVA_ERROR_APP_VERSION_NOT_ARCHIVED" => Some(Self::AppVersionNotArchived),
628            _ => None,
629        }
630    }
631}
632#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
633#[repr(i32)]
634pub enum SearchAppsSortField {
635    Unspecified = 0,
636    Title = 1,
637    CreatedAt = 2,
638    UpdatedAt = 3,
639}
640impl SearchAppsSortField {
641    /// String value of the enum field names used in the ProtoBuf definition.
642    ///
643    /// The values are not transformed in any way and thus are considered stable
644    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
645    pub fn as_str_name(&self) -> &'static str {
646        match self {
647            Self::Unspecified => "SEARCH_APPS_SORT_FIELD_UNSPECIFIED",
648            Self::Title => "SEARCH_APPS_SORT_FIELD_TITLE",
649            Self::CreatedAt => "SEARCH_APPS_SORT_FIELD_CREATED_AT",
650            Self::UpdatedAt => "SEARCH_APPS_SORT_FIELD_UPDATED_AT",
651        }
652    }
653    /// Creates an enum from field names used in the ProtoBuf definition.
654    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
655        match value {
656            "SEARCH_APPS_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
657            "SEARCH_APPS_SORT_FIELD_TITLE" => Some(Self::Title),
658            "SEARCH_APPS_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
659            "SEARCH_APPS_SORT_FIELD_UPDATED_AT" => Some(Self::UpdatedAt),
660            _ => None,
661        }
662    }
663}
664/// Generated client implementations.
665pub mod nova_service_client {
666    #![allow(
667        unused_variables,
668        dead_code,
669        missing_docs,
670        clippy::wildcard_imports,
671        clippy::let_unit_value,
672    )]
673    use tonic::codegen::*;
674    use tonic::codegen::http::Uri;
675    #[derive(Debug, Clone)]
676    pub struct NovaServiceClient<T> {
677        inner: tonic::client::Grpc<T>,
678    }
679    impl NovaServiceClient<tonic::transport::Channel> {
680        /// Attempt to create a new client by connecting to a given endpoint.
681        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
682        where
683            D: TryInto<tonic::transport::Endpoint>,
684            D::Error: Into<StdError>,
685        {
686            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
687            Ok(Self::new(conn))
688        }
689    }
690    impl<T> NovaServiceClient<T>
691    where
692        T: tonic::client::GrpcService<tonic::body::Body>,
693        T::Error: Into<StdError>,
694        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
695        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
696    {
697        pub fn new(inner: T) -> Self {
698            let inner = tonic::client::Grpc::new(inner);
699            Self { inner }
700        }
701        pub fn with_origin(inner: T, origin: Uri) -> Self {
702            let inner = tonic::client::Grpc::with_origin(inner, origin);
703            Self { inner }
704        }
705        pub fn with_interceptor<F>(
706            inner: T,
707            interceptor: F,
708        ) -> NovaServiceClient<InterceptedService<T, F>>
709        where
710            F: tonic::service::Interceptor,
711            T::ResponseBody: Default,
712            T: tonic::codegen::Service<
713                http::Request<tonic::body::Body>,
714                Response = http::Response<
715                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
716                >,
717            >,
718            <T as tonic::codegen::Service<
719                http::Request<tonic::body::Body>,
720            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
721        {
722            NovaServiceClient::new(InterceptedService::new(inner, interceptor))
723        }
724        /// Compress requests with the given encoding.
725        ///
726        /// This requires the server to support it otherwise it might respond with an
727        /// error.
728        #[must_use]
729        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
730            self.inner = self.inner.send_compressed(encoding);
731            self
732        }
733        /// Enable decompressing responses.
734        #[must_use]
735        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
736            self.inner = self.inner.accept_compressed(encoding);
737            self
738        }
739        /// Limits the maximum size of a decoded message.
740        ///
741        /// Default: `4MB`
742        #[must_use]
743        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
744            self.inner = self.inner.max_decoding_message_size(limit);
745            self
746        }
747        /// Limits the maximum size of an encoded message.
748        ///
749        /// Default: `usize::MAX`
750        #[must_use]
751        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
752            self.inner = self.inner.max_encoding_message_size(limit);
753            self
754        }
755        pub async fn create_app(
756            &mut self,
757            request: impl tonic::IntoRequest<super::CreateAppRequest>,
758        ) -> std::result::Result<
759            tonic::Response<super::CreateAppResponse>,
760            tonic::Status,
761        > {
762            self.inner
763                .ready()
764                .await
765                .map_err(|e| {
766                    tonic::Status::unknown(
767                        format!("Service was not ready: {}", e.into()),
768                    )
769                })?;
770            let codec = tonic::codec::ProstCodec::default();
771            let path = http::uri::PathAndQuery::from_static(
772                "/nominal.nova.v1.NovaService/CreateApp",
773            );
774            let mut req = request.into_request();
775            req.extensions_mut()
776                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "CreateApp"));
777            self.inner.unary(req, path, codec).await
778        }
779        pub async fn get_app(
780            &mut self,
781            request: impl tonic::IntoRequest<super::GetAppRequest>,
782        ) -> std::result::Result<tonic::Response<super::GetAppResponse>, tonic::Status> {
783            self.inner
784                .ready()
785                .await
786                .map_err(|e| {
787                    tonic::Status::unknown(
788                        format!("Service was not ready: {}", e.into()),
789                    )
790                })?;
791            let codec = tonic::codec::ProstCodec::default();
792            let path = http::uri::PathAndQuery::from_static(
793                "/nominal.nova.v1.NovaService/GetApp",
794            );
795            let mut req = request.into_request();
796            req.extensions_mut()
797                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "GetApp"));
798            self.inner.unary(req, path, codec).await
799        }
800        pub async fn update_app(
801            &mut self,
802            request: impl tonic::IntoRequest<super::UpdateAppRequest>,
803        ) -> std::result::Result<
804            tonic::Response<super::UpdateAppResponse>,
805            tonic::Status,
806        > {
807            self.inner
808                .ready()
809                .await
810                .map_err(|e| {
811                    tonic::Status::unknown(
812                        format!("Service was not ready: {}", e.into()),
813                    )
814                })?;
815            let codec = tonic::codec::ProstCodec::default();
816            let path = http::uri::PathAndQuery::from_static(
817                "/nominal.nova.v1.NovaService/UpdateApp",
818            );
819            let mut req = request.into_request();
820            req.extensions_mut()
821                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "UpdateApp"));
822            self.inner.unary(req, path, codec).await
823        }
824        pub async fn delete_app(
825            &mut self,
826            request: impl tonic::IntoRequest<super::DeleteAppRequest>,
827        ) -> std::result::Result<
828            tonic::Response<super::DeleteAppResponse>,
829            tonic::Status,
830        > {
831            self.inner
832                .ready()
833                .await
834                .map_err(|e| {
835                    tonic::Status::unknown(
836                        format!("Service was not ready: {}", e.into()),
837                    )
838                })?;
839            let codec = tonic::codec::ProstCodec::default();
840            let path = http::uri::PathAndQuery::from_static(
841                "/nominal.nova.v1.NovaService/DeleteApp",
842            );
843            let mut req = request.into_request();
844            req.extensions_mut()
845                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "DeleteApp"));
846            self.inner.unary(req, path, codec).await
847        }
848        pub async fn search_apps(
849            &mut self,
850            request: impl tonic::IntoRequest<super::SearchAppsRequest>,
851        ) -> std::result::Result<
852            tonic::Response<super::SearchAppsResponse>,
853            tonic::Status,
854        > {
855            self.inner
856                .ready()
857                .await
858                .map_err(|e| {
859                    tonic::Status::unknown(
860                        format!("Service was not ready: {}", e.into()),
861                    )
862                })?;
863            let codec = tonic::codec::ProstCodec::default();
864            let path = http::uri::PathAndQuery::from_static(
865                "/nominal.nova.v1.NovaService/SearchApps",
866            );
867            let mut req = request.into_request();
868            req.extensions_mut()
869                .insert(GrpcMethod::new("nominal.nova.v1.NovaService", "SearchApps"));
870            self.inner.unary(req, path, codec).await
871        }
872        pub async fn search_app_labels(
873            &mut self,
874            request: impl tonic::IntoRequest<super::SearchAppLabelsRequest>,
875        ) -> std::result::Result<
876            tonic::Response<super::SearchAppLabelsResponse>,
877            tonic::Status,
878        > {
879            self.inner
880                .ready()
881                .await
882                .map_err(|e| {
883                    tonic::Status::unknown(
884                        format!("Service was not ready: {}", e.into()),
885                    )
886                })?;
887            let codec = tonic::codec::ProstCodec::default();
888            let path = http::uri::PathAndQuery::from_static(
889                "/nominal.nova.v1.NovaService/SearchAppLabels",
890            );
891            let mut req = request.into_request();
892            req.extensions_mut()
893                .insert(
894                    GrpcMethod::new("nominal.nova.v1.NovaService", "SearchAppLabels"),
895                );
896            self.inner.unary(req, path, codec).await
897        }
898    }
899}
900#[derive(Clone, PartialEq, ::prost::Message)]
901pub struct AppProxy {
902    #[prost(string, tag = "1")]
903    pub app_rid: ::prost::alloc::string::String,
904    #[prost(string, tag = "2")]
905    pub api_proxy_rid: ::prost::alloc::string::String,
906    #[prost(message, optional, tag = "3")]
907    pub created_at: ::core::option::Option<
908        super::super::super::google::protobuf::Timestamp,
909    >,
910}
911#[derive(Clone, PartialEq, ::prost::Message)]
912pub struct CreateAppProxyRequest {
913    #[prost(string, tag = "1")]
914    pub app_rid: ::prost::alloc::string::String,
915    #[prost(string, tag = "2")]
916    pub api_proxy_rid: ::prost::alloc::string::String,
917}
918#[derive(Clone, PartialEq, ::prost::Message)]
919pub struct CreateAppProxyResponse {
920    #[prost(message, optional, tag = "1")]
921    pub app_proxy: ::core::option::Option<AppProxy>,
922}
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct DeleteAppProxyRequest {
925    #[prost(string, tag = "1")]
926    pub app_rid: ::prost::alloc::string::String,
927    #[prost(string, tag = "2")]
928    pub api_proxy_rid: ::prost::alloc::string::String,
929}
930#[derive(Clone, Copy, PartialEq, ::prost::Message)]
931pub struct DeleteAppProxyResponse {}
932#[derive(Clone, PartialEq, ::prost::Message)]
933pub struct ListAppProxiesRequest {
934    #[prost(string, tag = "1")]
935    pub app_rid: ::prost::alloc::string::String,
936    #[prost(int32, optional, tag = "2")]
937    pub page_size: ::core::option::Option<i32>,
938    #[prost(string, optional, tag = "3")]
939    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
940}
941#[derive(Clone, PartialEq, ::prost::Message)]
942pub struct ListAppProxiesResponse {
943    #[prost(message, repeated, tag = "1")]
944    pub app_proxies: ::prost::alloc::vec::Vec<AppProxy>,
945    #[prost(string, optional, tag = "2")]
946    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
947}
948/// Generated client implementations.
949pub mod app_proxy_service_client {
950    #![allow(
951        unused_variables,
952        dead_code,
953        missing_docs,
954        clippy::wildcard_imports,
955        clippy::let_unit_value,
956    )]
957    use tonic::codegen::*;
958    use tonic::codegen::http::Uri;
959    #[derive(Debug, Clone)]
960    pub struct AppProxyServiceClient<T> {
961        inner: tonic::client::Grpc<T>,
962    }
963    impl AppProxyServiceClient<tonic::transport::Channel> {
964        /// Attempt to create a new client by connecting to a given endpoint.
965        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
966        where
967            D: TryInto<tonic::transport::Endpoint>,
968            D::Error: Into<StdError>,
969        {
970            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
971            Ok(Self::new(conn))
972        }
973    }
974    impl<T> AppProxyServiceClient<T>
975    where
976        T: tonic::client::GrpcService<tonic::body::Body>,
977        T::Error: Into<StdError>,
978        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
979        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
980    {
981        pub fn new(inner: T) -> Self {
982            let inner = tonic::client::Grpc::new(inner);
983            Self { inner }
984        }
985        pub fn with_origin(inner: T, origin: Uri) -> Self {
986            let inner = tonic::client::Grpc::with_origin(inner, origin);
987            Self { inner }
988        }
989        pub fn with_interceptor<F>(
990            inner: T,
991            interceptor: F,
992        ) -> AppProxyServiceClient<InterceptedService<T, F>>
993        where
994            F: tonic::service::Interceptor,
995            T::ResponseBody: Default,
996            T: tonic::codegen::Service<
997                http::Request<tonic::body::Body>,
998                Response = http::Response<
999                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1000                >,
1001            >,
1002            <T as tonic::codegen::Service<
1003                http::Request<tonic::body::Body>,
1004            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1005        {
1006            AppProxyServiceClient::new(InterceptedService::new(inner, interceptor))
1007        }
1008        /// Compress requests with the given encoding.
1009        ///
1010        /// This requires the server to support it otherwise it might respond with an
1011        /// error.
1012        #[must_use]
1013        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1014            self.inner = self.inner.send_compressed(encoding);
1015            self
1016        }
1017        /// Enable decompressing responses.
1018        #[must_use]
1019        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1020            self.inner = self.inner.accept_compressed(encoding);
1021            self
1022        }
1023        /// Limits the maximum size of a decoded message.
1024        ///
1025        /// Default: `4MB`
1026        #[must_use]
1027        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1028            self.inner = self.inner.max_decoding_message_size(limit);
1029            self
1030        }
1031        /// Limits the maximum size of an encoded message.
1032        ///
1033        /// Default: `usize::MAX`
1034        #[must_use]
1035        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1036            self.inner = self.inner.max_encoding_message_size(limit);
1037            self
1038        }
1039        pub async fn create_app_proxy(
1040            &mut self,
1041            request: impl tonic::IntoRequest<super::CreateAppProxyRequest>,
1042        ) -> std::result::Result<
1043            tonic::Response<super::CreateAppProxyResponse>,
1044            tonic::Status,
1045        > {
1046            self.inner
1047                .ready()
1048                .await
1049                .map_err(|e| {
1050                    tonic::Status::unknown(
1051                        format!("Service was not ready: {}", e.into()),
1052                    )
1053                })?;
1054            let codec = tonic::codec::ProstCodec::default();
1055            let path = http::uri::PathAndQuery::from_static(
1056                "/nominal.nova.v1.AppProxyService/CreateAppProxy",
1057            );
1058            let mut req = request.into_request();
1059            req.extensions_mut()
1060                .insert(
1061                    GrpcMethod::new("nominal.nova.v1.AppProxyService", "CreateAppProxy"),
1062                );
1063            self.inner.unary(req, path, codec).await
1064        }
1065        pub async fn delete_app_proxy(
1066            &mut self,
1067            request: impl tonic::IntoRequest<super::DeleteAppProxyRequest>,
1068        ) -> std::result::Result<
1069            tonic::Response<super::DeleteAppProxyResponse>,
1070            tonic::Status,
1071        > {
1072            self.inner
1073                .ready()
1074                .await
1075                .map_err(|e| {
1076                    tonic::Status::unknown(
1077                        format!("Service was not ready: {}", e.into()),
1078                    )
1079                })?;
1080            let codec = tonic::codec::ProstCodec::default();
1081            let path = http::uri::PathAndQuery::from_static(
1082                "/nominal.nova.v1.AppProxyService/DeleteAppProxy",
1083            );
1084            let mut req = request.into_request();
1085            req.extensions_mut()
1086                .insert(
1087                    GrpcMethod::new("nominal.nova.v1.AppProxyService", "DeleteAppProxy"),
1088                );
1089            self.inner.unary(req, path, codec).await
1090        }
1091        pub async fn list_app_proxies(
1092            &mut self,
1093            request: impl tonic::IntoRequest<super::ListAppProxiesRequest>,
1094        ) -> std::result::Result<
1095            tonic::Response<super::ListAppProxiesResponse>,
1096            tonic::Status,
1097        > {
1098            self.inner
1099                .ready()
1100                .await
1101                .map_err(|e| {
1102                    tonic::Status::unknown(
1103                        format!("Service was not ready: {}", e.into()),
1104                    )
1105                })?;
1106            let codec = tonic::codec::ProstCodec::default();
1107            let path = http::uri::PathAndQuery::from_static(
1108                "/nominal.nova.v1.AppProxyService/ListAppProxies",
1109            );
1110            let mut req = request.into_request();
1111            req.extensions_mut()
1112                .insert(
1113                    GrpcMethod::new("nominal.nova.v1.AppProxyService", "ListAppProxies"),
1114                );
1115            self.inner.unary(req, path, codec).await
1116        }
1117    }
1118}
1119#[derive(Clone, PartialEq, ::prost::Message)]
1120pub struct ArchivedStatusSet {
1121    #[prost(
1122        enumeration = "super::super::types::ArchivedStatus",
1123        repeated,
1124        packed = "false",
1125        tag = "1"
1126    )]
1127    pub archived_statuses: ::prost::alloc::vec::Vec<i32>,
1128}
1129#[derive(Clone, PartialEq, ::prost::Message)]
1130pub struct AppVersion {
1131    #[prost(string, tag = "1")]
1132    pub rid: ::prost::alloc::string::String,
1133    #[prost(string, tag = "2")]
1134    pub workspace_rid: ::prost::alloc::string::String,
1135    #[prost(string, tag = "3")]
1136    pub app_rid: ::prost::alloc::string::String,
1137    #[prost(string, tag = "4")]
1138    pub tag: ::prost::alloc::string::String,
1139    #[prost(enumeration = "AppBundleState", tag = "5")]
1140    pub bundle_state: i32,
1141    #[prost(string, tag = "7")]
1142    pub created_by_user_rid: ::prost::alloc::string::String,
1143    #[prost(message, optional, tag = "8")]
1144    pub created_at: ::core::option::Option<
1145        super::super::super::google::protobuf::Timestamp,
1146    >,
1147    #[prost(message, optional, tag = "9")]
1148    pub updated_at: ::core::option::Option<
1149        super::super::super::google::protobuf::Timestamp,
1150    >,
1151    #[prost(string, optional, tag = "10")]
1152    pub embed_path: ::core::option::Option<::prost::alloc::string::String>,
1153    #[prost(string, optional, tag = "11")]
1154    pub archive_sha256: ::core::option::Option<::prost::alloc::string::String>,
1155    #[prost(message, optional, tag = "12")]
1156    pub released_at: ::core::option::Option<
1157        super::super::super::google::protobuf::Timestamp,
1158    >,
1159    #[prost(message, optional, tag = "13")]
1160    pub archived_at: ::core::option::Option<
1161        super::super::super::google::protobuf::Timestamp,
1162    >,
1163    #[deprecated]
1164    #[prost(message, optional, tag = "14")]
1165    pub expires_at: ::core::option::Option<
1166        super::super::super::google::protobuf::Timestamp,
1167    >,
1168}
1169#[derive(Clone, PartialEq, ::prost::Message)]
1170pub struct CreateAppVersionRequest {
1171    #[prost(message, optional, tag = "1")]
1172    pub app_version: ::core::option::Option<AppVersion>,
1173    #[prost(message, optional, tag = "2")]
1174    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
1175}
1176#[derive(Clone, PartialEq, ::prost::Message)]
1177pub struct CreateAppVersionResponse {
1178    #[prost(message, optional, tag = "1")]
1179    pub app_version: ::core::option::Option<AppVersion>,
1180}
1181#[derive(Clone, PartialEq, ::prost::Message)]
1182pub struct GetAppVersionRequest {
1183    #[prost(string, tag = "1")]
1184    pub app_version_rid: ::prost::alloc::string::String,
1185}
1186#[derive(Clone, PartialEq, ::prost::Message)]
1187pub struct GetAppVersionResponse {
1188    #[prost(message, optional, tag = "1")]
1189    pub app_version: ::core::option::Option<AppVersion>,
1190}
1191#[derive(Clone, PartialEq, ::prost::Message)]
1192pub struct UpdateAppVersionRequest {
1193    #[prost(string, tag = "1")]
1194    pub app_version_rid: ::prost::alloc::string::String,
1195    #[prost(message, optional, tag = "2")]
1196    pub app_version: ::core::option::Option<AppVersion>,
1197    #[deprecated]
1198    #[prost(message, optional, tag = "3")]
1199    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
1200}
1201#[derive(Clone, PartialEq, ::prost::Message)]
1202pub struct UpdateAppVersionResponse {
1203    #[prost(message, optional, tag = "1")]
1204    pub app_version: ::core::option::Option<AppVersion>,
1205}
1206#[derive(Clone, PartialEq, ::prost::Message)]
1207pub struct DeleteAppVersionRequest {
1208    #[prost(string, tag = "1")]
1209    pub app_version_rid: ::prost::alloc::string::String,
1210}
1211#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1212pub struct DeleteAppVersionResponse {}
1213#[derive(Clone, PartialEq, ::prost::Message)]
1214pub struct ReleaseAppVersionRequest {
1215    #[prost(string, tag = "1")]
1216    pub app_version_rid: ::prost::alloc::string::String,
1217}
1218#[derive(Clone, PartialEq, ::prost::Message)]
1219pub struct ReleaseAppVersionResponse {
1220    #[prost(message, optional, tag = "1")]
1221    pub app_version: ::core::option::Option<AppVersion>,
1222}
1223#[derive(Clone, PartialEq, ::prost::Message)]
1224pub struct ArchiveAppVersionRequest {
1225    #[prost(string, tag = "1")]
1226    pub app_version_rid: ::prost::alloc::string::String,
1227}
1228#[derive(Clone, PartialEq, ::prost::Message)]
1229pub struct ArchiveAppVersionResponse {
1230    #[prost(message, optional, tag = "1")]
1231    pub app_version: ::core::option::Option<AppVersion>,
1232}
1233#[derive(Clone, PartialEq, ::prost::Message)]
1234pub struct UnarchiveAppVersionRequest {
1235    #[prost(string, tag = "1")]
1236    pub app_version_rid: ::prost::alloc::string::String,
1237}
1238#[derive(Clone, PartialEq, ::prost::Message)]
1239pub struct UnarchiveAppVersionResponse {
1240    #[prost(message, optional, tag = "1")]
1241    pub app_version: ::core::option::Option<AppVersion>,
1242}
1243#[derive(Clone, PartialEq, ::prost::Message)]
1244pub struct AppVersionSearchFilter {
1245    #[prost(string, optional, tag = "1")]
1246    pub tag: ::core::option::Option<::prost::alloc::string::String>,
1247    #[prost(enumeration = "AppBundleState", optional, tag = "2")]
1248    pub bundle_state: ::core::option::Option<i32>,
1249    #[prost(bool, optional, tag = "3")]
1250    pub is_released: ::core::option::Option<bool>,
1251    #[prost(message, optional, tag = "4")]
1252    pub archived_statuses: ::core::option::Option<ArchivedStatusSet>,
1253}
1254#[derive(Clone, PartialEq, ::prost::Message)]
1255pub struct SearchAppVersionsRequest {
1256    #[prost(string, tag = "1")]
1257    pub app_rid: ::prost::alloc::string::String,
1258    #[prost(message, optional, tag = "2")]
1259    pub filter: ::core::option::Option<AppVersionSearchFilter>,
1260    #[prost(int32, optional, tag = "3")]
1261    pub page_size: ::core::option::Option<i32>,
1262    #[prost(string, optional, tag = "4")]
1263    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1264}
1265#[derive(Clone, PartialEq, ::prost::Message)]
1266pub struct SearchAppVersionsResponse {
1267    #[prost(message, repeated, tag = "1")]
1268    pub app_versions: ::prost::alloc::vec::Vec<AppVersion>,
1269    #[prost(string, optional, tag = "2")]
1270    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1271}
1272#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1273#[repr(i32)]
1274pub enum AppBundleState {
1275    Unspecified = 0,
1276    Pending = 1,
1277    Scanning = 2,
1278    Active = 3,
1279    Failed = 4,
1280}
1281impl AppBundleState {
1282    /// String value of the enum field names used in the ProtoBuf definition.
1283    ///
1284    /// The values are not transformed in any way and thus are considered stable
1285    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1286    pub fn as_str_name(&self) -> &'static str {
1287        match self {
1288            Self::Unspecified => "APP_BUNDLE_STATE_UNSPECIFIED",
1289            Self::Pending => "APP_BUNDLE_STATE_PENDING",
1290            Self::Scanning => "APP_BUNDLE_STATE_SCANNING",
1291            Self::Active => "APP_BUNDLE_STATE_ACTIVE",
1292            Self::Failed => "APP_BUNDLE_STATE_FAILED",
1293        }
1294    }
1295    /// Creates an enum from field names used in the ProtoBuf definition.
1296    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1297        match value {
1298            "APP_BUNDLE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1299            "APP_BUNDLE_STATE_PENDING" => Some(Self::Pending),
1300            "APP_BUNDLE_STATE_SCANNING" => Some(Self::Scanning),
1301            "APP_BUNDLE_STATE_ACTIVE" => Some(Self::Active),
1302            "APP_BUNDLE_STATE_FAILED" => Some(Self::Failed),
1303            _ => None,
1304        }
1305    }
1306}
1307/// Generated client implementations.
1308pub mod app_version_service_client {
1309    #![allow(
1310        unused_variables,
1311        dead_code,
1312        missing_docs,
1313        clippy::wildcard_imports,
1314        clippy::let_unit_value,
1315    )]
1316    use tonic::codegen::*;
1317    use tonic::codegen::http::Uri;
1318    #[derive(Debug, Clone)]
1319    pub struct AppVersionServiceClient<T> {
1320        inner: tonic::client::Grpc<T>,
1321    }
1322    impl AppVersionServiceClient<tonic::transport::Channel> {
1323        /// Attempt to create a new client by connecting to a given endpoint.
1324        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1325        where
1326            D: TryInto<tonic::transport::Endpoint>,
1327            D::Error: Into<StdError>,
1328        {
1329            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1330            Ok(Self::new(conn))
1331        }
1332    }
1333    impl<T> AppVersionServiceClient<T>
1334    where
1335        T: tonic::client::GrpcService<tonic::body::Body>,
1336        T::Error: Into<StdError>,
1337        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1338        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1339    {
1340        pub fn new(inner: T) -> Self {
1341            let inner = tonic::client::Grpc::new(inner);
1342            Self { inner }
1343        }
1344        pub fn with_origin(inner: T, origin: Uri) -> Self {
1345            let inner = tonic::client::Grpc::with_origin(inner, origin);
1346            Self { inner }
1347        }
1348        pub fn with_interceptor<F>(
1349            inner: T,
1350            interceptor: F,
1351        ) -> AppVersionServiceClient<InterceptedService<T, F>>
1352        where
1353            F: tonic::service::Interceptor,
1354            T::ResponseBody: Default,
1355            T: tonic::codegen::Service<
1356                http::Request<tonic::body::Body>,
1357                Response = http::Response<
1358                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1359                >,
1360            >,
1361            <T as tonic::codegen::Service<
1362                http::Request<tonic::body::Body>,
1363            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1364        {
1365            AppVersionServiceClient::new(InterceptedService::new(inner, interceptor))
1366        }
1367        /// Compress requests with the given encoding.
1368        ///
1369        /// This requires the server to support it otherwise it might respond with an
1370        /// error.
1371        #[must_use]
1372        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1373            self.inner = self.inner.send_compressed(encoding);
1374            self
1375        }
1376        /// Enable decompressing responses.
1377        #[must_use]
1378        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1379            self.inner = self.inner.accept_compressed(encoding);
1380            self
1381        }
1382        /// Limits the maximum size of a decoded message.
1383        ///
1384        /// Default: `4MB`
1385        #[must_use]
1386        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1387            self.inner = self.inner.max_decoding_message_size(limit);
1388            self
1389        }
1390        /// Limits the maximum size of an encoded message.
1391        ///
1392        /// Default: `usize::MAX`
1393        #[must_use]
1394        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1395            self.inner = self.inner.max_encoding_message_size(limit);
1396            self
1397        }
1398        pub async fn create_app_version(
1399            &mut self,
1400            request: impl tonic::IntoRequest<super::CreateAppVersionRequest>,
1401        ) -> std::result::Result<
1402            tonic::Response<super::CreateAppVersionResponse>,
1403            tonic::Status,
1404        > {
1405            self.inner
1406                .ready()
1407                .await
1408                .map_err(|e| {
1409                    tonic::Status::unknown(
1410                        format!("Service was not ready: {}", e.into()),
1411                    )
1412                })?;
1413            let codec = tonic::codec::ProstCodec::default();
1414            let path = http::uri::PathAndQuery::from_static(
1415                "/nominal.nova.v1.AppVersionService/CreateAppVersion",
1416            );
1417            let mut req = request.into_request();
1418            req.extensions_mut()
1419                .insert(
1420                    GrpcMethod::new(
1421                        "nominal.nova.v1.AppVersionService",
1422                        "CreateAppVersion",
1423                    ),
1424                );
1425            self.inner.unary(req, path, codec).await
1426        }
1427        pub async fn get_app_version(
1428            &mut self,
1429            request: impl tonic::IntoRequest<super::GetAppVersionRequest>,
1430        ) -> std::result::Result<
1431            tonic::Response<super::GetAppVersionResponse>,
1432            tonic::Status,
1433        > {
1434            self.inner
1435                .ready()
1436                .await
1437                .map_err(|e| {
1438                    tonic::Status::unknown(
1439                        format!("Service was not ready: {}", e.into()),
1440                    )
1441                })?;
1442            let codec = tonic::codec::ProstCodec::default();
1443            let path = http::uri::PathAndQuery::from_static(
1444                "/nominal.nova.v1.AppVersionService/GetAppVersion",
1445            );
1446            let mut req = request.into_request();
1447            req.extensions_mut()
1448                .insert(
1449                    GrpcMethod::new("nominal.nova.v1.AppVersionService", "GetAppVersion"),
1450                );
1451            self.inner.unary(req, path, codec).await
1452        }
1453        #[deprecated]
1454        pub async fn update_app_version(
1455            &mut self,
1456            request: impl tonic::IntoRequest<super::UpdateAppVersionRequest>,
1457        ) -> std::result::Result<
1458            tonic::Response<super::UpdateAppVersionResponse>,
1459            tonic::Status,
1460        > {
1461            self.inner
1462                .ready()
1463                .await
1464                .map_err(|e| {
1465                    tonic::Status::unknown(
1466                        format!("Service was not ready: {}", e.into()),
1467                    )
1468                })?;
1469            let codec = tonic::codec::ProstCodec::default();
1470            let path = http::uri::PathAndQuery::from_static(
1471                "/nominal.nova.v1.AppVersionService/UpdateAppVersion",
1472            );
1473            let mut req = request.into_request();
1474            req.extensions_mut()
1475                .insert(
1476                    GrpcMethod::new(
1477                        "nominal.nova.v1.AppVersionService",
1478                        "UpdateAppVersion",
1479                    ),
1480                );
1481            self.inner.unary(req, path, codec).await
1482        }
1483        pub async fn delete_app_version(
1484            &mut self,
1485            request: impl tonic::IntoRequest<super::DeleteAppVersionRequest>,
1486        ) -> std::result::Result<
1487            tonic::Response<super::DeleteAppVersionResponse>,
1488            tonic::Status,
1489        > {
1490            self.inner
1491                .ready()
1492                .await
1493                .map_err(|e| {
1494                    tonic::Status::unknown(
1495                        format!("Service was not ready: {}", e.into()),
1496                    )
1497                })?;
1498            let codec = tonic::codec::ProstCodec::default();
1499            let path = http::uri::PathAndQuery::from_static(
1500                "/nominal.nova.v1.AppVersionService/DeleteAppVersion",
1501            );
1502            let mut req = request.into_request();
1503            req.extensions_mut()
1504                .insert(
1505                    GrpcMethod::new(
1506                        "nominal.nova.v1.AppVersionService",
1507                        "DeleteAppVersion",
1508                    ),
1509                );
1510            self.inner.unary(req, path, codec).await
1511        }
1512        #[deprecated]
1513        pub async fn release_app_version(
1514            &mut self,
1515            request: impl tonic::IntoRequest<super::ReleaseAppVersionRequest>,
1516        ) -> std::result::Result<
1517            tonic::Response<super::ReleaseAppVersionResponse>,
1518            tonic::Status,
1519        > {
1520            self.inner
1521                .ready()
1522                .await
1523                .map_err(|e| {
1524                    tonic::Status::unknown(
1525                        format!("Service was not ready: {}", e.into()),
1526                    )
1527                })?;
1528            let codec = tonic::codec::ProstCodec::default();
1529            let path = http::uri::PathAndQuery::from_static(
1530                "/nominal.nova.v1.AppVersionService/ReleaseAppVersion",
1531            );
1532            let mut req = request.into_request();
1533            req.extensions_mut()
1534                .insert(
1535                    GrpcMethod::new(
1536                        "nominal.nova.v1.AppVersionService",
1537                        "ReleaseAppVersion",
1538                    ),
1539                );
1540            self.inner.unary(req, path, codec).await
1541        }
1542        pub async fn archive_app_version(
1543            &mut self,
1544            request: impl tonic::IntoRequest<super::ArchiveAppVersionRequest>,
1545        ) -> std::result::Result<
1546            tonic::Response<super::ArchiveAppVersionResponse>,
1547            tonic::Status,
1548        > {
1549            self.inner
1550                .ready()
1551                .await
1552                .map_err(|e| {
1553                    tonic::Status::unknown(
1554                        format!("Service was not ready: {}", e.into()),
1555                    )
1556                })?;
1557            let codec = tonic::codec::ProstCodec::default();
1558            let path = http::uri::PathAndQuery::from_static(
1559                "/nominal.nova.v1.AppVersionService/ArchiveAppVersion",
1560            );
1561            let mut req = request.into_request();
1562            req.extensions_mut()
1563                .insert(
1564                    GrpcMethod::new(
1565                        "nominal.nova.v1.AppVersionService",
1566                        "ArchiveAppVersion",
1567                    ),
1568                );
1569            self.inner.unary(req, path, codec).await
1570        }
1571        pub async fn unarchive_app_version(
1572            &mut self,
1573            request: impl tonic::IntoRequest<super::UnarchiveAppVersionRequest>,
1574        ) -> std::result::Result<
1575            tonic::Response<super::UnarchiveAppVersionResponse>,
1576            tonic::Status,
1577        > {
1578            self.inner
1579                .ready()
1580                .await
1581                .map_err(|e| {
1582                    tonic::Status::unknown(
1583                        format!("Service was not ready: {}", e.into()),
1584                    )
1585                })?;
1586            let codec = tonic::codec::ProstCodec::default();
1587            let path = http::uri::PathAndQuery::from_static(
1588                "/nominal.nova.v1.AppVersionService/UnarchiveAppVersion",
1589            );
1590            let mut req = request.into_request();
1591            req.extensions_mut()
1592                .insert(
1593                    GrpcMethod::new(
1594                        "nominal.nova.v1.AppVersionService",
1595                        "UnarchiveAppVersion",
1596                    ),
1597                );
1598            self.inner.unary(req, path, codec).await
1599        }
1600        pub async fn search_app_versions(
1601            &mut self,
1602            request: impl tonic::IntoRequest<super::SearchAppVersionsRequest>,
1603        ) -> std::result::Result<
1604            tonic::Response<super::SearchAppVersionsResponse>,
1605            tonic::Status,
1606        > {
1607            self.inner
1608                .ready()
1609                .await
1610                .map_err(|e| {
1611                    tonic::Status::unknown(
1612                        format!("Service was not ready: {}", e.into()),
1613                    )
1614                })?;
1615            let codec = tonic::codec::ProstCodec::default();
1616            let path = http::uri::PathAndQuery::from_static(
1617                "/nominal.nova.v1.AppVersionService/SearchAppVersions",
1618            );
1619            let mut req = request.into_request();
1620            req.extensions_mut()
1621                .insert(
1622                    GrpcMethod::new(
1623                        "nominal.nova.v1.AppVersionService",
1624                        "SearchAppVersions",
1625                    ),
1626                );
1627            self.inner.unary(req, path, codec).await
1628        }
1629    }
1630}
1631#[derive(Clone, PartialEq, ::prost::Message)]
1632pub struct KeyValueEntry {
1633    #[prost(string, tag = "1")]
1634    pub app_rid: ::prost::alloc::string::String,
1635    #[prost(string, tag = "2")]
1636    pub key: ::prost::alloc::string::String,
1637    #[prost(message, optional, tag = "3")]
1638    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1639    #[prost(message, optional, tag = "4")]
1640    pub created_at: ::core::option::Option<
1641        super::super::super::google::protobuf::Timestamp,
1642    >,
1643    #[prost(message, optional, tag = "5")]
1644    pub updated_at: ::core::option::Option<
1645        super::super::super::google::protobuf::Timestamp,
1646    >,
1647    #[prost(int64, tag = "6")]
1648    pub version: i64,
1649}
1650#[derive(Clone, PartialEq, ::prost::Message)]
1651pub struct CreateKeyValueEntryRequest {
1652    #[prost(string, tag = "1")]
1653    pub app_rid: ::prost::alloc::string::String,
1654    #[prost(string, tag = "2")]
1655    pub key: ::prost::alloc::string::String,
1656    #[prost(message, optional, tag = "3")]
1657    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1658}
1659#[derive(Clone, PartialEq, ::prost::Message)]
1660pub struct CreateKeyValueEntryResponse {
1661    #[prost(message, optional, tag = "1")]
1662    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1663}
1664#[derive(Clone, PartialEq, ::prost::Message)]
1665pub struct UpdateKeyValueEntryRequest {
1666    #[prost(string, tag = "1")]
1667    pub app_rid: ::prost::alloc::string::String,
1668    #[prost(string, tag = "2")]
1669    pub key: ::prost::alloc::string::String,
1670    #[prost(message, optional, tag = "3")]
1671    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1672    #[prost(int64, optional, tag = "4")]
1673    pub expected_version: ::core::option::Option<i64>,
1674}
1675#[derive(Clone, PartialEq, ::prost::Message)]
1676pub struct UpdateKeyValueEntryResponse {
1677    #[prost(message, optional, tag = "1")]
1678    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1679}
1680#[derive(Clone, PartialEq, ::prost::Message)]
1681pub struct GetKeyValueEntryRequest {
1682    #[prost(string, tag = "1")]
1683    pub app_rid: ::prost::alloc::string::String,
1684    #[prost(string, tag = "2")]
1685    pub key: ::prost::alloc::string::String,
1686}
1687#[derive(Clone, PartialEq, ::prost::Message)]
1688pub struct GetKeyValueEntryResponse {
1689    #[prost(message, optional, tag = "1")]
1690    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1691}
1692#[derive(Clone, PartialEq, ::prost::Message)]
1693pub struct DeleteKeyValueEntryRequest {
1694    #[prost(string, tag = "1")]
1695    pub app_rid: ::prost::alloc::string::String,
1696    #[prost(string, tag = "2")]
1697    pub key: ::prost::alloc::string::String,
1698}
1699#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1700pub struct DeleteKeyValueEntryResponse {}
1701#[derive(Clone, PartialEq, ::prost::Message)]
1702pub struct BatchGetKeyValueEntriesRequest {
1703    #[prost(string, tag = "1")]
1704    pub app_rid: ::prost::alloc::string::String,
1705    #[prost(string, repeated, tag = "2")]
1706    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1707}
1708#[derive(Clone, PartialEq, ::prost::Message)]
1709pub struct BatchGetKeyValueEntriesResponse {
1710    #[prost(message, repeated, tag = "1")]
1711    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1712}
1713#[derive(Clone, PartialEq, ::prost::Message)]
1714pub struct BatchCreateKeyValueEntriesRequest {
1715    #[prost(string, tag = "1")]
1716    pub app_rid: ::prost::alloc::string::String,
1717    #[prost(message, repeated, tag = "2")]
1718    pub writes: ::prost::alloc::vec::Vec<KeyValueEntryWrite>,
1719}
1720#[derive(Clone, PartialEq, ::prost::Message)]
1721pub struct BatchCreateKeyValueEntriesResponse {
1722    #[prost(message, repeated, tag = "1")]
1723    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1724}
1725#[derive(Clone, PartialEq, ::prost::Message)]
1726pub struct KeyValueEntryWrite {
1727    #[prost(string, tag = "1")]
1728    pub key: ::prost::alloc::string::String,
1729    #[prost(message, optional, tag = "2")]
1730    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1731    #[prost(int64, optional, tag = "3")]
1732    pub expected_version: ::core::option::Option<i64>,
1733}
1734#[derive(Clone, PartialEq, ::prost::Message)]
1735pub struct BatchUpdateKeyValueEntriesRequest {
1736    #[prost(string, tag = "1")]
1737    pub app_rid: ::prost::alloc::string::String,
1738    #[prost(message, repeated, tag = "2")]
1739    pub writes: ::prost::alloc::vec::Vec<KeyValueEntryWrite>,
1740}
1741#[derive(Clone, PartialEq, ::prost::Message)]
1742pub struct BatchUpdateKeyValueEntriesResponse {
1743    #[prost(message, repeated, tag = "1")]
1744    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1745}
1746#[derive(Clone, PartialEq, ::prost::Message)]
1747pub struct BatchDeleteKeyValueEntriesRequest {
1748    #[prost(string, tag = "1")]
1749    pub app_rid: ::prost::alloc::string::String,
1750    #[prost(string, repeated, tag = "2")]
1751    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1752}
1753#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1754pub struct BatchDeleteKeyValueEntriesResponse {}
1755#[derive(Clone, PartialEq, ::prost::Message)]
1756pub struct SearchKeyValueEntriesRequest {
1757    #[prost(string, tag = "1")]
1758    pub app_rid: ::prost::alloc::string::String,
1759    #[prost(string, optional, tag = "2")]
1760    pub key_prefix: ::core::option::Option<::prost::alloc::string::String>,
1761    #[prost(int32, optional, tag = "3")]
1762    pub page_size: ::core::option::Option<i32>,
1763    #[prost(string, optional, tag = "4")]
1764    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1765}
1766#[derive(Clone, PartialEq, ::prost::Message)]
1767pub struct SearchKeyValueEntriesResponse {
1768    #[prost(message, repeated, tag = "1")]
1769    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1770    #[prost(string, optional, tag = "2")]
1771    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1772}
1773#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1774#[repr(i32)]
1775pub enum NovaKeyValueError {
1776    VersionConflict = 0,
1777    QuotaExceeded = 1,
1778    RateLimited = 2,
1779    AppArchived = 3,
1780    ValueTooLarge = 4,
1781    EntryAlreadyExists = 6,
1782    EntryNotFound = 5,
1783}
1784impl NovaKeyValueError {
1785    /// String value of the enum field names used in the ProtoBuf definition.
1786    ///
1787    /// The values are not transformed in any way and thus are considered stable
1788    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1789    pub fn as_str_name(&self) -> &'static str {
1790        match self {
1791            Self::VersionConflict => "NOVA_KEY_VALUE_ERROR_VERSION_CONFLICT",
1792            Self::QuotaExceeded => "NOVA_KEY_VALUE_ERROR_QUOTA_EXCEEDED",
1793            Self::RateLimited => "NOVA_KEY_VALUE_ERROR_RATE_LIMITED",
1794            Self::AppArchived => "NOVA_KEY_VALUE_ERROR_APP_ARCHIVED",
1795            Self::ValueTooLarge => "NOVA_KEY_VALUE_ERROR_VALUE_TOO_LARGE",
1796            Self::EntryAlreadyExists => "NOVA_KEY_VALUE_ERROR_ENTRY_ALREADY_EXISTS",
1797            Self::EntryNotFound => "NOVA_KEY_VALUE_ERROR_ENTRY_NOT_FOUND",
1798        }
1799    }
1800    /// Creates an enum from field names used in the ProtoBuf definition.
1801    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1802        match value {
1803            "NOVA_KEY_VALUE_ERROR_VERSION_CONFLICT" => Some(Self::VersionConflict),
1804            "NOVA_KEY_VALUE_ERROR_QUOTA_EXCEEDED" => Some(Self::QuotaExceeded),
1805            "NOVA_KEY_VALUE_ERROR_RATE_LIMITED" => Some(Self::RateLimited),
1806            "NOVA_KEY_VALUE_ERROR_APP_ARCHIVED" => Some(Self::AppArchived),
1807            "NOVA_KEY_VALUE_ERROR_VALUE_TOO_LARGE" => Some(Self::ValueTooLarge),
1808            "NOVA_KEY_VALUE_ERROR_ENTRY_ALREADY_EXISTS" => Some(Self::EntryAlreadyExists),
1809            "NOVA_KEY_VALUE_ERROR_ENTRY_NOT_FOUND" => Some(Self::EntryNotFound),
1810            _ => None,
1811        }
1812    }
1813}
1814/// Generated client implementations.
1815pub mod nova_key_value_service_client {
1816    #![allow(
1817        unused_variables,
1818        dead_code,
1819        missing_docs,
1820        clippy::wildcard_imports,
1821        clippy::let_unit_value,
1822    )]
1823    use tonic::codegen::*;
1824    use tonic::codegen::http::Uri;
1825    #[derive(Debug, Clone)]
1826    pub struct NovaKeyValueServiceClient<T> {
1827        inner: tonic::client::Grpc<T>,
1828    }
1829    impl NovaKeyValueServiceClient<tonic::transport::Channel> {
1830        /// Attempt to create a new client by connecting to a given endpoint.
1831        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1832        where
1833            D: TryInto<tonic::transport::Endpoint>,
1834            D::Error: Into<StdError>,
1835        {
1836            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1837            Ok(Self::new(conn))
1838        }
1839    }
1840    impl<T> NovaKeyValueServiceClient<T>
1841    where
1842        T: tonic::client::GrpcService<tonic::body::Body>,
1843        T::Error: Into<StdError>,
1844        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1845        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1846    {
1847        pub fn new(inner: T) -> Self {
1848            let inner = tonic::client::Grpc::new(inner);
1849            Self { inner }
1850        }
1851        pub fn with_origin(inner: T, origin: Uri) -> Self {
1852            let inner = tonic::client::Grpc::with_origin(inner, origin);
1853            Self { inner }
1854        }
1855        pub fn with_interceptor<F>(
1856            inner: T,
1857            interceptor: F,
1858        ) -> NovaKeyValueServiceClient<InterceptedService<T, F>>
1859        where
1860            F: tonic::service::Interceptor,
1861            T::ResponseBody: Default,
1862            T: tonic::codegen::Service<
1863                http::Request<tonic::body::Body>,
1864                Response = http::Response<
1865                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1866                >,
1867            >,
1868            <T as tonic::codegen::Service<
1869                http::Request<tonic::body::Body>,
1870            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1871        {
1872            NovaKeyValueServiceClient::new(InterceptedService::new(inner, interceptor))
1873        }
1874        /// Compress requests with the given encoding.
1875        ///
1876        /// This requires the server to support it otherwise it might respond with an
1877        /// error.
1878        #[must_use]
1879        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1880            self.inner = self.inner.send_compressed(encoding);
1881            self
1882        }
1883        /// Enable decompressing responses.
1884        #[must_use]
1885        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1886            self.inner = self.inner.accept_compressed(encoding);
1887            self
1888        }
1889        /// Limits the maximum size of a decoded message.
1890        ///
1891        /// Default: `4MB`
1892        #[must_use]
1893        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1894            self.inner = self.inner.max_decoding_message_size(limit);
1895            self
1896        }
1897        /// Limits the maximum size of an encoded message.
1898        ///
1899        /// Default: `usize::MAX`
1900        #[must_use]
1901        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1902            self.inner = self.inner.max_encoding_message_size(limit);
1903            self
1904        }
1905        pub async fn create_key_value_entry(
1906            &mut self,
1907            request: impl tonic::IntoRequest<super::CreateKeyValueEntryRequest>,
1908        ) -> std::result::Result<
1909            tonic::Response<super::CreateKeyValueEntryResponse>,
1910            tonic::Status,
1911        > {
1912            self.inner
1913                .ready()
1914                .await
1915                .map_err(|e| {
1916                    tonic::Status::unknown(
1917                        format!("Service was not ready: {}", e.into()),
1918                    )
1919                })?;
1920            let codec = tonic::codec::ProstCodec::default();
1921            let path = http::uri::PathAndQuery::from_static(
1922                "/nominal.nova.v1.NovaKeyValueService/CreateKeyValueEntry",
1923            );
1924            let mut req = request.into_request();
1925            req.extensions_mut()
1926                .insert(
1927                    GrpcMethod::new(
1928                        "nominal.nova.v1.NovaKeyValueService",
1929                        "CreateKeyValueEntry",
1930                    ),
1931                );
1932            self.inner.unary(req, path, codec).await
1933        }
1934        pub async fn update_key_value_entry(
1935            &mut self,
1936            request: impl tonic::IntoRequest<super::UpdateKeyValueEntryRequest>,
1937        ) -> std::result::Result<
1938            tonic::Response<super::UpdateKeyValueEntryResponse>,
1939            tonic::Status,
1940        > {
1941            self.inner
1942                .ready()
1943                .await
1944                .map_err(|e| {
1945                    tonic::Status::unknown(
1946                        format!("Service was not ready: {}", e.into()),
1947                    )
1948                })?;
1949            let codec = tonic::codec::ProstCodec::default();
1950            let path = http::uri::PathAndQuery::from_static(
1951                "/nominal.nova.v1.NovaKeyValueService/UpdateKeyValueEntry",
1952            );
1953            let mut req = request.into_request();
1954            req.extensions_mut()
1955                .insert(
1956                    GrpcMethod::new(
1957                        "nominal.nova.v1.NovaKeyValueService",
1958                        "UpdateKeyValueEntry",
1959                    ),
1960                );
1961            self.inner.unary(req, path, codec).await
1962        }
1963        pub async fn get_key_value_entry(
1964            &mut self,
1965            request: impl tonic::IntoRequest<super::GetKeyValueEntryRequest>,
1966        ) -> std::result::Result<
1967            tonic::Response<super::GetKeyValueEntryResponse>,
1968            tonic::Status,
1969        > {
1970            self.inner
1971                .ready()
1972                .await
1973                .map_err(|e| {
1974                    tonic::Status::unknown(
1975                        format!("Service was not ready: {}", e.into()),
1976                    )
1977                })?;
1978            let codec = tonic::codec::ProstCodec::default();
1979            let path = http::uri::PathAndQuery::from_static(
1980                "/nominal.nova.v1.NovaKeyValueService/GetKeyValueEntry",
1981            );
1982            let mut req = request.into_request();
1983            req.extensions_mut()
1984                .insert(
1985                    GrpcMethod::new(
1986                        "nominal.nova.v1.NovaKeyValueService",
1987                        "GetKeyValueEntry",
1988                    ),
1989                );
1990            self.inner.unary(req, path, codec).await
1991        }
1992        pub async fn delete_key_value_entry(
1993            &mut self,
1994            request: impl tonic::IntoRequest<super::DeleteKeyValueEntryRequest>,
1995        ) -> std::result::Result<
1996            tonic::Response<super::DeleteKeyValueEntryResponse>,
1997            tonic::Status,
1998        > {
1999            self.inner
2000                .ready()
2001                .await
2002                .map_err(|e| {
2003                    tonic::Status::unknown(
2004                        format!("Service was not ready: {}", e.into()),
2005                    )
2006                })?;
2007            let codec = tonic::codec::ProstCodec::default();
2008            let path = http::uri::PathAndQuery::from_static(
2009                "/nominal.nova.v1.NovaKeyValueService/DeleteKeyValueEntry",
2010            );
2011            let mut req = request.into_request();
2012            req.extensions_mut()
2013                .insert(
2014                    GrpcMethod::new(
2015                        "nominal.nova.v1.NovaKeyValueService",
2016                        "DeleteKeyValueEntry",
2017                    ),
2018                );
2019            self.inner.unary(req, path, codec).await
2020        }
2021        pub async fn batch_get_key_value_entries(
2022            &mut self,
2023            request: impl tonic::IntoRequest<super::BatchGetKeyValueEntriesRequest>,
2024        ) -> std::result::Result<
2025            tonic::Response<super::BatchGetKeyValueEntriesResponse>,
2026            tonic::Status,
2027        > {
2028            self.inner
2029                .ready()
2030                .await
2031                .map_err(|e| {
2032                    tonic::Status::unknown(
2033                        format!("Service was not ready: {}", e.into()),
2034                    )
2035                })?;
2036            let codec = tonic::codec::ProstCodec::default();
2037            let path = http::uri::PathAndQuery::from_static(
2038                "/nominal.nova.v1.NovaKeyValueService/BatchGetKeyValueEntries",
2039            );
2040            let mut req = request.into_request();
2041            req.extensions_mut()
2042                .insert(
2043                    GrpcMethod::new(
2044                        "nominal.nova.v1.NovaKeyValueService",
2045                        "BatchGetKeyValueEntries",
2046                    ),
2047                );
2048            self.inner.unary(req, path, codec).await
2049        }
2050        pub async fn batch_create_key_value_entries(
2051            &mut self,
2052            request: impl tonic::IntoRequest<super::BatchCreateKeyValueEntriesRequest>,
2053        ) -> std::result::Result<
2054            tonic::Response<super::BatchCreateKeyValueEntriesResponse>,
2055            tonic::Status,
2056        > {
2057            self.inner
2058                .ready()
2059                .await
2060                .map_err(|e| {
2061                    tonic::Status::unknown(
2062                        format!("Service was not ready: {}", e.into()),
2063                    )
2064                })?;
2065            let codec = tonic::codec::ProstCodec::default();
2066            let path = http::uri::PathAndQuery::from_static(
2067                "/nominal.nova.v1.NovaKeyValueService/BatchCreateKeyValueEntries",
2068            );
2069            let mut req = request.into_request();
2070            req.extensions_mut()
2071                .insert(
2072                    GrpcMethod::new(
2073                        "nominal.nova.v1.NovaKeyValueService",
2074                        "BatchCreateKeyValueEntries",
2075                    ),
2076                );
2077            self.inner.unary(req, path, codec).await
2078        }
2079        pub async fn batch_update_key_value_entries(
2080            &mut self,
2081            request: impl tonic::IntoRequest<super::BatchUpdateKeyValueEntriesRequest>,
2082        ) -> std::result::Result<
2083            tonic::Response<super::BatchUpdateKeyValueEntriesResponse>,
2084            tonic::Status,
2085        > {
2086            self.inner
2087                .ready()
2088                .await
2089                .map_err(|e| {
2090                    tonic::Status::unknown(
2091                        format!("Service was not ready: {}", e.into()),
2092                    )
2093                })?;
2094            let codec = tonic::codec::ProstCodec::default();
2095            let path = http::uri::PathAndQuery::from_static(
2096                "/nominal.nova.v1.NovaKeyValueService/BatchUpdateKeyValueEntries",
2097            );
2098            let mut req = request.into_request();
2099            req.extensions_mut()
2100                .insert(
2101                    GrpcMethod::new(
2102                        "nominal.nova.v1.NovaKeyValueService",
2103                        "BatchUpdateKeyValueEntries",
2104                    ),
2105                );
2106            self.inner.unary(req, path, codec).await
2107        }
2108        pub async fn batch_delete_key_value_entries(
2109            &mut self,
2110            request: impl tonic::IntoRequest<super::BatchDeleteKeyValueEntriesRequest>,
2111        ) -> std::result::Result<
2112            tonic::Response<super::BatchDeleteKeyValueEntriesResponse>,
2113            tonic::Status,
2114        > {
2115            self.inner
2116                .ready()
2117                .await
2118                .map_err(|e| {
2119                    tonic::Status::unknown(
2120                        format!("Service was not ready: {}", e.into()),
2121                    )
2122                })?;
2123            let codec = tonic::codec::ProstCodec::default();
2124            let path = http::uri::PathAndQuery::from_static(
2125                "/nominal.nova.v1.NovaKeyValueService/BatchDeleteKeyValueEntries",
2126            );
2127            let mut req = request.into_request();
2128            req.extensions_mut()
2129                .insert(
2130                    GrpcMethod::new(
2131                        "nominal.nova.v1.NovaKeyValueService",
2132                        "BatchDeleteKeyValueEntries",
2133                    ),
2134                );
2135            self.inner.unary(req, path, codec).await
2136        }
2137        pub async fn search_key_value_entries(
2138            &mut self,
2139            request: impl tonic::IntoRequest<super::SearchKeyValueEntriesRequest>,
2140        ) -> std::result::Result<
2141            tonic::Response<super::SearchKeyValueEntriesResponse>,
2142            tonic::Status,
2143        > {
2144            self.inner
2145                .ready()
2146                .await
2147                .map_err(|e| {
2148                    tonic::Status::unknown(
2149                        format!("Service was not ready: {}", e.into()),
2150                    )
2151                })?;
2152            let codec = tonic::codec::ProstCodec::default();
2153            let path = http::uri::PathAndQuery::from_static(
2154                "/nominal.nova.v1.NovaKeyValueService/SearchKeyValueEntries",
2155            );
2156            let mut req = request.into_request();
2157            req.extensions_mut()
2158                .insert(
2159                    GrpcMethod::new(
2160                        "nominal.nova.v1.NovaKeyValueService",
2161                        "SearchKeyValueEntries",
2162                    ),
2163                );
2164            self.inner.unary(req, path, codec).await
2165        }
2166    }
2167}
2168#[derive(Clone, PartialEq, ::prost::Message)]
2169pub struct ProxyHeader {
2170    #[prost(string, tag = "1")]
2171    pub name: ::prost::alloc::string::String,
2172    #[prost(string, tag = "2")]
2173    pub value: ::prost::alloc::string::String,
2174}
2175#[derive(Clone, PartialEq, ::prost::Message)]
2176pub struct CallApiProxyRequest {
2177    #[prost(string, tag = "1")]
2178    pub app_rid: ::prost::alloc::string::String,
2179    #[prost(string, tag = "2")]
2180    pub api_proxy_rid: ::prost::alloc::string::String,
2181    #[prost(enumeration = "ProxyHttpMethod", tag = "3")]
2182    pub method: i32,
2183    #[prost(string, tag = "4")]
2184    pub path: ::prost::alloc::string::String,
2185    #[prost(string, tag = "5")]
2186    pub query: ::prost::alloc::string::String,
2187    #[prost(message, repeated, tag = "6")]
2188    pub headers: ::prost::alloc::vec::Vec<ProxyHeader>,
2189    #[prost(bytes = "vec", tag = "7")]
2190    pub body: ::prost::alloc::vec::Vec<u8>,
2191}
2192#[derive(Clone, PartialEq, ::prost::Message)]
2193pub struct CallApiProxyResponse {
2194    #[prost(int32, tag = "1")]
2195    pub status_code: i32,
2196    #[prost(message, repeated, tag = "2")]
2197    pub headers: ::prost::alloc::vec::Vec<ProxyHeader>,
2198    #[prost(bytes = "vec", tag = "3")]
2199    pub body: ::prost::alloc::vec::Vec<u8>,
2200}
2201#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2202#[repr(i32)]
2203pub enum ProxyHttpMethod {
2204    Unspecified = 0,
2205    Get = 1,
2206    Head = 2,
2207    Post = 3,
2208    Put = 4,
2209    Patch = 5,
2210    Delete = 6,
2211}
2212impl ProxyHttpMethod {
2213    /// String value of the enum field names used in the ProtoBuf definition.
2214    ///
2215    /// The values are not transformed in any way and thus are considered stable
2216    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2217    pub fn as_str_name(&self) -> &'static str {
2218        match self {
2219            Self::Unspecified => "PROXY_HTTP_METHOD_UNSPECIFIED",
2220            Self::Get => "PROXY_HTTP_METHOD_GET",
2221            Self::Head => "PROXY_HTTP_METHOD_HEAD",
2222            Self::Post => "PROXY_HTTP_METHOD_POST",
2223            Self::Put => "PROXY_HTTP_METHOD_PUT",
2224            Self::Patch => "PROXY_HTTP_METHOD_PATCH",
2225            Self::Delete => "PROXY_HTTP_METHOD_DELETE",
2226        }
2227    }
2228    /// Creates an enum from field names used in the ProtoBuf definition.
2229    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2230        match value {
2231            "PROXY_HTTP_METHOD_UNSPECIFIED" => Some(Self::Unspecified),
2232            "PROXY_HTTP_METHOD_GET" => Some(Self::Get),
2233            "PROXY_HTTP_METHOD_HEAD" => Some(Self::Head),
2234            "PROXY_HTTP_METHOD_POST" => Some(Self::Post),
2235            "PROXY_HTTP_METHOD_PUT" => Some(Self::Put),
2236            "PROXY_HTTP_METHOD_PATCH" => Some(Self::Patch),
2237            "PROXY_HTTP_METHOD_DELETE" => Some(Self::Delete),
2238            _ => None,
2239        }
2240    }
2241}
2242/// Generated client implementations.
2243pub mod nova_proxy_service_client {
2244    #![allow(
2245        unused_variables,
2246        dead_code,
2247        missing_docs,
2248        clippy::wildcard_imports,
2249        clippy::let_unit_value,
2250    )]
2251    use tonic::codegen::*;
2252    use tonic::codegen::http::Uri;
2253    #[derive(Debug, Clone)]
2254    pub struct NovaProxyServiceClient<T> {
2255        inner: tonic::client::Grpc<T>,
2256    }
2257    impl NovaProxyServiceClient<tonic::transport::Channel> {
2258        /// Attempt to create a new client by connecting to a given endpoint.
2259        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2260        where
2261            D: TryInto<tonic::transport::Endpoint>,
2262            D::Error: Into<StdError>,
2263        {
2264            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2265            Ok(Self::new(conn))
2266        }
2267    }
2268    impl<T> NovaProxyServiceClient<T>
2269    where
2270        T: tonic::client::GrpcService<tonic::body::Body>,
2271        T::Error: Into<StdError>,
2272        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2273        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2274    {
2275        pub fn new(inner: T) -> Self {
2276            let inner = tonic::client::Grpc::new(inner);
2277            Self { inner }
2278        }
2279        pub fn with_origin(inner: T, origin: Uri) -> Self {
2280            let inner = tonic::client::Grpc::with_origin(inner, origin);
2281            Self { inner }
2282        }
2283        pub fn with_interceptor<F>(
2284            inner: T,
2285            interceptor: F,
2286        ) -> NovaProxyServiceClient<InterceptedService<T, F>>
2287        where
2288            F: tonic::service::Interceptor,
2289            T::ResponseBody: Default,
2290            T: tonic::codegen::Service<
2291                http::Request<tonic::body::Body>,
2292                Response = http::Response<
2293                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2294                >,
2295            >,
2296            <T as tonic::codegen::Service<
2297                http::Request<tonic::body::Body>,
2298            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2299        {
2300            NovaProxyServiceClient::new(InterceptedService::new(inner, interceptor))
2301        }
2302        /// Compress requests with the given encoding.
2303        ///
2304        /// This requires the server to support it otherwise it might respond with an
2305        /// error.
2306        #[must_use]
2307        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2308            self.inner = self.inner.send_compressed(encoding);
2309            self
2310        }
2311        /// Enable decompressing responses.
2312        #[must_use]
2313        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2314            self.inner = self.inner.accept_compressed(encoding);
2315            self
2316        }
2317        /// Limits the maximum size of a decoded message.
2318        ///
2319        /// Default: `4MB`
2320        #[must_use]
2321        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2322            self.inner = self.inner.max_decoding_message_size(limit);
2323            self
2324        }
2325        /// Limits the maximum size of an encoded message.
2326        ///
2327        /// Default: `usize::MAX`
2328        #[must_use]
2329        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2330            self.inner = self.inner.max_encoding_message_size(limit);
2331            self
2332        }
2333        pub async fn call_api_proxy(
2334            &mut self,
2335            request: impl tonic::IntoRequest<super::CallApiProxyRequest>,
2336        ) -> std::result::Result<
2337            tonic::Response<super::CallApiProxyResponse>,
2338            tonic::Status,
2339        > {
2340            self.inner
2341                .ready()
2342                .await
2343                .map_err(|e| {
2344                    tonic::Status::unknown(
2345                        format!("Service was not ready: {}", e.into()),
2346                    )
2347                })?;
2348            let codec = tonic::codec::ProstCodec::default();
2349            let path = http::uri::PathAndQuery::from_static(
2350                "/nominal.nova.v1.NovaProxyService/CallApiProxy",
2351            );
2352            let mut req = request.into_request();
2353            req.extensions_mut()
2354                .insert(
2355                    GrpcMethod::new("nominal.nova.v1.NovaProxyService", "CallApiProxy"),
2356                );
2357            self.inner.unary(req, path, codec).await
2358        }
2359    }
2360}