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    #[prost(message, optional, tag = "14")]
1164    pub expires_at: ::core::option::Option<
1165        super::super::super::google::protobuf::Timestamp,
1166    >,
1167}
1168#[derive(Clone, PartialEq, ::prost::Message)]
1169pub struct CreateAppVersionRequest {
1170    #[prost(message, optional, tag = "1")]
1171    pub app_version: ::core::option::Option<AppVersion>,
1172    #[prost(message, optional, tag = "2")]
1173    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
1174}
1175#[derive(Clone, PartialEq, ::prost::Message)]
1176pub struct CreateAppVersionResponse {
1177    #[prost(message, optional, tag = "1")]
1178    pub app_version: ::core::option::Option<AppVersion>,
1179}
1180#[derive(Clone, PartialEq, ::prost::Message)]
1181pub struct GetAppVersionRequest {
1182    #[prost(string, tag = "1")]
1183    pub app_version_rid: ::prost::alloc::string::String,
1184}
1185#[derive(Clone, PartialEq, ::prost::Message)]
1186pub struct GetAppVersionResponse {
1187    #[prost(message, optional, tag = "1")]
1188    pub app_version: ::core::option::Option<AppVersion>,
1189}
1190#[derive(Clone, PartialEq, ::prost::Message)]
1191pub struct UpdateAppVersionRequest {
1192    #[prost(string, tag = "1")]
1193    pub app_version_rid: ::prost::alloc::string::String,
1194    #[prost(message, optional, tag = "2")]
1195    pub app_version: ::core::option::Option<AppVersion>,
1196    #[prost(message, optional, tag = "3")]
1197    pub signed_bundle: ::core::option::Option<SignedAppBundle>,
1198}
1199#[derive(Clone, PartialEq, ::prost::Message)]
1200pub struct UpdateAppVersionResponse {
1201    #[prost(message, optional, tag = "1")]
1202    pub app_version: ::core::option::Option<AppVersion>,
1203}
1204#[derive(Clone, PartialEq, ::prost::Message)]
1205pub struct DeleteAppVersionRequest {
1206    #[prost(string, tag = "1")]
1207    pub app_version_rid: ::prost::alloc::string::String,
1208}
1209#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1210pub struct DeleteAppVersionResponse {}
1211#[derive(Clone, PartialEq, ::prost::Message)]
1212pub struct ReleaseAppVersionRequest {
1213    #[prost(string, tag = "1")]
1214    pub app_version_rid: ::prost::alloc::string::String,
1215}
1216#[derive(Clone, PartialEq, ::prost::Message)]
1217pub struct ReleaseAppVersionResponse {
1218    #[prost(message, optional, tag = "1")]
1219    pub app_version: ::core::option::Option<AppVersion>,
1220}
1221#[derive(Clone, PartialEq, ::prost::Message)]
1222pub struct ArchiveAppVersionRequest {
1223    #[prost(string, tag = "1")]
1224    pub app_version_rid: ::prost::alloc::string::String,
1225}
1226#[derive(Clone, PartialEq, ::prost::Message)]
1227pub struct ArchiveAppVersionResponse {
1228    #[prost(message, optional, tag = "1")]
1229    pub app_version: ::core::option::Option<AppVersion>,
1230}
1231#[derive(Clone, PartialEq, ::prost::Message)]
1232pub struct UnarchiveAppVersionRequest {
1233    #[prost(string, tag = "1")]
1234    pub app_version_rid: ::prost::alloc::string::String,
1235}
1236#[derive(Clone, PartialEq, ::prost::Message)]
1237pub struct UnarchiveAppVersionResponse {
1238    #[prost(message, optional, tag = "1")]
1239    pub app_version: ::core::option::Option<AppVersion>,
1240}
1241#[derive(Clone, PartialEq, ::prost::Message)]
1242pub struct AppVersionSearchFilter {
1243    #[prost(string, optional, tag = "1")]
1244    pub tag: ::core::option::Option<::prost::alloc::string::String>,
1245    #[prost(enumeration = "AppBundleState", optional, tag = "2")]
1246    pub bundle_state: ::core::option::Option<i32>,
1247    #[prost(bool, optional, tag = "3")]
1248    pub is_released: ::core::option::Option<bool>,
1249    #[prost(message, optional, tag = "4")]
1250    pub archived_statuses: ::core::option::Option<ArchivedStatusSet>,
1251}
1252#[derive(Clone, PartialEq, ::prost::Message)]
1253pub struct SearchAppVersionsRequest {
1254    #[prost(string, tag = "1")]
1255    pub app_rid: ::prost::alloc::string::String,
1256    #[prost(message, optional, tag = "2")]
1257    pub filter: ::core::option::Option<AppVersionSearchFilter>,
1258    #[prost(int32, optional, tag = "3")]
1259    pub page_size: ::core::option::Option<i32>,
1260    #[prost(string, optional, tag = "4")]
1261    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1262}
1263#[derive(Clone, PartialEq, ::prost::Message)]
1264pub struct SearchAppVersionsResponse {
1265    #[prost(message, repeated, tag = "1")]
1266    pub app_versions: ::prost::alloc::vec::Vec<AppVersion>,
1267    #[prost(string, optional, tag = "2")]
1268    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1269}
1270#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1271#[repr(i32)]
1272pub enum AppBundleState {
1273    Unspecified = 0,
1274    Pending = 1,
1275    Scanning = 2,
1276    Active = 3,
1277    Failed = 4,
1278}
1279impl AppBundleState {
1280    /// String value of the enum field names used in the ProtoBuf definition.
1281    ///
1282    /// The values are not transformed in any way and thus are considered stable
1283    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1284    pub fn as_str_name(&self) -> &'static str {
1285        match self {
1286            Self::Unspecified => "APP_BUNDLE_STATE_UNSPECIFIED",
1287            Self::Pending => "APP_BUNDLE_STATE_PENDING",
1288            Self::Scanning => "APP_BUNDLE_STATE_SCANNING",
1289            Self::Active => "APP_BUNDLE_STATE_ACTIVE",
1290            Self::Failed => "APP_BUNDLE_STATE_FAILED",
1291        }
1292    }
1293    /// Creates an enum from field names used in the ProtoBuf definition.
1294    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1295        match value {
1296            "APP_BUNDLE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1297            "APP_BUNDLE_STATE_PENDING" => Some(Self::Pending),
1298            "APP_BUNDLE_STATE_SCANNING" => Some(Self::Scanning),
1299            "APP_BUNDLE_STATE_ACTIVE" => Some(Self::Active),
1300            "APP_BUNDLE_STATE_FAILED" => Some(Self::Failed),
1301            _ => None,
1302        }
1303    }
1304}
1305/// Generated client implementations.
1306pub mod app_version_service_client {
1307    #![allow(
1308        unused_variables,
1309        dead_code,
1310        missing_docs,
1311        clippy::wildcard_imports,
1312        clippy::let_unit_value,
1313    )]
1314    use tonic::codegen::*;
1315    use tonic::codegen::http::Uri;
1316    #[derive(Debug, Clone)]
1317    pub struct AppVersionServiceClient<T> {
1318        inner: tonic::client::Grpc<T>,
1319    }
1320    impl AppVersionServiceClient<tonic::transport::Channel> {
1321        /// Attempt to create a new client by connecting to a given endpoint.
1322        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1323        where
1324            D: TryInto<tonic::transport::Endpoint>,
1325            D::Error: Into<StdError>,
1326        {
1327            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1328            Ok(Self::new(conn))
1329        }
1330    }
1331    impl<T> AppVersionServiceClient<T>
1332    where
1333        T: tonic::client::GrpcService<tonic::body::Body>,
1334        T::Error: Into<StdError>,
1335        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1336        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1337    {
1338        pub fn new(inner: T) -> Self {
1339            let inner = tonic::client::Grpc::new(inner);
1340            Self { inner }
1341        }
1342        pub fn with_origin(inner: T, origin: Uri) -> Self {
1343            let inner = tonic::client::Grpc::with_origin(inner, origin);
1344            Self { inner }
1345        }
1346        pub fn with_interceptor<F>(
1347            inner: T,
1348            interceptor: F,
1349        ) -> AppVersionServiceClient<InterceptedService<T, F>>
1350        where
1351            F: tonic::service::Interceptor,
1352            T::ResponseBody: Default,
1353            T: tonic::codegen::Service<
1354                http::Request<tonic::body::Body>,
1355                Response = http::Response<
1356                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1357                >,
1358            >,
1359            <T as tonic::codegen::Service<
1360                http::Request<tonic::body::Body>,
1361            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1362        {
1363            AppVersionServiceClient::new(InterceptedService::new(inner, interceptor))
1364        }
1365        /// Compress requests with the given encoding.
1366        ///
1367        /// This requires the server to support it otherwise it might respond with an
1368        /// error.
1369        #[must_use]
1370        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1371            self.inner = self.inner.send_compressed(encoding);
1372            self
1373        }
1374        /// Enable decompressing responses.
1375        #[must_use]
1376        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1377            self.inner = self.inner.accept_compressed(encoding);
1378            self
1379        }
1380        /// Limits the maximum size of a decoded message.
1381        ///
1382        /// Default: `4MB`
1383        #[must_use]
1384        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1385            self.inner = self.inner.max_decoding_message_size(limit);
1386            self
1387        }
1388        /// Limits the maximum size of an encoded message.
1389        ///
1390        /// Default: `usize::MAX`
1391        #[must_use]
1392        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1393            self.inner = self.inner.max_encoding_message_size(limit);
1394            self
1395        }
1396        pub async fn create_app_version(
1397            &mut self,
1398            request: impl tonic::IntoRequest<super::CreateAppVersionRequest>,
1399        ) -> std::result::Result<
1400            tonic::Response<super::CreateAppVersionResponse>,
1401            tonic::Status,
1402        > {
1403            self.inner
1404                .ready()
1405                .await
1406                .map_err(|e| {
1407                    tonic::Status::unknown(
1408                        format!("Service was not ready: {}", e.into()),
1409                    )
1410                })?;
1411            let codec = tonic::codec::ProstCodec::default();
1412            let path = http::uri::PathAndQuery::from_static(
1413                "/nominal.nova.v1.AppVersionService/CreateAppVersion",
1414            );
1415            let mut req = request.into_request();
1416            req.extensions_mut()
1417                .insert(
1418                    GrpcMethod::new(
1419                        "nominal.nova.v1.AppVersionService",
1420                        "CreateAppVersion",
1421                    ),
1422                );
1423            self.inner.unary(req, path, codec).await
1424        }
1425        pub async fn get_app_version(
1426            &mut self,
1427            request: impl tonic::IntoRequest<super::GetAppVersionRequest>,
1428        ) -> std::result::Result<
1429            tonic::Response<super::GetAppVersionResponse>,
1430            tonic::Status,
1431        > {
1432            self.inner
1433                .ready()
1434                .await
1435                .map_err(|e| {
1436                    tonic::Status::unknown(
1437                        format!("Service was not ready: {}", e.into()),
1438                    )
1439                })?;
1440            let codec = tonic::codec::ProstCodec::default();
1441            let path = http::uri::PathAndQuery::from_static(
1442                "/nominal.nova.v1.AppVersionService/GetAppVersion",
1443            );
1444            let mut req = request.into_request();
1445            req.extensions_mut()
1446                .insert(
1447                    GrpcMethod::new("nominal.nova.v1.AppVersionService", "GetAppVersion"),
1448                );
1449            self.inner.unary(req, path, codec).await
1450        }
1451        pub async fn update_app_version(
1452            &mut self,
1453            request: impl tonic::IntoRequest<super::UpdateAppVersionRequest>,
1454        ) -> std::result::Result<
1455            tonic::Response<super::UpdateAppVersionResponse>,
1456            tonic::Status,
1457        > {
1458            self.inner
1459                .ready()
1460                .await
1461                .map_err(|e| {
1462                    tonic::Status::unknown(
1463                        format!("Service was not ready: {}", e.into()),
1464                    )
1465                })?;
1466            let codec = tonic::codec::ProstCodec::default();
1467            let path = http::uri::PathAndQuery::from_static(
1468                "/nominal.nova.v1.AppVersionService/UpdateAppVersion",
1469            );
1470            let mut req = request.into_request();
1471            req.extensions_mut()
1472                .insert(
1473                    GrpcMethod::new(
1474                        "nominal.nova.v1.AppVersionService",
1475                        "UpdateAppVersion",
1476                    ),
1477                );
1478            self.inner.unary(req, path, codec).await
1479        }
1480        pub async fn delete_app_version(
1481            &mut self,
1482            request: impl tonic::IntoRequest<super::DeleteAppVersionRequest>,
1483        ) -> std::result::Result<
1484            tonic::Response<super::DeleteAppVersionResponse>,
1485            tonic::Status,
1486        > {
1487            self.inner
1488                .ready()
1489                .await
1490                .map_err(|e| {
1491                    tonic::Status::unknown(
1492                        format!("Service was not ready: {}", e.into()),
1493                    )
1494                })?;
1495            let codec = tonic::codec::ProstCodec::default();
1496            let path = http::uri::PathAndQuery::from_static(
1497                "/nominal.nova.v1.AppVersionService/DeleteAppVersion",
1498            );
1499            let mut req = request.into_request();
1500            req.extensions_mut()
1501                .insert(
1502                    GrpcMethod::new(
1503                        "nominal.nova.v1.AppVersionService",
1504                        "DeleteAppVersion",
1505                    ),
1506                );
1507            self.inner.unary(req, path, codec).await
1508        }
1509        pub async fn release_app_version(
1510            &mut self,
1511            request: impl tonic::IntoRequest<super::ReleaseAppVersionRequest>,
1512        ) -> std::result::Result<
1513            tonic::Response<super::ReleaseAppVersionResponse>,
1514            tonic::Status,
1515        > {
1516            self.inner
1517                .ready()
1518                .await
1519                .map_err(|e| {
1520                    tonic::Status::unknown(
1521                        format!("Service was not ready: {}", e.into()),
1522                    )
1523                })?;
1524            let codec = tonic::codec::ProstCodec::default();
1525            let path = http::uri::PathAndQuery::from_static(
1526                "/nominal.nova.v1.AppVersionService/ReleaseAppVersion",
1527            );
1528            let mut req = request.into_request();
1529            req.extensions_mut()
1530                .insert(
1531                    GrpcMethod::new(
1532                        "nominal.nova.v1.AppVersionService",
1533                        "ReleaseAppVersion",
1534                    ),
1535                );
1536            self.inner.unary(req, path, codec).await
1537        }
1538        pub async fn archive_app_version(
1539            &mut self,
1540            request: impl tonic::IntoRequest<super::ArchiveAppVersionRequest>,
1541        ) -> std::result::Result<
1542            tonic::Response<super::ArchiveAppVersionResponse>,
1543            tonic::Status,
1544        > {
1545            self.inner
1546                .ready()
1547                .await
1548                .map_err(|e| {
1549                    tonic::Status::unknown(
1550                        format!("Service was not ready: {}", e.into()),
1551                    )
1552                })?;
1553            let codec = tonic::codec::ProstCodec::default();
1554            let path = http::uri::PathAndQuery::from_static(
1555                "/nominal.nova.v1.AppVersionService/ArchiveAppVersion",
1556            );
1557            let mut req = request.into_request();
1558            req.extensions_mut()
1559                .insert(
1560                    GrpcMethod::new(
1561                        "nominal.nova.v1.AppVersionService",
1562                        "ArchiveAppVersion",
1563                    ),
1564                );
1565            self.inner.unary(req, path, codec).await
1566        }
1567        pub async fn unarchive_app_version(
1568            &mut self,
1569            request: impl tonic::IntoRequest<super::UnarchiveAppVersionRequest>,
1570        ) -> std::result::Result<
1571            tonic::Response<super::UnarchiveAppVersionResponse>,
1572            tonic::Status,
1573        > {
1574            self.inner
1575                .ready()
1576                .await
1577                .map_err(|e| {
1578                    tonic::Status::unknown(
1579                        format!("Service was not ready: {}", e.into()),
1580                    )
1581                })?;
1582            let codec = tonic::codec::ProstCodec::default();
1583            let path = http::uri::PathAndQuery::from_static(
1584                "/nominal.nova.v1.AppVersionService/UnarchiveAppVersion",
1585            );
1586            let mut req = request.into_request();
1587            req.extensions_mut()
1588                .insert(
1589                    GrpcMethod::new(
1590                        "nominal.nova.v1.AppVersionService",
1591                        "UnarchiveAppVersion",
1592                    ),
1593                );
1594            self.inner.unary(req, path, codec).await
1595        }
1596        pub async fn search_app_versions(
1597            &mut self,
1598            request: impl tonic::IntoRequest<super::SearchAppVersionsRequest>,
1599        ) -> std::result::Result<
1600            tonic::Response<super::SearchAppVersionsResponse>,
1601            tonic::Status,
1602        > {
1603            self.inner
1604                .ready()
1605                .await
1606                .map_err(|e| {
1607                    tonic::Status::unknown(
1608                        format!("Service was not ready: {}", e.into()),
1609                    )
1610                })?;
1611            let codec = tonic::codec::ProstCodec::default();
1612            let path = http::uri::PathAndQuery::from_static(
1613                "/nominal.nova.v1.AppVersionService/SearchAppVersions",
1614            );
1615            let mut req = request.into_request();
1616            req.extensions_mut()
1617                .insert(
1618                    GrpcMethod::new(
1619                        "nominal.nova.v1.AppVersionService",
1620                        "SearchAppVersions",
1621                    ),
1622                );
1623            self.inner.unary(req, path, codec).await
1624        }
1625    }
1626}
1627#[derive(Clone, PartialEq, ::prost::Message)]
1628pub struct KeyValueEntry {
1629    #[prost(string, tag = "1")]
1630    pub app_rid: ::prost::alloc::string::String,
1631    #[prost(string, tag = "2")]
1632    pub key: ::prost::alloc::string::String,
1633    #[prost(message, optional, tag = "3")]
1634    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1635    #[prost(message, optional, tag = "4")]
1636    pub created_at: ::core::option::Option<
1637        super::super::super::google::protobuf::Timestamp,
1638    >,
1639    #[prost(message, optional, tag = "5")]
1640    pub updated_at: ::core::option::Option<
1641        super::super::super::google::protobuf::Timestamp,
1642    >,
1643    #[prost(int64, tag = "6")]
1644    pub version: i64,
1645}
1646#[derive(Clone, PartialEq, ::prost::Message)]
1647pub struct CreateKeyValueEntryRequest {
1648    #[prost(string, tag = "1")]
1649    pub app_rid: ::prost::alloc::string::String,
1650    #[prost(string, tag = "2")]
1651    pub key: ::prost::alloc::string::String,
1652    #[prost(message, optional, tag = "3")]
1653    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1654}
1655#[derive(Clone, PartialEq, ::prost::Message)]
1656pub struct CreateKeyValueEntryResponse {
1657    #[prost(message, optional, tag = "1")]
1658    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1659}
1660#[derive(Clone, PartialEq, ::prost::Message)]
1661pub struct UpdateKeyValueEntryRequest {
1662    #[prost(string, tag = "1")]
1663    pub app_rid: ::prost::alloc::string::String,
1664    #[prost(string, tag = "2")]
1665    pub key: ::prost::alloc::string::String,
1666    #[prost(message, optional, tag = "3")]
1667    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1668    #[prost(int64, optional, tag = "4")]
1669    pub expected_version: ::core::option::Option<i64>,
1670}
1671#[derive(Clone, PartialEq, ::prost::Message)]
1672pub struct UpdateKeyValueEntryResponse {
1673    #[prost(message, optional, tag = "1")]
1674    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1675}
1676#[derive(Clone, PartialEq, ::prost::Message)]
1677pub struct GetKeyValueEntryRequest {
1678    #[prost(string, tag = "1")]
1679    pub app_rid: ::prost::alloc::string::String,
1680    #[prost(string, tag = "2")]
1681    pub key: ::prost::alloc::string::String,
1682}
1683#[derive(Clone, PartialEq, ::prost::Message)]
1684pub struct GetKeyValueEntryResponse {
1685    #[prost(message, optional, tag = "1")]
1686    pub key_value_entry: ::core::option::Option<KeyValueEntry>,
1687}
1688#[derive(Clone, PartialEq, ::prost::Message)]
1689pub struct DeleteKeyValueEntryRequest {
1690    #[prost(string, tag = "1")]
1691    pub app_rid: ::prost::alloc::string::String,
1692    #[prost(string, tag = "2")]
1693    pub key: ::prost::alloc::string::String,
1694}
1695#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1696pub struct DeleteKeyValueEntryResponse {}
1697#[derive(Clone, PartialEq, ::prost::Message)]
1698pub struct BatchGetKeyValueEntriesRequest {
1699    #[prost(string, tag = "1")]
1700    pub app_rid: ::prost::alloc::string::String,
1701    #[prost(string, repeated, tag = "2")]
1702    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1703}
1704#[derive(Clone, PartialEq, ::prost::Message)]
1705pub struct BatchGetKeyValueEntriesResponse {
1706    #[prost(message, repeated, tag = "1")]
1707    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1708}
1709#[derive(Clone, PartialEq, ::prost::Message)]
1710pub struct BatchCreateKeyValueEntriesRequest {
1711    #[prost(string, tag = "1")]
1712    pub app_rid: ::prost::alloc::string::String,
1713    #[prost(message, repeated, tag = "2")]
1714    pub writes: ::prost::alloc::vec::Vec<KeyValueEntryWrite>,
1715}
1716#[derive(Clone, PartialEq, ::prost::Message)]
1717pub struct BatchCreateKeyValueEntriesResponse {
1718    #[prost(message, repeated, tag = "1")]
1719    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1720}
1721#[derive(Clone, PartialEq, ::prost::Message)]
1722pub struct KeyValueEntryWrite {
1723    #[prost(string, tag = "1")]
1724    pub key: ::prost::alloc::string::String,
1725    #[prost(message, optional, tag = "2")]
1726    pub value: ::core::option::Option<super::super::super::google::protobuf::Value>,
1727    #[prost(int64, optional, tag = "3")]
1728    pub expected_version: ::core::option::Option<i64>,
1729}
1730#[derive(Clone, PartialEq, ::prost::Message)]
1731pub struct BatchUpdateKeyValueEntriesRequest {
1732    #[prost(string, tag = "1")]
1733    pub app_rid: ::prost::alloc::string::String,
1734    #[prost(message, repeated, tag = "2")]
1735    pub writes: ::prost::alloc::vec::Vec<KeyValueEntryWrite>,
1736}
1737#[derive(Clone, PartialEq, ::prost::Message)]
1738pub struct BatchUpdateKeyValueEntriesResponse {
1739    #[prost(message, repeated, tag = "1")]
1740    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1741}
1742#[derive(Clone, PartialEq, ::prost::Message)]
1743pub struct BatchDeleteKeyValueEntriesRequest {
1744    #[prost(string, tag = "1")]
1745    pub app_rid: ::prost::alloc::string::String,
1746    #[prost(string, repeated, tag = "2")]
1747    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1748}
1749#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1750pub struct BatchDeleteKeyValueEntriesResponse {}
1751#[derive(Clone, PartialEq, ::prost::Message)]
1752pub struct SearchKeyValueEntriesRequest {
1753    #[prost(string, tag = "1")]
1754    pub app_rid: ::prost::alloc::string::String,
1755    #[prost(string, optional, tag = "2")]
1756    pub key_prefix: ::core::option::Option<::prost::alloc::string::String>,
1757    #[prost(int32, optional, tag = "3")]
1758    pub page_size: ::core::option::Option<i32>,
1759    #[prost(string, optional, tag = "4")]
1760    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1761}
1762#[derive(Clone, PartialEq, ::prost::Message)]
1763pub struct SearchKeyValueEntriesResponse {
1764    #[prost(message, repeated, tag = "1")]
1765    pub key_value_entries: ::prost::alloc::vec::Vec<KeyValueEntry>,
1766    #[prost(string, optional, tag = "2")]
1767    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1768}
1769#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1770#[repr(i32)]
1771pub enum NovaKeyValueError {
1772    VersionConflict = 0,
1773    QuotaExceeded = 1,
1774    RateLimited = 2,
1775    AppArchived = 3,
1776    ValueTooLarge = 4,
1777    EntryAlreadyExists = 6,
1778    EntryNotFound = 5,
1779}
1780impl NovaKeyValueError {
1781    /// String value of the enum field names used in the ProtoBuf definition.
1782    ///
1783    /// The values are not transformed in any way and thus are considered stable
1784    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1785    pub fn as_str_name(&self) -> &'static str {
1786        match self {
1787            Self::VersionConflict => "NOVA_KEY_VALUE_ERROR_VERSION_CONFLICT",
1788            Self::QuotaExceeded => "NOVA_KEY_VALUE_ERROR_QUOTA_EXCEEDED",
1789            Self::RateLimited => "NOVA_KEY_VALUE_ERROR_RATE_LIMITED",
1790            Self::AppArchived => "NOVA_KEY_VALUE_ERROR_APP_ARCHIVED",
1791            Self::ValueTooLarge => "NOVA_KEY_VALUE_ERROR_VALUE_TOO_LARGE",
1792            Self::EntryAlreadyExists => "NOVA_KEY_VALUE_ERROR_ENTRY_ALREADY_EXISTS",
1793            Self::EntryNotFound => "NOVA_KEY_VALUE_ERROR_ENTRY_NOT_FOUND",
1794        }
1795    }
1796    /// Creates an enum from field names used in the ProtoBuf definition.
1797    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1798        match value {
1799            "NOVA_KEY_VALUE_ERROR_VERSION_CONFLICT" => Some(Self::VersionConflict),
1800            "NOVA_KEY_VALUE_ERROR_QUOTA_EXCEEDED" => Some(Self::QuotaExceeded),
1801            "NOVA_KEY_VALUE_ERROR_RATE_LIMITED" => Some(Self::RateLimited),
1802            "NOVA_KEY_VALUE_ERROR_APP_ARCHIVED" => Some(Self::AppArchived),
1803            "NOVA_KEY_VALUE_ERROR_VALUE_TOO_LARGE" => Some(Self::ValueTooLarge),
1804            "NOVA_KEY_VALUE_ERROR_ENTRY_ALREADY_EXISTS" => Some(Self::EntryAlreadyExists),
1805            "NOVA_KEY_VALUE_ERROR_ENTRY_NOT_FOUND" => Some(Self::EntryNotFound),
1806            _ => None,
1807        }
1808    }
1809}
1810/// Generated client implementations.
1811pub mod nova_key_value_service_client {
1812    #![allow(
1813        unused_variables,
1814        dead_code,
1815        missing_docs,
1816        clippy::wildcard_imports,
1817        clippy::let_unit_value,
1818    )]
1819    use tonic::codegen::*;
1820    use tonic::codegen::http::Uri;
1821    #[derive(Debug, Clone)]
1822    pub struct NovaKeyValueServiceClient<T> {
1823        inner: tonic::client::Grpc<T>,
1824    }
1825    impl NovaKeyValueServiceClient<tonic::transport::Channel> {
1826        /// Attempt to create a new client by connecting to a given endpoint.
1827        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1828        where
1829            D: TryInto<tonic::transport::Endpoint>,
1830            D::Error: Into<StdError>,
1831        {
1832            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1833            Ok(Self::new(conn))
1834        }
1835    }
1836    impl<T> NovaKeyValueServiceClient<T>
1837    where
1838        T: tonic::client::GrpcService<tonic::body::Body>,
1839        T::Error: Into<StdError>,
1840        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1841        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1842    {
1843        pub fn new(inner: T) -> Self {
1844            let inner = tonic::client::Grpc::new(inner);
1845            Self { inner }
1846        }
1847        pub fn with_origin(inner: T, origin: Uri) -> Self {
1848            let inner = tonic::client::Grpc::with_origin(inner, origin);
1849            Self { inner }
1850        }
1851        pub fn with_interceptor<F>(
1852            inner: T,
1853            interceptor: F,
1854        ) -> NovaKeyValueServiceClient<InterceptedService<T, F>>
1855        where
1856            F: tonic::service::Interceptor,
1857            T::ResponseBody: Default,
1858            T: tonic::codegen::Service<
1859                http::Request<tonic::body::Body>,
1860                Response = http::Response<
1861                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1862                >,
1863            >,
1864            <T as tonic::codegen::Service<
1865                http::Request<tonic::body::Body>,
1866            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1867        {
1868            NovaKeyValueServiceClient::new(InterceptedService::new(inner, interceptor))
1869        }
1870        /// Compress requests with the given encoding.
1871        ///
1872        /// This requires the server to support it otherwise it might respond with an
1873        /// error.
1874        #[must_use]
1875        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1876            self.inner = self.inner.send_compressed(encoding);
1877            self
1878        }
1879        /// Enable decompressing responses.
1880        #[must_use]
1881        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1882            self.inner = self.inner.accept_compressed(encoding);
1883            self
1884        }
1885        /// Limits the maximum size of a decoded message.
1886        ///
1887        /// Default: `4MB`
1888        #[must_use]
1889        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1890            self.inner = self.inner.max_decoding_message_size(limit);
1891            self
1892        }
1893        /// Limits the maximum size of an encoded message.
1894        ///
1895        /// Default: `usize::MAX`
1896        #[must_use]
1897        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1898            self.inner = self.inner.max_encoding_message_size(limit);
1899            self
1900        }
1901        pub async fn create_key_value_entry(
1902            &mut self,
1903            request: impl tonic::IntoRequest<super::CreateKeyValueEntryRequest>,
1904        ) -> std::result::Result<
1905            tonic::Response<super::CreateKeyValueEntryResponse>,
1906            tonic::Status,
1907        > {
1908            self.inner
1909                .ready()
1910                .await
1911                .map_err(|e| {
1912                    tonic::Status::unknown(
1913                        format!("Service was not ready: {}", e.into()),
1914                    )
1915                })?;
1916            let codec = tonic::codec::ProstCodec::default();
1917            let path = http::uri::PathAndQuery::from_static(
1918                "/nominal.nova.v1.NovaKeyValueService/CreateKeyValueEntry",
1919            );
1920            let mut req = request.into_request();
1921            req.extensions_mut()
1922                .insert(
1923                    GrpcMethod::new(
1924                        "nominal.nova.v1.NovaKeyValueService",
1925                        "CreateKeyValueEntry",
1926                    ),
1927                );
1928            self.inner.unary(req, path, codec).await
1929        }
1930        pub async fn update_key_value_entry(
1931            &mut self,
1932            request: impl tonic::IntoRequest<super::UpdateKeyValueEntryRequest>,
1933        ) -> std::result::Result<
1934            tonic::Response<super::UpdateKeyValueEntryResponse>,
1935            tonic::Status,
1936        > {
1937            self.inner
1938                .ready()
1939                .await
1940                .map_err(|e| {
1941                    tonic::Status::unknown(
1942                        format!("Service was not ready: {}", e.into()),
1943                    )
1944                })?;
1945            let codec = tonic::codec::ProstCodec::default();
1946            let path = http::uri::PathAndQuery::from_static(
1947                "/nominal.nova.v1.NovaKeyValueService/UpdateKeyValueEntry",
1948            );
1949            let mut req = request.into_request();
1950            req.extensions_mut()
1951                .insert(
1952                    GrpcMethod::new(
1953                        "nominal.nova.v1.NovaKeyValueService",
1954                        "UpdateKeyValueEntry",
1955                    ),
1956                );
1957            self.inner.unary(req, path, codec).await
1958        }
1959        pub async fn get_key_value_entry(
1960            &mut self,
1961            request: impl tonic::IntoRequest<super::GetKeyValueEntryRequest>,
1962        ) -> std::result::Result<
1963            tonic::Response<super::GetKeyValueEntryResponse>,
1964            tonic::Status,
1965        > {
1966            self.inner
1967                .ready()
1968                .await
1969                .map_err(|e| {
1970                    tonic::Status::unknown(
1971                        format!("Service was not ready: {}", e.into()),
1972                    )
1973                })?;
1974            let codec = tonic::codec::ProstCodec::default();
1975            let path = http::uri::PathAndQuery::from_static(
1976                "/nominal.nova.v1.NovaKeyValueService/GetKeyValueEntry",
1977            );
1978            let mut req = request.into_request();
1979            req.extensions_mut()
1980                .insert(
1981                    GrpcMethod::new(
1982                        "nominal.nova.v1.NovaKeyValueService",
1983                        "GetKeyValueEntry",
1984                    ),
1985                );
1986            self.inner.unary(req, path, codec).await
1987        }
1988        pub async fn delete_key_value_entry(
1989            &mut self,
1990            request: impl tonic::IntoRequest<super::DeleteKeyValueEntryRequest>,
1991        ) -> std::result::Result<
1992            tonic::Response<super::DeleteKeyValueEntryResponse>,
1993            tonic::Status,
1994        > {
1995            self.inner
1996                .ready()
1997                .await
1998                .map_err(|e| {
1999                    tonic::Status::unknown(
2000                        format!("Service was not ready: {}", e.into()),
2001                    )
2002                })?;
2003            let codec = tonic::codec::ProstCodec::default();
2004            let path = http::uri::PathAndQuery::from_static(
2005                "/nominal.nova.v1.NovaKeyValueService/DeleteKeyValueEntry",
2006            );
2007            let mut req = request.into_request();
2008            req.extensions_mut()
2009                .insert(
2010                    GrpcMethod::new(
2011                        "nominal.nova.v1.NovaKeyValueService",
2012                        "DeleteKeyValueEntry",
2013                    ),
2014                );
2015            self.inner.unary(req, path, codec).await
2016        }
2017        pub async fn batch_get_key_value_entries(
2018            &mut self,
2019            request: impl tonic::IntoRequest<super::BatchGetKeyValueEntriesRequest>,
2020        ) -> std::result::Result<
2021            tonic::Response<super::BatchGetKeyValueEntriesResponse>,
2022            tonic::Status,
2023        > {
2024            self.inner
2025                .ready()
2026                .await
2027                .map_err(|e| {
2028                    tonic::Status::unknown(
2029                        format!("Service was not ready: {}", e.into()),
2030                    )
2031                })?;
2032            let codec = tonic::codec::ProstCodec::default();
2033            let path = http::uri::PathAndQuery::from_static(
2034                "/nominal.nova.v1.NovaKeyValueService/BatchGetKeyValueEntries",
2035            );
2036            let mut req = request.into_request();
2037            req.extensions_mut()
2038                .insert(
2039                    GrpcMethod::new(
2040                        "nominal.nova.v1.NovaKeyValueService",
2041                        "BatchGetKeyValueEntries",
2042                    ),
2043                );
2044            self.inner.unary(req, path, codec).await
2045        }
2046        pub async fn batch_create_key_value_entries(
2047            &mut self,
2048            request: impl tonic::IntoRequest<super::BatchCreateKeyValueEntriesRequest>,
2049        ) -> std::result::Result<
2050            tonic::Response<super::BatchCreateKeyValueEntriesResponse>,
2051            tonic::Status,
2052        > {
2053            self.inner
2054                .ready()
2055                .await
2056                .map_err(|e| {
2057                    tonic::Status::unknown(
2058                        format!("Service was not ready: {}", e.into()),
2059                    )
2060                })?;
2061            let codec = tonic::codec::ProstCodec::default();
2062            let path = http::uri::PathAndQuery::from_static(
2063                "/nominal.nova.v1.NovaKeyValueService/BatchCreateKeyValueEntries",
2064            );
2065            let mut req = request.into_request();
2066            req.extensions_mut()
2067                .insert(
2068                    GrpcMethod::new(
2069                        "nominal.nova.v1.NovaKeyValueService",
2070                        "BatchCreateKeyValueEntries",
2071                    ),
2072                );
2073            self.inner.unary(req, path, codec).await
2074        }
2075        pub async fn batch_update_key_value_entries(
2076            &mut self,
2077            request: impl tonic::IntoRequest<super::BatchUpdateKeyValueEntriesRequest>,
2078        ) -> std::result::Result<
2079            tonic::Response<super::BatchUpdateKeyValueEntriesResponse>,
2080            tonic::Status,
2081        > {
2082            self.inner
2083                .ready()
2084                .await
2085                .map_err(|e| {
2086                    tonic::Status::unknown(
2087                        format!("Service was not ready: {}", e.into()),
2088                    )
2089                })?;
2090            let codec = tonic::codec::ProstCodec::default();
2091            let path = http::uri::PathAndQuery::from_static(
2092                "/nominal.nova.v1.NovaKeyValueService/BatchUpdateKeyValueEntries",
2093            );
2094            let mut req = request.into_request();
2095            req.extensions_mut()
2096                .insert(
2097                    GrpcMethod::new(
2098                        "nominal.nova.v1.NovaKeyValueService",
2099                        "BatchUpdateKeyValueEntries",
2100                    ),
2101                );
2102            self.inner.unary(req, path, codec).await
2103        }
2104        pub async fn batch_delete_key_value_entries(
2105            &mut self,
2106            request: impl tonic::IntoRequest<super::BatchDeleteKeyValueEntriesRequest>,
2107        ) -> std::result::Result<
2108            tonic::Response<super::BatchDeleteKeyValueEntriesResponse>,
2109            tonic::Status,
2110        > {
2111            self.inner
2112                .ready()
2113                .await
2114                .map_err(|e| {
2115                    tonic::Status::unknown(
2116                        format!("Service was not ready: {}", e.into()),
2117                    )
2118                })?;
2119            let codec = tonic::codec::ProstCodec::default();
2120            let path = http::uri::PathAndQuery::from_static(
2121                "/nominal.nova.v1.NovaKeyValueService/BatchDeleteKeyValueEntries",
2122            );
2123            let mut req = request.into_request();
2124            req.extensions_mut()
2125                .insert(
2126                    GrpcMethod::new(
2127                        "nominal.nova.v1.NovaKeyValueService",
2128                        "BatchDeleteKeyValueEntries",
2129                    ),
2130                );
2131            self.inner.unary(req, path, codec).await
2132        }
2133        pub async fn search_key_value_entries(
2134            &mut self,
2135            request: impl tonic::IntoRequest<super::SearchKeyValueEntriesRequest>,
2136        ) -> std::result::Result<
2137            tonic::Response<super::SearchKeyValueEntriesResponse>,
2138            tonic::Status,
2139        > {
2140            self.inner
2141                .ready()
2142                .await
2143                .map_err(|e| {
2144                    tonic::Status::unknown(
2145                        format!("Service was not ready: {}", e.into()),
2146                    )
2147                })?;
2148            let codec = tonic::codec::ProstCodec::default();
2149            let path = http::uri::PathAndQuery::from_static(
2150                "/nominal.nova.v1.NovaKeyValueService/SearchKeyValueEntries",
2151            );
2152            let mut req = request.into_request();
2153            req.extensions_mut()
2154                .insert(
2155                    GrpcMethod::new(
2156                        "nominal.nova.v1.NovaKeyValueService",
2157                        "SearchKeyValueEntries",
2158                    ),
2159                );
2160            self.inner.unary(req, path, codec).await
2161        }
2162    }
2163}
2164#[derive(Clone, PartialEq, ::prost::Message)]
2165pub struct ProxyHeader {
2166    #[prost(string, tag = "1")]
2167    pub name: ::prost::alloc::string::String,
2168    #[prost(string, tag = "2")]
2169    pub value: ::prost::alloc::string::String,
2170}
2171#[derive(Clone, PartialEq, ::prost::Message)]
2172pub struct CallApiProxyRequest {
2173    #[prost(string, tag = "1")]
2174    pub app_rid: ::prost::alloc::string::String,
2175    #[prost(string, tag = "2")]
2176    pub api_proxy_rid: ::prost::alloc::string::String,
2177    #[prost(enumeration = "ProxyHttpMethod", tag = "3")]
2178    pub method: i32,
2179    #[prost(string, tag = "4")]
2180    pub path: ::prost::alloc::string::String,
2181    #[prost(string, tag = "5")]
2182    pub query: ::prost::alloc::string::String,
2183    #[prost(message, repeated, tag = "6")]
2184    pub headers: ::prost::alloc::vec::Vec<ProxyHeader>,
2185    #[prost(bytes = "vec", tag = "7")]
2186    pub body: ::prost::alloc::vec::Vec<u8>,
2187}
2188#[derive(Clone, PartialEq, ::prost::Message)]
2189pub struct CallApiProxyResponse {
2190    #[prost(int32, tag = "1")]
2191    pub status_code: i32,
2192    #[prost(message, repeated, tag = "2")]
2193    pub headers: ::prost::alloc::vec::Vec<ProxyHeader>,
2194    #[prost(bytes = "vec", tag = "3")]
2195    pub body: ::prost::alloc::vec::Vec<u8>,
2196}
2197#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2198#[repr(i32)]
2199pub enum ProxyHttpMethod {
2200    Unspecified = 0,
2201    Get = 1,
2202    Head = 2,
2203    Post = 3,
2204    Put = 4,
2205    Patch = 5,
2206    Delete = 6,
2207}
2208impl ProxyHttpMethod {
2209    /// String value of the enum field names used in the ProtoBuf definition.
2210    ///
2211    /// The values are not transformed in any way and thus are considered stable
2212    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2213    pub fn as_str_name(&self) -> &'static str {
2214        match self {
2215            Self::Unspecified => "PROXY_HTTP_METHOD_UNSPECIFIED",
2216            Self::Get => "PROXY_HTTP_METHOD_GET",
2217            Self::Head => "PROXY_HTTP_METHOD_HEAD",
2218            Self::Post => "PROXY_HTTP_METHOD_POST",
2219            Self::Put => "PROXY_HTTP_METHOD_PUT",
2220            Self::Patch => "PROXY_HTTP_METHOD_PATCH",
2221            Self::Delete => "PROXY_HTTP_METHOD_DELETE",
2222        }
2223    }
2224    /// Creates an enum from field names used in the ProtoBuf definition.
2225    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2226        match value {
2227            "PROXY_HTTP_METHOD_UNSPECIFIED" => Some(Self::Unspecified),
2228            "PROXY_HTTP_METHOD_GET" => Some(Self::Get),
2229            "PROXY_HTTP_METHOD_HEAD" => Some(Self::Head),
2230            "PROXY_HTTP_METHOD_POST" => Some(Self::Post),
2231            "PROXY_HTTP_METHOD_PUT" => Some(Self::Put),
2232            "PROXY_HTTP_METHOD_PATCH" => Some(Self::Patch),
2233            "PROXY_HTTP_METHOD_DELETE" => Some(Self::Delete),
2234            _ => None,
2235        }
2236    }
2237}
2238/// Generated client implementations.
2239pub mod nova_proxy_service_client {
2240    #![allow(
2241        unused_variables,
2242        dead_code,
2243        missing_docs,
2244        clippy::wildcard_imports,
2245        clippy::let_unit_value,
2246    )]
2247    use tonic::codegen::*;
2248    use tonic::codegen::http::Uri;
2249    #[derive(Debug, Clone)]
2250    pub struct NovaProxyServiceClient<T> {
2251        inner: tonic::client::Grpc<T>,
2252    }
2253    impl NovaProxyServiceClient<tonic::transport::Channel> {
2254        /// Attempt to create a new client by connecting to a given endpoint.
2255        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2256        where
2257            D: TryInto<tonic::transport::Endpoint>,
2258            D::Error: Into<StdError>,
2259        {
2260            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2261            Ok(Self::new(conn))
2262        }
2263    }
2264    impl<T> NovaProxyServiceClient<T>
2265    where
2266        T: tonic::client::GrpcService<tonic::body::Body>,
2267        T::Error: Into<StdError>,
2268        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2269        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2270    {
2271        pub fn new(inner: T) -> Self {
2272            let inner = tonic::client::Grpc::new(inner);
2273            Self { inner }
2274        }
2275        pub fn with_origin(inner: T, origin: Uri) -> Self {
2276            let inner = tonic::client::Grpc::with_origin(inner, origin);
2277            Self { inner }
2278        }
2279        pub fn with_interceptor<F>(
2280            inner: T,
2281            interceptor: F,
2282        ) -> NovaProxyServiceClient<InterceptedService<T, F>>
2283        where
2284            F: tonic::service::Interceptor,
2285            T::ResponseBody: Default,
2286            T: tonic::codegen::Service<
2287                http::Request<tonic::body::Body>,
2288                Response = http::Response<
2289                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
2290                >,
2291            >,
2292            <T as tonic::codegen::Service<
2293                http::Request<tonic::body::Body>,
2294            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2295        {
2296            NovaProxyServiceClient::new(InterceptedService::new(inner, interceptor))
2297        }
2298        /// Compress requests with the given encoding.
2299        ///
2300        /// This requires the server to support it otherwise it might respond with an
2301        /// error.
2302        #[must_use]
2303        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2304            self.inner = self.inner.send_compressed(encoding);
2305            self
2306        }
2307        /// Enable decompressing responses.
2308        #[must_use]
2309        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2310            self.inner = self.inner.accept_compressed(encoding);
2311            self
2312        }
2313        /// Limits the maximum size of a decoded message.
2314        ///
2315        /// Default: `4MB`
2316        #[must_use]
2317        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2318            self.inner = self.inner.max_decoding_message_size(limit);
2319            self
2320        }
2321        /// Limits the maximum size of an encoded message.
2322        ///
2323        /// Default: `usize::MAX`
2324        #[must_use]
2325        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2326            self.inner = self.inner.max_encoding_message_size(limit);
2327            self
2328        }
2329        pub async fn call_api_proxy(
2330            &mut self,
2331            request: impl tonic::IntoRequest<super::CallApiProxyRequest>,
2332        ) -> std::result::Result<
2333            tonic::Response<super::CallApiProxyResponse>,
2334            tonic::Status,
2335        > {
2336            self.inner
2337                .ready()
2338                .await
2339                .map_err(|e| {
2340                    tonic::Status::unknown(
2341                        format!("Service was not ready: {}", e.into()),
2342                    )
2343                })?;
2344            let codec = tonic::codec::ProstCodec::default();
2345            let path = http::uri::PathAndQuery::from_static(
2346                "/nominal.nova.v1.NovaProxyService/CallApiProxy",
2347            );
2348            let mut req = request.into_request();
2349            req.extensions_mut()
2350                .insert(
2351                    GrpcMethod::new("nominal.nova.v1.NovaProxyService", "CallApiProxy"),
2352                );
2353            self.inner.unary(req, path, codec).await
2354        }
2355    }
2356}