Skip to main content

google_cloud_secretmanager_v1/
model.rs

1// Copyright 2024 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Code generated by sidekick. DO NOT EDIT.
16
17#![allow(rustdoc::redundant_explicit_links)]
18#![allow(rustdoc::broken_intra_doc_links)]
19#![no_implicit_prelude]
20extern crate async_trait;
21extern crate bytes;
22extern crate gaxi;
23extern crate google_cloud_gax;
24extern crate google_cloud_iam_v1;
25extern crate google_cloud_location;
26extern crate lazy_static;
27extern crate serde;
28extern crate serde_json;
29extern crate serde_with;
30extern crate std;
31extern crate tracing;
32extern crate wkt;
33
34mod debug;
35mod deserialize;
36mod serialize;
37
38/// A [Secret][google.cloud.secretmanager.v1.Secret] is a logical secret whose
39/// value and versions can be accessed.
40///
41/// A [Secret][google.cloud.secretmanager.v1.Secret] is made up of zero or more
42/// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] that represent
43/// the secret data.
44///
45/// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
46/// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
47#[derive(Clone, Default, PartialEq)]
48#[non_exhaustive]
49pub struct Secret {
50    /// Output only. The resource name of the
51    /// [Secret][google.cloud.secretmanager.v1.Secret] in the format
52    /// `projects/*/secrets/*`.
53    ///
54    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
55    pub name: std::string::String,
56
57    /// Optional. Immutable. The replication policy of the secret data attached to
58    /// the [Secret][google.cloud.secretmanager.v1.Secret].
59    ///
60    /// The replication policy cannot be changed after the Secret has been created.
61    ///
62    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
63    pub replication: std::option::Option<crate::model::Replication>,
64
65    /// Output only. The time at which the
66    /// [Secret][google.cloud.secretmanager.v1.Secret] was created.
67    ///
68    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
69    pub create_time: std::option::Option<wkt::Timestamp>,
70
71    /// The labels assigned to this Secret.
72    ///
73    /// Label keys must be between 1 and 63 characters long, have a UTF-8 encoding
74    /// of maximum 128 bytes, and must conform to the following PCRE regular
75    /// expression: `[\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62}`
76    ///
77    /// Label values must be between 0 and 63 characters long, have a UTF-8
78    /// encoding of maximum 128 bytes, and must conform to the following PCRE
79    /// regular expression: `[\p{Ll}\p{Lo}\p{N}_-]{0,63}`
80    ///
81    /// No more than 64 labels can be assigned to a given resource.
82    pub labels: std::collections::HashMap<std::string::String, std::string::String>,
83
84    /// Optional. A list of up to 10 Pub/Sub topics to which messages are published
85    /// when control plane operations are called on the secret or its versions.
86    pub topics: std::vec::Vec<crate::model::Topic>,
87
88    /// Optional. Etag of the currently stored
89    /// [Secret][google.cloud.secretmanager.v1.Secret].
90    ///
91    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
92    pub etag: std::string::String,
93
94    /// Optional. Rotation policy attached to the
95    /// [Secret][google.cloud.secretmanager.v1.Secret]. May be excluded if there is
96    /// no rotation policy.
97    ///
98    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
99    pub rotation: std::option::Option<crate::model::Rotation>,
100
101    /// Optional. Mapping from version alias to version name.
102    ///
103    /// A version alias is a string with a maximum length of 63 characters and can
104    /// contain uppercase and lowercase letters, numerals, and the hyphen (`-`)
105    /// and underscore ('_') characters. An alias string must start with a
106    /// letter and cannot be the string 'latest' or 'NEW'.
107    /// No more than 50 aliases can be assigned to a given secret.
108    ///
109    /// Version-Alias pairs will be viewable via GetSecret and modifiable via
110    /// UpdateSecret. Access by alias is only be supported on
111    /// GetSecretVersion and AccessSecretVersion.
112    pub version_aliases: std::collections::HashMap<std::string::String, i64>,
113
114    /// Optional. Custom metadata about the secret.
115    ///
116    /// Annotations are distinct from various forms of labels.
117    /// Annotations exist to allow client tools to store their own state
118    /// information without requiring a database.
119    ///
120    /// Annotation keys must be between 1 and 63 characters long, have a UTF-8
121    /// encoding of maximum 128 bytes, begin and end with an alphanumeric character
122    /// ([a-z0-9A-Z]), and may have dashes (-), underscores (_), dots (.), and
123    /// alphanumerics in between these symbols.
124    ///
125    /// The total size of annotation keys and values must be less than 16KiB.
126    pub annotations: std::collections::HashMap<std::string::String, std::string::String>,
127
128    /// Optional. Secret Version TTL after destruction request
129    ///
130    /// This is a part of the Delayed secret version destroy feature.
131    /// For secret with TTL>0, version destruction doesn't happen immediately
132    /// on calling destroy instead the version goes to a disabled state and
133    /// destruction happens after the TTL expires.
134    pub version_destroy_ttl: std::option::Option<wkt::Duration>,
135
136    /// Optional. The customer-managed encryption configuration of the regionalized
137    /// secrets. If no configuration is provided, Google-managed default encryption
138    /// is used.
139    ///
140    /// Updates to the [Secret][google.cloud.secretmanager.v1.Secret] encryption
141    /// configuration only apply to
142    /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] added
143    /// afterwards. They do not apply retroactively to existing
144    /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion].
145    ///
146    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
147    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
148    pub customer_managed_encryption: std::option::Option<crate::model::CustomerManagedEncryption>,
149
150    /// Optional. Input only. Immutable. Mapping of Tag keys/values directly bound
151    /// to this resource. For example:
152    /// "123/environment": "production",
153    /// "123/costCenter": "marketing"
154    ///
155    /// Tags are used to organize and group resources.
156    ///
157    /// Tags can be used to control policy evaluation for the resource.
158    pub tags: std::collections::HashMap<std::string::String, std::string::String>,
159
160    /// Expiration policy attached to the
161    /// [Secret][google.cloud.secretmanager.v1.Secret]. If specified the
162    /// [Secret][google.cloud.secretmanager.v1.Secret] and all
163    /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] will be
164    /// automatically deleted at expiration. Expired secrets are irreversibly
165    /// deleted.
166    ///
167    /// Expiration is *not* the recommended way to set time-based permissions. [IAM
168    /// Conditions](https://cloud.google.com/secret-manager/docs/access-control#conditions)
169    /// is recommended for granting time-based permissions because the operation
170    /// can be reversed.
171    ///
172    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
173    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
174    pub expiration: std::option::Option<crate::model::secret::Expiration>,
175
176    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
177}
178
179impl Secret {
180    pub fn new() -> Self {
181        std::default::Default::default()
182    }
183
184    /// Sets the value of [name][crate::model::Secret::name].
185    ///
186    /// # Example
187    /// ```ignore,no_run
188    /// # use google_cloud_secretmanager_v1::model::Secret;
189    /// let x = Secret::new().set_name("example");
190    /// ```
191    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
192        self.name = v.into();
193        self
194    }
195
196    /// Sets the value of [replication][crate::model::Secret::replication].
197    ///
198    /// # Example
199    /// ```ignore,no_run
200    /// # use google_cloud_secretmanager_v1::model::Secret;
201    /// use google_cloud_secretmanager_v1::model::Replication;
202    /// let x = Secret::new().set_replication(Replication::default()/* use setters */);
203    /// ```
204    pub fn set_replication<T>(mut self, v: T) -> Self
205    where
206        T: std::convert::Into<crate::model::Replication>,
207    {
208        self.replication = std::option::Option::Some(v.into());
209        self
210    }
211
212    /// Sets or clears the value of [replication][crate::model::Secret::replication].
213    ///
214    /// # Example
215    /// ```ignore,no_run
216    /// # use google_cloud_secretmanager_v1::model::Secret;
217    /// use google_cloud_secretmanager_v1::model::Replication;
218    /// let x = Secret::new().set_or_clear_replication(Some(Replication::default()/* use setters */));
219    /// let x = Secret::new().set_or_clear_replication(None::<Replication>);
220    /// ```
221    pub fn set_or_clear_replication<T>(mut self, v: std::option::Option<T>) -> Self
222    where
223        T: std::convert::Into<crate::model::Replication>,
224    {
225        self.replication = v.map(|x| x.into());
226        self
227    }
228
229    /// Sets the value of [create_time][crate::model::Secret::create_time].
230    ///
231    /// # Example
232    /// ```ignore,no_run
233    /// # use google_cloud_secretmanager_v1::model::Secret;
234    /// use wkt::Timestamp;
235    /// let x = Secret::new().set_create_time(Timestamp::default()/* use setters */);
236    /// ```
237    pub fn set_create_time<T>(mut self, v: T) -> Self
238    where
239        T: std::convert::Into<wkt::Timestamp>,
240    {
241        self.create_time = std::option::Option::Some(v.into());
242        self
243    }
244
245    /// Sets or clears the value of [create_time][crate::model::Secret::create_time].
246    ///
247    /// # Example
248    /// ```ignore,no_run
249    /// # use google_cloud_secretmanager_v1::model::Secret;
250    /// use wkt::Timestamp;
251    /// let x = Secret::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
252    /// let x = Secret::new().set_or_clear_create_time(None::<Timestamp>);
253    /// ```
254    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
255    where
256        T: std::convert::Into<wkt::Timestamp>,
257    {
258        self.create_time = v.map(|x| x.into());
259        self
260    }
261
262    /// Sets the value of [labels][crate::model::Secret::labels].
263    ///
264    /// # Example
265    /// ```ignore,no_run
266    /// # use google_cloud_secretmanager_v1::model::Secret;
267    /// let x = Secret::new().set_labels([
268    ///     ("key0", "abc"),
269    ///     ("key1", "xyz"),
270    /// ]);
271    /// ```
272    pub fn set_labels<T, K, V>(mut self, v: T) -> Self
273    where
274        T: std::iter::IntoIterator<Item = (K, V)>,
275        K: std::convert::Into<std::string::String>,
276        V: std::convert::Into<std::string::String>,
277    {
278        use std::iter::Iterator;
279        self.labels = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
280        self
281    }
282
283    /// Sets the value of [topics][crate::model::Secret::topics].
284    ///
285    /// # Example
286    /// ```ignore,no_run
287    /// # use google_cloud_secretmanager_v1::model::Secret;
288    /// use google_cloud_secretmanager_v1::model::Topic;
289    /// let x = Secret::new()
290    ///     .set_topics([
291    ///         Topic::default()/* use setters */,
292    ///         Topic::default()/* use (different) setters */,
293    ///     ]);
294    /// ```
295    pub fn set_topics<T, V>(mut self, v: T) -> Self
296    where
297        T: std::iter::IntoIterator<Item = V>,
298        V: std::convert::Into<crate::model::Topic>,
299    {
300        use std::iter::Iterator;
301        self.topics = v.into_iter().map(|i| i.into()).collect();
302        self
303    }
304
305    /// Sets the value of [etag][crate::model::Secret::etag].
306    ///
307    /// # Example
308    /// ```ignore,no_run
309    /// # use google_cloud_secretmanager_v1::model::Secret;
310    /// let x = Secret::new().set_etag("example");
311    /// ```
312    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
313        self.etag = v.into();
314        self
315    }
316
317    /// Sets the value of [rotation][crate::model::Secret::rotation].
318    ///
319    /// # Example
320    /// ```ignore,no_run
321    /// # use google_cloud_secretmanager_v1::model::Secret;
322    /// use google_cloud_secretmanager_v1::model::Rotation;
323    /// let x = Secret::new().set_rotation(Rotation::default()/* use setters */);
324    /// ```
325    pub fn set_rotation<T>(mut self, v: T) -> Self
326    where
327        T: std::convert::Into<crate::model::Rotation>,
328    {
329        self.rotation = std::option::Option::Some(v.into());
330        self
331    }
332
333    /// Sets or clears the value of [rotation][crate::model::Secret::rotation].
334    ///
335    /// # Example
336    /// ```ignore,no_run
337    /// # use google_cloud_secretmanager_v1::model::Secret;
338    /// use google_cloud_secretmanager_v1::model::Rotation;
339    /// let x = Secret::new().set_or_clear_rotation(Some(Rotation::default()/* use setters */));
340    /// let x = Secret::new().set_or_clear_rotation(None::<Rotation>);
341    /// ```
342    pub fn set_or_clear_rotation<T>(mut self, v: std::option::Option<T>) -> Self
343    where
344        T: std::convert::Into<crate::model::Rotation>,
345    {
346        self.rotation = v.map(|x| x.into());
347        self
348    }
349
350    /// Sets the value of [version_aliases][crate::model::Secret::version_aliases].
351    ///
352    /// # Example
353    /// ```ignore,no_run
354    /// # use google_cloud_secretmanager_v1::model::Secret;
355    /// let x = Secret::new().set_version_aliases([
356    ///     ("key0", 123),
357    ///     ("key1", 456),
358    /// ]);
359    /// ```
360    pub fn set_version_aliases<T, K, V>(mut self, v: T) -> Self
361    where
362        T: std::iter::IntoIterator<Item = (K, V)>,
363        K: std::convert::Into<std::string::String>,
364        V: std::convert::Into<i64>,
365    {
366        use std::iter::Iterator;
367        self.version_aliases = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
368        self
369    }
370
371    /// Sets the value of [annotations][crate::model::Secret::annotations].
372    ///
373    /// # Example
374    /// ```ignore,no_run
375    /// # use google_cloud_secretmanager_v1::model::Secret;
376    /// let x = Secret::new().set_annotations([
377    ///     ("key0", "abc"),
378    ///     ("key1", "xyz"),
379    /// ]);
380    /// ```
381    pub fn set_annotations<T, K, V>(mut self, v: T) -> Self
382    where
383        T: std::iter::IntoIterator<Item = (K, V)>,
384        K: std::convert::Into<std::string::String>,
385        V: std::convert::Into<std::string::String>,
386    {
387        use std::iter::Iterator;
388        self.annotations = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
389        self
390    }
391
392    /// Sets the value of [version_destroy_ttl][crate::model::Secret::version_destroy_ttl].
393    ///
394    /// # Example
395    /// ```ignore,no_run
396    /// # use google_cloud_secretmanager_v1::model::Secret;
397    /// use wkt::Duration;
398    /// let x = Secret::new().set_version_destroy_ttl(Duration::default()/* use setters */);
399    /// ```
400    pub fn set_version_destroy_ttl<T>(mut self, v: T) -> Self
401    where
402        T: std::convert::Into<wkt::Duration>,
403    {
404        self.version_destroy_ttl = std::option::Option::Some(v.into());
405        self
406    }
407
408    /// Sets or clears the value of [version_destroy_ttl][crate::model::Secret::version_destroy_ttl].
409    ///
410    /// # Example
411    /// ```ignore,no_run
412    /// # use google_cloud_secretmanager_v1::model::Secret;
413    /// use wkt::Duration;
414    /// let x = Secret::new().set_or_clear_version_destroy_ttl(Some(Duration::default()/* use setters */));
415    /// let x = Secret::new().set_or_clear_version_destroy_ttl(None::<Duration>);
416    /// ```
417    pub fn set_or_clear_version_destroy_ttl<T>(mut self, v: std::option::Option<T>) -> Self
418    where
419        T: std::convert::Into<wkt::Duration>,
420    {
421        self.version_destroy_ttl = v.map(|x| x.into());
422        self
423    }
424
425    /// Sets the value of [customer_managed_encryption][crate::model::Secret::customer_managed_encryption].
426    ///
427    /// # Example
428    /// ```ignore,no_run
429    /// # use google_cloud_secretmanager_v1::model::Secret;
430    /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryption;
431    /// let x = Secret::new().set_customer_managed_encryption(CustomerManagedEncryption::default()/* use setters */);
432    /// ```
433    pub fn set_customer_managed_encryption<T>(mut self, v: T) -> Self
434    where
435        T: std::convert::Into<crate::model::CustomerManagedEncryption>,
436    {
437        self.customer_managed_encryption = std::option::Option::Some(v.into());
438        self
439    }
440
441    /// Sets or clears the value of [customer_managed_encryption][crate::model::Secret::customer_managed_encryption].
442    ///
443    /// # Example
444    /// ```ignore,no_run
445    /// # use google_cloud_secretmanager_v1::model::Secret;
446    /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryption;
447    /// let x = Secret::new().set_or_clear_customer_managed_encryption(Some(CustomerManagedEncryption::default()/* use setters */));
448    /// let x = Secret::new().set_or_clear_customer_managed_encryption(None::<CustomerManagedEncryption>);
449    /// ```
450    pub fn set_or_clear_customer_managed_encryption<T>(mut self, v: std::option::Option<T>) -> Self
451    where
452        T: std::convert::Into<crate::model::CustomerManagedEncryption>,
453    {
454        self.customer_managed_encryption = v.map(|x| x.into());
455        self
456    }
457
458    /// Sets the value of [tags][crate::model::Secret::tags].
459    ///
460    /// # Example
461    /// ```ignore,no_run
462    /// # use google_cloud_secretmanager_v1::model::Secret;
463    /// let x = Secret::new().set_tags([
464    ///     ("key0", "abc"),
465    ///     ("key1", "xyz"),
466    /// ]);
467    /// ```
468    pub fn set_tags<T, K, V>(mut self, v: T) -> Self
469    where
470        T: std::iter::IntoIterator<Item = (K, V)>,
471        K: std::convert::Into<std::string::String>,
472        V: std::convert::Into<std::string::String>,
473    {
474        use std::iter::Iterator;
475        self.tags = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
476        self
477    }
478
479    /// Sets the value of [expiration][crate::model::Secret::expiration].
480    ///
481    /// Note that all the setters affecting `expiration` are mutually
482    /// exclusive.
483    ///
484    /// # Example
485    /// ```ignore,no_run
486    /// # use google_cloud_secretmanager_v1::model::Secret;
487    /// use wkt::Timestamp;
488    /// let x = Secret::new().set_expiration(Some(
489    ///     google_cloud_secretmanager_v1::model::secret::Expiration::ExpireTime(Timestamp::default().into())));
490    /// ```
491    pub fn set_expiration<
492        T: std::convert::Into<std::option::Option<crate::model::secret::Expiration>>,
493    >(
494        mut self,
495        v: T,
496    ) -> Self {
497        self.expiration = v.into();
498        self
499    }
500
501    /// The value of [expiration][crate::model::Secret::expiration]
502    /// if it holds a `ExpireTime`, `None` if the field is not set or
503    /// holds a different branch.
504    pub fn expire_time(&self) -> std::option::Option<&std::boxed::Box<wkt::Timestamp>> {
505        #[allow(unreachable_patterns)]
506        self.expiration.as_ref().and_then(|v| match v {
507            crate::model::secret::Expiration::ExpireTime(v) => std::option::Option::Some(v),
508            _ => std::option::Option::None,
509        })
510    }
511
512    /// Sets the value of [expiration][crate::model::Secret::expiration]
513    /// to hold a `ExpireTime`.
514    ///
515    /// Note that all the setters affecting `expiration` are
516    /// mutually exclusive.
517    ///
518    /// # Example
519    /// ```ignore,no_run
520    /// # use google_cloud_secretmanager_v1::model::Secret;
521    /// use wkt::Timestamp;
522    /// let x = Secret::new().set_expire_time(Timestamp::default()/* use setters */);
523    /// assert!(x.expire_time().is_some());
524    /// assert!(x.ttl().is_none());
525    /// ```
526    pub fn set_expire_time<T: std::convert::Into<std::boxed::Box<wkt::Timestamp>>>(
527        mut self,
528        v: T,
529    ) -> Self {
530        self.expiration =
531            std::option::Option::Some(crate::model::secret::Expiration::ExpireTime(v.into()));
532        self
533    }
534
535    /// The value of [expiration][crate::model::Secret::expiration]
536    /// if it holds a `Ttl`, `None` if the field is not set or
537    /// holds a different branch.
538    pub fn ttl(&self) -> std::option::Option<&std::boxed::Box<wkt::Duration>> {
539        #[allow(unreachable_patterns)]
540        self.expiration.as_ref().and_then(|v| match v {
541            crate::model::secret::Expiration::Ttl(v) => std::option::Option::Some(v),
542            _ => std::option::Option::None,
543        })
544    }
545
546    /// Sets the value of [expiration][crate::model::Secret::expiration]
547    /// to hold a `Ttl`.
548    ///
549    /// Note that all the setters affecting `expiration` are
550    /// mutually exclusive.
551    ///
552    /// # Example
553    /// ```ignore,no_run
554    /// # use google_cloud_secretmanager_v1::model::Secret;
555    /// use wkt::Duration;
556    /// let x = Secret::new().set_ttl(Duration::default()/* use setters */);
557    /// assert!(x.ttl().is_some());
558    /// assert!(x.expire_time().is_none());
559    /// ```
560    pub fn set_ttl<T: std::convert::Into<std::boxed::Box<wkt::Duration>>>(mut self, v: T) -> Self {
561        self.expiration =
562            std::option::Option::Some(crate::model::secret::Expiration::Ttl(v.into()));
563        self
564    }
565}
566
567impl wkt::message::Message for Secret {
568    fn typename() -> &'static str {
569        "type.googleapis.com/google.cloud.secretmanager.v1.Secret"
570    }
571}
572
573/// Defines additional types related to [Secret].
574pub mod secret {
575    #[allow(unused_imports)]
576    use super::*;
577
578    /// Expiration policy attached to the
579    /// [Secret][google.cloud.secretmanager.v1.Secret]. If specified the
580    /// [Secret][google.cloud.secretmanager.v1.Secret] and all
581    /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] will be
582    /// automatically deleted at expiration. Expired secrets are irreversibly
583    /// deleted.
584    ///
585    /// Expiration is *not* the recommended way to set time-based permissions. [IAM
586    /// Conditions](https://cloud.google.com/secret-manager/docs/access-control#conditions)
587    /// is recommended for granting time-based permissions because the operation
588    /// can be reversed.
589    ///
590    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
591    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
592    #[derive(Clone, Debug, PartialEq)]
593    #[non_exhaustive]
594    pub enum Expiration {
595        /// Optional. Timestamp in UTC when the
596        /// [Secret][google.cloud.secretmanager.v1.Secret] is scheduled to expire.
597        /// This is always provided on output, regardless of what was sent on input.
598        ///
599        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
600        ExpireTime(std::boxed::Box<wkt::Timestamp>),
601        /// Input only. The TTL for the
602        /// [Secret][google.cloud.secretmanager.v1.Secret].
603        ///
604        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
605        Ttl(std::boxed::Box<wkt::Duration>),
606    }
607}
608
609/// A secret version resource in the Secret Manager API.
610#[derive(Clone, Default, PartialEq)]
611#[non_exhaustive]
612pub struct SecretVersion {
613    /// Output only. The resource name of the
614    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
615    /// `projects/*/secrets/*/versions/*`.
616    ///
617    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] IDs in a
618    /// [Secret][google.cloud.secretmanager.v1.Secret] start at 1 and are
619    /// incremented for each subsequent version of the secret.
620    ///
621    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
622    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
623    pub name: std::string::String,
624
625    /// Output only. The time at which the
626    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] was created.
627    ///
628    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
629    pub create_time: std::option::Option<wkt::Timestamp>,
630
631    /// Output only. The time this
632    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] was destroyed.
633    /// Only present if [state][google.cloud.secretmanager.v1.SecretVersion.state]
634    /// is
635    /// [DESTROYED][google.cloud.secretmanager.v1.SecretVersion.State.DESTROYED].
636    ///
637    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
638    /// [google.cloud.secretmanager.v1.SecretVersion.State.DESTROYED]: crate::model::secret_version::State::Destroyed
639    /// [google.cloud.secretmanager.v1.SecretVersion.state]: crate::model::SecretVersion::state
640    pub destroy_time: std::option::Option<wkt::Timestamp>,
641
642    /// Output only. The current state of the
643    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
644    ///
645    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
646    pub state: crate::model::secret_version::State,
647
648    /// The replication status of the
649    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
650    ///
651    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
652    pub replication_status: std::option::Option<crate::model::ReplicationStatus>,
653
654    /// Output only. Etag of the currently stored
655    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
656    ///
657    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
658    pub etag: std::string::String,
659
660    /// Output only. True if payload checksum specified in
661    /// [SecretPayload][google.cloud.secretmanager.v1.SecretPayload] object has
662    /// been received by
663    /// [SecretManagerService][google.cloud.secretmanager.v1.SecretManagerService]
664    /// on
665    /// [SecretManagerService.AddSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion].
666    ///
667    /// [google.cloud.secretmanager.v1.SecretManagerService]: crate::client::SecretManagerService
668    /// [google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion]: crate::client::SecretManagerService::add_secret_version
669    /// [google.cloud.secretmanager.v1.SecretPayload]: crate::model::SecretPayload
670    pub client_specified_payload_checksum: bool,
671
672    /// Optional. Output only. Scheduled destroy time for secret version.
673    /// This is a part of the Delayed secret version destroy feature. For a
674    /// Secret with a valid version destroy TTL, when a secert version is
675    /// destroyed, version is moved to disabled state and it is scheduled for
676    /// destruction Version is destroyed only after the scheduled_destroy_time.
677    pub scheduled_destroy_time: std::option::Option<wkt::Timestamp>,
678
679    /// Output only. The customer-managed encryption status of the
680    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. Only
681    /// populated if customer-managed encryption is used and
682    /// [Secret][google.cloud.secretmanager.v1.Secret] is a regionalized secret.
683    ///
684    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
685    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
686    pub customer_managed_encryption:
687        std::option::Option<crate::model::CustomerManagedEncryptionStatus>,
688
689    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
690}
691
692impl SecretVersion {
693    pub fn new() -> Self {
694        std::default::Default::default()
695    }
696
697    /// Sets the value of [name][crate::model::SecretVersion::name].
698    ///
699    /// # Example
700    /// ```ignore,no_run
701    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
702    /// let x = SecretVersion::new().set_name("example");
703    /// ```
704    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
705        self.name = v.into();
706        self
707    }
708
709    /// Sets the value of [create_time][crate::model::SecretVersion::create_time].
710    ///
711    /// # Example
712    /// ```ignore,no_run
713    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
714    /// use wkt::Timestamp;
715    /// let x = SecretVersion::new().set_create_time(Timestamp::default()/* use setters */);
716    /// ```
717    pub fn set_create_time<T>(mut self, v: T) -> Self
718    where
719        T: std::convert::Into<wkt::Timestamp>,
720    {
721        self.create_time = std::option::Option::Some(v.into());
722        self
723    }
724
725    /// Sets or clears the value of [create_time][crate::model::SecretVersion::create_time].
726    ///
727    /// # Example
728    /// ```ignore,no_run
729    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
730    /// use wkt::Timestamp;
731    /// let x = SecretVersion::new().set_or_clear_create_time(Some(Timestamp::default()/* use setters */));
732    /// let x = SecretVersion::new().set_or_clear_create_time(None::<Timestamp>);
733    /// ```
734    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
735    where
736        T: std::convert::Into<wkt::Timestamp>,
737    {
738        self.create_time = v.map(|x| x.into());
739        self
740    }
741
742    /// Sets the value of [destroy_time][crate::model::SecretVersion::destroy_time].
743    ///
744    /// # Example
745    /// ```ignore,no_run
746    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
747    /// use wkt::Timestamp;
748    /// let x = SecretVersion::new().set_destroy_time(Timestamp::default()/* use setters */);
749    /// ```
750    pub fn set_destroy_time<T>(mut self, v: T) -> Self
751    where
752        T: std::convert::Into<wkt::Timestamp>,
753    {
754        self.destroy_time = std::option::Option::Some(v.into());
755        self
756    }
757
758    /// Sets or clears the value of [destroy_time][crate::model::SecretVersion::destroy_time].
759    ///
760    /// # Example
761    /// ```ignore,no_run
762    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
763    /// use wkt::Timestamp;
764    /// let x = SecretVersion::new().set_or_clear_destroy_time(Some(Timestamp::default()/* use setters */));
765    /// let x = SecretVersion::new().set_or_clear_destroy_time(None::<Timestamp>);
766    /// ```
767    pub fn set_or_clear_destroy_time<T>(mut self, v: std::option::Option<T>) -> Self
768    where
769        T: std::convert::Into<wkt::Timestamp>,
770    {
771        self.destroy_time = v.map(|x| x.into());
772        self
773    }
774
775    /// Sets the value of [state][crate::model::SecretVersion::state].
776    ///
777    /// # Example
778    /// ```ignore,no_run
779    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
780    /// use google_cloud_secretmanager_v1::model::secret_version::State;
781    /// let x0 = SecretVersion::new().set_state(State::Enabled);
782    /// let x1 = SecretVersion::new().set_state(State::Disabled);
783    /// let x2 = SecretVersion::new().set_state(State::Destroyed);
784    /// ```
785    pub fn set_state<T: std::convert::Into<crate::model::secret_version::State>>(
786        mut self,
787        v: T,
788    ) -> Self {
789        self.state = v.into();
790        self
791    }
792
793    /// Sets the value of [replication_status][crate::model::SecretVersion::replication_status].
794    ///
795    /// # Example
796    /// ```ignore,no_run
797    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
798    /// use google_cloud_secretmanager_v1::model::ReplicationStatus;
799    /// let x = SecretVersion::new().set_replication_status(ReplicationStatus::default()/* use setters */);
800    /// ```
801    pub fn set_replication_status<T>(mut self, v: T) -> Self
802    where
803        T: std::convert::Into<crate::model::ReplicationStatus>,
804    {
805        self.replication_status = std::option::Option::Some(v.into());
806        self
807    }
808
809    /// Sets or clears the value of [replication_status][crate::model::SecretVersion::replication_status].
810    ///
811    /// # Example
812    /// ```ignore,no_run
813    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
814    /// use google_cloud_secretmanager_v1::model::ReplicationStatus;
815    /// let x = SecretVersion::new().set_or_clear_replication_status(Some(ReplicationStatus::default()/* use setters */));
816    /// let x = SecretVersion::new().set_or_clear_replication_status(None::<ReplicationStatus>);
817    /// ```
818    pub fn set_or_clear_replication_status<T>(mut self, v: std::option::Option<T>) -> Self
819    where
820        T: std::convert::Into<crate::model::ReplicationStatus>,
821    {
822        self.replication_status = v.map(|x| x.into());
823        self
824    }
825
826    /// Sets the value of [etag][crate::model::SecretVersion::etag].
827    ///
828    /// # Example
829    /// ```ignore,no_run
830    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
831    /// let x = SecretVersion::new().set_etag("example");
832    /// ```
833    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
834        self.etag = v.into();
835        self
836    }
837
838    /// Sets the value of [client_specified_payload_checksum][crate::model::SecretVersion::client_specified_payload_checksum].
839    ///
840    /// # Example
841    /// ```ignore,no_run
842    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
843    /// let x = SecretVersion::new().set_client_specified_payload_checksum(true);
844    /// ```
845    pub fn set_client_specified_payload_checksum<T: std::convert::Into<bool>>(
846        mut self,
847        v: T,
848    ) -> Self {
849        self.client_specified_payload_checksum = v.into();
850        self
851    }
852
853    /// Sets the value of [scheduled_destroy_time][crate::model::SecretVersion::scheduled_destroy_time].
854    ///
855    /// # Example
856    /// ```ignore,no_run
857    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
858    /// use wkt::Timestamp;
859    /// let x = SecretVersion::new().set_scheduled_destroy_time(Timestamp::default()/* use setters */);
860    /// ```
861    pub fn set_scheduled_destroy_time<T>(mut self, v: T) -> Self
862    where
863        T: std::convert::Into<wkt::Timestamp>,
864    {
865        self.scheduled_destroy_time = std::option::Option::Some(v.into());
866        self
867    }
868
869    /// Sets or clears the value of [scheduled_destroy_time][crate::model::SecretVersion::scheduled_destroy_time].
870    ///
871    /// # Example
872    /// ```ignore,no_run
873    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
874    /// use wkt::Timestamp;
875    /// let x = SecretVersion::new().set_or_clear_scheduled_destroy_time(Some(Timestamp::default()/* use setters */));
876    /// let x = SecretVersion::new().set_or_clear_scheduled_destroy_time(None::<Timestamp>);
877    /// ```
878    pub fn set_or_clear_scheduled_destroy_time<T>(mut self, v: std::option::Option<T>) -> Self
879    where
880        T: std::convert::Into<wkt::Timestamp>,
881    {
882        self.scheduled_destroy_time = v.map(|x| x.into());
883        self
884    }
885
886    /// Sets the value of [customer_managed_encryption][crate::model::SecretVersion::customer_managed_encryption].
887    ///
888    /// # Example
889    /// ```ignore,no_run
890    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
891    /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryptionStatus;
892    /// let x = SecretVersion::new().set_customer_managed_encryption(CustomerManagedEncryptionStatus::default()/* use setters */);
893    /// ```
894    pub fn set_customer_managed_encryption<T>(mut self, v: T) -> Self
895    where
896        T: std::convert::Into<crate::model::CustomerManagedEncryptionStatus>,
897    {
898        self.customer_managed_encryption = std::option::Option::Some(v.into());
899        self
900    }
901
902    /// Sets or clears the value of [customer_managed_encryption][crate::model::SecretVersion::customer_managed_encryption].
903    ///
904    /// # Example
905    /// ```ignore,no_run
906    /// # use google_cloud_secretmanager_v1::model::SecretVersion;
907    /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryptionStatus;
908    /// let x = SecretVersion::new().set_or_clear_customer_managed_encryption(Some(CustomerManagedEncryptionStatus::default()/* use setters */));
909    /// let x = SecretVersion::new().set_or_clear_customer_managed_encryption(None::<CustomerManagedEncryptionStatus>);
910    /// ```
911    pub fn set_or_clear_customer_managed_encryption<T>(mut self, v: std::option::Option<T>) -> Self
912    where
913        T: std::convert::Into<crate::model::CustomerManagedEncryptionStatus>,
914    {
915        self.customer_managed_encryption = v.map(|x| x.into());
916        self
917    }
918}
919
920impl wkt::message::Message for SecretVersion {
921    fn typename() -> &'static str {
922        "type.googleapis.com/google.cloud.secretmanager.v1.SecretVersion"
923    }
924}
925
926/// Defines additional types related to [SecretVersion].
927pub mod secret_version {
928    #[allow(unused_imports)]
929    use super::*;
930
931    /// The state of a
932    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion], indicating if
933    /// it can be accessed.
934    ///
935    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
936    ///
937    /// # Working with unknown values
938    ///
939    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
940    /// additional enum variants at any time. Adding new variants is not considered
941    /// a breaking change. Applications should write their code in anticipation of:
942    ///
943    /// - New values appearing in future releases of the client library, **and**
944    /// - New values received dynamically, without application changes.
945    ///
946    /// Please consult the [Working with enums] section in the user guide for some
947    /// guidelines.
948    ///
949    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
950    #[derive(Clone, Debug, PartialEq)]
951    #[non_exhaustive]
952    pub enum State {
953        /// Not specified. This value is unused and invalid.
954        Unspecified,
955        /// The [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] may be
956        /// accessed.
957        ///
958        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
959        Enabled,
960        /// The [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] may not
961        /// be accessed, but the secret data is still available and can be placed
962        /// back into the
963        /// [ENABLED][google.cloud.secretmanager.v1.SecretVersion.State.ENABLED]
964        /// state.
965        ///
966        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
967        /// [google.cloud.secretmanager.v1.SecretVersion.State.ENABLED]: crate::model::secret_version::State::Enabled
968        Disabled,
969        /// The [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] is
970        /// destroyed and the secret data is no longer stored. A version may not
971        /// leave this state once entered.
972        ///
973        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
974        Destroyed,
975        /// If set, the enum was initialized with an unknown value.
976        ///
977        /// Applications can examine the value using [State::value] or
978        /// [State::name].
979        UnknownValue(state::UnknownValue),
980    }
981
982    #[doc(hidden)]
983    pub mod state {
984        #[allow(unused_imports)]
985        use super::*;
986        #[derive(Clone, Debug, PartialEq)]
987        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
988    }
989
990    impl State {
991        /// Gets the enum value.
992        ///
993        /// Returns `None` if the enum contains an unknown value deserialized from
994        /// the string representation of enums.
995        pub fn value(&self) -> std::option::Option<i32> {
996            match self {
997                Self::Unspecified => std::option::Option::Some(0),
998                Self::Enabled => std::option::Option::Some(1),
999                Self::Disabled => std::option::Option::Some(2),
1000                Self::Destroyed => std::option::Option::Some(3),
1001                Self::UnknownValue(u) => u.0.value(),
1002            }
1003        }
1004
1005        /// Gets the enum value as a string.
1006        ///
1007        /// Returns `None` if the enum contains an unknown value deserialized from
1008        /// the integer representation of enums.
1009        pub fn name(&self) -> std::option::Option<&str> {
1010            match self {
1011                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
1012                Self::Enabled => std::option::Option::Some("ENABLED"),
1013                Self::Disabled => std::option::Option::Some("DISABLED"),
1014                Self::Destroyed => std::option::Option::Some("DESTROYED"),
1015                Self::UnknownValue(u) => u.0.name(),
1016            }
1017        }
1018    }
1019
1020    impl std::default::Default for State {
1021        fn default() -> Self {
1022            use std::convert::From;
1023            Self::from(0)
1024        }
1025    }
1026
1027    impl std::fmt::Display for State {
1028        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
1029            wkt::internal::display_enum(f, self.name(), self.value())
1030        }
1031    }
1032
1033    impl std::convert::From<i32> for State {
1034        fn from(value: i32) -> Self {
1035            match value {
1036                0 => Self::Unspecified,
1037                1 => Self::Enabled,
1038                2 => Self::Disabled,
1039                3 => Self::Destroyed,
1040                _ => Self::UnknownValue(state::UnknownValue(
1041                    wkt::internal::UnknownEnumValue::Integer(value),
1042                )),
1043            }
1044        }
1045    }
1046
1047    impl std::convert::From<&str> for State {
1048        fn from(value: &str) -> Self {
1049            use std::string::ToString;
1050            match value {
1051                "STATE_UNSPECIFIED" => Self::Unspecified,
1052                "ENABLED" => Self::Enabled,
1053                "DISABLED" => Self::Disabled,
1054                "DESTROYED" => Self::Destroyed,
1055                _ => Self::UnknownValue(state::UnknownValue(
1056                    wkt::internal::UnknownEnumValue::String(value.to_string()),
1057                )),
1058            }
1059        }
1060    }
1061
1062    impl serde::ser::Serialize for State {
1063        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1064        where
1065            S: serde::Serializer,
1066        {
1067            match self {
1068                Self::Unspecified => serializer.serialize_i32(0),
1069                Self::Enabled => serializer.serialize_i32(1),
1070                Self::Disabled => serializer.serialize_i32(2),
1071                Self::Destroyed => serializer.serialize_i32(3),
1072                Self::UnknownValue(u) => u.0.serialize(serializer),
1073            }
1074        }
1075    }
1076
1077    impl<'de> serde::de::Deserialize<'de> for State {
1078        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1079        where
1080            D: serde::Deserializer<'de>,
1081        {
1082            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
1083                ".google.cloud.secretmanager.v1.SecretVersion.State",
1084            ))
1085        }
1086    }
1087}
1088
1089/// A policy that defines the replication and encryption configuration of data.
1090#[derive(Clone, Default, PartialEq)]
1091#[non_exhaustive]
1092pub struct Replication {
1093    /// The replication policy for this secret.
1094    pub replication: std::option::Option<crate::model::replication::Replication>,
1095
1096    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1097}
1098
1099impl Replication {
1100    pub fn new() -> Self {
1101        std::default::Default::default()
1102    }
1103
1104    /// Sets the value of [replication][crate::model::Replication::replication].
1105    ///
1106    /// Note that all the setters affecting `replication` are mutually
1107    /// exclusive.
1108    ///
1109    /// # Example
1110    /// ```ignore,no_run
1111    /// # use google_cloud_secretmanager_v1::model::Replication;
1112    /// use google_cloud_secretmanager_v1::model::replication::Automatic;
1113    /// let x = Replication::new().set_replication(Some(
1114    ///     google_cloud_secretmanager_v1::model::replication::Replication::Automatic(Automatic::default().into())));
1115    /// ```
1116    pub fn set_replication<
1117        T: std::convert::Into<std::option::Option<crate::model::replication::Replication>>,
1118    >(
1119        mut self,
1120        v: T,
1121    ) -> Self {
1122        self.replication = v.into();
1123        self
1124    }
1125
1126    /// The value of [replication][crate::model::Replication::replication]
1127    /// if it holds a `Automatic`, `None` if the field is not set or
1128    /// holds a different branch.
1129    pub fn automatic(
1130        &self,
1131    ) -> std::option::Option<&std::boxed::Box<crate::model::replication::Automatic>> {
1132        #[allow(unreachable_patterns)]
1133        self.replication.as_ref().and_then(|v| match v {
1134            crate::model::replication::Replication::Automatic(v) => std::option::Option::Some(v),
1135            _ => std::option::Option::None,
1136        })
1137    }
1138
1139    /// Sets the value of [replication][crate::model::Replication::replication]
1140    /// to hold a `Automatic`.
1141    ///
1142    /// Note that all the setters affecting `replication` are
1143    /// mutually exclusive.
1144    ///
1145    /// # Example
1146    /// ```ignore,no_run
1147    /// # use google_cloud_secretmanager_v1::model::Replication;
1148    /// use google_cloud_secretmanager_v1::model::replication::Automatic;
1149    /// let x = Replication::new().set_automatic(Automatic::default()/* use setters */);
1150    /// assert!(x.automatic().is_some());
1151    /// assert!(x.user_managed().is_none());
1152    /// ```
1153    pub fn set_automatic<
1154        T: std::convert::Into<std::boxed::Box<crate::model::replication::Automatic>>,
1155    >(
1156        mut self,
1157        v: T,
1158    ) -> Self {
1159        self.replication =
1160            std::option::Option::Some(crate::model::replication::Replication::Automatic(v.into()));
1161        self
1162    }
1163
1164    /// The value of [replication][crate::model::Replication::replication]
1165    /// if it holds a `UserManaged`, `None` if the field is not set or
1166    /// holds a different branch.
1167    pub fn user_managed(
1168        &self,
1169    ) -> std::option::Option<&std::boxed::Box<crate::model::replication::UserManaged>> {
1170        #[allow(unreachable_patterns)]
1171        self.replication.as_ref().and_then(|v| match v {
1172            crate::model::replication::Replication::UserManaged(v) => std::option::Option::Some(v),
1173            _ => std::option::Option::None,
1174        })
1175    }
1176
1177    /// Sets the value of [replication][crate::model::Replication::replication]
1178    /// to hold a `UserManaged`.
1179    ///
1180    /// Note that all the setters affecting `replication` are
1181    /// mutually exclusive.
1182    ///
1183    /// # Example
1184    /// ```ignore,no_run
1185    /// # use google_cloud_secretmanager_v1::model::Replication;
1186    /// use google_cloud_secretmanager_v1::model::replication::UserManaged;
1187    /// let x = Replication::new().set_user_managed(UserManaged::default()/* use setters */);
1188    /// assert!(x.user_managed().is_some());
1189    /// assert!(x.automatic().is_none());
1190    /// ```
1191    pub fn set_user_managed<
1192        T: std::convert::Into<std::boxed::Box<crate::model::replication::UserManaged>>,
1193    >(
1194        mut self,
1195        v: T,
1196    ) -> Self {
1197        self.replication = std::option::Option::Some(
1198            crate::model::replication::Replication::UserManaged(v.into()),
1199        );
1200        self
1201    }
1202}
1203
1204impl wkt::message::Message for Replication {
1205    fn typename() -> &'static str {
1206        "type.googleapis.com/google.cloud.secretmanager.v1.Replication"
1207    }
1208}
1209
1210/// Defines additional types related to [Replication].
1211pub mod replication {
1212    #[allow(unused_imports)]
1213    use super::*;
1214
1215    /// A replication policy that replicates the
1216    /// [Secret][google.cloud.secretmanager.v1.Secret] payload without any
1217    /// restrictions.
1218    ///
1219    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1220    #[derive(Clone, Default, PartialEq)]
1221    #[non_exhaustive]
1222    pub struct Automatic {
1223        /// Optional. The customer-managed encryption configuration of the
1224        /// [Secret][google.cloud.secretmanager.v1.Secret]. If no configuration is
1225        /// provided, Google-managed default encryption is used.
1226        ///
1227        /// Updates to the [Secret][google.cloud.secretmanager.v1.Secret] encryption
1228        /// configuration only apply to
1229        /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] added
1230        /// afterwards. They do not apply retroactively to existing
1231        /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion].
1232        ///
1233        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1234        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1235        pub customer_managed_encryption:
1236            std::option::Option<crate::model::CustomerManagedEncryption>,
1237
1238        pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1239    }
1240
1241    impl Automatic {
1242        pub fn new() -> Self {
1243            std::default::Default::default()
1244        }
1245
1246        /// Sets the value of [customer_managed_encryption][crate::model::replication::Automatic::customer_managed_encryption].
1247        ///
1248        /// # Example
1249        /// ```ignore,no_run
1250        /// # use google_cloud_secretmanager_v1::model::replication::Automatic;
1251        /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryption;
1252        /// let x = Automatic::new().set_customer_managed_encryption(CustomerManagedEncryption::default()/* use setters */);
1253        /// ```
1254        pub fn set_customer_managed_encryption<T>(mut self, v: T) -> Self
1255        where
1256            T: std::convert::Into<crate::model::CustomerManagedEncryption>,
1257        {
1258            self.customer_managed_encryption = std::option::Option::Some(v.into());
1259            self
1260        }
1261
1262        /// Sets or clears the value of [customer_managed_encryption][crate::model::replication::Automatic::customer_managed_encryption].
1263        ///
1264        /// # Example
1265        /// ```ignore,no_run
1266        /// # use google_cloud_secretmanager_v1::model::replication::Automatic;
1267        /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryption;
1268        /// let x = Automatic::new().set_or_clear_customer_managed_encryption(Some(CustomerManagedEncryption::default()/* use setters */));
1269        /// let x = Automatic::new().set_or_clear_customer_managed_encryption(None::<CustomerManagedEncryption>);
1270        /// ```
1271        pub fn set_or_clear_customer_managed_encryption<T>(
1272            mut self,
1273            v: std::option::Option<T>,
1274        ) -> Self
1275        where
1276            T: std::convert::Into<crate::model::CustomerManagedEncryption>,
1277        {
1278            self.customer_managed_encryption = v.map(|x| x.into());
1279            self
1280        }
1281    }
1282
1283    impl wkt::message::Message for Automatic {
1284        fn typename() -> &'static str {
1285            "type.googleapis.com/google.cloud.secretmanager.v1.Replication.Automatic"
1286        }
1287    }
1288
1289    /// A replication policy that replicates the
1290    /// [Secret][google.cloud.secretmanager.v1.Secret] payload into the locations
1291    /// specified in
1292    /// [Replication.UserManaged.replicas][google.cloud.secretmanager.v1.Replication.UserManaged.replicas]
1293    ///
1294    /// [google.cloud.secretmanager.v1.Replication.UserManaged.replicas]: crate::model::replication::UserManaged::replicas
1295    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1296    #[derive(Clone, Default, PartialEq)]
1297    #[non_exhaustive]
1298    pub struct UserManaged {
1299        /// Required. The list of Replicas for this
1300        /// [Secret][google.cloud.secretmanager.v1.Secret].
1301        ///
1302        /// Cannot be empty.
1303        ///
1304        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1305        pub replicas: std::vec::Vec<crate::model::replication::user_managed::Replica>,
1306
1307        pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1308    }
1309
1310    impl UserManaged {
1311        pub fn new() -> Self {
1312            std::default::Default::default()
1313        }
1314
1315        /// Sets the value of [replicas][crate::model::replication::UserManaged::replicas].
1316        ///
1317        /// # Example
1318        /// ```ignore,no_run
1319        /// # use google_cloud_secretmanager_v1::model::replication::UserManaged;
1320        /// use google_cloud_secretmanager_v1::model::replication::user_managed::Replica;
1321        /// let x = UserManaged::new()
1322        ///     .set_replicas([
1323        ///         Replica::default()/* use setters */,
1324        ///         Replica::default()/* use (different) setters */,
1325        ///     ]);
1326        /// ```
1327        pub fn set_replicas<T, V>(mut self, v: T) -> Self
1328        where
1329            T: std::iter::IntoIterator<Item = V>,
1330            V: std::convert::Into<crate::model::replication::user_managed::Replica>,
1331        {
1332            use std::iter::Iterator;
1333            self.replicas = v.into_iter().map(|i| i.into()).collect();
1334            self
1335        }
1336    }
1337
1338    impl wkt::message::Message for UserManaged {
1339        fn typename() -> &'static str {
1340            "type.googleapis.com/google.cloud.secretmanager.v1.Replication.UserManaged"
1341        }
1342    }
1343
1344    /// Defines additional types related to [UserManaged].
1345    pub mod user_managed {
1346        #[allow(unused_imports)]
1347        use super::*;
1348
1349        /// Represents a Replica for this
1350        /// [Secret][google.cloud.secretmanager.v1.Secret].
1351        ///
1352        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1353        #[derive(Clone, Default, PartialEq)]
1354        #[non_exhaustive]
1355        pub struct Replica {
1356            /// The canonical IDs of the location to replicate data.
1357            /// For example: `"us-east1"`.
1358            pub location: std::string::String,
1359
1360            /// Optional. The customer-managed encryption configuration of the
1361            /// [User-Managed Replica][Replication.UserManaged.Replica]. If no
1362            /// configuration is provided, Google-managed default encryption is used.
1363            ///
1364            /// Updates to the [Secret][google.cloud.secretmanager.v1.Secret]
1365            /// encryption configuration only apply to
1366            /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] added
1367            /// afterwards. They do not apply retroactively to existing
1368            /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion].
1369            ///
1370            /// [Replication.UserManaged.Replica]: crate::model::replication::user_managed::Replica
1371            /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1372            /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1373            pub customer_managed_encryption:
1374                std::option::Option<crate::model::CustomerManagedEncryption>,
1375
1376            pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1377        }
1378
1379        impl Replica {
1380            pub fn new() -> Self {
1381                std::default::Default::default()
1382            }
1383
1384            /// Sets the value of [location][crate::model::replication::user_managed::Replica::location].
1385            ///
1386            /// # Example
1387            /// ```ignore,no_run
1388            /// # use google_cloud_secretmanager_v1::model::replication::user_managed::Replica;
1389            /// let x = Replica::new().set_location("example");
1390            /// ```
1391            pub fn set_location<T: std::convert::Into<std::string::String>>(
1392                mut self,
1393                v: T,
1394            ) -> Self {
1395                self.location = v.into();
1396                self
1397            }
1398
1399            /// Sets the value of [customer_managed_encryption][crate::model::replication::user_managed::Replica::customer_managed_encryption].
1400            ///
1401            /// # Example
1402            /// ```ignore,no_run
1403            /// # use google_cloud_secretmanager_v1::model::replication::user_managed::Replica;
1404            /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryption;
1405            /// let x = Replica::new().set_customer_managed_encryption(CustomerManagedEncryption::default()/* use setters */);
1406            /// ```
1407            pub fn set_customer_managed_encryption<T>(mut self, v: T) -> Self
1408            where
1409                T: std::convert::Into<crate::model::CustomerManagedEncryption>,
1410            {
1411                self.customer_managed_encryption = std::option::Option::Some(v.into());
1412                self
1413            }
1414
1415            /// Sets or clears the value of [customer_managed_encryption][crate::model::replication::user_managed::Replica::customer_managed_encryption].
1416            ///
1417            /// # Example
1418            /// ```ignore,no_run
1419            /// # use google_cloud_secretmanager_v1::model::replication::user_managed::Replica;
1420            /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryption;
1421            /// let x = Replica::new().set_or_clear_customer_managed_encryption(Some(CustomerManagedEncryption::default()/* use setters */));
1422            /// let x = Replica::new().set_or_clear_customer_managed_encryption(None::<CustomerManagedEncryption>);
1423            /// ```
1424            pub fn set_or_clear_customer_managed_encryption<T>(
1425                mut self,
1426                v: std::option::Option<T>,
1427            ) -> Self
1428            where
1429                T: std::convert::Into<crate::model::CustomerManagedEncryption>,
1430            {
1431                self.customer_managed_encryption = v.map(|x| x.into());
1432                self
1433            }
1434        }
1435
1436        impl wkt::message::Message for Replica {
1437            fn typename() -> &'static str {
1438                "type.googleapis.com/google.cloud.secretmanager.v1.Replication.UserManaged.Replica"
1439            }
1440        }
1441    }
1442
1443    /// The replication policy for this secret.
1444    #[derive(Clone, Debug, PartialEq)]
1445    #[non_exhaustive]
1446    pub enum Replication {
1447        /// The [Secret][google.cloud.secretmanager.v1.Secret] will automatically be
1448        /// replicated without any restrictions.
1449        ///
1450        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1451        Automatic(std::boxed::Box<crate::model::replication::Automatic>),
1452        /// The [Secret][google.cloud.secretmanager.v1.Secret] will only be
1453        /// replicated into the locations specified.
1454        ///
1455        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1456        UserManaged(std::boxed::Box<crate::model::replication::UserManaged>),
1457    }
1458}
1459
1460/// Configuration for encrypting secret payloads using customer-managed
1461/// encryption keys (CMEK).
1462#[derive(Clone, Default, PartialEq)]
1463#[non_exhaustive]
1464pub struct CustomerManagedEncryption {
1465    /// Required. The resource name of the Cloud KMS CryptoKey used to encrypt
1466    /// secret payloads.
1467    ///
1468    /// For secrets using the
1469    /// [UserManaged][google.cloud.secretmanager.v1.Replication.UserManaged]
1470    /// replication policy type, Cloud KMS CryptoKeys must reside in the same
1471    /// location as the [replica location][Secret.UserManaged.Replica.location].
1472    ///
1473    /// For secrets using the
1474    /// [Automatic][google.cloud.secretmanager.v1.Replication.Automatic]
1475    /// replication policy type, Cloud KMS CryptoKeys must reside in `global`.
1476    ///
1477    /// The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`.
1478    ///
1479    /// [google.cloud.secretmanager.v1.Replication.Automatic]: crate::model::replication::Automatic
1480    /// [google.cloud.secretmanager.v1.Replication.UserManaged]: crate::model::replication::UserManaged
1481    pub kms_key_name: std::string::String,
1482
1483    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1484}
1485
1486impl CustomerManagedEncryption {
1487    pub fn new() -> Self {
1488        std::default::Default::default()
1489    }
1490
1491    /// Sets the value of [kms_key_name][crate::model::CustomerManagedEncryption::kms_key_name].
1492    ///
1493    /// # Example
1494    /// ```ignore,no_run
1495    /// # use google_cloud_secretmanager_v1::model::CustomerManagedEncryption;
1496    /// let x = CustomerManagedEncryption::new().set_kms_key_name("example");
1497    /// ```
1498    pub fn set_kms_key_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1499        self.kms_key_name = v.into();
1500        self
1501    }
1502}
1503
1504impl wkt::message::Message for CustomerManagedEncryption {
1505    fn typename() -> &'static str {
1506        "type.googleapis.com/google.cloud.secretmanager.v1.CustomerManagedEncryption"
1507    }
1508}
1509
1510/// The replication status of a
1511/// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
1512///
1513/// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1514#[derive(Clone, Default, PartialEq)]
1515#[non_exhaustive]
1516pub struct ReplicationStatus {
1517    /// The replication status of the
1518    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
1519    ///
1520    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1521    pub replication_status:
1522        std::option::Option<crate::model::replication_status::ReplicationStatus>,
1523
1524    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1525}
1526
1527impl ReplicationStatus {
1528    pub fn new() -> Self {
1529        std::default::Default::default()
1530    }
1531
1532    /// Sets the value of [replication_status][crate::model::ReplicationStatus::replication_status].
1533    ///
1534    /// Note that all the setters affecting `replication_status` are mutually
1535    /// exclusive.
1536    ///
1537    /// # Example
1538    /// ```ignore,no_run
1539    /// # use google_cloud_secretmanager_v1::model::ReplicationStatus;
1540    /// use google_cloud_secretmanager_v1::model::replication_status::AutomaticStatus;
1541    /// let x = ReplicationStatus::new().set_replication_status(Some(
1542    ///     google_cloud_secretmanager_v1::model::replication_status::ReplicationStatus::Automatic(AutomaticStatus::default().into())));
1543    /// ```
1544    pub fn set_replication_status<
1545        T: std::convert::Into<
1546                std::option::Option<crate::model::replication_status::ReplicationStatus>,
1547            >,
1548    >(
1549        mut self,
1550        v: T,
1551    ) -> Self {
1552        self.replication_status = v.into();
1553        self
1554    }
1555
1556    /// The value of [replication_status][crate::model::ReplicationStatus::replication_status]
1557    /// if it holds a `Automatic`, `None` if the field is not set or
1558    /// holds a different branch.
1559    pub fn automatic(
1560        &self,
1561    ) -> std::option::Option<&std::boxed::Box<crate::model::replication_status::AutomaticStatus>>
1562    {
1563        #[allow(unreachable_patterns)]
1564        self.replication_status.as_ref().and_then(|v| match v {
1565            crate::model::replication_status::ReplicationStatus::Automatic(v) => {
1566                std::option::Option::Some(v)
1567            }
1568            _ => std::option::Option::None,
1569        })
1570    }
1571
1572    /// Sets the value of [replication_status][crate::model::ReplicationStatus::replication_status]
1573    /// to hold a `Automatic`.
1574    ///
1575    /// Note that all the setters affecting `replication_status` are
1576    /// mutually exclusive.
1577    ///
1578    /// # Example
1579    /// ```ignore,no_run
1580    /// # use google_cloud_secretmanager_v1::model::ReplicationStatus;
1581    /// use google_cloud_secretmanager_v1::model::replication_status::AutomaticStatus;
1582    /// let x = ReplicationStatus::new().set_automatic(AutomaticStatus::default()/* use setters */);
1583    /// assert!(x.automatic().is_some());
1584    /// assert!(x.user_managed().is_none());
1585    /// ```
1586    pub fn set_automatic<
1587        T: std::convert::Into<std::boxed::Box<crate::model::replication_status::AutomaticStatus>>,
1588    >(
1589        mut self,
1590        v: T,
1591    ) -> Self {
1592        self.replication_status = std::option::Option::Some(
1593            crate::model::replication_status::ReplicationStatus::Automatic(v.into()),
1594        );
1595        self
1596    }
1597
1598    /// The value of [replication_status][crate::model::ReplicationStatus::replication_status]
1599    /// if it holds a `UserManaged`, `None` if the field is not set or
1600    /// holds a different branch.
1601    pub fn user_managed(
1602        &self,
1603    ) -> std::option::Option<&std::boxed::Box<crate::model::replication_status::UserManagedStatus>>
1604    {
1605        #[allow(unreachable_patterns)]
1606        self.replication_status.as_ref().and_then(|v| match v {
1607            crate::model::replication_status::ReplicationStatus::UserManaged(v) => {
1608                std::option::Option::Some(v)
1609            }
1610            _ => std::option::Option::None,
1611        })
1612    }
1613
1614    /// Sets the value of [replication_status][crate::model::ReplicationStatus::replication_status]
1615    /// to hold a `UserManaged`.
1616    ///
1617    /// Note that all the setters affecting `replication_status` are
1618    /// mutually exclusive.
1619    ///
1620    /// # Example
1621    /// ```ignore,no_run
1622    /// # use google_cloud_secretmanager_v1::model::ReplicationStatus;
1623    /// use google_cloud_secretmanager_v1::model::replication_status::UserManagedStatus;
1624    /// let x = ReplicationStatus::new().set_user_managed(UserManagedStatus::default()/* use setters */);
1625    /// assert!(x.user_managed().is_some());
1626    /// assert!(x.automatic().is_none());
1627    /// ```
1628    pub fn set_user_managed<
1629        T: std::convert::Into<std::boxed::Box<crate::model::replication_status::UserManagedStatus>>,
1630    >(
1631        mut self,
1632        v: T,
1633    ) -> Self {
1634        self.replication_status = std::option::Option::Some(
1635            crate::model::replication_status::ReplicationStatus::UserManaged(v.into()),
1636        );
1637        self
1638    }
1639}
1640
1641impl wkt::message::Message for ReplicationStatus {
1642    fn typename() -> &'static str {
1643        "type.googleapis.com/google.cloud.secretmanager.v1.ReplicationStatus"
1644    }
1645}
1646
1647/// Defines additional types related to [ReplicationStatus].
1648pub mod replication_status {
1649    #[allow(unused_imports)]
1650    use super::*;
1651
1652    /// The replication status of a
1653    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] using
1654    /// automatic replication.
1655    ///
1656    /// Only populated if the parent [Secret][google.cloud.secretmanager.v1.Secret]
1657    /// has an automatic replication policy.
1658    ///
1659    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1660    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1661    #[derive(Clone, Default, PartialEq)]
1662    #[non_exhaustive]
1663    pub struct AutomaticStatus {
1664        /// Output only. The customer-managed encryption status of the
1665        /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. Only
1666        /// populated if customer-managed encryption is used.
1667        ///
1668        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1669        pub customer_managed_encryption:
1670            std::option::Option<crate::model::CustomerManagedEncryptionStatus>,
1671
1672        pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1673    }
1674
1675    impl AutomaticStatus {
1676        pub fn new() -> Self {
1677            std::default::Default::default()
1678        }
1679
1680        /// Sets the value of [customer_managed_encryption][crate::model::replication_status::AutomaticStatus::customer_managed_encryption].
1681        ///
1682        /// # Example
1683        /// ```ignore,no_run
1684        /// # use google_cloud_secretmanager_v1::model::replication_status::AutomaticStatus;
1685        /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryptionStatus;
1686        /// let x = AutomaticStatus::new().set_customer_managed_encryption(CustomerManagedEncryptionStatus::default()/* use setters */);
1687        /// ```
1688        pub fn set_customer_managed_encryption<T>(mut self, v: T) -> Self
1689        where
1690            T: std::convert::Into<crate::model::CustomerManagedEncryptionStatus>,
1691        {
1692            self.customer_managed_encryption = std::option::Option::Some(v.into());
1693            self
1694        }
1695
1696        /// Sets or clears the value of [customer_managed_encryption][crate::model::replication_status::AutomaticStatus::customer_managed_encryption].
1697        ///
1698        /// # Example
1699        /// ```ignore,no_run
1700        /// # use google_cloud_secretmanager_v1::model::replication_status::AutomaticStatus;
1701        /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryptionStatus;
1702        /// let x = AutomaticStatus::new().set_or_clear_customer_managed_encryption(Some(CustomerManagedEncryptionStatus::default()/* use setters */));
1703        /// let x = AutomaticStatus::new().set_or_clear_customer_managed_encryption(None::<CustomerManagedEncryptionStatus>);
1704        /// ```
1705        pub fn set_or_clear_customer_managed_encryption<T>(
1706            mut self,
1707            v: std::option::Option<T>,
1708        ) -> Self
1709        where
1710            T: std::convert::Into<crate::model::CustomerManagedEncryptionStatus>,
1711        {
1712            self.customer_managed_encryption = v.map(|x| x.into());
1713            self
1714        }
1715    }
1716
1717    impl wkt::message::Message for AutomaticStatus {
1718        fn typename() -> &'static str {
1719            "type.googleapis.com/google.cloud.secretmanager.v1.ReplicationStatus.AutomaticStatus"
1720        }
1721    }
1722
1723    /// The replication status of a
1724    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] using
1725    /// user-managed replication.
1726    ///
1727    /// Only populated if the parent [Secret][google.cloud.secretmanager.v1.Secret]
1728    /// has a user-managed replication policy.
1729    ///
1730    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1731    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1732    #[derive(Clone, Default, PartialEq)]
1733    #[non_exhaustive]
1734    pub struct UserManagedStatus {
1735        /// Output only. The list of replica statuses for the
1736        /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
1737        ///
1738        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1739        pub replicas:
1740            std::vec::Vec<crate::model::replication_status::user_managed_status::ReplicaStatus>,
1741
1742        pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1743    }
1744
1745    impl UserManagedStatus {
1746        pub fn new() -> Self {
1747            std::default::Default::default()
1748        }
1749
1750        /// Sets the value of [replicas][crate::model::replication_status::UserManagedStatus::replicas].
1751        ///
1752        /// # Example
1753        /// ```ignore,no_run
1754        /// # use google_cloud_secretmanager_v1::model::replication_status::UserManagedStatus;
1755        /// use google_cloud_secretmanager_v1::model::replication_status::user_managed_status::ReplicaStatus;
1756        /// let x = UserManagedStatus::new()
1757        ///     .set_replicas([
1758        ///         ReplicaStatus::default()/* use setters */,
1759        ///         ReplicaStatus::default()/* use (different) setters */,
1760        ///     ]);
1761        /// ```
1762        pub fn set_replicas<T, V>(mut self, v: T) -> Self
1763        where
1764            T: std::iter::IntoIterator<Item = V>,
1765            V: std::convert::Into<
1766                    crate::model::replication_status::user_managed_status::ReplicaStatus,
1767                >,
1768        {
1769            use std::iter::Iterator;
1770            self.replicas = v.into_iter().map(|i| i.into()).collect();
1771            self
1772        }
1773    }
1774
1775    impl wkt::message::Message for UserManagedStatus {
1776        fn typename() -> &'static str {
1777            "type.googleapis.com/google.cloud.secretmanager.v1.ReplicationStatus.UserManagedStatus"
1778        }
1779    }
1780
1781    /// Defines additional types related to [UserManagedStatus].
1782    pub mod user_managed_status {
1783        #[allow(unused_imports)]
1784        use super::*;
1785
1786        /// Describes the status of a user-managed replica for the
1787        /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
1788        ///
1789        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1790        #[derive(Clone, Default, PartialEq)]
1791        #[non_exhaustive]
1792        pub struct ReplicaStatus {
1793            /// Output only. The canonical ID of the replica location.
1794            /// For example: `"us-east1"`.
1795            pub location: std::string::String,
1796
1797            /// Output only. The customer-managed encryption status of the
1798            /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. Only
1799            /// populated if customer-managed encryption is used.
1800            ///
1801            /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1802            pub customer_managed_encryption:
1803                std::option::Option<crate::model::CustomerManagedEncryptionStatus>,
1804
1805            pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1806        }
1807
1808        impl ReplicaStatus {
1809            pub fn new() -> Self {
1810                std::default::Default::default()
1811            }
1812
1813            /// Sets the value of [location][crate::model::replication_status::user_managed_status::ReplicaStatus::location].
1814            ///
1815            /// # Example
1816            /// ```ignore,no_run
1817            /// # use google_cloud_secretmanager_v1::model::replication_status::user_managed_status::ReplicaStatus;
1818            /// let x = ReplicaStatus::new().set_location("example");
1819            /// ```
1820            pub fn set_location<T: std::convert::Into<std::string::String>>(
1821                mut self,
1822                v: T,
1823            ) -> Self {
1824                self.location = v.into();
1825                self
1826            }
1827
1828            /// Sets the value of [customer_managed_encryption][crate::model::replication_status::user_managed_status::ReplicaStatus::customer_managed_encryption].
1829            ///
1830            /// # Example
1831            /// ```ignore,no_run
1832            /// # use google_cloud_secretmanager_v1::model::replication_status::user_managed_status::ReplicaStatus;
1833            /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryptionStatus;
1834            /// let x = ReplicaStatus::new().set_customer_managed_encryption(CustomerManagedEncryptionStatus::default()/* use setters */);
1835            /// ```
1836            pub fn set_customer_managed_encryption<T>(mut self, v: T) -> Self
1837            where
1838                T: std::convert::Into<crate::model::CustomerManagedEncryptionStatus>,
1839            {
1840                self.customer_managed_encryption = std::option::Option::Some(v.into());
1841                self
1842            }
1843
1844            /// Sets or clears the value of [customer_managed_encryption][crate::model::replication_status::user_managed_status::ReplicaStatus::customer_managed_encryption].
1845            ///
1846            /// # Example
1847            /// ```ignore,no_run
1848            /// # use google_cloud_secretmanager_v1::model::replication_status::user_managed_status::ReplicaStatus;
1849            /// use google_cloud_secretmanager_v1::model::CustomerManagedEncryptionStatus;
1850            /// let x = ReplicaStatus::new().set_or_clear_customer_managed_encryption(Some(CustomerManagedEncryptionStatus::default()/* use setters */));
1851            /// let x = ReplicaStatus::new().set_or_clear_customer_managed_encryption(None::<CustomerManagedEncryptionStatus>);
1852            /// ```
1853            pub fn set_or_clear_customer_managed_encryption<T>(
1854                mut self,
1855                v: std::option::Option<T>,
1856            ) -> Self
1857            where
1858                T: std::convert::Into<crate::model::CustomerManagedEncryptionStatus>,
1859            {
1860                self.customer_managed_encryption = v.map(|x| x.into());
1861                self
1862            }
1863        }
1864
1865        impl wkt::message::Message for ReplicaStatus {
1866            fn typename() -> &'static str {
1867                "type.googleapis.com/google.cloud.secretmanager.v1.ReplicationStatus.UserManagedStatus.ReplicaStatus"
1868            }
1869        }
1870    }
1871
1872    /// The replication status of the
1873    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
1874    ///
1875    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1876    #[derive(Clone, Debug, PartialEq)]
1877    #[non_exhaustive]
1878    pub enum ReplicationStatus {
1879        /// Describes the replication status of a
1880        /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] with
1881        /// automatic replication.
1882        ///
1883        /// Only populated if the parent
1884        /// [Secret][google.cloud.secretmanager.v1.Secret] has an automatic
1885        /// replication policy.
1886        ///
1887        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1888        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1889        Automatic(std::boxed::Box<crate::model::replication_status::AutomaticStatus>),
1890        /// Describes the replication status of a
1891        /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] with
1892        /// user-managed replication.
1893        ///
1894        /// Only populated if the parent
1895        /// [Secret][google.cloud.secretmanager.v1.Secret] has a user-managed
1896        /// replication policy.
1897        ///
1898        /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1899        /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
1900        UserManaged(std::boxed::Box<crate::model::replication_status::UserManagedStatus>),
1901    }
1902}
1903
1904/// Describes the status of customer-managed encryption.
1905#[derive(Clone, Default, PartialEq)]
1906#[non_exhaustive]
1907pub struct CustomerManagedEncryptionStatus {
1908    /// Required. The resource name of the Cloud KMS CryptoKeyVersion used to
1909    /// encrypt the secret payload, in the following format:
1910    /// `projects/*/locations/*/keyRings/*/cryptoKeys/*/versions/*`.
1911    pub kms_key_version_name: std::string::String,
1912
1913    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1914}
1915
1916impl CustomerManagedEncryptionStatus {
1917    pub fn new() -> Self {
1918        std::default::Default::default()
1919    }
1920
1921    /// Sets the value of [kms_key_version_name][crate::model::CustomerManagedEncryptionStatus::kms_key_version_name].
1922    ///
1923    /// # Example
1924    /// ```ignore,no_run
1925    /// # use google_cloud_secretmanager_v1::model::CustomerManagedEncryptionStatus;
1926    /// let x = CustomerManagedEncryptionStatus::new().set_kms_key_version_name("example");
1927    /// ```
1928    pub fn set_kms_key_version_name<T: std::convert::Into<std::string::String>>(
1929        mut self,
1930        v: T,
1931    ) -> Self {
1932        self.kms_key_version_name = v.into();
1933        self
1934    }
1935}
1936
1937impl wkt::message::Message for CustomerManagedEncryptionStatus {
1938    fn typename() -> &'static str {
1939        "type.googleapis.com/google.cloud.secretmanager.v1.CustomerManagedEncryptionStatus"
1940    }
1941}
1942
1943/// A Pub/Sub topic which Secret Manager will publish to when control plane
1944/// events occur on this secret.
1945#[derive(Clone, Default, PartialEq)]
1946#[non_exhaustive]
1947pub struct Topic {
1948    /// Identifier. The resource name of the Pub/Sub topic that will be published
1949    /// to, in the following format: `projects/*/topics/*`. For publication to
1950    /// succeed, the Secret Manager service agent must have the
1951    /// `pubsub.topic.publish` permission on the topic. The Pub/Sub Publisher role
1952    /// (`roles/pubsub.publisher`) includes this permission.
1953    pub name: std::string::String,
1954
1955    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1956}
1957
1958impl Topic {
1959    pub fn new() -> Self {
1960        std::default::Default::default()
1961    }
1962
1963    /// Sets the value of [name][crate::model::Topic::name].
1964    ///
1965    /// # Example
1966    /// ```ignore,no_run
1967    /// # use google_cloud_secretmanager_v1::model::Topic;
1968    /// let x = Topic::new().set_name("example");
1969    /// ```
1970    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1971        self.name = v.into();
1972        self
1973    }
1974}
1975
1976impl wkt::message::Message for Topic {
1977    fn typename() -> &'static str {
1978        "type.googleapis.com/google.cloud.secretmanager.v1.Topic"
1979    }
1980}
1981
1982/// The rotation time and period for a
1983/// [Secret][google.cloud.secretmanager.v1.Secret]. At next_rotation_time, Secret
1984/// Manager will send a Pub/Sub notification to the topics configured on the
1985/// Secret. [Secret.topics][google.cloud.secretmanager.v1.Secret.topics] must be
1986/// set to configure rotation.
1987///
1988/// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
1989/// [google.cloud.secretmanager.v1.Secret.topics]: crate::model::Secret::topics
1990#[derive(Clone, Default, PartialEq)]
1991#[non_exhaustive]
1992pub struct Rotation {
1993    /// Optional. Timestamp in UTC at which the
1994    /// [Secret][google.cloud.secretmanager.v1.Secret] is scheduled to rotate.
1995    /// Cannot be set to less than 300s (5 min) in the future and at most
1996    /// 3153600000s (100 years).
1997    ///
1998    /// [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time]
1999    /// MUST  be set if
2000    /// [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period]
2001    /// is set.
2002    ///
2003    /// [google.cloud.secretmanager.v1.Rotation.next_rotation_time]: crate::model::Rotation::next_rotation_time
2004    /// [google.cloud.secretmanager.v1.Rotation.rotation_period]: crate::model::Rotation::rotation_period
2005    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2006    pub next_rotation_time: std::option::Option<wkt::Timestamp>,
2007
2008    /// Input only. The Duration between rotation notifications. Must be in seconds
2009    /// and at least 3600s (1h) and at most 3153600000s (100 years).
2010    ///
2011    /// If
2012    /// [rotation_period][google.cloud.secretmanager.v1.Rotation.rotation_period]
2013    /// is set,
2014    /// [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time]
2015    /// must be set.
2016    /// [next_rotation_time][google.cloud.secretmanager.v1.Rotation.next_rotation_time]
2017    /// will be advanced by this period when the service automatically sends
2018    /// rotation notifications.
2019    ///
2020    /// [google.cloud.secretmanager.v1.Rotation.next_rotation_time]: crate::model::Rotation::next_rotation_time
2021    /// [google.cloud.secretmanager.v1.Rotation.rotation_period]: crate::model::Rotation::rotation_period
2022    pub rotation_period: std::option::Option<wkt::Duration>,
2023
2024    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2025}
2026
2027impl Rotation {
2028    pub fn new() -> Self {
2029        std::default::Default::default()
2030    }
2031
2032    /// Sets the value of [next_rotation_time][crate::model::Rotation::next_rotation_time].
2033    ///
2034    /// # Example
2035    /// ```ignore,no_run
2036    /// # use google_cloud_secretmanager_v1::model::Rotation;
2037    /// use wkt::Timestamp;
2038    /// let x = Rotation::new().set_next_rotation_time(Timestamp::default()/* use setters */);
2039    /// ```
2040    pub fn set_next_rotation_time<T>(mut self, v: T) -> Self
2041    where
2042        T: std::convert::Into<wkt::Timestamp>,
2043    {
2044        self.next_rotation_time = std::option::Option::Some(v.into());
2045        self
2046    }
2047
2048    /// Sets or clears the value of [next_rotation_time][crate::model::Rotation::next_rotation_time].
2049    ///
2050    /// # Example
2051    /// ```ignore,no_run
2052    /// # use google_cloud_secretmanager_v1::model::Rotation;
2053    /// use wkt::Timestamp;
2054    /// let x = Rotation::new().set_or_clear_next_rotation_time(Some(Timestamp::default()/* use setters */));
2055    /// let x = Rotation::new().set_or_clear_next_rotation_time(None::<Timestamp>);
2056    /// ```
2057    pub fn set_or_clear_next_rotation_time<T>(mut self, v: std::option::Option<T>) -> Self
2058    where
2059        T: std::convert::Into<wkt::Timestamp>,
2060    {
2061        self.next_rotation_time = v.map(|x| x.into());
2062        self
2063    }
2064
2065    /// Sets the value of [rotation_period][crate::model::Rotation::rotation_period].
2066    ///
2067    /// # Example
2068    /// ```ignore,no_run
2069    /// # use google_cloud_secretmanager_v1::model::Rotation;
2070    /// use wkt::Duration;
2071    /// let x = Rotation::new().set_rotation_period(Duration::default()/* use setters */);
2072    /// ```
2073    pub fn set_rotation_period<T>(mut self, v: T) -> Self
2074    where
2075        T: std::convert::Into<wkt::Duration>,
2076    {
2077        self.rotation_period = std::option::Option::Some(v.into());
2078        self
2079    }
2080
2081    /// Sets or clears the value of [rotation_period][crate::model::Rotation::rotation_period].
2082    ///
2083    /// # Example
2084    /// ```ignore,no_run
2085    /// # use google_cloud_secretmanager_v1::model::Rotation;
2086    /// use wkt::Duration;
2087    /// let x = Rotation::new().set_or_clear_rotation_period(Some(Duration::default()/* use setters */));
2088    /// let x = Rotation::new().set_or_clear_rotation_period(None::<Duration>);
2089    /// ```
2090    pub fn set_or_clear_rotation_period<T>(mut self, v: std::option::Option<T>) -> Self
2091    where
2092        T: std::convert::Into<wkt::Duration>,
2093    {
2094        self.rotation_period = v.map(|x| x.into());
2095        self
2096    }
2097}
2098
2099impl wkt::message::Message for Rotation {
2100    fn typename() -> &'static str {
2101        "type.googleapis.com/google.cloud.secretmanager.v1.Rotation"
2102    }
2103}
2104
2105/// A secret payload resource in the Secret Manager API. This contains the
2106/// sensitive secret payload that is associated with a
2107/// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
2108///
2109/// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2110#[derive(Clone, Default, PartialEq)]
2111#[non_exhaustive]
2112pub struct SecretPayload {
2113    /// The secret data. Must be no larger than 64KiB.
2114    pub data: ::bytes::Bytes,
2115
2116    /// Optional. If specified,
2117    /// [SecretManagerService][google.cloud.secretmanager.v1.SecretManagerService]
2118    /// will verify the integrity of the received
2119    /// [data][google.cloud.secretmanager.v1.SecretPayload.data] on
2120    /// [SecretManagerService.AddSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion]
2121    /// calls using the crc32c checksum and store it to include in future
2122    /// [SecretManagerService.AccessSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion]
2123    /// responses. If a checksum is not provided in the
2124    /// [SecretManagerService.AddSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion]
2125    /// request, the
2126    /// [SecretManagerService][google.cloud.secretmanager.v1.SecretManagerService]
2127    /// will generate and store one for you.
2128    ///
2129    /// The CRC32C value is encoded as a Int64 for compatibility, and can be
2130    /// safely downconverted to uint32 in languages that support this type.
2131    /// <https://cloud.google.com/apis/design/design_patterns#integer_types>
2132    ///
2133    /// [google.cloud.secretmanager.v1.SecretManagerService]: crate::client::SecretManagerService
2134    /// [google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion]: crate::client::SecretManagerService::access_secret_version
2135    /// [google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion]: crate::client::SecretManagerService::add_secret_version
2136    /// [google.cloud.secretmanager.v1.SecretPayload.data]: crate::model::SecretPayload::data
2137    pub data_crc32c: std::option::Option<i64>,
2138
2139    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2140}
2141
2142impl SecretPayload {
2143    pub fn new() -> Self {
2144        std::default::Default::default()
2145    }
2146
2147    /// Sets the value of [data][crate::model::SecretPayload::data].
2148    ///
2149    /// # Example
2150    /// ```ignore,no_run
2151    /// # use google_cloud_secretmanager_v1::model::SecretPayload;
2152    /// let x = SecretPayload::new().set_data(bytes::Bytes::from_static(b"example"));
2153    /// ```
2154    pub fn set_data<T: std::convert::Into<::bytes::Bytes>>(mut self, v: T) -> Self {
2155        self.data = v.into();
2156        self
2157    }
2158
2159    /// Sets the value of [data_crc32c][crate::model::SecretPayload::data_crc32c].
2160    ///
2161    /// # Example
2162    /// ```ignore,no_run
2163    /// # use google_cloud_secretmanager_v1::model::SecretPayload;
2164    /// let x = SecretPayload::new().set_data_crc32c(42);
2165    /// ```
2166    pub fn set_data_crc32c<T>(mut self, v: T) -> Self
2167    where
2168        T: std::convert::Into<i64>,
2169    {
2170        self.data_crc32c = std::option::Option::Some(v.into());
2171        self
2172    }
2173
2174    /// Sets or clears the value of [data_crc32c][crate::model::SecretPayload::data_crc32c].
2175    ///
2176    /// # Example
2177    /// ```ignore,no_run
2178    /// # use google_cloud_secretmanager_v1::model::SecretPayload;
2179    /// let x = SecretPayload::new().set_or_clear_data_crc32c(Some(42));
2180    /// let x = SecretPayload::new().set_or_clear_data_crc32c(None::<i32>);
2181    /// ```
2182    pub fn set_or_clear_data_crc32c<T>(mut self, v: std::option::Option<T>) -> Self
2183    where
2184        T: std::convert::Into<i64>,
2185    {
2186        self.data_crc32c = v.map(|x| x.into());
2187        self
2188    }
2189}
2190
2191impl wkt::message::Message for SecretPayload {
2192    fn typename() -> &'static str {
2193        "type.googleapis.com/google.cloud.secretmanager.v1.SecretPayload"
2194    }
2195}
2196
2197/// Request message for
2198/// [SecretManagerService.ListSecrets][google.cloud.secretmanager.v1.SecretManagerService.ListSecrets].
2199///
2200/// [google.cloud.secretmanager.v1.SecretManagerService.ListSecrets]: crate::client::SecretManagerService::list_secrets
2201#[derive(Clone, Default, PartialEq)]
2202#[non_exhaustive]
2203pub struct ListSecretsRequest {
2204    /// Required. The resource name of the project associated with the
2205    /// [Secrets][google.cloud.secretmanager.v1.Secret], in the format `projects/*`
2206    /// or `projects/*/locations/*`
2207    ///
2208    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2209    pub parent: std::string::String,
2210
2211    /// Optional. The maximum number of results to be returned in a single page. If
2212    /// set to 0, the server decides the number of results to return. If the
2213    /// number is greater than 25000, it is capped at 25000.
2214    pub page_size: i32,
2215
2216    /// Optional. Pagination token, returned earlier via
2217    /// [ListSecretsResponse.next_page_token][google.cloud.secretmanager.v1.ListSecretsResponse.next_page_token].
2218    ///
2219    /// [google.cloud.secretmanager.v1.ListSecretsResponse.next_page_token]: crate::model::ListSecretsResponse::next_page_token
2220    pub page_token: std::string::String,
2221
2222    /// Optional. Filter string, adhering to the rules in
2223    /// [List-operation
2224    /// filtering](https://cloud.google.com/secret-manager/docs/filtering). List
2225    /// only secrets matching the filter. If filter is empty, all secrets are
2226    /// listed.
2227    pub filter: std::string::String,
2228
2229    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2230}
2231
2232impl ListSecretsRequest {
2233    pub fn new() -> Self {
2234        std::default::Default::default()
2235    }
2236
2237    /// Sets the value of [parent][crate::model::ListSecretsRequest::parent].
2238    ///
2239    /// # Example
2240    /// ```ignore,no_run
2241    /// # use google_cloud_secretmanager_v1::model::ListSecretsRequest;
2242    /// let x = ListSecretsRequest::new().set_parent("example");
2243    /// ```
2244    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2245        self.parent = v.into();
2246        self
2247    }
2248
2249    /// Sets the value of [page_size][crate::model::ListSecretsRequest::page_size].
2250    ///
2251    /// # Example
2252    /// ```ignore,no_run
2253    /// # use google_cloud_secretmanager_v1::model::ListSecretsRequest;
2254    /// let x = ListSecretsRequest::new().set_page_size(42);
2255    /// ```
2256    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
2257        self.page_size = v.into();
2258        self
2259    }
2260
2261    /// Sets the value of [page_token][crate::model::ListSecretsRequest::page_token].
2262    ///
2263    /// # Example
2264    /// ```ignore,no_run
2265    /// # use google_cloud_secretmanager_v1::model::ListSecretsRequest;
2266    /// let x = ListSecretsRequest::new().set_page_token("example");
2267    /// ```
2268    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2269        self.page_token = v.into();
2270        self
2271    }
2272
2273    /// Sets the value of [filter][crate::model::ListSecretsRequest::filter].
2274    ///
2275    /// # Example
2276    /// ```ignore,no_run
2277    /// # use google_cloud_secretmanager_v1::model::ListSecretsRequest;
2278    /// let x = ListSecretsRequest::new().set_filter("example");
2279    /// ```
2280    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2281        self.filter = v.into();
2282        self
2283    }
2284}
2285
2286impl wkt::message::Message for ListSecretsRequest {
2287    fn typename() -> &'static str {
2288        "type.googleapis.com/google.cloud.secretmanager.v1.ListSecretsRequest"
2289    }
2290}
2291
2292/// Response message for
2293/// [SecretManagerService.ListSecrets][google.cloud.secretmanager.v1.SecretManagerService.ListSecrets].
2294///
2295/// [google.cloud.secretmanager.v1.SecretManagerService.ListSecrets]: crate::client::SecretManagerService::list_secrets
2296#[derive(Clone, Default, PartialEq)]
2297#[non_exhaustive]
2298pub struct ListSecretsResponse {
2299    /// The list of [Secrets][google.cloud.secretmanager.v1.Secret] sorted in
2300    /// reverse by create_time (newest first).
2301    ///
2302    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2303    pub secrets: std::vec::Vec<crate::model::Secret>,
2304
2305    /// A token to retrieve the next page of results. Pass this value in
2306    /// [ListSecretsRequest.page_token][google.cloud.secretmanager.v1.ListSecretsRequest.page_token]
2307    /// to retrieve the next page.
2308    ///
2309    /// [google.cloud.secretmanager.v1.ListSecretsRequest.page_token]: crate::model::ListSecretsRequest::page_token
2310    pub next_page_token: std::string::String,
2311
2312    /// The total number of [Secrets][google.cloud.secretmanager.v1.Secret] but 0
2313    /// when the
2314    /// [ListSecretsRequest.filter][google.cloud.secretmanager.v1.ListSecretsRequest.filter]
2315    /// field is set.
2316    ///
2317    /// [google.cloud.secretmanager.v1.ListSecretsRequest.filter]: crate::model::ListSecretsRequest::filter
2318    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2319    pub total_size: i32,
2320
2321    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2322}
2323
2324impl ListSecretsResponse {
2325    pub fn new() -> Self {
2326        std::default::Default::default()
2327    }
2328
2329    /// Sets the value of [secrets][crate::model::ListSecretsResponse::secrets].
2330    ///
2331    /// # Example
2332    /// ```ignore,no_run
2333    /// # use google_cloud_secretmanager_v1::model::ListSecretsResponse;
2334    /// use google_cloud_secretmanager_v1::model::Secret;
2335    /// let x = ListSecretsResponse::new()
2336    ///     .set_secrets([
2337    ///         Secret::default()/* use setters */,
2338    ///         Secret::default()/* use (different) setters */,
2339    ///     ]);
2340    /// ```
2341    pub fn set_secrets<T, V>(mut self, v: T) -> Self
2342    where
2343        T: std::iter::IntoIterator<Item = V>,
2344        V: std::convert::Into<crate::model::Secret>,
2345    {
2346        use std::iter::Iterator;
2347        self.secrets = v.into_iter().map(|i| i.into()).collect();
2348        self
2349    }
2350
2351    /// Sets the value of [next_page_token][crate::model::ListSecretsResponse::next_page_token].
2352    ///
2353    /// # Example
2354    /// ```ignore,no_run
2355    /// # use google_cloud_secretmanager_v1::model::ListSecretsResponse;
2356    /// let x = ListSecretsResponse::new().set_next_page_token("example");
2357    /// ```
2358    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2359        self.next_page_token = v.into();
2360        self
2361    }
2362
2363    /// Sets the value of [total_size][crate::model::ListSecretsResponse::total_size].
2364    ///
2365    /// # Example
2366    /// ```ignore,no_run
2367    /// # use google_cloud_secretmanager_v1::model::ListSecretsResponse;
2368    /// let x = ListSecretsResponse::new().set_total_size(42);
2369    /// ```
2370    pub fn set_total_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
2371        self.total_size = v.into();
2372        self
2373    }
2374}
2375
2376impl wkt::message::Message for ListSecretsResponse {
2377    fn typename() -> &'static str {
2378        "type.googleapis.com/google.cloud.secretmanager.v1.ListSecretsResponse"
2379    }
2380}
2381
2382#[doc(hidden)]
2383impl google_cloud_gax::paginator::internal::PageableResponse for ListSecretsResponse {
2384    type PageItem = crate::model::Secret;
2385
2386    fn items(self) -> std::vec::Vec<Self::PageItem> {
2387        self.secrets
2388    }
2389
2390    fn next_page_token(&self) -> std::string::String {
2391        use std::clone::Clone;
2392        self.next_page_token.clone()
2393    }
2394}
2395
2396/// Request message for
2397/// [SecretManagerService.CreateSecret][google.cloud.secretmanager.v1.SecretManagerService.CreateSecret].
2398///
2399/// [google.cloud.secretmanager.v1.SecretManagerService.CreateSecret]: crate::client::SecretManagerService::create_secret
2400#[derive(Clone, Default, PartialEq)]
2401#[non_exhaustive]
2402pub struct CreateSecretRequest {
2403    /// Required. The resource name of the project to associate with the
2404    /// [Secret][google.cloud.secretmanager.v1.Secret], in the format `projects/*`
2405    /// or `projects/*/locations/*`.
2406    ///
2407    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2408    pub parent: std::string::String,
2409
2410    /// Required. This must be unique within the project.
2411    ///
2412    /// A secret ID is a string with a maximum length of 255 characters and can
2413    /// contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and
2414    /// underscore (`_`) characters.
2415    pub secret_id: std::string::String,
2416
2417    /// Required. A [Secret][google.cloud.secretmanager.v1.Secret] with initial
2418    /// field values.
2419    ///
2420    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2421    pub secret: std::option::Option<crate::model::Secret>,
2422
2423    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2424}
2425
2426impl CreateSecretRequest {
2427    pub fn new() -> Self {
2428        std::default::Default::default()
2429    }
2430
2431    /// Sets the value of [parent][crate::model::CreateSecretRequest::parent].
2432    ///
2433    /// # Example
2434    /// ```ignore,no_run
2435    /// # use google_cloud_secretmanager_v1::model::CreateSecretRequest;
2436    /// let x = CreateSecretRequest::new().set_parent("example");
2437    /// ```
2438    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2439        self.parent = v.into();
2440        self
2441    }
2442
2443    /// Sets the value of [secret_id][crate::model::CreateSecretRequest::secret_id].
2444    ///
2445    /// # Example
2446    /// ```ignore,no_run
2447    /// # use google_cloud_secretmanager_v1::model::CreateSecretRequest;
2448    /// let x = CreateSecretRequest::new().set_secret_id("example");
2449    /// ```
2450    pub fn set_secret_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2451        self.secret_id = v.into();
2452        self
2453    }
2454
2455    /// Sets the value of [secret][crate::model::CreateSecretRequest::secret].
2456    ///
2457    /// # Example
2458    /// ```ignore,no_run
2459    /// # use google_cloud_secretmanager_v1::model::CreateSecretRequest;
2460    /// use google_cloud_secretmanager_v1::model::Secret;
2461    /// let x = CreateSecretRequest::new().set_secret(Secret::default()/* use setters */);
2462    /// ```
2463    pub fn set_secret<T>(mut self, v: T) -> Self
2464    where
2465        T: std::convert::Into<crate::model::Secret>,
2466    {
2467        self.secret = std::option::Option::Some(v.into());
2468        self
2469    }
2470
2471    /// Sets or clears the value of [secret][crate::model::CreateSecretRequest::secret].
2472    ///
2473    /// # Example
2474    /// ```ignore,no_run
2475    /// # use google_cloud_secretmanager_v1::model::CreateSecretRequest;
2476    /// use google_cloud_secretmanager_v1::model::Secret;
2477    /// let x = CreateSecretRequest::new().set_or_clear_secret(Some(Secret::default()/* use setters */));
2478    /// let x = CreateSecretRequest::new().set_or_clear_secret(None::<Secret>);
2479    /// ```
2480    pub fn set_or_clear_secret<T>(mut self, v: std::option::Option<T>) -> Self
2481    where
2482        T: std::convert::Into<crate::model::Secret>,
2483    {
2484        self.secret = v.map(|x| x.into());
2485        self
2486    }
2487}
2488
2489impl wkt::message::Message for CreateSecretRequest {
2490    fn typename() -> &'static str {
2491        "type.googleapis.com/google.cloud.secretmanager.v1.CreateSecretRequest"
2492    }
2493}
2494
2495/// Request message for
2496/// [SecretManagerService.AddSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion].
2497///
2498/// [google.cloud.secretmanager.v1.SecretManagerService.AddSecretVersion]: crate::client::SecretManagerService::add_secret_version
2499#[derive(Clone, Default, PartialEq)]
2500#[non_exhaustive]
2501pub struct AddSecretVersionRequest {
2502    /// Required. The resource name of the
2503    /// [Secret][google.cloud.secretmanager.v1.Secret] to associate with the
2504    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
2505    /// `projects/*/secrets/*` or `projects/*/locations/*/secrets/*`.
2506    ///
2507    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2508    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2509    pub parent: std::string::String,
2510
2511    /// Required. The secret payload of the
2512    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
2513    ///
2514    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2515    pub payload: std::option::Option<crate::model::SecretPayload>,
2516
2517    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2518}
2519
2520impl AddSecretVersionRequest {
2521    pub fn new() -> Self {
2522        std::default::Default::default()
2523    }
2524
2525    /// Sets the value of [parent][crate::model::AddSecretVersionRequest::parent].
2526    ///
2527    /// # Example
2528    /// ```ignore,no_run
2529    /// # use google_cloud_secretmanager_v1::model::AddSecretVersionRequest;
2530    /// let x = AddSecretVersionRequest::new().set_parent("example");
2531    /// ```
2532    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2533        self.parent = v.into();
2534        self
2535    }
2536
2537    /// Sets the value of [payload][crate::model::AddSecretVersionRequest::payload].
2538    ///
2539    /// # Example
2540    /// ```ignore,no_run
2541    /// # use google_cloud_secretmanager_v1::model::AddSecretVersionRequest;
2542    /// use google_cloud_secretmanager_v1::model::SecretPayload;
2543    /// let x = AddSecretVersionRequest::new().set_payload(SecretPayload::default()/* use setters */);
2544    /// ```
2545    pub fn set_payload<T>(mut self, v: T) -> Self
2546    where
2547        T: std::convert::Into<crate::model::SecretPayload>,
2548    {
2549        self.payload = std::option::Option::Some(v.into());
2550        self
2551    }
2552
2553    /// Sets or clears the value of [payload][crate::model::AddSecretVersionRequest::payload].
2554    ///
2555    /// # Example
2556    /// ```ignore,no_run
2557    /// # use google_cloud_secretmanager_v1::model::AddSecretVersionRequest;
2558    /// use google_cloud_secretmanager_v1::model::SecretPayload;
2559    /// let x = AddSecretVersionRequest::new().set_or_clear_payload(Some(SecretPayload::default()/* use setters */));
2560    /// let x = AddSecretVersionRequest::new().set_or_clear_payload(None::<SecretPayload>);
2561    /// ```
2562    pub fn set_or_clear_payload<T>(mut self, v: std::option::Option<T>) -> Self
2563    where
2564        T: std::convert::Into<crate::model::SecretPayload>,
2565    {
2566        self.payload = v.map(|x| x.into());
2567        self
2568    }
2569}
2570
2571impl wkt::message::Message for AddSecretVersionRequest {
2572    fn typename() -> &'static str {
2573        "type.googleapis.com/google.cloud.secretmanager.v1.AddSecretVersionRequest"
2574    }
2575}
2576
2577/// Request message for
2578/// [SecretManagerService.GetSecret][google.cloud.secretmanager.v1.SecretManagerService.GetSecret].
2579///
2580/// [google.cloud.secretmanager.v1.SecretManagerService.GetSecret]: crate::client::SecretManagerService::get_secret
2581#[derive(Clone, Default, PartialEq)]
2582#[non_exhaustive]
2583pub struct GetSecretRequest {
2584    /// Required. The resource name of the
2585    /// [Secret][google.cloud.secretmanager.v1.Secret], in the format
2586    /// `projects/*/secrets/*` or `projects/*/locations/*/secrets/*`.
2587    ///
2588    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2589    pub name: std::string::String,
2590
2591    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2592}
2593
2594impl GetSecretRequest {
2595    pub fn new() -> Self {
2596        std::default::Default::default()
2597    }
2598
2599    /// Sets the value of [name][crate::model::GetSecretRequest::name].
2600    ///
2601    /// # Example
2602    /// ```ignore,no_run
2603    /// # use google_cloud_secretmanager_v1::model::GetSecretRequest;
2604    /// let x = GetSecretRequest::new().set_name("example");
2605    /// ```
2606    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2607        self.name = v.into();
2608        self
2609    }
2610}
2611
2612impl wkt::message::Message for GetSecretRequest {
2613    fn typename() -> &'static str {
2614        "type.googleapis.com/google.cloud.secretmanager.v1.GetSecretRequest"
2615    }
2616}
2617
2618/// Request message for
2619/// [SecretManagerService.ListSecretVersions][google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions].
2620///
2621/// [google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions]: crate::client::SecretManagerService::list_secret_versions
2622#[derive(Clone, Default, PartialEq)]
2623#[non_exhaustive]
2624pub struct ListSecretVersionsRequest {
2625    /// Required. The resource name of the
2626    /// [Secret][google.cloud.secretmanager.v1.Secret] associated with the
2627    /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] to list, in
2628    /// the format `projects/*/secrets/*` or `projects/*/locations/*/secrets/*`.
2629    ///
2630    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2631    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2632    pub parent: std::string::String,
2633
2634    /// Optional. The maximum number of results to be returned in a single page. If
2635    /// set to 0, the server decides the number of results to return. If the
2636    /// number is greater than 25000, it is capped at 25000.
2637    pub page_size: i32,
2638
2639    /// Optional. Pagination token, returned earlier via
2640    /// ListSecretVersionsResponse.next_page_token][].
2641    pub page_token: std::string::String,
2642
2643    /// Optional. Filter string, adhering to the rules in
2644    /// [List-operation
2645    /// filtering](https://cloud.google.com/secret-manager/docs/filtering). List
2646    /// only secret versions matching the filter. If filter is empty, all secret
2647    /// versions are listed.
2648    pub filter: std::string::String,
2649
2650    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2651}
2652
2653impl ListSecretVersionsRequest {
2654    pub fn new() -> Self {
2655        std::default::Default::default()
2656    }
2657
2658    /// Sets the value of [parent][crate::model::ListSecretVersionsRequest::parent].
2659    ///
2660    /// # Example
2661    /// ```ignore,no_run
2662    /// # use google_cloud_secretmanager_v1::model::ListSecretVersionsRequest;
2663    /// let x = ListSecretVersionsRequest::new().set_parent("example");
2664    /// ```
2665    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2666        self.parent = v.into();
2667        self
2668    }
2669
2670    /// Sets the value of [page_size][crate::model::ListSecretVersionsRequest::page_size].
2671    ///
2672    /// # Example
2673    /// ```ignore,no_run
2674    /// # use google_cloud_secretmanager_v1::model::ListSecretVersionsRequest;
2675    /// let x = ListSecretVersionsRequest::new().set_page_size(42);
2676    /// ```
2677    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
2678        self.page_size = v.into();
2679        self
2680    }
2681
2682    /// Sets the value of [page_token][crate::model::ListSecretVersionsRequest::page_token].
2683    ///
2684    /// # Example
2685    /// ```ignore,no_run
2686    /// # use google_cloud_secretmanager_v1::model::ListSecretVersionsRequest;
2687    /// let x = ListSecretVersionsRequest::new().set_page_token("example");
2688    /// ```
2689    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2690        self.page_token = v.into();
2691        self
2692    }
2693
2694    /// Sets the value of [filter][crate::model::ListSecretVersionsRequest::filter].
2695    ///
2696    /// # Example
2697    /// ```ignore,no_run
2698    /// # use google_cloud_secretmanager_v1::model::ListSecretVersionsRequest;
2699    /// let x = ListSecretVersionsRequest::new().set_filter("example");
2700    /// ```
2701    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2702        self.filter = v.into();
2703        self
2704    }
2705}
2706
2707impl wkt::message::Message for ListSecretVersionsRequest {
2708    fn typename() -> &'static str {
2709        "type.googleapis.com/google.cloud.secretmanager.v1.ListSecretVersionsRequest"
2710    }
2711}
2712
2713/// Response message for
2714/// [SecretManagerService.ListSecretVersions][google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions].
2715///
2716/// [google.cloud.secretmanager.v1.SecretManagerService.ListSecretVersions]: crate::client::SecretManagerService::list_secret_versions
2717#[derive(Clone, Default, PartialEq)]
2718#[non_exhaustive]
2719pub struct ListSecretVersionsResponse {
2720    /// The list of [SecretVersions][google.cloud.secretmanager.v1.SecretVersion]
2721    /// sorted in reverse by create_time (newest first).
2722    ///
2723    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2724    pub versions: std::vec::Vec<crate::model::SecretVersion>,
2725
2726    /// A token to retrieve the next page of results. Pass this value in
2727    /// [ListSecretVersionsRequest.page_token][google.cloud.secretmanager.v1.ListSecretVersionsRequest.page_token]
2728    /// to retrieve the next page.
2729    ///
2730    /// [google.cloud.secretmanager.v1.ListSecretVersionsRequest.page_token]: crate::model::ListSecretVersionsRequest::page_token
2731    pub next_page_token: std::string::String,
2732
2733    /// The total number of
2734    /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] but 0 when
2735    /// the
2736    /// [ListSecretsRequest.filter][google.cloud.secretmanager.v1.ListSecretsRequest.filter]
2737    /// field is set.
2738    ///
2739    /// [google.cloud.secretmanager.v1.ListSecretsRequest.filter]: crate::model::ListSecretsRequest::filter
2740    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2741    pub total_size: i32,
2742
2743    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2744}
2745
2746impl ListSecretVersionsResponse {
2747    pub fn new() -> Self {
2748        std::default::Default::default()
2749    }
2750
2751    /// Sets the value of [versions][crate::model::ListSecretVersionsResponse::versions].
2752    ///
2753    /// # Example
2754    /// ```ignore,no_run
2755    /// # use google_cloud_secretmanager_v1::model::ListSecretVersionsResponse;
2756    /// use google_cloud_secretmanager_v1::model::SecretVersion;
2757    /// let x = ListSecretVersionsResponse::new()
2758    ///     .set_versions([
2759    ///         SecretVersion::default()/* use setters */,
2760    ///         SecretVersion::default()/* use (different) setters */,
2761    ///     ]);
2762    /// ```
2763    pub fn set_versions<T, V>(mut self, v: T) -> Self
2764    where
2765        T: std::iter::IntoIterator<Item = V>,
2766        V: std::convert::Into<crate::model::SecretVersion>,
2767    {
2768        use std::iter::Iterator;
2769        self.versions = v.into_iter().map(|i| i.into()).collect();
2770        self
2771    }
2772
2773    /// Sets the value of [next_page_token][crate::model::ListSecretVersionsResponse::next_page_token].
2774    ///
2775    /// # Example
2776    /// ```ignore,no_run
2777    /// # use google_cloud_secretmanager_v1::model::ListSecretVersionsResponse;
2778    /// let x = ListSecretVersionsResponse::new().set_next_page_token("example");
2779    /// ```
2780    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2781        self.next_page_token = v.into();
2782        self
2783    }
2784
2785    /// Sets the value of [total_size][crate::model::ListSecretVersionsResponse::total_size].
2786    ///
2787    /// # Example
2788    /// ```ignore,no_run
2789    /// # use google_cloud_secretmanager_v1::model::ListSecretVersionsResponse;
2790    /// let x = ListSecretVersionsResponse::new().set_total_size(42);
2791    /// ```
2792    pub fn set_total_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
2793        self.total_size = v.into();
2794        self
2795    }
2796}
2797
2798impl wkt::message::Message for ListSecretVersionsResponse {
2799    fn typename() -> &'static str {
2800        "type.googleapis.com/google.cloud.secretmanager.v1.ListSecretVersionsResponse"
2801    }
2802}
2803
2804#[doc(hidden)]
2805impl google_cloud_gax::paginator::internal::PageableResponse for ListSecretVersionsResponse {
2806    type PageItem = crate::model::SecretVersion;
2807
2808    fn items(self) -> std::vec::Vec<Self::PageItem> {
2809        self.versions
2810    }
2811
2812    fn next_page_token(&self) -> std::string::String {
2813        use std::clone::Clone;
2814        self.next_page_token.clone()
2815    }
2816}
2817
2818/// Request message for
2819/// [SecretManagerService.GetSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.GetSecretVersion].
2820///
2821/// [google.cloud.secretmanager.v1.SecretManagerService.GetSecretVersion]: crate::client::SecretManagerService::get_secret_version
2822#[derive(Clone, Default, PartialEq)]
2823#[non_exhaustive]
2824pub struct GetSecretVersionRequest {
2825    /// Required. The resource name of the
2826    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
2827    /// `projects/*/secrets/*/versions/*` or
2828    /// `projects/*/locations/*/secrets/*/versions/*`.
2829    ///
2830    /// `projects/*/secrets/*/versions/latest` or
2831    /// `projects/*/locations/*/secrets/*/versions/latest` is an alias to the most
2832    /// recently created
2833    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
2834    ///
2835    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2836    pub name: std::string::String,
2837
2838    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2839}
2840
2841impl GetSecretVersionRequest {
2842    pub fn new() -> Self {
2843        std::default::Default::default()
2844    }
2845
2846    /// Sets the value of [name][crate::model::GetSecretVersionRequest::name].
2847    ///
2848    /// # Example
2849    /// ```ignore,no_run
2850    /// # use google_cloud_secretmanager_v1::model::GetSecretVersionRequest;
2851    /// let x = GetSecretVersionRequest::new().set_name("example");
2852    /// ```
2853    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2854        self.name = v.into();
2855        self
2856    }
2857}
2858
2859impl wkt::message::Message for GetSecretVersionRequest {
2860    fn typename() -> &'static str {
2861        "type.googleapis.com/google.cloud.secretmanager.v1.GetSecretVersionRequest"
2862    }
2863}
2864
2865/// Request message for
2866/// [SecretManagerService.UpdateSecret][google.cloud.secretmanager.v1.SecretManagerService.UpdateSecret].
2867///
2868/// [google.cloud.secretmanager.v1.SecretManagerService.UpdateSecret]: crate::client::SecretManagerService::update_secret
2869#[derive(Clone, Default, PartialEq)]
2870#[non_exhaustive]
2871pub struct UpdateSecretRequest {
2872    /// Required. [Secret][google.cloud.secretmanager.v1.Secret] with updated field
2873    /// values.
2874    ///
2875    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
2876    pub secret: std::option::Option<crate::model::Secret>,
2877
2878    /// Required. Specifies the fields to be updated.
2879    pub update_mask: std::option::Option<wkt::FieldMask>,
2880
2881    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2882}
2883
2884impl UpdateSecretRequest {
2885    pub fn new() -> Self {
2886        std::default::Default::default()
2887    }
2888
2889    /// Sets the value of [secret][crate::model::UpdateSecretRequest::secret].
2890    ///
2891    /// # Example
2892    /// ```ignore,no_run
2893    /// # use google_cloud_secretmanager_v1::model::UpdateSecretRequest;
2894    /// use google_cloud_secretmanager_v1::model::Secret;
2895    /// let x = UpdateSecretRequest::new().set_secret(Secret::default()/* use setters */);
2896    /// ```
2897    pub fn set_secret<T>(mut self, v: T) -> Self
2898    where
2899        T: std::convert::Into<crate::model::Secret>,
2900    {
2901        self.secret = std::option::Option::Some(v.into());
2902        self
2903    }
2904
2905    /// Sets or clears the value of [secret][crate::model::UpdateSecretRequest::secret].
2906    ///
2907    /// # Example
2908    /// ```ignore,no_run
2909    /// # use google_cloud_secretmanager_v1::model::UpdateSecretRequest;
2910    /// use google_cloud_secretmanager_v1::model::Secret;
2911    /// let x = UpdateSecretRequest::new().set_or_clear_secret(Some(Secret::default()/* use setters */));
2912    /// let x = UpdateSecretRequest::new().set_or_clear_secret(None::<Secret>);
2913    /// ```
2914    pub fn set_or_clear_secret<T>(mut self, v: std::option::Option<T>) -> Self
2915    where
2916        T: std::convert::Into<crate::model::Secret>,
2917    {
2918        self.secret = v.map(|x| x.into());
2919        self
2920    }
2921
2922    /// Sets the value of [update_mask][crate::model::UpdateSecretRequest::update_mask].
2923    ///
2924    /// # Example
2925    /// ```ignore,no_run
2926    /// # use google_cloud_secretmanager_v1::model::UpdateSecretRequest;
2927    /// use wkt::FieldMask;
2928    /// let x = UpdateSecretRequest::new().set_update_mask(FieldMask::default()/* use setters */);
2929    /// ```
2930    pub fn set_update_mask<T>(mut self, v: T) -> Self
2931    where
2932        T: std::convert::Into<wkt::FieldMask>,
2933    {
2934        self.update_mask = std::option::Option::Some(v.into());
2935        self
2936    }
2937
2938    /// Sets or clears the value of [update_mask][crate::model::UpdateSecretRequest::update_mask].
2939    ///
2940    /// # Example
2941    /// ```ignore,no_run
2942    /// # use google_cloud_secretmanager_v1::model::UpdateSecretRequest;
2943    /// use wkt::FieldMask;
2944    /// let x = UpdateSecretRequest::new().set_or_clear_update_mask(Some(FieldMask::default()/* use setters */));
2945    /// let x = UpdateSecretRequest::new().set_or_clear_update_mask(None::<FieldMask>);
2946    /// ```
2947    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
2948    where
2949        T: std::convert::Into<wkt::FieldMask>,
2950    {
2951        self.update_mask = v.map(|x| x.into());
2952        self
2953    }
2954}
2955
2956impl wkt::message::Message for UpdateSecretRequest {
2957    fn typename() -> &'static str {
2958        "type.googleapis.com/google.cloud.secretmanager.v1.UpdateSecretRequest"
2959    }
2960}
2961
2962/// Request message for
2963/// [SecretManagerService.AccessSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion].
2964///
2965/// [google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion]: crate::client::SecretManagerService::access_secret_version
2966#[derive(Clone, Default, PartialEq)]
2967#[non_exhaustive]
2968pub struct AccessSecretVersionRequest {
2969    /// Required. The resource name of the
2970    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
2971    /// `projects/*/secrets/*/versions/*` or
2972    /// `projects/*/locations/*/secrets/*/versions/*`.
2973    ///
2974    /// `projects/*/secrets/*/versions/latest` or
2975    /// `projects/*/locations/*/secrets/*/versions/latest` is an alias to the most
2976    /// recently created
2977    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion].
2978    ///
2979    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
2980    pub name: std::string::String,
2981
2982    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2983}
2984
2985impl AccessSecretVersionRequest {
2986    pub fn new() -> Self {
2987        std::default::Default::default()
2988    }
2989
2990    /// Sets the value of [name][crate::model::AccessSecretVersionRequest::name].
2991    ///
2992    /// # Example
2993    /// ```ignore,no_run
2994    /// # use google_cloud_secretmanager_v1::model::AccessSecretVersionRequest;
2995    /// let x = AccessSecretVersionRequest::new().set_name("example");
2996    /// ```
2997    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2998        self.name = v.into();
2999        self
3000    }
3001}
3002
3003impl wkt::message::Message for AccessSecretVersionRequest {
3004    fn typename() -> &'static str {
3005        "type.googleapis.com/google.cloud.secretmanager.v1.AccessSecretVersionRequest"
3006    }
3007}
3008
3009/// Response message for
3010/// [SecretManagerService.AccessSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion].
3011///
3012/// [google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion]: crate::client::SecretManagerService::access_secret_version
3013#[derive(Clone, Default, PartialEq)]
3014#[non_exhaustive]
3015pub struct AccessSecretVersionResponse {
3016    /// The resource name of the
3017    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] in the format
3018    /// `projects/*/secrets/*/versions/*` or
3019    /// `projects/*/locations/*/secrets/*/versions/*`.
3020    ///
3021    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
3022    pub name: std::string::String,
3023
3024    /// Secret payload
3025    pub payload: std::option::Option<crate::model::SecretPayload>,
3026
3027    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3028}
3029
3030impl AccessSecretVersionResponse {
3031    pub fn new() -> Self {
3032        std::default::Default::default()
3033    }
3034
3035    /// Sets the value of [name][crate::model::AccessSecretVersionResponse::name].
3036    ///
3037    /// # Example
3038    /// ```ignore,no_run
3039    /// # use google_cloud_secretmanager_v1::model::AccessSecretVersionResponse;
3040    /// let x = AccessSecretVersionResponse::new().set_name("example");
3041    /// ```
3042    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3043        self.name = v.into();
3044        self
3045    }
3046
3047    /// Sets the value of [payload][crate::model::AccessSecretVersionResponse::payload].
3048    ///
3049    /// # Example
3050    /// ```ignore,no_run
3051    /// # use google_cloud_secretmanager_v1::model::AccessSecretVersionResponse;
3052    /// use google_cloud_secretmanager_v1::model::SecretPayload;
3053    /// let x = AccessSecretVersionResponse::new().set_payload(SecretPayload::default()/* use setters */);
3054    /// ```
3055    pub fn set_payload<T>(mut self, v: T) -> Self
3056    where
3057        T: std::convert::Into<crate::model::SecretPayload>,
3058    {
3059        self.payload = std::option::Option::Some(v.into());
3060        self
3061    }
3062
3063    /// Sets or clears the value of [payload][crate::model::AccessSecretVersionResponse::payload].
3064    ///
3065    /// # Example
3066    /// ```ignore,no_run
3067    /// # use google_cloud_secretmanager_v1::model::AccessSecretVersionResponse;
3068    /// use google_cloud_secretmanager_v1::model::SecretPayload;
3069    /// let x = AccessSecretVersionResponse::new().set_or_clear_payload(Some(SecretPayload::default()/* use setters */));
3070    /// let x = AccessSecretVersionResponse::new().set_or_clear_payload(None::<SecretPayload>);
3071    /// ```
3072    pub fn set_or_clear_payload<T>(mut self, v: std::option::Option<T>) -> Self
3073    where
3074        T: std::convert::Into<crate::model::SecretPayload>,
3075    {
3076        self.payload = v.map(|x| x.into());
3077        self
3078    }
3079}
3080
3081impl wkt::message::Message for AccessSecretVersionResponse {
3082    fn typename() -> &'static str {
3083        "type.googleapis.com/google.cloud.secretmanager.v1.AccessSecretVersionResponse"
3084    }
3085}
3086
3087/// Request message for
3088/// [SecretManagerService.DeleteSecret][google.cloud.secretmanager.v1.SecretManagerService.DeleteSecret].
3089///
3090/// [google.cloud.secretmanager.v1.SecretManagerService.DeleteSecret]: crate::client::SecretManagerService::delete_secret
3091#[derive(Clone, Default, PartialEq)]
3092#[non_exhaustive]
3093pub struct DeleteSecretRequest {
3094    /// Required. The resource name of the
3095    /// [Secret][google.cloud.secretmanager.v1.Secret] to delete in the format
3096    /// `projects/*/secrets/*`.
3097    ///
3098    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
3099    pub name: std::string::String,
3100
3101    /// Optional. Etag of the [Secret][google.cloud.secretmanager.v1.Secret]. The
3102    /// request succeeds if it matches the etag of the currently stored secret
3103    /// object. If the etag is omitted, the request succeeds.
3104    ///
3105    /// [google.cloud.secretmanager.v1.Secret]: crate::model::Secret
3106    pub etag: std::string::String,
3107
3108    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3109}
3110
3111impl DeleteSecretRequest {
3112    pub fn new() -> Self {
3113        std::default::Default::default()
3114    }
3115
3116    /// Sets the value of [name][crate::model::DeleteSecretRequest::name].
3117    ///
3118    /// # Example
3119    /// ```ignore,no_run
3120    /// # use google_cloud_secretmanager_v1::model::DeleteSecretRequest;
3121    /// let x = DeleteSecretRequest::new().set_name("example");
3122    /// ```
3123    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3124        self.name = v.into();
3125        self
3126    }
3127
3128    /// Sets the value of [etag][crate::model::DeleteSecretRequest::etag].
3129    ///
3130    /// # Example
3131    /// ```ignore,no_run
3132    /// # use google_cloud_secretmanager_v1::model::DeleteSecretRequest;
3133    /// let x = DeleteSecretRequest::new().set_etag("example");
3134    /// ```
3135    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3136        self.etag = v.into();
3137        self
3138    }
3139}
3140
3141impl wkt::message::Message for DeleteSecretRequest {
3142    fn typename() -> &'static str {
3143        "type.googleapis.com/google.cloud.secretmanager.v1.DeleteSecretRequest"
3144    }
3145}
3146
3147/// Request message for
3148/// [SecretManagerService.DisableSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.DisableSecretVersion].
3149///
3150/// [google.cloud.secretmanager.v1.SecretManagerService.DisableSecretVersion]: crate::client::SecretManagerService::disable_secret_version
3151#[derive(Clone, Default, PartialEq)]
3152#[non_exhaustive]
3153pub struct DisableSecretVersionRequest {
3154    /// Required. The resource name of the
3155    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to disable in
3156    /// the format `projects/*/secrets/*/versions/*` or
3157    /// `projects/*/locations/*/secrets/*/versions/*`.
3158    ///
3159    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
3160    pub name: std::string::String,
3161
3162    /// Optional. Etag of the
3163    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request
3164    /// succeeds if it matches the etag of the currently stored secret version
3165    /// object. If the etag is omitted, the request succeeds.
3166    ///
3167    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
3168    pub etag: std::string::String,
3169
3170    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3171}
3172
3173impl DisableSecretVersionRequest {
3174    pub fn new() -> Self {
3175        std::default::Default::default()
3176    }
3177
3178    /// Sets the value of [name][crate::model::DisableSecretVersionRequest::name].
3179    ///
3180    /// # Example
3181    /// ```ignore,no_run
3182    /// # use google_cloud_secretmanager_v1::model::DisableSecretVersionRequest;
3183    /// let x = DisableSecretVersionRequest::new().set_name("example");
3184    /// ```
3185    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3186        self.name = v.into();
3187        self
3188    }
3189
3190    /// Sets the value of [etag][crate::model::DisableSecretVersionRequest::etag].
3191    ///
3192    /// # Example
3193    /// ```ignore,no_run
3194    /// # use google_cloud_secretmanager_v1::model::DisableSecretVersionRequest;
3195    /// let x = DisableSecretVersionRequest::new().set_etag("example");
3196    /// ```
3197    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3198        self.etag = v.into();
3199        self
3200    }
3201}
3202
3203impl wkt::message::Message for DisableSecretVersionRequest {
3204    fn typename() -> &'static str {
3205        "type.googleapis.com/google.cloud.secretmanager.v1.DisableSecretVersionRequest"
3206    }
3207}
3208
3209/// Request message for
3210/// [SecretManagerService.EnableSecretVersion][google.cloud.secretmanager.v1.SecretManagerService.EnableSecretVersion].
3211///
3212/// [google.cloud.secretmanager.v1.SecretManagerService.EnableSecretVersion]: crate::client::SecretManagerService::enable_secret_version
3213#[derive(Clone, Default, PartialEq)]
3214#[non_exhaustive]
3215pub struct EnableSecretVersionRequest {
3216    /// Required. The resource name of the
3217    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to enable in
3218    /// the format `projects/*/secrets/*/versions/*` or
3219    /// `projects/*/locations/*/secrets/*/versions/*`.
3220    ///
3221    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
3222    pub name: std::string::String,
3223
3224    /// Optional. Etag of the
3225    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request
3226    /// succeeds if it matches the etag of the currently stored secret version
3227    /// object. If the etag is omitted, the request succeeds.
3228    ///
3229    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
3230    pub etag: std::string::String,
3231
3232    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3233}
3234
3235impl EnableSecretVersionRequest {
3236    pub fn new() -> Self {
3237        std::default::Default::default()
3238    }
3239
3240    /// Sets the value of [name][crate::model::EnableSecretVersionRequest::name].
3241    ///
3242    /// # Example
3243    /// ```ignore,no_run
3244    /// # use google_cloud_secretmanager_v1::model::EnableSecretVersionRequest;
3245    /// let x = EnableSecretVersionRequest::new().set_name("example");
3246    /// ```
3247    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3248        self.name = v.into();
3249        self
3250    }
3251
3252    /// Sets the value of [etag][crate::model::EnableSecretVersionRequest::etag].
3253    ///
3254    /// # Example
3255    /// ```ignore,no_run
3256    /// # use google_cloud_secretmanager_v1::model::EnableSecretVersionRequest;
3257    /// let x = EnableSecretVersionRequest::new().set_etag("example");
3258    /// ```
3259    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3260        self.etag = v.into();
3261        self
3262    }
3263}
3264
3265impl wkt::message::Message for EnableSecretVersionRequest {
3266    fn typename() -> &'static str {
3267        "type.googleapis.com/google.cloud.secretmanager.v1.EnableSecretVersionRequest"
3268    }
3269}
3270
3271/// Request message for
3272/// [SecretManagerService.DestroySecretVersion][google.cloud.secretmanager.v1.SecretManagerService.DestroySecretVersion].
3273///
3274/// [google.cloud.secretmanager.v1.SecretManagerService.DestroySecretVersion]: crate::client::SecretManagerService::destroy_secret_version
3275#[derive(Clone, Default, PartialEq)]
3276#[non_exhaustive]
3277pub struct DestroySecretVersionRequest {
3278    /// Required. The resource name of the
3279    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to destroy in
3280    /// the format `projects/*/secrets/*/versions/*` or
3281    /// `projects/*/locations/*/secrets/*/versions/*`.
3282    ///
3283    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
3284    pub name: std::string::String,
3285
3286    /// Optional. Etag of the
3287    /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. The request
3288    /// succeeds if it matches the etag of the currently stored secret version
3289    /// object. If the etag is omitted, the request succeeds.
3290    ///
3291    /// [google.cloud.secretmanager.v1.SecretVersion]: crate::model::SecretVersion
3292    pub etag: std::string::String,
3293
3294    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3295}
3296
3297impl DestroySecretVersionRequest {
3298    pub fn new() -> Self {
3299        std::default::Default::default()
3300    }
3301
3302    /// Sets the value of [name][crate::model::DestroySecretVersionRequest::name].
3303    ///
3304    /// # Example
3305    /// ```ignore,no_run
3306    /// # use google_cloud_secretmanager_v1::model::DestroySecretVersionRequest;
3307    /// let x = DestroySecretVersionRequest::new().set_name("example");
3308    /// ```
3309    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3310        self.name = v.into();
3311        self
3312    }
3313
3314    /// Sets the value of [etag][crate::model::DestroySecretVersionRequest::etag].
3315    ///
3316    /// # Example
3317    /// ```ignore,no_run
3318    /// # use google_cloud_secretmanager_v1::model::DestroySecretVersionRequest;
3319    /// let x = DestroySecretVersionRequest::new().set_etag("example");
3320    /// ```
3321    pub fn set_etag<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3322        self.etag = v.into();
3323        self
3324    }
3325}
3326
3327impl wkt::message::Message for DestroySecretVersionRequest {
3328    fn typename() -> &'static str {
3329        "type.googleapis.com/google.cloud.secretmanager.v1.DestroySecretVersionRequest"
3330    }
3331}