Skip to main content

origincloud_dns/generated/
origincloud.dns.v1beta1.rs

1// Code generated by origincloud-sdk-generator. DO NOT EDIT.
2// source: origincloud/dns/v1beta1/hosted_zone.proto
3// source: origincloud/dns/v1beta1/record_set.proto
4// source: origincloud/dns/v1beta1/vpc_attachment.proto
5
6/// A domain a project's records are answered for.
7#[derive(Clone, PartialEq, ::prost::Message)]
8pub struct HostedZone {
9    /// The zone's resource name.
10    #[prost(string, tag = "1")]
11    pub name: ::prost::alloc::string::String,
12    /// The zone's URN, the identifier access policies and the audit log use.
13    #[prost(string, tag = "2")]
14    pub urn: ::prost::alloc::string::String,
15    /// The domain, such as `example.com`, without the final dot; answered in
16    /// lowercase. A public zone's has at least two labels and at most 235
17    /// characters, so its challenge name fits. A private zone's may have one
18    /// label, but isn't `internal` or a name below it, which answer each
19    /// instance's own name. Neither is one of the platform's own domains or a
20    /// name below one.
21    #[prost(string, tag = "3")]
22    pub dns_name: ::prost::alloc::string::String,
23    /// Where the zone is answered.
24    #[prost(enumeration = "hosted_zone::Visibility", tag = "4")]
25    pub visibility: i32,
26    /// Whether the zone is answered.
27    #[prost(enumeration = "hosted_zone::State", tag = "5")]
28    pub state: i32,
29    /// The name servers to delegate a public zone to at its registrar, as NS
30    /// records of its name. Fixed when the zone is created. Empty for a
31    /// private zone.
32    #[prost(string, repeated, tag = "6")]
33    pub name_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
34    /// How a public zone proves control of its name, and how it went. Unset
35    /// for a private zone.
36    #[prost(message, optional, tag = "7")]
37    pub challenge: ::core::option::Option<OwnershipChallenge>,
38    /// When the zone was created.
39    #[prost(message, optional, tag = "8")]
40    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
41    /// The principal that created the zone, such as `user:<id>` or
42    /// `service_account:<id>`.
43    #[prost(string, tag = "9")]
44    pub creator: ::prost::alloc::string::String,
45    /// Labels of your own, at most 50. The `origin:name` tag is the name the
46    /// console shows.
47    #[prost(btree_map = "string, string", tag = "10")]
48    pub tags: ::prost::alloc::collections::BTreeMap<
49        ::prost::alloc::string::String,
50        ::prost::alloc::string::String,
51    >,
52}
53/// Nested message and enum types in `HostedZone`.
54pub mod hosted_zone {
55    /// Where a zone is answered.
56    #[derive(
57        Clone,
58        Copy,
59        Debug,
60        PartialEq,
61        Eq,
62        Hash,
63        PartialOrd,
64        Ord,
65        ::prost::Enumeration
66    )]
67    #[repr(i32)]
68    pub enum Visibility {
69        /// Not set.
70        Unspecified = 0,
71        /// On the internet, from the platform's name servers.
72        Public = 1,
73        /// Only inside the VPCs it is attached to.
74        Private = 2,
75    }
76    impl Visibility {
77        /// String value of the enum field names used in the ProtoBuf definition.
78        ///
79        /// The values are not transformed in any way and thus are considered stable
80        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
81        pub fn as_str_name(&self) -> &'static str {
82            match self {
83                Self::Unspecified => "VISIBILITY_UNSPECIFIED",
84                Self::Public => "PUBLIC",
85                Self::Private => "PRIVATE",
86            }
87        }
88        /// Creates an enum from field names used in the ProtoBuf definition.
89        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
90            match value {
91                "VISIBILITY_UNSPECIFIED" => Some(Self::Unspecified),
92                "PUBLIC" => Some(Self::Public),
93                "PRIVATE" => Some(Self::Private),
94                _ => None,
95            }
96        }
97    }
98    /// Whether a zone is answered.
99    #[derive(
100        Clone,
101        Copy,
102        Debug,
103        PartialEq,
104        Eq,
105        Hash,
106        PartialOrd,
107        Ord,
108        ::prost::Enumeration
109    )]
110    #[repr(i32)]
111    pub enum State {
112        /// Not set.
113        Unspecified = 0,
114        /// A public zone that hasn't proved control of its name yet: not
115        /// answered, and holding no name.
116        PendingVerification = 1,
117        /// Answered. A public zone in this state holds its name.
118        Active = 2,
119        /// A public zone that lost control of its name: not answered, its
120        /// record sets kept, its name free for another zone.
121        Suspended = 3,
122    }
123    impl State {
124        /// String value of the enum field names used in the ProtoBuf definition.
125        ///
126        /// The values are not transformed in any way and thus are considered stable
127        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
128        pub fn as_str_name(&self) -> &'static str {
129            match self {
130                Self::Unspecified => "STATE_UNSPECIFIED",
131                Self::PendingVerification => "PENDING_VERIFICATION",
132                Self::Active => "ACTIVE",
133                Self::Suspended => "SUSPENDED",
134            }
135        }
136        /// Creates an enum from field names used in the ProtoBuf definition.
137        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
138            match value {
139                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
140                "PENDING_VERIFICATION" => Some(Self::PendingVerification),
141                "ACTIVE" => Some(Self::Active),
142                "SUSPENDED" => Some(Self::Suspended),
143                _ => None,
144            }
145        }
146    }
147}
148/// A public zone's proof of control of its name: a TXT record named
149/// `dns_name` whose value is `token`, answered by the name's current DNS.
150#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
151pub struct OwnershipChallenge {
152    /// The name of the TXT record to create where the zone's name is hosted
153    /// now: `_origin-challenge.` followed by the zone's `dns_name`.
154    #[prost(string, tag = "1")]
155    pub dns_name: ::prost::alloc::string::String,
156    /// The value the TXT record holds.
157    #[prost(string, tag = "2")]
158    pub token: ::prost::alloc::string::String,
159    /// When a pending zone that hasn't verified is deleted; unset once it
160    /// verified.
161    #[prost(message, optional, tag = "3")]
162    pub expire_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
163    /// When the zone verified; unset while it is pending.
164    #[prost(message, optional, tag = "4")]
165    pub verify_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
166    /// When the zone was suspended; unset unless it is `hosted_zone::State::Suspended`.
167    #[prost(message, optional, tag = "5")]
168    pub suspend_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
169    /// Why the zone was suspended; unset unless it is `hosted_zone::State::Suspended`.
170    #[prost(enumeration = "ownership_challenge::SuspensionReason", tag = "6")]
171    pub suspension_reason: i32,
172    /// What the check `VerifyHostedZone` made found. Set only in that
173    /// method's response.
174    #[prost(enumeration = "ownership_challenge::CheckOutcome", tag = "7")]
175    pub last_check: i32,
176}
177/// Nested message and enum types in `OwnershipChallenge`.
178pub mod ownership_challenge {
179    /// Why a zone was suspended.
180    #[derive(
181        Clone,
182        Copy,
183        Debug,
184        PartialEq,
185        Eq,
186        Hash,
187        PartialOrd,
188        Ord,
189        ::prost::Enumeration
190    )]
191    #[repr(i32)]
192    pub enum SuspensionReason {
193        /// Not set.
194        Unspecified = 0,
195        /// Several daily checks in a row found the name delegated to other name
196        /// servers, without the zone's token.
197        ChallengeLost = 1,
198    }
199    impl SuspensionReason {
200        /// String value of the enum field names used in the ProtoBuf definition.
201        ///
202        /// The values are not transformed in any way and thus are considered stable
203        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
204        pub fn as_str_name(&self) -> &'static str {
205            match self {
206                Self::Unspecified => "SUSPENSION_REASON_UNSPECIFIED",
207                Self::ChallengeLost => "CHALLENGE_LOST",
208            }
209        }
210        /// Creates an enum from field names used in the ProtoBuf definition.
211        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
212            match value {
213                "SUSPENSION_REASON_UNSPECIFIED" => Some(Self::Unspecified),
214                "CHALLENGE_LOST" => Some(Self::ChallengeLost),
215                _ => None,
216            }
217        }
218    }
219    /// What a check of the challenge found.
220    #[derive(
221        Clone,
222        Copy,
223        Debug,
224        PartialEq,
225        Eq,
226        Hash,
227        PartialOrd,
228        Ord,
229        ::prost::Enumeration
230    )]
231    #[repr(i32)]
232    pub enum CheckOutcome {
233        /// Not set.
234        Unspecified = 0,
235        /// The token answers, and the zone holds its name: it is `hosted_zone::State::Active`.
236        Ok = 1,
237        /// The token doesn't answer at the TXT record's name, or the name's DNS
238        /// can't be asked.
239        NotFound = 2,
240        /// The token answers, but another zone holds the name.
241        NameHeld = 3,
242    }
243    impl CheckOutcome {
244        /// String value of the enum field names used in the ProtoBuf definition.
245        ///
246        /// The values are not transformed in any way and thus are considered stable
247        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
248        pub fn as_str_name(&self) -> &'static str {
249            match self {
250                Self::Unspecified => "CHECK_OUTCOME_UNSPECIFIED",
251                Self::Ok => "OK",
252                Self::NotFound => "NOT_FOUND",
253                Self::NameHeld => "NAME_HELD",
254            }
255        }
256        /// Creates an enum from field names used in the ProtoBuf definition.
257        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
258            match value {
259                "CHECK_OUTCOME_UNSPECIFIED" => Some(Self::Unspecified),
260                "OK" => Some(Self::Ok),
261                "NOT_FOUND" => Some(Self::NotFound),
262                "NAME_HELD" => Some(Self::NameHeld),
263                _ => None,
264            }
265        }
266    }
267}
268/// The request for GetHostedZone.
269#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
270pub struct GetHostedZoneRequest {
271    /// The zone to return.
272    #[prost(string, tag = "1")]
273    pub name: ::prost::alloc::string::String,
274}
275/// The request for ListHostedZones.
276#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
277pub struct ListHostedZonesRequest {
278    /// The project whose zones to list, `projects/{project}`.
279    #[prost(string, tag = "1")]
280    pub parent: ::prost::alloc::string::String,
281    /// The most zones to return; the server clamps it, and 0 means its
282    /// default.
283    #[prost(int32, tag = "2")]
284    pub page_size: i32,
285    /// A previous response's `next_page_token`, for the page after it.
286    #[prost(string, tag = "3")]
287    pub page_token: ::prost::alloc::string::String,
288    /// Only the zones of this domain, written as `dns_name` is; every zone
289    /// when left empty.
290    #[prost(string, tag = "4")]
291    pub dns_name: ::prost::alloc::string::String,
292}
293/// The response for ListHostedZones.
294#[derive(Clone, PartialEq, ::prost::Message)]
295pub struct ListHostedZonesResponse {
296    /// The zones on this page.
297    #[prost(message, repeated, tag = "1")]
298    pub hosted_zones: ::prost::alloc::vec::Vec<HostedZone>,
299    /// The token for the next page; empty on the last one.
300    #[prost(string, tag = "2")]
301    pub next_page_token: ::prost::alloc::string::String,
302}
303/// The request for CreateHostedZone.
304#[derive(Clone, PartialEq, ::prost::Message)]
305pub struct CreateHostedZoneRequest {
306    /// The project to create the zone in, `projects/{project}`.
307    #[prost(string, tag = "1")]
308    pub parent: ::prost::alloc::string::String,
309    /// The zone to create: its `dns_name`, `visibility` and optionally its
310    /// `tags`.
311    #[prost(message, optional, tag = "2")]
312    pub hosted_zone: ::core::option::Option<HostedZone>,
313    /// A UUID; a repeat with the same id within a day returns the zone the
314    /// first request created, as it is now, instead of creating a second one.
315    #[prost(string, tag = "3")]
316    pub request_id: ::prost::alloc::string::String,
317}
318/// The request for UpdateHostedZone.
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct UpdateHostedZoneRequest {
321    /// The zone, by its name, with the fields to change.
322    #[prost(message, optional, tag = "1")]
323    pub hosted_zone: ::core::option::Option<HostedZone>,
324    /// The fields to change: `tags`, or `*`.
325    #[prost(message, optional, tag = "2")]
326    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
327    /// A UUID; a repeat with the same id within a day returns the zone as it
328    /// is now, instead of changing it again.
329    #[prost(string, tag = "3")]
330    pub request_id: ::prost::alloc::string::String,
331}
332/// The request for DeleteHostedZone.
333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
334pub struct DeleteHostedZoneRequest {
335    /// The zone to delete.
336    #[prost(string, tag = "1")]
337    pub name: ::prost::alloc::string::String,
338    /// A UUID; a repeat with the same id within a day succeeds as the first
339    /// did, instead of answering `ownership_challenge::CheckOutcome::NotFound`.
340    #[prost(string, tag = "2")]
341    pub request_id: ::prost::alloc::string::String,
342}
343/// The request for VerifyHostedZone.
344#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
345pub struct VerifyHostedZoneRequest {
346    /// The public zone to verify.
347    #[prost(string, tag = "1")]
348    pub name: ::prost::alloc::string::String,
349}
350/// Every record of one name and type in a hosted zone.
351#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
352pub struct RecordSet {
353    /// The record set's resource name.
354    #[prost(string, tag = "1")]
355    pub name: ::prost::alloc::string::String,
356    /// The record set's URN, the identifier access policies and the audit log
357    /// use.
358    #[prost(string, tag = "2")]
359    pub urn: ::prost::alloc::string::String,
360    /// The name the records answer for: the zone's `dns_name` or a name below
361    /// it, written in full, such as `www.example.com`, without the final dot;
362    /// answered in lowercase. Labels may hold `_` (`_dmarc.example.com`), and
363    /// `*` only as the whole leftmost label, for a wildcard.
364    #[prost(string, tag = "3")]
365    pub dns_name: ::prost::alloc::string::String,
366    /// The records' type. An alias is `record_set::Type::A`.
367    #[prost(enumeration = "record_set::Type", tag = "4")]
368    pub r#type: i32,
369    /// How long resolvers may keep the answer, from 30 seconds to 7 days, in
370    /// whole seconds. 300 seconds when left out.
371    #[prost(message, optional, tag = "5")]
372    pub ttl: ::core::option::Option<::origincloud_core::protobuf::Duration>,
373    /// When the record set was created.
374    #[prost(message, optional, tag = "8")]
375    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
376    /// When the record set was last changed.
377    #[prost(message, optional, tag = "9")]
378    pub update_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
379    /// What the record set answers with: exactly one of these.
380    #[prost(oneof = "record_set::Data", tags = "6, 7")]
381    pub data: ::core::option::Option<record_set::Data>,
382}
383/// Nested message and enum types in `RecordSet`.
384pub mod record_set {
385    /// A record type.
386    #[derive(
387        Clone,
388        Copy,
389        Debug,
390        PartialEq,
391        Eq,
392        Hash,
393        PartialOrd,
394        Ord,
395        ::prost::Enumeration
396    )]
397    #[repr(i32)]
398    pub enum Type {
399        /// Not set.
400        Unspecified = 0,
401        /// IPv4 addresses.
402        A = 1,
403        /// IPv6 addresses.
404        Aaaa = 2,
405        /// Another name this one is an alias of.
406        Cname = 3,
407        /// Text.
408        Txt = 4,
409        /// Mail exchangers.
410        Mx = 5,
411        /// Service locations.
412        Srv = 6,
413        /// The certificate authorities that may issue for the name.
414        Caa = 7,
415    }
416    impl Type {
417        /// String value of the enum field names used in the ProtoBuf definition.
418        ///
419        /// The values are not transformed in any way and thus are considered stable
420        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
421        pub fn as_str_name(&self) -> &'static str {
422            match self {
423                Self::Unspecified => "TYPE_UNSPECIFIED",
424                Self::A => "A",
425                Self::Aaaa => "AAAA",
426                Self::Cname => "CNAME",
427                Self::Txt => "TXT",
428                Self::Mx => "MX",
429                Self::Srv => "SRV",
430                Self::Caa => "CAA",
431            }
432        }
433        /// Creates an enum from field names used in the ProtoBuf definition.
434        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
435            match value {
436                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
437                "A" => Some(Self::A),
438                "AAAA" => Some(Self::Aaaa),
439                "CNAME" => Some(Self::Cname),
440                "TXT" => Some(Self::Txt),
441                "MX" => Some(Self::Mx),
442                "SRV" => Some(Self::Srv),
443                "CAA" => Some(Self::Caa),
444                _ => None,
445            }
446        }
447    }
448    /// What the record set answers with: exactly one of these.
449    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
450    pub enum Data {
451        /// Values of its own.
452        #[prost(message, tag = "6")]
453        Basic(super::BasicRecordData),
454        /// The address of a platform resource, followed as it changes.
455        #[prost(message, tag = "7")]
456        Alias(super::AliasRecordData),
457    }
458}
459/// A record set's own values.
460#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
461pub struct BasicRecordData {
462    /// The records' values, 1 to 100, each once, written as `type` says. Names
463    /// are written in full without the final dot, and answered in lowercase.
464    /// - `record_set::Type::A`: an IPv4 address, `192.0.2.10`.
465    /// - `record_set::Type::Aaaa`: an IPv6 address, `2001:db8::10`.
466    /// - `record_set::Type::Cname`: one name, `www.example.net`.
467    /// - `record_set::Type::Txt`: the text as it is, printable ASCII, up to 4000 characters,
468    ///    without quotes; it is split into strings of 255 characters on the
469    ///    wire.
470    /// - `record_set::Type::Mx`: `{preference} {exchange}`, `10 mail.example.com`. `0 .`, alone,
471    ///    says the name takes no mail.
472    /// - `record_set::Type::Srv`: `{priority} {weight} {port} {target}`,
473    ///    `10 5 5060 sip.example.com`. A target of `.`, alone, says the service
474    ///    isn't offered.
475    /// - `record_set::Type::Caa`: `{flags} {tag} {value}`, `0 issue letsencrypt.org`: flags 0 or
476    ///    128, the value as it is, without quotes.
477    ///
478    /// A record set's records take at most 16 KiB on the wire.
479    #[prost(string, repeated, tag = "1")]
480    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
481}
482/// An alias: the record set answers with a platform resource's address, and
483/// follows it as it changes.
484#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
485pub struct AliasRecordData {
486    /// The Floating IP whose address the record set answers with, in the
487    /// zone's project. A Floating IP's address is an IPv4 address, so the
488    /// record set is of type `record_set::Type::A`; an `record_set::Type::Aaaa` alias is refused.
489    #[prost(string, tag = "1")]
490    pub floating_ip: ::prost::alloc::string::String,
491}
492/// The request for GetRecordSet.
493#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
494pub struct GetRecordSetRequest {
495    /// The record set to return.
496    #[prost(string, tag = "1")]
497    pub name: ::prost::alloc::string::String,
498}
499/// The request for ListRecordSets.
500#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
501pub struct ListRecordSetsRequest {
502    /// The zone whose record sets to list,
503    /// `projects/{project}/hostedZones/{hosted_zone}`.
504    #[prost(string, tag = "1")]
505    pub parent: ::prost::alloc::string::String,
506    /// The most record sets to return; the server clamps it, and 0 means its
507    /// default.
508    #[prost(int32, tag = "2")]
509    pub page_size: i32,
510    /// A previous response's `next_page_token`, for the page after it.
511    #[prost(string, tag = "3")]
512    pub page_token: ::prost::alloc::string::String,
513    /// Only the record sets of this name, written as `dns_name` is; every
514    /// name's when left empty.
515    #[prost(string, tag = "4")]
516    pub dns_name: ::prost::alloc::string::String,
517    /// Only the record sets of this type; every type's when left unset.
518    #[prost(enumeration = "record_set::Type", tag = "5")]
519    pub r#type: i32,
520}
521/// The response for ListRecordSets.
522#[derive(Clone, PartialEq, ::prost::Message)]
523pub struct ListRecordSetsResponse {
524    /// The record sets on this page.
525    #[prost(message, repeated, tag = "1")]
526    pub record_sets: ::prost::alloc::vec::Vec<RecordSet>,
527    /// The token for the next page; empty on the last one.
528    #[prost(string, tag = "2")]
529    pub next_page_token: ::prost::alloc::string::String,
530}
531/// The request for CreateRecordSet.
532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
533pub struct CreateRecordSetRequest {
534    /// The zone to create the record set in,
535    /// `projects/{project}/hostedZones/{hosted_zone}`.
536    #[prost(string, tag = "1")]
537    pub parent: ::prost::alloc::string::String,
538    /// The record set to create: its `dns_name`, `type`, optionally its
539    /// `ttl`, and one of `basic` and `alias`.
540    #[prost(message, optional, tag = "2")]
541    pub record_set: ::core::option::Option<RecordSet>,
542    /// A UUID; a repeat with the same id within a day returns the record set
543    /// the first request created, as it is now, instead of being refused as a
544    /// conflict.
545    #[prost(string, tag = "3")]
546    pub request_id: ::prost::alloc::string::String,
547}
548/// The request for UpdateRecordSet.
549#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
550pub struct UpdateRecordSetRequest {
551    /// The record set, by its name, with the fields to change.
552    #[prost(message, optional, tag = "1")]
553    pub record_set: ::core::option::Option<RecordSet>,
554    /// The fields to change: `ttl`, `basic`, `alias`, or `*`.
555    #[prost(message, optional, tag = "2")]
556    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
557    /// A UUID; a repeat with the same id within a day returns the record set
558    /// as the first request left it, instead of changing it again.
559    #[prost(string, tag = "3")]
560    pub request_id: ::prost::alloc::string::String,
561}
562/// The request for DeleteRecordSet.
563#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
564pub struct DeleteRecordSetRequest {
565    /// The record set to delete.
566    #[prost(string, tag = "1")]
567    pub name: ::prost::alloc::string::String,
568    /// A UUID; a repeat with the same id within a day succeeds as the first
569    /// did, instead of answering `ownership_challenge::CheckOutcome::NotFound`.
570    #[prost(string, tag = "2")]
571    pub request_id: ::prost::alloc::string::String,
572}
573/// The request for BatchChangeRecordSets.
574#[derive(Clone, PartialEq, ::prost::Message)]
575pub struct BatchChangeRecordSetsRequest {
576    /// The zone whose record sets to change,
577    /// `projects/{project}/hostedZones/{hosted_zone}`.
578    #[prost(string, tag = "1")]
579    pub parent: ::prost::alloc::string::String,
580    /// The record sets to delete, by name.
581    #[prost(string, repeated, tag = "2")]
582    pub deletions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
583    /// The record sets to change, each with the fields to change, as
584    /// `UpdateRecordSet` takes them.
585    #[prost(message, repeated, tag = "3")]
586    pub updates: ::prost::alloc::vec::Vec<RecordSetUpdate>,
587    /// The record sets to create, as `CreateRecordSet` takes them.
588    #[prost(message, repeated, tag = "4")]
589    pub creations: ::prost::alloc::vec::Vec<RecordSet>,
590    /// A UUID; a repeat with the same id within a day answers with the record
591    /// sets the first request changed and created, as they are now, instead of
592    /// making the changes again.
593    #[prost(string, tag = "5")]
594    pub request_id: ::prost::alloc::string::String,
595}
596/// One change of a `BatchChangeRecordSets` request.
597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
598pub struct RecordSetUpdate {
599    /// The record set, by its name, with the fields to change.
600    #[prost(message, optional, tag = "1")]
601    pub record_set: ::core::option::Option<RecordSet>,
602    /// The fields to change: `ttl`, `basic`, `alias`, or `*`.
603    #[prost(message, optional, tag = "2")]
604    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
605}
606/// The response for BatchChangeRecordSets.
607#[derive(Clone, PartialEq, ::prost::Message)]
608pub struct BatchChangeRecordSetsResponse {
609    /// The record sets changed, then those created, each in the order of the
610    /// request.
611    #[prost(message, repeated, tag = "1")]
612    pub record_sets: ::prost::alloc::vec::Vec<RecordSet>,
613}
614/// A VPC a private zone answers in.
615#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
616pub struct VpcAttachment {
617    /// The attachment's resource name. Its last segment is the VPC's id.
618    #[prost(string, tag = "1")]
619    pub name: ::prost::alloc::string::String,
620    /// The attachment's URN, the identifier access policies and the audit log
621    /// use.
622    #[prost(string, tag = "2")]
623    pub urn: ::prost::alloc::string::String,
624    /// The VPC the zone answers in, in the zone's project.
625    #[prost(string, tag = "3")]
626    pub vpc: ::prost::alloc::string::String,
627    /// When the zone was attached.
628    #[prost(message, optional, tag = "4")]
629    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
630}
631/// The request for GetVpcAttachment.
632#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
633pub struct GetVpcAttachmentRequest {
634    /// The attachment to return.
635    #[prost(string, tag = "1")]
636    pub name: ::prost::alloc::string::String,
637}
638/// The request for ListVpcAttachments.
639#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
640pub struct ListVpcAttachmentsRequest {
641    /// The private zone whose attachments to list,
642    /// `projects/{project}/hostedZones/{hosted_zone}`, or `-` for the zone to
643    /// list every zone's in the project.
644    #[prost(string, tag = "1")]
645    pub parent: ::prost::alloc::string::String,
646    /// The most attachments to return; the server clamps it, and 0 means its
647    /// default.
648    #[prost(int32, tag = "2")]
649    pub page_size: i32,
650    /// A previous response's `next_page_token`, for the page after it.
651    #[prost(string, tag = "3")]
652    pub page_token: ::prost::alloc::string::String,
653    /// Only the attachments to this VPC; every VPC's when left empty.
654    #[prost(string, tag = "4")]
655    pub vpc: ::prost::alloc::string::String,
656}
657/// The response for ListVpcAttachments.
658#[derive(Clone, PartialEq, ::prost::Message)]
659pub struct ListVpcAttachmentsResponse {
660    /// The attachments on this page.
661    #[prost(message, repeated, tag = "1")]
662    pub vpc_attachments: ::prost::alloc::vec::Vec<VpcAttachment>,
663    /// The token for the next page; empty on the last one.
664    #[prost(string, tag = "2")]
665    pub next_page_token: ::prost::alloc::string::String,
666}
667/// The request for CreateVpcAttachment.
668#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
669pub struct CreateVpcAttachmentRequest {
670    /// The private zone to attach,
671    /// `projects/{project}/hostedZones/{hosted_zone}`.
672    #[prost(string, tag = "1")]
673    pub parent: ::prost::alloc::string::String,
674    /// The attachment to create: its `vpc`.
675    #[prost(message, optional, tag = "2")]
676    pub vpc_attachment: ::core::option::Option<VpcAttachment>,
677    /// A UUID; a repeat with the same id within a day returns the attachment
678    /// the first request created, as it is now, instead of being refused as a
679    /// conflict.
680    #[prost(string, tag = "3")]
681    pub request_id: ::prost::alloc::string::String,
682}
683/// The request for DeleteVpcAttachment.
684#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
685pub struct DeleteVpcAttachmentRequest {
686    /// The attachment to delete.
687    #[prost(string, tag = "1")]
688    pub name: ::prost::alloc::string::String,
689    /// A UUID; a repeat with the same id within a day succeeds as the first
690    /// did, instead of answering `ownership_challenge::CheckOutcome::NotFound`.
691    #[prost(string, tag = "2")]
692    pub request_id: ::prost::alloc::string::String,
693}
694impl serde::Serialize for AliasRecordData {
695    #[allow(deprecated)]
696    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
697    where
698        S: serde::Serializer,
699    {
700        use serde::ser::SerializeStruct;
701        let mut len = 0;
702        if !self.floating_ip.is_empty() {
703            len += 1;
704        }
705        let mut struct_ser = serializer
706            .serialize_struct("origincloud.dns.v1beta1.AliasRecordData", len)?;
707        if !self.floating_ip.is_empty() {
708            struct_ser.serialize_field("floatingIp", &self.floating_ip)?;
709        }
710        struct_ser.end()
711    }
712}
713impl<'de> serde::Deserialize<'de> for AliasRecordData {
714    #[allow(deprecated)]
715    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
716    where
717        D: serde::Deserializer<'de>,
718    {
719        const FIELDS: &[&str] = &["floating_ip", "floatingIp"];
720        #[allow(clippy::enum_variant_names)]
721        enum GeneratedField {
722            FloatingIp,
723            __SkipField__,
724        }
725        impl<'de> serde::Deserialize<'de> for GeneratedField {
726            fn deserialize<D>(
727                deserializer: D,
728            ) -> std::result::Result<GeneratedField, D::Error>
729            where
730                D: serde::Deserializer<'de>,
731            {
732                struct GeneratedVisitor;
733                impl serde::de::Visitor<'_> for GeneratedVisitor {
734                    type Value = GeneratedField;
735                    fn expecting(
736                        &self,
737                        formatter: &mut std::fmt::Formatter<'_>,
738                    ) -> std::fmt::Result {
739                        write!(formatter, "expected one of: {:?}", & FIELDS)
740                    }
741                    #[allow(unused_variables)]
742                    fn visit_str<E>(
743                        self,
744                        value: &str,
745                    ) -> std::result::Result<GeneratedField, E>
746                    where
747                        E: serde::de::Error,
748                    {
749                        match value {
750                            "floatingIp" | "floating_ip" => {
751                                Ok(GeneratedField::FloatingIp)
752                            }
753                            _ => Ok(GeneratedField::__SkipField__),
754                        }
755                    }
756                }
757                deserializer.deserialize_identifier(GeneratedVisitor)
758            }
759        }
760        struct GeneratedVisitor;
761        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
762            type Value = AliasRecordData;
763            fn expecting(
764                &self,
765                formatter: &mut std::fmt::Formatter<'_>,
766            ) -> std::fmt::Result {
767                formatter.write_str("struct origincloud.dns.v1beta1.AliasRecordData")
768            }
769            fn visit_map<V>(
770                self,
771                mut map_: V,
772            ) -> std::result::Result<AliasRecordData, V::Error>
773            where
774                V: serde::de::MapAccess<'de>,
775            {
776                let mut floating_ip__ = None;
777                while let Some(k) = map_.next_key()? {
778                    match k {
779                        GeneratedField::FloatingIp => {
780                            if floating_ip__.is_some() {
781                                return Err(serde::de::Error::duplicate_field("floatingIp"));
782                            }
783                            floating_ip__ = Some(map_.next_value()?);
784                        }
785                        GeneratedField::__SkipField__ => {
786                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
787                        }
788                    }
789                }
790                Ok(AliasRecordData {
791                    floating_ip: floating_ip__.unwrap_or_default(),
792                })
793            }
794        }
795        deserializer
796            .deserialize_struct(
797                "origincloud.dns.v1beta1.AliasRecordData",
798                FIELDS,
799                GeneratedVisitor,
800            )
801    }
802}
803impl serde::Serialize for BasicRecordData {
804    #[allow(deprecated)]
805    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
806    where
807        S: serde::Serializer,
808    {
809        use serde::ser::SerializeStruct;
810        let mut len = 0;
811        if !self.values.is_empty() {
812            len += 1;
813        }
814        let mut struct_ser = serializer
815            .serialize_struct("origincloud.dns.v1beta1.BasicRecordData", len)?;
816        if !self.values.is_empty() {
817            struct_ser.serialize_field("values", &self.values)?;
818        }
819        struct_ser.end()
820    }
821}
822impl<'de> serde::Deserialize<'de> for BasicRecordData {
823    #[allow(deprecated)]
824    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
825    where
826        D: serde::Deserializer<'de>,
827    {
828        const FIELDS: &[&str] = &["values"];
829        #[allow(clippy::enum_variant_names)]
830        enum GeneratedField {
831            Values,
832            __SkipField__,
833        }
834        impl<'de> serde::Deserialize<'de> for GeneratedField {
835            fn deserialize<D>(
836                deserializer: D,
837            ) -> std::result::Result<GeneratedField, D::Error>
838            where
839                D: serde::Deserializer<'de>,
840            {
841                struct GeneratedVisitor;
842                impl serde::de::Visitor<'_> for GeneratedVisitor {
843                    type Value = GeneratedField;
844                    fn expecting(
845                        &self,
846                        formatter: &mut std::fmt::Formatter<'_>,
847                    ) -> std::fmt::Result {
848                        write!(formatter, "expected one of: {:?}", & FIELDS)
849                    }
850                    #[allow(unused_variables)]
851                    fn visit_str<E>(
852                        self,
853                        value: &str,
854                    ) -> std::result::Result<GeneratedField, E>
855                    where
856                        E: serde::de::Error,
857                    {
858                        match value {
859                            "values" => Ok(GeneratedField::Values),
860                            _ => Ok(GeneratedField::__SkipField__),
861                        }
862                    }
863                }
864                deserializer.deserialize_identifier(GeneratedVisitor)
865            }
866        }
867        struct GeneratedVisitor;
868        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
869            type Value = BasicRecordData;
870            fn expecting(
871                &self,
872                formatter: &mut std::fmt::Formatter<'_>,
873            ) -> std::fmt::Result {
874                formatter.write_str("struct origincloud.dns.v1beta1.BasicRecordData")
875            }
876            fn visit_map<V>(
877                self,
878                mut map_: V,
879            ) -> std::result::Result<BasicRecordData, V::Error>
880            where
881                V: serde::de::MapAccess<'de>,
882            {
883                let mut values__ = None;
884                while let Some(k) = map_.next_key()? {
885                    match k {
886                        GeneratedField::Values => {
887                            if values__.is_some() {
888                                return Err(serde::de::Error::duplicate_field("values"));
889                            }
890                            values__ = Some(map_.next_value()?);
891                        }
892                        GeneratedField::__SkipField__ => {
893                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
894                        }
895                    }
896                }
897                Ok(BasicRecordData {
898                    values: values__.unwrap_or_default(),
899                })
900            }
901        }
902        deserializer
903            .deserialize_struct(
904                "origincloud.dns.v1beta1.BasicRecordData",
905                FIELDS,
906                GeneratedVisitor,
907            )
908    }
909}
910impl serde::Serialize for BatchChangeRecordSetsRequest {
911    #[allow(deprecated)]
912    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
913    where
914        S: serde::Serializer,
915    {
916        use serde::ser::SerializeStruct;
917        let mut len = 0;
918        if !self.parent.is_empty() {
919            len += 1;
920        }
921        if !self.deletions.is_empty() {
922            len += 1;
923        }
924        if !self.updates.is_empty() {
925            len += 1;
926        }
927        if !self.creations.is_empty() {
928            len += 1;
929        }
930        if !self.request_id.is_empty() {
931            len += 1;
932        }
933        let mut struct_ser = serializer
934            .serialize_struct(
935                "origincloud.dns.v1beta1.BatchChangeRecordSetsRequest",
936                len,
937            )?;
938        if !self.parent.is_empty() {
939            struct_ser.serialize_field("parent", &self.parent)?;
940        }
941        if !self.deletions.is_empty() {
942            struct_ser.serialize_field("deletions", &self.deletions)?;
943        }
944        if !self.updates.is_empty() {
945            struct_ser.serialize_field("updates", &self.updates)?;
946        }
947        if !self.creations.is_empty() {
948            struct_ser.serialize_field("creations", &self.creations)?;
949        }
950        if !self.request_id.is_empty() {
951            struct_ser.serialize_field("requestId", &self.request_id)?;
952        }
953        struct_ser.end()
954    }
955}
956impl<'de> serde::Deserialize<'de> for BatchChangeRecordSetsRequest {
957    #[allow(deprecated)]
958    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
959    where
960        D: serde::Deserializer<'de>,
961    {
962        const FIELDS: &[&str] = &[
963            "parent",
964            "deletions",
965            "updates",
966            "creations",
967            "request_id",
968            "requestId",
969        ];
970        #[allow(clippy::enum_variant_names)]
971        enum GeneratedField {
972            Parent,
973            Deletions,
974            Updates,
975            Creations,
976            RequestId,
977            __SkipField__,
978        }
979        impl<'de> serde::Deserialize<'de> for GeneratedField {
980            fn deserialize<D>(
981                deserializer: D,
982            ) -> std::result::Result<GeneratedField, D::Error>
983            where
984                D: serde::Deserializer<'de>,
985            {
986                struct GeneratedVisitor;
987                impl serde::de::Visitor<'_> for GeneratedVisitor {
988                    type Value = GeneratedField;
989                    fn expecting(
990                        &self,
991                        formatter: &mut std::fmt::Formatter<'_>,
992                    ) -> std::fmt::Result {
993                        write!(formatter, "expected one of: {:?}", & FIELDS)
994                    }
995                    #[allow(unused_variables)]
996                    fn visit_str<E>(
997                        self,
998                        value: &str,
999                    ) -> std::result::Result<GeneratedField, E>
1000                    where
1001                        E: serde::de::Error,
1002                    {
1003                        match value {
1004                            "parent" => Ok(GeneratedField::Parent),
1005                            "deletions" => Ok(GeneratedField::Deletions),
1006                            "updates" => Ok(GeneratedField::Updates),
1007                            "creations" => Ok(GeneratedField::Creations),
1008                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1009                            _ => Ok(GeneratedField::__SkipField__),
1010                        }
1011                    }
1012                }
1013                deserializer.deserialize_identifier(GeneratedVisitor)
1014            }
1015        }
1016        struct GeneratedVisitor;
1017        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1018            type Value = BatchChangeRecordSetsRequest;
1019            fn expecting(
1020                &self,
1021                formatter: &mut std::fmt::Formatter<'_>,
1022            ) -> std::fmt::Result {
1023                formatter
1024                    .write_str(
1025                        "struct origincloud.dns.v1beta1.BatchChangeRecordSetsRequest",
1026                    )
1027            }
1028            fn visit_map<V>(
1029                self,
1030                mut map_: V,
1031            ) -> std::result::Result<BatchChangeRecordSetsRequest, V::Error>
1032            where
1033                V: serde::de::MapAccess<'de>,
1034            {
1035                let mut parent__ = None;
1036                let mut deletions__ = None;
1037                let mut updates__ = None;
1038                let mut creations__ = None;
1039                let mut request_id__ = None;
1040                while let Some(k) = map_.next_key()? {
1041                    match k {
1042                        GeneratedField::Parent => {
1043                            if parent__.is_some() {
1044                                return Err(serde::de::Error::duplicate_field("parent"));
1045                            }
1046                            parent__ = Some(map_.next_value()?);
1047                        }
1048                        GeneratedField::Deletions => {
1049                            if deletions__.is_some() {
1050                                return Err(serde::de::Error::duplicate_field("deletions"));
1051                            }
1052                            deletions__ = Some(map_.next_value()?);
1053                        }
1054                        GeneratedField::Updates => {
1055                            if updates__.is_some() {
1056                                return Err(serde::de::Error::duplicate_field("updates"));
1057                            }
1058                            updates__ = Some(map_.next_value()?);
1059                        }
1060                        GeneratedField::Creations => {
1061                            if creations__.is_some() {
1062                                return Err(serde::de::Error::duplicate_field("creations"));
1063                            }
1064                            creations__ = Some(map_.next_value()?);
1065                        }
1066                        GeneratedField::RequestId => {
1067                            if request_id__.is_some() {
1068                                return Err(serde::de::Error::duplicate_field("requestId"));
1069                            }
1070                            request_id__ = Some(map_.next_value()?);
1071                        }
1072                        GeneratedField::__SkipField__ => {
1073                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1074                        }
1075                    }
1076                }
1077                Ok(BatchChangeRecordSetsRequest {
1078                    parent: parent__.unwrap_or_default(),
1079                    deletions: deletions__.unwrap_or_default(),
1080                    updates: updates__.unwrap_or_default(),
1081                    creations: creations__.unwrap_or_default(),
1082                    request_id: request_id__.unwrap_or_default(),
1083                })
1084            }
1085        }
1086        deserializer
1087            .deserialize_struct(
1088                "origincloud.dns.v1beta1.BatchChangeRecordSetsRequest",
1089                FIELDS,
1090                GeneratedVisitor,
1091            )
1092    }
1093}
1094impl serde::Serialize for BatchChangeRecordSetsResponse {
1095    #[allow(deprecated)]
1096    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1097    where
1098        S: serde::Serializer,
1099    {
1100        use serde::ser::SerializeStruct;
1101        let mut len = 0;
1102        if !self.record_sets.is_empty() {
1103            len += 1;
1104        }
1105        let mut struct_ser = serializer
1106            .serialize_struct(
1107                "origincloud.dns.v1beta1.BatchChangeRecordSetsResponse",
1108                len,
1109            )?;
1110        if !self.record_sets.is_empty() {
1111            struct_ser.serialize_field("recordSets", &self.record_sets)?;
1112        }
1113        struct_ser.end()
1114    }
1115}
1116impl<'de> serde::Deserialize<'de> for BatchChangeRecordSetsResponse {
1117    #[allow(deprecated)]
1118    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1119    where
1120        D: serde::Deserializer<'de>,
1121    {
1122        const FIELDS: &[&str] = &["record_sets", "recordSets"];
1123        #[allow(clippy::enum_variant_names)]
1124        enum GeneratedField {
1125            RecordSets,
1126            __SkipField__,
1127        }
1128        impl<'de> serde::Deserialize<'de> for GeneratedField {
1129            fn deserialize<D>(
1130                deserializer: D,
1131            ) -> std::result::Result<GeneratedField, D::Error>
1132            where
1133                D: serde::Deserializer<'de>,
1134            {
1135                struct GeneratedVisitor;
1136                impl serde::de::Visitor<'_> for GeneratedVisitor {
1137                    type Value = GeneratedField;
1138                    fn expecting(
1139                        &self,
1140                        formatter: &mut std::fmt::Formatter<'_>,
1141                    ) -> std::fmt::Result {
1142                        write!(formatter, "expected one of: {:?}", & FIELDS)
1143                    }
1144                    #[allow(unused_variables)]
1145                    fn visit_str<E>(
1146                        self,
1147                        value: &str,
1148                    ) -> std::result::Result<GeneratedField, E>
1149                    where
1150                        E: serde::de::Error,
1151                    {
1152                        match value {
1153                            "recordSets" | "record_sets" => {
1154                                Ok(GeneratedField::RecordSets)
1155                            }
1156                            _ => Ok(GeneratedField::__SkipField__),
1157                        }
1158                    }
1159                }
1160                deserializer.deserialize_identifier(GeneratedVisitor)
1161            }
1162        }
1163        struct GeneratedVisitor;
1164        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1165            type Value = BatchChangeRecordSetsResponse;
1166            fn expecting(
1167                &self,
1168                formatter: &mut std::fmt::Formatter<'_>,
1169            ) -> std::fmt::Result {
1170                formatter
1171                    .write_str(
1172                        "struct origincloud.dns.v1beta1.BatchChangeRecordSetsResponse",
1173                    )
1174            }
1175            fn visit_map<V>(
1176                self,
1177                mut map_: V,
1178            ) -> std::result::Result<BatchChangeRecordSetsResponse, V::Error>
1179            where
1180                V: serde::de::MapAccess<'de>,
1181            {
1182                let mut record_sets__ = None;
1183                while let Some(k) = map_.next_key()? {
1184                    match k {
1185                        GeneratedField::RecordSets => {
1186                            if record_sets__.is_some() {
1187                                return Err(serde::de::Error::duplicate_field("recordSets"));
1188                            }
1189                            record_sets__ = Some(map_.next_value()?);
1190                        }
1191                        GeneratedField::__SkipField__ => {
1192                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1193                        }
1194                    }
1195                }
1196                Ok(BatchChangeRecordSetsResponse {
1197                    record_sets: record_sets__.unwrap_or_default(),
1198                })
1199            }
1200        }
1201        deserializer
1202            .deserialize_struct(
1203                "origincloud.dns.v1beta1.BatchChangeRecordSetsResponse",
1204                FIELDS,
1205                GeneratedVisitor,
1206            )
1207    }
1208}
1209impl serde::Serialize for CreateHostedZoneRequest {
1210    #[allow(deprecated)]
1211    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1212    where
1213        S: serde::Serializer,
1214    {
1215        use serde::ser::SerializeStruct;
1216        let mut len = 0;
1217        if !self.parent.is_empty() {
1218            len += 1;
1219        }
1220        if self.hosted_zone.is_some() {
1221            len += 1;
1222        }
1223        if !self.request_id.is_empty() {
1224            len += 1;
1225        }
1226        let mut struct_ser = serializer
1227            .serialize_struct("origincloud.dns.v1beta1.CreateHostedZoneRequest", len)?;
1228        if !self.parent.is_empty() {
1229            struct_ser.serialize_field("parent", &self.parent)?;
1230        }
1231        if let Some(v) = self.hosted_zone.as_ref() {
1232            struct_ser.serialize_field("hostedZone", v)?;
1233        }
1234        if !self.request_id.is_empty() {
1235            struct_ser.serialize_field("requestId", &self.request_id)?;
1236        }
1237        struct_ser.end()
1238    }
1239}
1240impl<'de> serde::Deserialize<'de> for CreateHostedZoneRequest {
1241    #[allow(deprecated)]
1242    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1243    where
1244        D: serde::Deserializer<'de>,
1245    {
1246        const FIELDS: &[&str] = &[
1247            "parent",
1248            "hosted_zone",
1249            "hostedZone",
1250            "request_id",
1251            "requestId",
1252        ];
1253        #[allow(clippy::enum_variant_names)]
1254        enum GeneratedField {
1255            Parent,
1256            HostedZone,
1257            RequestId,
1258            __SkipField__,
1259        }
1260        impl<'de> serde::Deserialize<'de> for GeneratedField {
1261            fn deserialize<D>(
1262                deserializer: D,
1263            ) -> std::result::Result<GeneratedField, D::Error>
1264            where
1265                D: serde::Deserializer<'de>,
1266            {
1267                struct GeneratedVisitor;
1268                impl serde::de::Visitor<'_> for GeneratedVisitor {
1269                    type Value = GeneratedField;
1270                    fn expecting(
1271                        &self,
1272                        formatter: &mut std::fmt::Formatter<'_>,
1273                    ) -> std::fmt::Result {
1274                        write!(formatter, "expected one of: {:?}", & FIELDS)
1275                    }
1276                    #[allow(unused_variables)]
1277                    fn visit_str<E>(
1278                        self,
1279                        value: &str,
1280                    ) -> std::result::Result<GeneratedField, E>
1281                    where
1282                        E: serde::de::Error,
1283                    {
1284                        match value {
1285                            "parent" => Ok(GeneratedField::Parent),
1286                            "hostedZone" | "hosted_zone" => {
1287                                Ok(GeneratedField::HostedZone)
1288                            }
1289                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1290                            _ => Ok(GeneratedField::__SkipField__),
1291                        }
1292                    }
1293                }
1294                deserializer.deserialize_identifier(GeneratedVisitor)
1295            }
1296        }
1297        struct GeneratedVisitor;
1298        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1299            type Value = CreateHostedZoneRequest;
1300            fn expecting(
1301                &self,
1302                formatter: &mut std::fmt::Formatter<'_>,
1303            ) -> std::fmt::Result {
1304                formatter
1305                    .write_str("struct origincloud.dns.v1beta1.CreateHostedZoneRequest")
1306            }
1307            fn visit_map<V>(
1308                self,
1309                mut map_: V,
1310            ) -> std::result::Result<CreateHostedZoneRequest, V::Error>
1311            where
1312                V: serde::de::MapAccess<'de>,
1313            {
1314                let mut parent__ = None;
1315                let mut hosted_zone__ = None;
1316                let mut request_id__ = None;
1317                while let Some(k) = map_.next_key()? {
1318                    match k {
1319                        GeneratedField::Parent => {
1320                            if parent__.is_some() {
1321                                return Err(serde::de::Error::duplicate_field("parent"));
1322                            }
1323                            parent__ = Some(map_.next_value()?);
1324                        }
1325                        GeneratedField::HostedZone => {
1326                            if hosted_zone__.is_some() {
1327                                return Err(serde::de::Error::duplicate_field("hostedZone"));
1328                            }
1329                            hosted_zone__ = map_.next_value()?;
1330                        }
1331                        GeneratedField::RequestId => {
1332                            if request_id__.is_some() {
1333                                return Err(serde::de::Error::duplicate_field("requestId"));
1334                            }
1335                            request_id__ = Some(map_.next_value()?);
1336                        }
1337                        GeneratedField::__SkipField__ => {
1338                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1339                        }
1340                    }
1341                }
1342                Ok(CreateHostedZoneRequest {
1343                    parent: parent__.unwrap_or_default(),
1344                    hosted_zone: hosted_zone__,
1345                    request_id: request_id__.unwrap_or_default(),
1346                })
1347            }
1348        }
1349        deserializer
1350            .deserialize_struct(
1351                "origincloud.dns.v1beta1.CreateHostedZoneRequest",
1352                FIELDS,
1353                GeneratedVisitor,
1354            )
1355    }
1356}
1357impl serde::Serialize for CreateRecordSetRequest {
1358    #[allow(deprecated)]
1359    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1360    where
1361        S: serde::Serializer,
1362    {
1363        use serde::ser::SerializeStruct;
1364        let mut len = 0;
1365        if !self.parent.is_empty() {
1366            len += 1;
1367        }
1368        if self.record_set.is_some() {
1369            len += 1;
1370        }
1371        if !self.request_id.is_empty() {
1372            len += 1;
1373        }
1374        let mut struct_ser = serializer
1375            .serialize_struct("origincloud.dns.v1beta1.CreateRecordSetRequest", len)?;
1376        if !self.parent.is_empty() {
1377            struct_ser.serialize_field("parent", &self.parent)?;
1378        }
1379        if let Some(v) = self.record_set.as_ref() {
1380            struct_ser.serialize_field("recordSet", v)?;
1381        }
1382        if !self.request_id.is_empty() {
1383            struct_ser.serialize_field("requestId", &self.request_id)?;
1384        }
1385        struct_ser.end()
1386    }
1387}
1388impl<'de> serde::Deserialize<'de> for CreateRecordSetRequest {
1389    #[allow(deprecated)]
1390    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1391    where
1392        D: serde::Deserializer<'de>,
1393    {
1394        const FIELDS: &[&str] = &[
1395            "parent",
1396            "record_set",
1397            "recordSet",
1398            "request_id",
1399            "requestId",
1400        ];
1401        #[allow(clippy::enum_variant_names)]
1402        enum GeneratedField {
1403            Parent,
1404            RecordSet,
1405            RequestId,
1406            __SkipField__,
1407        }
1408        impl<'de> serde::Deserialize<'de> for GeneratedField {
1409            fn deserialize<D>(
1410                deserializer: D,
1411            ) -> std::result::Result<GeneratedField, D::Error>
1412            where
1413                D: serde::Deserializer<'de>,
1414            {
1415                struct GeneratedVisitor;
1416                impl serde::de::Visitor<'_> for GeneratedVisitor {
1417                    type Value = GeneratedField;
1418                    fn expecting(
1419                        &self,
1420                        formatter: &mut std::fmt::Formatter<'_>,
1421                    ) -> std::fmt::Result {
1422                        write!(formatter, "expected one of: {:?}", & FIELDS)
1423                    }
1424                    #[allow(unused_variables)]
1425                    fn visit_str<E>(
1426                        self,
1427                        value: &str,
1428                    ) -> std::result::Result<GeneratedField, E>
1429                    where
1430                        E: serde::de::Error,
1431                    {
1432                        match value {
1433                            "parent" => Ok(GeneratedField::Parent),
1434                            "recordSet" | "record_set" => Ok(GeneratedField::RecordSet),
1435                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1436                            _ => Ok(GeneratedField::__SkipField__),
1437                        }
1438                    }
1439                }
1440                deserializer.deserialize_identifier(GeneratedVisitor)
1441            }
1442        }
1443        struct GeneratedVisitor;
1444        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1445            type Value = CreateRecordSetRequest;
1446            fn expecting(
1447                &self,
1448                formatter: &mut std::fmt::Formatter<'_>,
1449            ) -> std::fmt::Result {
1450                formatter
1451                    .write_str("struct origincloud.dns.v1beta1.CreateRecordSetRequest")
1452            }
1453            fn visit_map<V>(
1454                self,
1455                mut map_: V,
1456            ) -> std::result::Result<CreateRecordSetRequest, V::Error>
1457            where
1458                V: serde::de::MapAccess<'de>,
1459            {
1460                let mut parent__ = None;
1461                let mut record_set__ = None;
1462                let mut request_id__ = None;
1463                while let Some(k) = map_.next_key()? {
1464                    match k {
1465                        GeneratedField::Parent => {
1466                            if parent__.is_some() {
1467                                return Err(serde::de::Error::duplicate_field("parent"));
1468                            }
1469                            parent__ = Some(map_.next_value()?);
1470                        }
1471                        GeneratedField::RecordSet => {
1472                            if record_set__.is_some() {
1473                                return Err(serde::de::Error::duplicate_field("recordSet"));
1474                            }
1475                            record_set__ = map_.next_value()?;
1476                        }
1477                        GeneratedField::RequestId => {
1478                            if request_id__.is_some() {
1479                                return Err(serde::de::Error::duplicate_field("requestId"));
1480                            }
1481                            request_id__ = Some(map_.next_value()?);
1482                        }
1483                        GeneratedField::__SkipField__ => {
1484                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1485                        }
1486                    }
1487                }
1488                Ok(CreateRecordSetRequest {
1489                    parent: parent__.unwrap_or_default(),
1490                    record_set: record_set__,
1491                    request_id: request_id__.unwrap_or_default(),
1492                })
1493            }
1494        }
1495        deserializer
1496            .deserialize_struct(
1497                "origincloud.dns.v1beta1.CreateRecordSetRequest",
1498                FIELDS,
1499                GeneratedVisitor,
1500            )
1501    }
1502}
1503impl serde::Serialize for CreateVpcAttachmentRequest {
1504    #[allow(deprecated)]
1505    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1506    where
1507        S: serde::Serializer,
1508    {
1509        use serde::ser::SerializeStruct;
1510        let mut len = 0;
1511        if !self.parent.is_empty() {
1512            len += 1;
1513        }
1514        if self.vpc_attachment.is_some() {
1515            len += 1;
1516        }
1517        if !self.request_id.is_empty() {
1518            len += 1;
1519        }
1520        let mut struct_ser = serializer
1521            .serialize_struct(
1522                "origincloud.dns.v1beta1.CreateVpcAttachmentRequest",
1523                len,
1524            )?;
1525        if !self.parent.is_empty() {
1526            struct_ser.serialize_field("parent", &self.parent)?;
1527        }
1528        if let Some(v) = self.vpc_attachment.as_ref() {
1529            struct_ser.serialize_field("vpcAttachment", v)?;
1530        }
1531        if !self.request_id.is_empty() {
1532            struct_ser.serialize_field("requestId", &self.request_id)?;
1533        }
1534        struct_ser.end()
1535    }
1536}
1537impl<'de> serde::Deserialize<'de> for CreateVpcAttachmentRequest {
1538    #[allow(deprecated)]
1539    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1540    where
1541        D: serde::Deserializer<'de>,
1542    {
1543        const FIELDS: &[&str] = &[
1544            "parent",
1545            "vpc_attachment",
1546            "vpcAttachment",
1547            "request_id",
1548            "requestId",
1549        ];
1550        #[allow(clippy::enum_variant_names)]
1551        enum GeneratedField {
1552            Parent,
1553            VpcAttachment,
1554            RequestId,
1555            __SkipField__,
1556        }
1557        impl<'de> serde::Deserialize<'de> for GeneratedField {
1558            fn deserialize<D>(
1559                deserializer: D,
1560            ) -> std::result::Result<GeneratedField, D::Error>
1561            where
1562                D: serde::Deserializer<'de>,
1563            {
1564                struct GeneratedVisitor;
1565                impl serde::de::Visitor<'_> for GeneratedVisitor {
1566                    type Value = GeneratedField;
1567                    fn expecting(
1568                        &self,
1569                        formatter: &mut std::fmt::Formatter<'_>,
1570                    ) -> std::fmt::Result {
1571                        write!(formatter, "expected one of: {:?}", & FIELDS)
1572                    }
1573                    #[allow(unused_variables)]
1574                    fn visit_str<E>(
1575                        self,
1576                        value: &str,
1577                    ) -> std::result::Result<GeneratedField, E>
1578                    where
1579                        E: serde::de::Error,
1580                    {
1581                        match value {
1582                            "parent" => Ok(GeneratedField::Parent),
1583                            "vpcAttachment" | "vpc_attachment" => {
1584                                Ok(GeneratedField::VpcAttachment)
1585                            }
1586                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1587                            _ => Ok(GeneratedField::__SkipField__),
1588                        }
1589                    }
1590                }
1591                deserializer.deserialize_identifier(GeneratedVisitor)
1592            }
1593        }
1594        struct GeneratedVisitor;
1595        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1596            type Value = CreateVpcAttachmentRequest;
1597            fn expecting(
1598                &self,
1599                formatter: &mut std::fmt::Formatter<'_>,
1600            ) -> std::fmt::Result {
1601                formatter
1602                    .write_str(
1603                        "struct origincloud.dns.v1beta1.CreateVpcAttachmentRequest",
1604                    )
1605            }
1606            fn visit_map<V>(
1607                self,
1608                mut map_: V,
1609            ) -> std::result::Result<CreateVpcAttachmentRequest, V::Error>
1610            where
1611                V: serde::de::MapAccess<'de>,
1612            {
1613                let mut parent__ = None;
1614                let mut vpc_attachment__ = None;
1615                let mut request_id__ = None;
1616                while let Some(k) = map_.next_key()? {
1617                    match k {
1618                        GeneratedField::Parent => {
1619                            if parent__.is_some() {
1620                                return Err(serde::de::Error::duplicate_field("parent"));
1621                            }
1622                            parent__ = Some(map_.next_value()?);
1623                        }
1624                        GeneratedField::VpcAttachment => {
1625                            if vpc_attachment__.is_some() {
1626                                return Err(
1627                                    serde::de::Error::duplicate_field("vpcAttachment"),
1628                                );
1629                            }
1630                            vpc_attachment__ = map_.next_value()?;
1631                        }
1632                        GeneratedField::RequestId => {
1633                            if request_id__.is_some() {
1634                                return Err(serde::de::Error::duplicate_field("requestId"));
1635                            }
1636                            request_id__ = Some(map_.next_value()?);
1637                        }
1638                        GeneratedField::__SkipField__ => {
1639                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1640                        }
1641                    }
1642                }
1643                Ok(CreateVpcAttachmentRequest {
1644                    parent: parent__.unwrap_or_default(),
1645                    vpc_attachment: vpc_attachment__,
1646                    request_id: request_id__.unwrap_or_default(),
1647                })
1648            }
1649        }
1650        deserializer
1651            .deserialize_struct(
1652                "origincloud.dns.v1beta1.CreateVpcAttachmentRequest",
1653                FIELDS,
1654                GeneratedVisitor,
1655            )
1656    }
1657}
1658impl serde::Serialize for DeleteHostedZoneRequest {
1659    #[allow(deprecated)]
1660    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1661    where
1662        S: serde::Serializer,
1663    {
1664        use serde::ser::SerializeStruct;
1665        let mut len = 0;
1666        if !self.name.is_empty() {
1667            len += 1;
1668        }
1669        if !self.request_id.is_empty() {
1670            len += 1;
1671        }
1672        let mut struct_ser = serializer
1673            .serialize_struct("origincloud.dns.v1beta1.DeleteHostedZoneRequest", len)?;
1674        if !self.name.is_empty() {
1675            struct_ser.serialize_field("name", &self.name)?;
1676        }
1677        if !self.request_id.is_empty() {
1678            struct_ser.serialize_field("requestId", &self.request_id)?;
1679        }
1680        struct_ser.end()
1681    }
1682}
1683impl<'de> serde::Deserialize<'de> for DeleteHostedZoneRequest {
1684    #[allow(deprecated)]
1685    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1686    where
1687        D: serde::Deserializer<'de>,
1688    {
1689        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
1690        #[allow(clippy::enum_variant_names)]
1691        enum GeneratedField {
1692            Name,
1693            RequestId,
1694            __SkipField__,
1695        }
1696        impl<'de> serde::Deserialize<'de> for GeneratedField {
1697            fn deserialize<D>(
1698                deserializer: D,
1699            ) -> std::result::Result<GeneratedField, D::Error>
1700            where
1701                D: serde::Deserializer<'de>,
1702            {
1703                struct GeneratedVisitor;
1704                impl serde::de::Visitor<'_> for GeneratedVisitor {
1705                    type Value = GeneratedField;
1706                    fn expecting(
1707                        &self,
1708                        formatter: &mut std::fmt::Formatter<'_>,
1709                    ) -> std::fmt::Result {
1710                        write!(formatter, "expected one of: {:?}", & FIELDS)
1711                    }
1712                    #[allow(unused_variables)]
1713                    fn visit_str<E>(
1714                        self,
1715                        value: &str,
1716                    ) -> std::result::Result<GeneratedField, E>
1717                    where
1718                        E: serde::de::Error,
1719                    {
1720                        match value {
1721                            "name" => Ok(GeneratedField::Name),
1722                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1723                            _ => Ok(GeneratedField::__SkipField__),
1724                        }
1725                    }
1726                }
1727                deserializer.deserialize_identifier(GeneratedVisitor)
1728            }
1729        }
1730        struct GeneratedVisitor;
1731        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1732            type Value = DeleteHostedZoneRequest;
1733            fn expecting(
1734                &self,
1735                formatter: &mut std::fmt::Formatter<'_>,
1736            ) -> std::fmt::Result {
1737                formatter
1738                    .write_str("struct origincloud.dns.v1beta1.DeleteHostedZoneRequest")
1739            }
1740            fn visit_map<V>(
1741                self,
1742                mut map_: V,
1743            ) -> std::result::Result<DeleteHostedZoneRequest, V::Error>
1744            where
1745                V: serde::de::MapAccess<'de>,
1746            {
1747                let mut name__ = None;
1748                let mut request_id__ = None;
1749                while let Some(k) = map_.next_key()? {
1750                    match k {
1751                        GeneratedField::Name => {
1752                            if name__.is_some() {
1753                                return Err(serde::de::Error::duplicate_field("name"));
1754                            }
1755                            name__ = Some(map_.next_value()?);
1756                        }
1757                        GeneratedField::RequestId => {
1758                            if request_id__.is_some() {
1759                                return Err(serde::de::Error::duplicate_field("requestId"));
1760                            }
1761                            request_id__ = Some(map_.next_value()?);
1762                        }
1763                        GeneratedField::__SkipField__ => {
1764                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1765                        }
1766                    }
1767                }
1768                Ok(DeleteHostedZoneRequest {
1769                    name: name__.unwrap_or_default(),
1770                    request_id: request_id__.unwrap_or_default(),
1771                })
1772            }
1773        }
1774        deserializer
1775            .deserialize_struct(
1776                "origincloud.dns.v1beta1.DeleteHostedZoneRequest",
1777                FIELDS,
1778                GeneratedVisitor,
1779            )
1780    }
1781}
1782impl serde::Serialize for DeleteRecordSetRequest {
1783    #[allow(deprecated)]
1784    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1785    where
1786        S: serde::Serializer,
1787    {
1788        use serde::ser::SerializeStruct;
1789        let mut len = 0;
1790        if !self.name.is_empty() {
1791            len += 1;
1792        }
1793        if !self.request_id.is_empty() {
1794            len += 1;
1795        }
1796        let mut struct_ser = serializer
1797            .serialize_struct("origincloud.dns.v1beta1.DeleteRecordSetRequest", len)?;
1798        if !self.name.is_empty() {
1799            struct_ser.serialize_field("name", &self.name)?;
1800        }
1801        if !self.request_id.is_empty() {
1802            struct_ser.serialize_field("requestId", &self.request_id)?;
1803        }
1804        struct_ser.end()
1805    }
1806}
1807impl<'de> serde::Deserialize<'de> for DeleteRecordSetRequest {
1808    #[allow(deprecated)]
1809    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1810    where
1811        D: serde::Deserializer<'de>,
1812    {
1813        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
1814        #[allow(clippy::enum_variant_names)]
1815        enum GeneratedField {
1816            Name,
1817            RequestId,
1818            __SkipField__,
1819        }
1820        impl<'de> serde::Deserialize<'de> for GeneratedField {
1821            fn deserialize<D>(
1822                deserializer: D,
1823            ) -> std::result::Result<GeneratedField, D::Error>
1824            where
1825                D: serde::Deserializer<'de>,
1826            {
1827                struct GeneratedVisitor;
1828                impl serde::de::Visitor<'_> for GeneratedVisitor {
1829                    type Value = GeneratedField;
1830                    fn expecting(
1831                        &self,
1832                        formatter: &mut std::fmt::Formatter<'_>,
1833                    ) -> std::fmt::Result {
1834                        write!(formatter, "expected one of: {:?}", & FIELDS)
1835                    }
1836                    #[allow(unused_variables)]
1837                    fn visit_str<E>(
1838                        self,
1839                        value: &str,
1840                    ) -> std::result::Result<GeneratedField, E>
1841                    where
1842                        E: serde::de::Error,
1843                    {
1844                        match value {
1845                            "name" => Ok(GeneratedField::Name),
1846                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1847                            _ => Ok(GeneratedField::__SkipField__),
1848                        }
1849                    }
1850                }
1851                deserializer.deserialize_identifier(GeneratedVisitor)
1852            }
1853        }
1854        struct GeneratedVisitor;
1855        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1856            type Value = DeleteRecordSetRequest;
1857            fn expecting(
1858                &self,
1859                formatter: &mut std::fmt::Formatter<'_>,
1860            ) -> std::fmt::Result {
1861                formatter
1862                    .write_str("struct origincloud.dns.v1beta1.DeleteRecordSetRequest")
1863            }
1864            fn visit_map<V>(
1865                self,
1866                mut map_: V,
1867            ) -> std::result::Result<DeleteRecordSetRequest, V::Error>
1868            where
1869                V: serde::de::MapAccess<'de>,
1870            {
1871                let mut name__ = None;
1872                let mut request_id__ = None;
1873                while let Some(k) = map_.next_key()? {
1874                    match k {
1875                        GeneratedField::Name => {
1876                            if name__.is_some() {
1877                                return Err(serde::de::Error::duplicate_field("name"));
1878                            }
1879                            name__ = Some(map_.next_value()?);
1880                        }
1881                        GeneratedField::RequestId => {
1882                            if request_id__.is_some() {
1883                                return Err(serde::de::Error::duplicate_field("requestId"));
1884                            }
1885                            request_id__ = Some(map_.next_value()?);
1886                        }
1887                        GeneratedField::__SkipField__ => {
1888                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1889                        }
1890                    }
1891                }
1892                Ok(DeleteRecordSetRequest {
1893                    name: name__.unwrap_or_default(),
1894                    request_id: request_id__.unwrap_or_default(),
1895                })
1896            }
1897        }
1898        deserializer
1899            .deserialize_struct(
1900                "origincloud.dns.v1beta1.DeleteRecordSetRequest",
1901                FIELDS,
1902                GeneratedVisitor,
1903            )
1904    }
1905}
1906impl serde::Serialize for DeleteVpcAttachmentRequest {
1907    #[allow(deprecated)]
1908    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1909    where
1910        S: serde::Serializer,
1911    {
1912        use serde::ser::SerializeStruct;
1913        let mut len = 0;
1914        if !self.name.is_empty() {
1915            len += 1;
1916        }
1917        if !self.request_id.is_empty() {
1918            len += 1;
1919        }
1920        let mut struct_ser = serializer
1921            .serialize_struct(
1922                "origincloud.dns.v1beta1.DeleteVpcAttachmentRequest",
1923                len,
1924            )?;
1925        if !self.name.is_empty() {
1926            struct_ser.serialize_field("name", &self.name)?;
1927        }
1928        if !self.request_id.is_empty() {
1929            struct_ser.serialize_field("requestId", &self.request_id)?;
1930        }
1931        struct_ser.end()
1932    }
1933}
1934impl<'de> serde::Deserialize<'de> for DeleteVpcAttachmentRequest {
1935    #[allow(deprecated)]
1936    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1937    where
1938        D: serde::Deserializer<'de>,
1939    {
1940        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
1941        #[allow(clippy::enum_variant_names)]
1942        enum GeneratedField {
1943            Name,
1944            RequestId,
1945            __SkipField__,
1946        }
1947        impl<'de> serde::Deserialize<'de> for GeneratedField {
1948            fn deserialize<D>(
1949                deserializer: D,
1950            ) -> std::result::Result<GeneratedField, D::Error>
1951            where
1952                D: serde::Deserializer<'de>,
1953            {
1954                struct GeneratedVisitor;
1955                impl serde::de::Visitor<'_> for GeneratedVisitor {
1956                    type Value = GeneratedField;
1957                    fn expecting(
1958                        &self,
1959                        formatter: &mut std::fmt::Formatter<'_>,
1960                    ) -> std::fmt::Result {
1961                        write!(formatter, "expected one of: {:?}", & FIELDS)
1962                    }
1963                    #[allow(unused_variables)]
1964                    fn visit_str<E>(
1965                        self,
1966                        value: &str,
1967                    ) -> std::result::Result<GeneratedField, E>
1968                    where
1969                        E: serde::de::Error,
1970                    {
1971                        match value {
1972                            "name" => Ok(GeneratedField::Name),
1973                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1974                            _ => Ok(GeneratedField::__SkipField__),
1975                        }
1976                    }
1977                }
1978                deserializer.deserialize_identifier(GeneratedVisitor)
1979            }
1980        }
1981        struct GeneratedVisitor;
1982        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1983            type Value = DeleteVpcAttachmentRequest;
1984            fn expecting(
1985                &self,
1986                formatter: &mut std::fmt::Formatter<'_>,
1987            ) -> std::fmt::Result {
1988                formatter
1989                    .write_str(
1990                        "struct origincloud.dns.v1beta1.DeleteVpcAttachmentRequest",
1991                    )
1992            }
1993            fn visit_map<V>(
1994                self,
1995                mut map_: V,
1996            ) -> std::result::Result<DeleteVpcAttachmentRequest, V::Error>
1997            where
1998                V: serde::de::MapAccess<'de>,
1999            {
2000                let mut name__ = None;
2001                let mut request_id__ = None;
2002                while let Some(k) = map_.next_key()? {
2003                    match k {
2004                        GeneratedField::Name => {
2005                            if name__.is_some() {
2006                                return Err(serde::de::Error::duplicate_field("name"));
2007                            }
2008                            name__ = Some(map_.next_value()?);
2009                        }
2010                        GeneratedField::RequestId => {
2011                            if request_id__.is_some() {
2012                                return Err(serde::de::Error::duplicate_field("requestId"));
2013                            }
2014                            request_id__ = Some(map_.next_value()?);
2015                        }
2016                        GeneratedField::__SkipField__ => {
2017                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2018                        }
2019                    }
2020                }
2021                Ok(DeleteVpcAttachmentRequest {
2022                    name: name__.unwrap_or_default(),
2023                    request_id: request_id__.unwrap_or_default(),
2024                })
2025            }
2026        }
2027        deserializer
2028            .deserialize_struct(
2029                "origincloud.dns.v1beta1.DeleteVpcAttachmentRequest",
2030                FIELDS,
2031                GeneratedVisitor,
2032            )
2033    }
2034}
2035impl serde::Serialize for GetHostedZoneRequest {
2036    #[allow(deprecated)]
2037    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2038    where
2039        S: serde::Serializer,
2040    {
2041        use serde::ser::SerializeStruct;
2042        let mut len = 0;
2043        if !self.name.is_empty() {
2044            len += 1;
2045        }
2046        let mut struct_ser = serializer
2047            .serialize_struct("origincloud.dns.v1beta1.GetHostedZoneRequest", len)?;
2048        if !self.name.is_empty() {
2049            struct_ser.serialize_field("name", &self.name)?;
2050        }
2051        struct_ser.end()
2052    }
2053}
2054impl<'de> serde::Deserialize<'de> for GetHostedZoneRequest {
2055    #[allow(deprecated)]
2056    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2057    where
2058        D: serde::Deserializer<'de>,
2059    {
2060        const FIELDS: &[&str] = &["name"];
2061        #[allow(clippy::enum_variant_names)]
2062        enum GeneratedField {
2063            Name,
2064            __SkipField__,
2065        }
2066        impl<'de> serde::Deserialize<'de> for GeneratedField {
2067            fn deserialize<D>(
2068                deserializer: D,
2069            ) -> std::result::Result<GeneratedField, D::Error>
2070            where
2071                D: serde::Deserializer<'de>,
2072            {
2073                struct GeneratedVisitor;
2074                impl serde::de::Visitor<'_> for GeneratedVisitor {
2075                    type Value = GeneratedField;
2076                    fn expecting(
2077                        &self,
2078                        formatter: &mut std::fmt::Formatter<'_>,
2079                    ) -> std::fmt::Result {
2080                        write!(formatter, "expected one of: {:?}", & FIELDS)
2081                    }
2082                    #[allow(unused_variables)]
2083                    fn visit_str<E>(
2084                        self,
2085                        value: &str,
2086                    ) -> std::result::Result<GeneratedField, E>
2087                    where
2088                        E: serde::de::Error,
2089                    {
2090                        match value {
2091                            "name" => Ok(GeneratedField::Name),
2092                            _ => Ok(GeneratedField::__SkipField__),
2093                        }
2094                    }
2095                }
2096                deserializer.deserialize_identifier(GeneratedVisitor)
2097            }
2098        }
2099        struct GeneratedVisitor;
2100        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2101            type Value = GetHostedZoneRequest;
2102            fn expecting(
2103                &self,
2104                formatter: &mut std::fmt::Formatter<'_>,
2105            ) -> std::fmt::Result {
2106                formatter
2107                    .write_str("struct origincloud.dns.v1beta1.GetHostedZoneRequest")
2108            }
2109            fn visit_map<V>(
2110                self,
2111                mut map_: V,
2112            ) -> std::result::Result<GetHostedZoneRequest, V::Error>
2113            where
2114                V: serde::de::MapAccess<'de>,
2115            {
2116                let mut name__ = None;
2117                while let Some(k) = map_.next_key()? {
2118                    match k {
2119                        GeneratedField::Name => {
2120                            if name__.is_some() {
2121                                return Err(serde::de::Error::duplicate_field("name"));
2122                            }
2123                            name__ = Some(map_.next_value()?);
2124                        }
2125                        GeneratedField::__SkipField__ => {
2126                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2127                        }
2128                    }
2129                }
2130                Ok(GetHostedZoneRequest {
2131                    name: name__.unwrap_or_default(),
2132                })
2133            }
2134        }
2135        deserializer
2136            .deserialize_struct(
2137                "origincloud.dns.v1beta1.GetHostedZoneRequest",
2138                FIELDS,
2139                GeneratedVisitor,
2140            )
2141    }
2142}
2143impl serde::Serialize for GetRecordSetRequest {
2144    #[allow(deprecated)]
2145    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2146    where
2147        S: serde::Serializer,
2148    {
2149        use serde::ser::SerializeStruct;
2150        let mut len = 0;
2151        if !self.name.is_empty() {
2152            len += 1;
2153        }
2154        let mut struct_ser = serializer
2155            .serialize_struct("origincloud.dns.v1beta1.GetRecordSetRequest", len)?;
2156        if !self.name.is_empty() {
2157            struct_ser.serialize_field("name", &self.name)?;
2158        }
2159        struct_ser.end()
2160    }
2161}
2162impl<'de> serde::Deserialize<'de> for GetRecordSetRequest {
2163    #[allow(deprecated)]
2164    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2165    where
2166        D: serde::Deserializer<'de>,
2167    {
2168        const FIELDS: &[&str] = &["name"];
2169        #[allow(clippy::enum_variant_names)]
2170        enum GeneratedField {
2171            Name,
2172            __SkipField__,
2173        }
2174        impl<'de> serde::Deserialize<'de> for GeneratedField {
2175            fn deserialize<D>(
2176                deserializer: D,
2177            ) -> std::result::Result<GeneratedField, D::Error>
2178            where
2179                D: serde::Deserializer<'de>,
2180            {
2181                struct GeneratedVisitor;
2182                impl serde::de::Visitor<'_> for GeneratedVisitor {
2183                    type Value = GeneratedField;
2184                    fn expecting(
2185                        &self,
2186                        formatter: &mut std::fmt::Formatter<'_>,
2187                    ) -> std::fmt::Result {
2188                        write!(formatter, "expected one of: {:?}", & FIELDS)
2189                    }
2190                    #[allow(unused_variables)]
2191                    fn visit_str<E>(
2192                        self,
2193                        value: &str,
2194                    ) -> std::result::Result<GeneratedField, E>
2195                    where
2196                        E: serde::de::Error,
2197                    {
2198                        match value {
2199                            "name" => Ok(GeneratedField::Name),
2200                            _ => Ok(GeneratedField::__SkipField__),
2201                        }
2202                    }
2203                }
2204                deserializer.deserialize_identifier(GeneratedVisitor)
2205            }
2206        }
2207        struct GeneratedVisitor;
2208        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2209            type Value = GetRecordSetRequest;
2210            fn expecting(
2211                &self,
2212                formatter: &mut std::fmt::Formatter<'_>,
2213            ) -> std::fmt::Result {
2214                formatter.write_str("struct origincloud.dns.v1beta1.GetRecordSetRequest")
2215            }
2216            fn visit_map<V>(
2217                self,
2218                mut map_: V,
2219            ) -> std::result::Result<GetRecordSetRequest, V::Error>
2220            where
2221                V: serde::de::MapAccess<'de>,
2222            {
2223                let mut name__ = None;
2224                while let Some(k) = map_.next_key()? {
2225                    match k {
2226                        GeneratedField::Name => {
2227                            if name__.is_some() {
2228                                return Err(serde::de::Error::duplicate_field("name"));
2229                            }
2230                            name__ = Some(map_.next_value()?);
2231                        }
2232                        GeneratedField::__SkipField__ => {
2233                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2234                        }
2235                    }
2236                }
2237                Ok(GetRecordSetRequest {
2238                    name: name__.unwrap_or_default(),
2239                })
2240            }
2241        }
2242        deserializer
2243            .deserialize_struct(
2244                "origincloud.dns.v1beta1.GetRecordSetRequest",
2245                FIELDS,
2246                GeneratedVisitor,
2247            )
2248    }
2249}
2250impl serde::Serialize for GetVpcAttachmentRequest {
2251    #[allow(deprecated)]
2252    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2253    where
2254        S: serde::Serializer,
2255    {
2256        use serde::ser::SerializeStruct;
2257        let mut len = 0;
2258        if !self.name.is_empty() {
2259            len += 1;
2260        }
2261        let mut struct_ser = serializer
2262            .serialize_struct("origincloud.dns.v1beta1.GetVpcAttachmentRequest", len)?;
2263        if !self.name.is_empty() {
2264            struct_ser.serialize_field("name", &self.name)?;
2265        }
2266        struct_ser.end()
2267    }
2268}
2269impl<'de> serde::Deserialize<'de> for GetVpcAttachmentRequest {
2270    #[allow(deprecated)]
2271    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2272    where
2273        D: serde::Deserializer<'de>,
2274    {
2275        const FIELDS: &[&str] = &["name"];
2276        #[allow(clippy::enum_variant_names)]
2277        enum GeneratedField {
2278            Name,
2279            __SkipField__,
2280        }
2281        impl<'de> serde::Deserialize<'de> for GeneratedField {
2282            fn deserialize<D>(
2283                deserializer: D,
2284            ) -> std::result::Result<GeneratedField, D::Error>
2285            where
2286                D: serde::Deserializer<'de>,
2287            {
2288                struct GeneratedVisitor;
2289                impl serde::de::Visitor<'_> for GeneratedVisitor {
2290                    type Value = GeneratedField;
2291                    fn expecting(
2292                        &self,
2293                        formatter: &mut std::fmt::Formatter<'_>,
2294                    ) -> std::fmt::Result {
2295                        write!(formatter, "expected one of: {:?}", & FIELDS)
2296                    }
2297                    #[allow(unused_variables)]
2298                    fn visit_str<E>(
2299                        self,
2300                        value: &str,
2301                    ) -> std::result::Result<GeneratedField, E>
2302                    where
2303                        E: serde::de::Error,
2304                    {
2305                        match value {
2306                            "name" => Ok(GeneratedField::Name),
2307                            _ => Ok(GeneratedField::__SkipField__),
2308                        }
2309                    }
2310                }
2311                deserializer.deserialize_identifier(GeneratedVisitor)
2312            }
2313        }
2314        struct GeneratedVisitor;
2315        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2316            type Value = GetVpcAttachmentRequest;
2317            fn expecting(
2318                &self,
2319                formatter: &mut std::fmt::Formatter<'_>,
2320            ) -> std::fmt::Result {
2321                formatter
2322                    .write_str("struct origincloud.dns.v1beta1.GetVpcAttachmentRequest")
2323            }
2324            fn visit_map<V>(
2325                self,
2326                mut map_: V,
2327            ) -> std::result::Result<GetVpcAttachmentRequest, V::Error>
2328            where
2329                V: serde::de::MapAccess<'de>,
2330            {
2331                let mut name__ = None;
2332                while let Some(k) = map_.next_key()? {
2333                    match k {
2334                        GeneratedField::Name => {
2335                            if name__.is_some() {
2336                                return Err(serde::de::Error::duplicate_field("name"));
2337                            }
2338                            name__ = Some(map_.next_value()?);
2339                        }
2340                        GeneratedField::__SkipField__ => {
2341                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2342                        }
2343                    }
2344                }
2345                Ok(GetVpcAttachmentRequest {
2346                    name: name__.unwrap_or_default(),
2347                })
2348            }
2349        }
2350        deserializer
2351            .deserialize_struct(
2352                "origincloud.dns.v1beta1.GetVpcAttachmentRequest",
2353                FIELDS,
2354                GeneratedVisitor,
2355            )
2356    }
2357}
2358impl serde::Serialize for HostedZone {
2359    #[allow(deprecated)]
2360    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2361    where
2362        S: serde::Serializer,
2363    {
2364        use serde::ser::SerializeStruct;
2365        let mut len = 0;
2366        if !self.name.is_empty() {
2367            len += 1;
2368        }
2369        if !self.urn.is_empty() {
2370            len += 1;
2371        }
2372        if !self.dns_name.is_empty() {
2373            len += 1;
2374        }
2375        if self.visibility != 0 {
2376            len += 1;
2377        }
2378        if self.state != 0 {
2379            len += 1;
2380        }
2381        if !self.name_servers.is_empty() {
2382            len += 1;
2383        }
2384        if self.challenge.is_some() {
2385            len += 1;
2386        }
2387        if self.create_time.is_some() {
2388            len += 1;
2389        }
2390        if !self.creator.is_empty() {
2391            len += 1;
2392        }
2393        if !self.tags.is_empty() {
2394            len += 1;
2395        }
2396        let mut struct_ser = serializer
2397            .serialize_struct("origincloud.dns.v1beta1.HostedZone", len)?;
2398        if !self.name.is_empty() {
2399            struct_ser.serialize_field("name", &self.name)?;
2400        }
2401        if !self.urn.is_empty() {
2402            struct_ser.serialize_field("urn", &self.urn)?;
2403        }
2404        if !self.dns_name.is_empty() {
2405            struct_ser.serialize_field("dnsName", &self.dns_name)?;
2406        }
2407        if self.visibility != 0 {
2408            let v = hosted_zone::Visibility::try_from(self.visibility)
2409                .map_err(|_| serde::ser::Error::custom(
2410                    format!("Invalid variant {}", self.visibility),
2411                ))?;
2412            struct_ser.serialize_field("visibility", &v)?;
2413        }
2414        if self.state != 0 {
2415            let v = hosted_zone::State::try_from(self.state)
2416                .map_err(|_| serde::ser::Error::custom(
2417                    format!("Invalid variant {}", self.state),
2418                ))?;
2419            struct_ser.serialize_field("state", &v)?;
2420        }
2421        if !self.name_servers.is_empty() {
2422            struct_ser.serialize_field("nameServers", &self.name_servers)?;
2423        }
2424        if let Some(v) = self.challenge.as_ref() {
2425            struct_ser.serialize_field("challenge", v)?;
2426        }
2427        if let Some(v) = self.create_time.as_ref() {
2428            struct_ser.serialize_field("createTime", v)?;
2429        }
2430        if !self.creator.is_empty() {
2431            struct_ser.serialize_field("creator", &self.creator)?;
2432        }
2433        if !self.tags.is_empty() {
2434            struct_ser.serialize_field("tags", &self.tags)?;
2435        }
2436        struct_ser.end()
2437    }
2438}
2439impl<'de> serde::Deserialize<'de> for HostedZone {
2440    #[allow(deprecated)]
2441    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2442    where
2443        D: serde::Deserializer<'de>,
2444    {
2445        const FIELDS: &[&str] = &[
2446            "name",
2447            "urn",
2448            "dns_name",
2449            "dnsName",
2450            "visibility",
2451            "state",
2452            "name_servers",
2453            "nameServers",
2454            "challenge",
2455            "create_time",
2456            "createTime",
2457            "creator",
2458            "tags",
2459        ];
2460        #[allow(clippy::enum_variant_names)]
2461        enum GeneratedField {
2462            Name,
2463            Urn,
2464            DnsName,
2465            Visibility,
2466            State,
2467            NameServers,
2468            Challenge,
2469            CreateTime,
2470            Creator,
2471            Tags,
2472            __SkipField__,
2473        }
2474        impl<'de> serde::Deserialize<'de> for GeneratedField {
2475            fn deserialize<D>(
2476                deserializer: D,
2477            ) -> std::result::Result<GeneratedField, D::Error>
2478            where
2479                D: serde::Deserializer<'de>,
2480            {
2481                struct GeneratedVisitor;
2482                impl serde::de::Visitor<'_> for GeneratedVisitor {
2483                    type Value = GeneratedField;
2484                    fn expecting(
2485                        &self,
2486                        formatter: &mut std::fmt::Formatter<'_>,
2487                    ) -> std::fmt::Result {
2488                        write!(formatter, "expected one of: {:?}", & FIELDS)
2489                    }
2490                    #[allow(unused_variables)]
2491                    fn visit_str<E>(
2492                        self,
2493                        value: &str,
2494                    ) -> std::result::Result<GeneratedField, E>
2495                    where
2496                        E: serde::de::Error,
2497                    {
2498                        match value {
2499                            "name" => Ok(GeneratedField::Name),
2500                            "urn" => Ok(GeneratedField::Urn),
2501                            "dnsName" | "dns_name" => Ok(GeneratedField::DnsName),
2502                            "visibility" => Ok(GeneratedField::Visibility),
2503                            "state" => Ok(GeneratedField::State),
2504                            "nameServers" | "name_servers" => {
2505                                Ok(GeneratedField::NameServers)
2506                            }
2507                            "challenge" => Ok(GeneratedField::Challenge),
2508                            "createTime" | "create_time" => {
2509                                Ok(GeneratedField::CreateTime)
2510                            }
2511                            "creator" => Ok(GeneratedField::Creator),
2512                            "tags" => Ok(GeneratedField::Tags),
2513                            _ => Ok(GeneratedField::__SkipField__),
2514                        }
2515                    }
2516                }
2517                deserializer.deserialize_identifier(GeneratedVisitor)
2518            }
2519        }
2520        struct GeneratedVisitor;
2521        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2522            type Value = HostedZone;
2523            fn expecting(
2524                &self,
2525                formatter: &mut std::fmt::Formatter<'_>,
2526            ) -> std::fmt::Result {
2527                formatter.write_str("struct origincloud.dns.v1beta1.HostedZone")
2528            }
2529            fn visit_map<V>(
2530                self,
2531                mut map_: V,
2532            ) -> std::result::Result<HostedZone, V::Error>
2533            where
2534                V: serde::de::MapAccess<'de>,
2535            {
2536                let mut name__ = None;
2537                let mut urn__ = None;
2538                let mut dns_name__ = None;
2539                let mut visibility__ = None;
2540                let mut state__ = None;
2541                let mut name_servers__ = None;
2542                let mut challenge__ = None;
2543                let mut create_time__ = None;
2544                let mut creator__ = None;
2545                let mut tags__ = None;
2546                while let Some(k) = map_.next_key()? {
2547                    match k {
2548                        GeneratedField::Name => {
2549                            if name__.is_some() {
2550                                return Err(serde::de::Error::duplicate_field("name"));
2551                            }
2552                            name__ = Some(map_.next_value()?);
2553                        }
2554                        GeneratedField::Urn => {
2555                            if urn__.is_some() {
2556                                return Err(serde::de::Error::duplicate_field("urn"));
2557                            }
2558                            urn__ = Some(map_.next_value()?);
2559                        }
2560                        GeneratedField::DnsName => {
2561                            if dns_name__.is_some() {
2562                                return Err(serde::de::Error::duplicate_field("dnsName"));
2563                            }
2564                            dns_name__ = Some(map_.next_value()?);
2565                        }
2566                        GeneratedField::Visibility => {
2567                            if visibility__.is_some() {
2568                                return Err(serde::de::Error::duplicate_field("visibility"));
2569                            }
2570                            visibility__ = Some(
2571                                map_.next_value::<hosted_zone::Visibility>()? as i32,
2572                            );
2573                        }
2574                        GeneratedField::State => {
2575                            if state__.is_some() {
2576                                return Err(serde::de::Error::duplicate_field("state"));
2577                            }
2578                            state__ = Some(
2579                                map_.next_value::<hosted_zone::State>()? as i32,
2580                            );
2581                        }
2582                        GeneratedField::NameServers => {
2583                            if name_servers__.is_some() {
2584                                return Err(
2585                                    serde::de::Error::duplicate_field("nameServers"),
2586                                );
2587                            }
2588                            name_servers__ = Some(map_.next_value()?);
2589                        }
2590                        GeneratedField::Challenge => {
2591                            if challenge__.is_some() {
2592                                return Err(serde::de::Error::duplicate_field("challenge"));
2593                            }
2594                            challenge__ = map_.next_value()?;
2595                        }
2596                        GeneratedField::CreateTime => {
2597                            if create_time__.is_some() {
2598                                return Err(serde::de::Error::duplicate_field("createTime"));
2599                            }
2600                            create_time__ = map_.next_value()?;
2601                        }
2602                        GeneratedField::Creator => {
2603                            if creator__.is_some() {
2604                                return Err(serde::de::Error::duplicate_field("creator"));
2605                            }
2606                            creator__ = Some(map_.next_value()?);
2607                        }
2608                        GeneratedField::Tags => {
2609                            if tags__.is_some() {
2610                                return Err(serde::de::Error::duplicate_field("tags"));
2611                            }
2612                            tags__ = Some(
2613                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
2614                            );
2615                        }
2616                        GeneratedField::__SkipField__ => {
2617                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2618                        }
2619                    }
2620                }
2621                Ok(HostedZone {
2622                    name: name__.unwrap_or_default(),
2623                    urn: urn__.unwrap_or_default(),
2624                    dns_name: dns_name__.unwrap_or_default(),
2625                    visibility: visibility__.unwrap_or_default(),
2626                    state: state__.unwrap_or_default(),
2627                    name_servers: name_servers__.unwrap_or_default(),
2628                    challenge: challenge__,
2629                    create_time: create_time__,
2630                    creator: creator__.unwrap_or_default(),
2631                    tags: tags__.unwrap_or_default(),
2632                })
2633            }
2634        }
2635        deserializer
2636            .deserialize_struct(
2637                "origincloud.dns.v1beta1.HostedZone",
2638                FIELDS,
2639                GeneratedVisitor,
2640            )
2641    }
2642}
2643impl serde::Serialize for hosted_zone::State {
2644    #[allow(deprecated)]
2645    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2646    where
2647        S: serde::Serializer,
2648    {
2649        let variant = match self {
2650            Self::Unspecified => "STATE_UNSPECIFIED",
2651            Self::PendingVerification => "PENDING_VERIFICATION",
2652            Self::Active => "ACTIVE",
2653            Self::Suspended => "SUSPENDED",
2654        };
2655        serializer.serialize_str(variant)
2656    }
2657}
2658impl<'de> serde::Deserialize<'de> for hosted_zone::State {
2659    #[allow(deprecated)]
2660    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2661    where
2662        D: serde::Deserializer<'de>,
2663    {
2664        const FIELDS: &[&str] = &[
2665            "STATE_UNSPECIFIED",
2666            "PENDING_VERIFICATION",
2667            "ACTIVE",
2668            "SUSPENDED",
2669        ];
2670        struct GeneratedVisitor;
2671        impl serde::de::Visitor<'_> for GeneratedVisitor {
2672            type Value = hosted_zone::State;
2673            fn expecting(
2674                &self,
2675                formatter: &mut std::fmt::Formatter<'_>,
2676            ) -> std::fmt::Result {
2677                write!(formatter, "expected one of: {:?}", & FIELDS)
2678            }
2679            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2680            where
2681                E: serde::de::Error,
2682            {
2683                i32::try_from(v)
2684                    .ok()
2685                    .and_then(|x| {
2686                        x.try_into().ok().or_else(|| Some(hosted_zone::State::default()))
2687                    })
2688                    .ok_or_else(|| {
2689                        serde::de::Error::invalid_value(
2690                            serde::de::Unexpected::Signed(v),
2691                            &self,
2692                        )
2693                    })
2694            }
2695            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2696            where
2697                E: serde::de::Error,
2698            {
2699                i32::try_from(v)
2700                    .ok()
2701                    .and_then(|x| {
2702                        x.try_into().ok().or_else(|| Some(hosted_zone::State::default()))
2703                    })
2704                    .ok_or_else(|| {
2705                        serde::de::Error::invalid_value(
2706                            serde::de::Unexpected::Unsigned(v),
2707                            &self,
2708                        )
2709                    })
2710            }
2711            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2712            where
2713                E: serde::de::Error,
2714            {
2715                match value {
2716                    "STATE_UNSPECIFIED" => Ok(hosted_zone::State::Unspecified),
2717                    "PENDING_VERIFICATION" => Ok(hosted_zone::State::PendingVerification),
2718                    "ACTIVE" => Ok(hosted_zone::State::Active),
2719                    "SUSPENDED" => Ok(hosted_zone::State::Suspended),
2720                    _ => Ok(hosted_zone::State::default()),
2721                }
2722            }
2723        }
2724        deserializer.deserialize_any(GeneratedVisitor)
2725    }
2726}
2727impl serde::Serialize for hosted_zone::Visibility {
2728    #[allow(deprecated)]
2729    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2730    where
2731        S: serde::Serializer,
2732    {
2733        let variant = match self {
2734            Self::Unspecified => "VISIBILITY_UNSPECIFIED",
2735            Self::Public => "PUBLIC",
2736            Self::Private => "PRIVATE",
2737        };
2738        serializer.serialize_str(variant)
2739    }
2740}
2741impl<'de> serde::Deserialize<'de> for hosted_zone::Visibility {
2742    #[allow(deprecated)]
2743    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2744    where
2745        D: serde::Deserializer<'de>,
2746    {
2747        const FIELDS: &[&str] = &["VISIBILITY_UNSPECIFIED", "PUBLIC", "PRIVATE"];
2748        struct GeneratedVisitor;
2749        impl serde::de::Visitor<'_> for GeneratedVisitor {
2750            type Value = hosted_zone::Visibility;
2751            fn expecting(
2752                &self,
2753                formatter: &mut std::fmt::Formatter<'_>,
2754            ) -> std::fmt::Result {
2755                write!(formatter, "expected one of: {:?}", & FIELDS)
2756            }
2757            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2758            where
2759                E: serde::de::Error,
2760            {
2761                i32::try_from(v)
2762                    .ok()
2763                    .and_then(|x| {
2764                        x
2765                            .try_into()
2766                            .ok()
2767                            .or_else(|| Some(hosted_zone::Visibility::default()))
2768                    })
2769                    .ok_or_else(|| {
2770                        serde::de::Error::invalid_value(
2771                            serde::de::Unexpected::Signed(v),
2772                            &self,
2773                        )
2774                    })
2775            }
2776            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2777            where
2778                E: serde::de::Error,
2779            {
2780                i32::try_from(v)
2781                    .ok()
2782                    .and_then(|x| {
2783                        x
2784                            .try_into()
2785                            .ok()
2786                            .or_else(|| Some(hosted_zone::Visibility::default()))
2787                    })
2788                    .ok_or_else(|| {
2789                        serde::de::Error::invalid_value(
2790                            serde::de::Unexpected::Unsigned(v),
2791                            &self,
2792                        )
2793                    })
2794            }
2795            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2796            where
2797                E: serde::de::Error,
2798            {
2799                match value {
2800                    "VISIBILITY_UNSPECIFIED" => Ok(hosted_zone::Visibility::Unspecified),
2801                    "PUBLIC" => Ok(hosted_zone::Visibility::Public),
2802                    "PRIVATE" => Ok(hosted_zone::Visibility::Private),
2803                    _ => Ok(hosted_zone::Visibility::default()),
2804                }
2805            }
2806        }
2807        deserializer.deserialize_any(GeneratedVisitor)
2808    }
2809}
2810impl serde::Serialize for ListHostedZonesRequest {
2811    #[allow(deprecated)]
2812    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2813    where
2814        S: serde::Serializer,
2815    {
2816        use serde::ser::SerializeStruct;
2817        let mut len = 0;
2818        if !self.parent.is_empty() {
2819            len += 1;
2820        }
2821        if self.page_size != 0 {
2822            len += 1;
2823        }
2824        if !self.page_token.is_empty() {
2825            len += 1;
2826        }
2827        if !self.dns_name.is_empty() {
2828            len += 1;
2829        }
2830        let mut struct_ser = serializer
2831            .serialize_struct("origincloud.dns.v1beta1.ListHostedZonesRequest", len)?;
2832        if !self.parent.is_empty() {
2833            struct_ser.serialize_field("parent", &self.parent)?;
2834        }
2835        if self.page_size != 0 {
2836            struct_ser.serialize_field("pageSize", &self.page_size)?;
2837        }
2838        if !self.page_token.is_empty() {
2839            struct_ser.serialize_field("pageToken", &self.page_token)?;
2840        }
2841        if !self.dns_name.is_empty() {
2842            struct_ser.serialize_field("dnsName", &self.dns_name)?;
2843        }
2844        struct_ser.end()
2845    }
2846}
2847impl<'de> serde::Deserialize<'de> for ListHostedZonesRequest {
2848    #[allow(deprecated)]
2849    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2850    where
2851        D: serde::Deserializer<'de>,
2852    {
2853        const FIELDS: &[&str] = &[
2854            "parent",
2855            "page_size",
2856            "pageSize",
2857            "page_token",
2858            "pageToken",
2859            "dns_name",
2860            "dnsName",
2861        ];
2862        #[allow(clippy::enum_variant_names)]
2863        enum GeneratedField {
2864            Parent,
2865            PageSize,
2866            PageToken,
2867            DnsName,
2868            __SkipField__,
2869        }
2870        impl<'de> serde::Deserialize<'de> for GeneratedField {
2871            fn deserialize<D>(
2872                deserializer: D,
2873            ) -> std::result::Result<GeneratedField, D::Error>
2874            where
2875                D: serde::Deserializer<'de>,
2876            {
2877                struct GeneratedVisitor;
2878                impl serde::de::Visitor<'_> for GeneratedVisitor {
2879                    type Value = GeneratedField;
2880                    fn expecting(
2881                        &self,
2882                        formatter: &mut std::fmt::Formatter<'_>,
2883                    ) -> std::fmt::Result {
2884                        write!(formatter, "expected one of: {:?}", & FIELDS)
2885                    }
2886                    #[allow(unused_variables)]
2887                    fn visit_str<E>(
2888                        self,
2889                        value: &str,
2890                    ) -> std::result::Result<GeneratedField, E>
2891                    where
2892                        E: serde::de::Error,
2893                    {
2894                        match value {
2895                            "parent" => Ok(GeneratedField::Parent),
2896                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
2897                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
2898                            "dnsName" | "dns_name" => Ok(GeneratedField::DnsName),
2899                            _ => Ok(GeneratedField::__SkipField__),
2900                        }
2901                    }
2902                }
2903                deserializer.deserialize_identifier(GeneratedVisitor)
2904            }
2905        }
2906        struct GeneratedVisitor;
2907        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2908            type Value = ListHostedZonesRequest;
2909            fn expecting(
2910                &self,
2911                formatter: &mut std::fmt::Formatter<'_>,
2912            ) -> std::fmt::Result {
2913                formatter
2914                    .write_str("struct origincloud.dns.v1beta1.ListHostedZonesRequest")
2915            }
2916            fn visit_map<V>(
2917                self,
2918                mut map_: V,
2919            ) -> std::result::Result<ListHostedZonesRequest, V::Error>
2920            where
2921                V: serde::de::MapAccess<'de>,
2922            {
2923                let mut parent__ = None;
2924                let mut page_size__ = None;
2925                let mut page_token__ = None;
2926                let mut dns_name__ = None;
2927                while let Some(k) = map_.next_key()? {
2928                    match k {
2929                        GeneratedField::Parent => {
2930                            if parent__.is_some() {
2931                                return Err(serde::de::Error::duplicate_field("parent"));
2932                            }
2933                            parent__ = Some(map_.next_value()?);
2934                        }
2935                        GeneratedField::PageSize => {
2936                            if page_size__.is_some() {
2937                                return Err(serde::de::Error::duplicate_field("pageSize"));
2938                            }
2939                            page_size__ = Some(
2940                                map_
2941                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2942                                    .0,
2943                            );
2944                        }
2945                        GeneratedField::PageToken => {
2946                            if page_token__.is_some() {
2947                                return Err(serde::de::Error::duplicate_field("pageToken"));
2948                            }
2949                            page_token__ = Some(map_.next_value()?);
2950                        }
2951                        GeneratedField::DnsName => {
2952                            if dns_name__.is_some() {
2953                                return Err(serde::de::Error::duplicate_field("dnsName"));
2954                            }
2955                            dns_name__ = Some(map_.next_value()?);
2956                        }
2957                        GeneratedField::__SkipField__ => {
2958                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2959                        }
2960                    }
2961                }
2962                Ok(ListHostedZonesRequest {
2963                    parent: parent__.unwrap_or_default(),
2964                    page_size: page_size__.unwrap_or_default(),
2965                    page_token: page_token__.unwrap_or_default(),
2966                    dns_name: dns_name__.unwrap_or_default(),
2967                })
2968            }
2969        }
2970        deserializer
2971            .deserialize_struct(
2972                "origincloud.dns.v1beta1.ListHostedZonesRequest",
2973                FIELDS,
2974                GeneratedVisitor,
2975            )
2976    }
2977}
2978impl serde::Serialize for ListHostedZonesResponse {
2979    #[allow(deprecated)]
2980    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2981    where
2982        S: serde::Serializer,
2983    {
2984        use serde::ser::SerializeStruct;
2985        let mut len = 0;
2986        if !self.hosted_zones.is_empty() {
2987            len += 1;
2988        }
2989        if !self.next_page_token.is_empty() {
2990            len += 1;
2991        }
2992        let mut struct_ser = serializer
2993            .serialize_struct("origincloud.dns.v1beta1.ListHostedZonesResponse", len)?;
2994        if !self.hosted_zones.is_empty() {
2995            struct_ser.serialize_field("hostedZones", &self.hosted_zones)?;
2996        }
2997        if !self.next_page_token.is_empty() {
2998            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
2999        }
3000        struct_ser.end()
3001    }
3002}
3003impl<'de> serde::Deserialize<'de> for ListHostedZonesResponse {
3004    #[allow(deprecated)]
3005    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3006    where
3007        D: serde::Deserializer<'de>,
3008    {
3009        const FIELDS: &[&str] = &[
3010            "hosted_zones",
3011            "hostedZones",
3012            "next_page_token",
3013            "nextPageToken",
3014        ];
3015        #[allow(clippy::enum_variant_names)]
3016        enum GeneratedField {
3017            HostedZones,
3018            NextPageToken,
3019            __SkipField__,
3020        }
3021        impl<'de> serde::Deserialize<'de> for GeneratedField {
3022            fn deserialize<D>(
3023                deserializer: D,
3024            ) -> std::result::Result<GeneratedField, D::Error>
3025            where
3026                D: serde::Deserializer<'de>,
3027            {
3028                struct GeneratedVisitor;
3029                impl serde::de::Visitor<'_> for GeneratedVisitor {
3030                    type Value = GeneratedField;
3031                    fn expecting(
3032                        &self,
3033                        formatter: &mut std::fmt::Formatter<'_>,
3034                    ) -> std::fmt::Result {
3035                        write!(formatter, "expected one of: {:?}", & FIELDS)
3036                    }
3037                    #[allow(unused_variables)]
3038                    fn visit_str<E>(
3039                        self,
3040                        value: &str,
3041                    ) -> std::result::Result<GeneratedField, E>
3042                    where
3043                        E: serde::de::Error,
3044                    {
3045                        match value {
3046                            "hostedZones" | "hosted_zones" => {
3047                                Ok(GeneratedField::HostedZones)
3048                            }
3049                            "nextPageToken" | "next_page_token" => {
3050                                Ok(GeneratedField::NextPageToken)
3051                            }
3052                            _ => Ok(GeneratedField::__SkipField__),
3053                        }
3054                    }
3055                }
3056                deserializer.deserialize_identifier(GeneratedVisitor)
3057            }
3058        }
3059        struct GeneratedVisitor;
3060        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3061            type Value = ListHostedZonesResponse;
3062            fn expecting(
3063                &self,
3064                formatter: &mut std::fmt::Formatter<'_>,
3065            ) -> std::fmt::Result {
3066                formatter
3067                    .write_str("struct origincloud.dns.v1beta1.ListHostedZonesResponse")
3068            }
3069            fn visit_map<V>(
3070                self,
3071                mut map_: V,
3072            ) -> std::result::Result<ListHostedZonesResponse, V::Error>
3073            where
3074                V: serde::de::MapAccess<'de>,
3075            {
3076                let mut hosted_zones__ = None;
3077                let mut next_page_token__ = None;
3078                while let Some(k) = map_.next_key()? {
3079                    match k {
3080                        GeneratedField::HostedZones => {
3081                            if hosted_zones__.is_some() {
3082                                return Err(
3083                                    serde::de::Error::duplicate_field("hostedZones"),
3084                                );
3085                            }
3086                            hosted_zones__ = Some(map_.next_value()?);
3087                        }
3088                        GeneratedField::NextPageToken => {
3089                            if next_page_token__.is_some() {
3090                                return Err(
3091                                    serde::de::Error::duplicate_field("nextPageToken"),
3092                                );
3093                            }
3094                            next_page_token__ = Some(map_.next_value()?);
3095                        }
3096                        GeneratedField::__SkipField__ => {
3097                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3098                        }
3099                    }
3100                }
3101                Ok(ListHostedZonesResponse {
3102                    hosted_zones: hosted_zones__.unwrap_or_default(),
3103                    next_page_token: next_page_token__.unwrap_or_default(),
3104                })
3105            }
3106        }
3107        deserializer
3108            .deserialize_struct(
3109                "origincloud.dns.v1beta1.ListHostedZonesResponse",
3110                FIELDS,
3111                GeneratedVisitor,
3112            )
3113    }
3114}
3115impl serde::Serialize for ListRecordSetsRequest {
3116    #[allow(deprecated)]
3117    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3118    where
3119        S: serde::Serializer,
3120    {
3121        use serde::ser::SerializeStruct;
3122        let mut len = 0;
3123        if !self.parent.is_empty() {
3124            len += 1;
3125        }
3126        if self.page_size != 0 {
3127            len += 1;
3128        }
3129        if !self.page_token.is_empty() {
3130            len += 1;
3131        }
3132        if !self.dns_name.is_empty() {
3133            len += 1;
3134        }
3135        if self.r#type != 0 {
3136            len += 1;
3137        }
3138        let mut struct_ser = serializer
3139            .serialize_struct("origincloud.dns.v1beta1.ListRecordSetsRequest", len)?;
3140        if !self.parent.is_empty() {
3141            struct_ser.serialize_field("parent", &self.parent)?;
3142        }
3143        if self.page_size != 0 {
3144            struct_ser.serialize_field("pageSize", &self.page_size)?;
3145        }
3146        if !self.page_token.is_empty() {
3147            struct_ser.serialize_field("pageToken", &self.page_token)?;
3148        }
3149        if !self.dns_name.is_empty() {
3150            struct_ser.serialize_field("dnsName", &self.dns_name)?;
3151        }
3152        if self.r#type != 0 {
3153            let v = record_set::Type::try_from(self.r#type)
3154                .map_err(|_| serde::ser::Error::custom(
3155                    format!("Invalid variant {}", self.r#type),
3156                ))?;
3157            struct_ser.serialize_field("type", &v)?;
3158        }
3159        struct_ser.end()
3160    }
3161}
3162impl<'de> serde::Deserialize<'de> for ListRecordSetsRequest {
3163    #[allow(deprecated)]
3164    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3165    where
3166        D: serde::Deserializer<'de>,
3167    {
3168        const FIELDS: &[&str] = &[
3169            "parent",
3170            "page_size",
3171            "pageSize",
3172            "page_token",
3173            "pageToken",
3174            "dns_name",
3175            "dnsName",
3176            "type",
3177        ];
3178        #[allow(clippy::enum_variant_names)]
3179        enum GeneratedField {
3180            Parent,
3181            PageSize,
3182            PageToken,
3183            DnsName,
3184            Type,
3185            __SkipField__,
3186        }
3187        impl<'de> serde::Deserialize<'de> for GeneratedField {
3188            fn deserialize<D>(
3189                deserializer: D,
3190            ) -> std::result::Result<GeneratedField, D::Error>
3191            where
3192                D: serde::Deserializer<'de>,
3193            {
3194                struct GeneratedVisitor;
3195                impl serde::de::Visitor<'_> for GeneratedVisitor {
3196                    type Value = GeneratedField;
3197                    fn expecting(
3198                        &self,
3199                        formatter: &mut std::fmt::Formatter<'_>,
3200                    ) -> std::fmt::Result {
3201                        write!(formatter, "expected one of: {:?}", & FIELDS)
3202                    }
3203                    #[allow(unused_variables)]
3204                    fn visit_str<E>(
3205                        self,
3206                        value: &str,
3207                    ) -> std::result::Result<GeneratedField, E>
3208                    where
3209                        E: serde::de::Error,
3210                    {
3211                        match value {
3212                            "parent" => Ok(GeneratedField::Parent),
3213                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
3214                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
3215                            "dnsName" | "dns_name" => Ok(GeneratedField::DnsName),
3216                            "type" => Ok(GeneratedField::Type),
3217                            _ => Ok(GeneratedField::__SkipField__),
3218                        }
3219                    }
3220                }
3221                deserializer.deserialize_identifier(GeneratedVisitor)
3222            }
3223        }
3224        struct GeneratedVisitor;
3225        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3226            type Value = ListRecordSetsRequest;
3227            fn expecting(
3228                &self,
3229                formatter: &mut std::fmt::Formatter<'_>,
3230            ) -> std::fmt::Result {
3231                formatter
3232                    .write_str("struct origincloud.dns.v1beta1.ListRecordSetsRequest")
3233            }
3234            fn visit_map<V>(
3235                self,
3236                mut map_: V,
3237            ) -> std::result::Result<ListRecordSetsRequest, V::Error>
3238            where
3239                V: serde::de::MapAccess<'de>,
3240            {
3241                let mut parent__ = None;
3242                let mut page_size__ = None;
3243                let mut page_token__ = None;
3244                let mut dns_name__ = None;
3245                let mut r#type__ = None;
3246                while let Some(k) = map_.next_key()? {
3247                    match k {
3248                        GeneratedField::Parent => {
3249                            if parent__.is_some() {
3250                                return Err(serde::de::Error::duplicate_field("parent"));
3251                            }
3252                            parent__ = Some(map_.next_value()?);
3253                        }
3254                        GeneratedField::PageSize => {
3255                            if page_size__.is_some() {
3256                                return Err(serde::de::Error::duplicate_field("pageSize"));
3257                            }
3258                            page_size__ = Some(
3259                                map_
3260                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3261                                    .0,
3262                            );
3263                        }
3264                        GeneratedField::PageToken => {
3265                            if page_token__.is_some() {
3266                                return Err(serde::de::Error::duplicate_field("pageToken"));
3267                            }
3268                            page_token__ = Some(map_.next_value()?);
3269                        }
3270                        GeneratedField::DnsName => {
3271                            if dns_name__.is_some() {
3272                                return Err(serde::de::Error::duplicate_field("dnsName"));
3273                            }
3274                            dns_name__ = Some(map_.next_value()?);
3275                        }
3276                        GeneratedField::Type => {
3277                            if r#type__.is_some() {
3278                                return Err(serde::de::Error::duplicate_field("type"));
3279                            }
3280                            r#type__ = Some(
3281                                map_.next_value::<record_set::Type>()? as i32,
3282                            );
3283                        }
3284                        GeneratedField::__SkipField__ => {
3285                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3286                        }
3287                    }
3288                }
3289                Ok(ListRecordSetsRequest {
3290                    parent: parent__.unwrap_or_default(),
3291                    page_size: page_size__.unwrap_or_default(),
3292                    page_token: page_token__.unwrap_or_default(),
3293                    dns_name: dns_name__.unwrap_or_default(),
3294                    r#type: r#type__.unwrap_or_default(),
3295                })
3296            }
3297        }
3298        deserializer
3299            .deserialize_struct(
3300                "origincloud.dns.v1beta1.ListRecordSetsRequest",
3301                FIELDS,
3302                GeneratedVisitor,
3303            )
3304    }
3305}
3306impl serde::Serialize for ListRecordSetsResponse {
3307    #[allow(deprecated)]
3308    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3309    where
3310        S: serde::Serializer,
3311    {
3312        use serde::ser::SerializeStruct;
3313        let mut len = 0;
3314        if !self.record_sets.is_empty() {
3315            len += 1;
3316        }
3317        if !self.next_page_token.is_empty() {
3318            len += 1;
3319        }
3320        let mut struct_ser = serializer
3321            .serialize_struct("origincloud.dns.v1beta1.ListRecordSetsResponse", len)?;
3322        if !self.record_sets.is_empty() {
3323            struct_ser.serialize_field("recordSets", &self.record_sets)?;
3324        }
3325        if !self.next_page_token.is_empty() {
3326            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
3327        }
3328        struct_ser.end()
3329    }
3330}
3331impl<'de> serde::Deserialize<'de> for ListRecordSetsResponse {
3332    #[allow(deprecated)]
3333    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3334    where
3335        D: serde::Deserializer<'de>,
3336    {
3337        const FIELDS: &[&str] = &[
3338            "record_sets",
3339            "recordSets",
3340            "next_page_token",
3341            "nextPageToken",
3342        ];
3343        #[allow(clippy::enum_variant_names)]
3344        enum GeneratedField {
3345            RecordSets,
3346            NextPageToken,
3347            __SkipField__,
3348        }
3349        impl<'de> serde::Deserialize<'de> for GeneratedField {
3350            fn deserialize<D>(
3351                deserializer: D,
3352            ) -> std::result::Result<GeneratedField, D::Error>
3353            where
3354                D: serde::Deserializer<'de>,
3355            {
3356                struct GeneratedVisitor;
3357                impl serde::de::Visitor<'_> for GeneratedVisitor {
3358                    type Value = GeneratedField;
3359                    fn expecting(
3360                        &self,
3361                        formatter: &mut std::fmt::Formatter<'_>,
3362                    ) -> std::fmt::Result {
3363                        write!(formatter, "expected one of: {:?}", & FIELDS)
3364                    }
3365                    #[allow(unused_variables)]
3366                    fn visit_str<E>(
3367                        self,
3368                        value: &str,
3369                    ) -> std::result::Result<GeneratedField, E>
3370                    where
3371                        E: serde::de::Error,
3372                    {
3373                        match value {
3374                            "recordSets" | "record_sets" => {
3375                                Ok(GeneratedField::RecordSets)
3376                            }
3377                            "nextPageToken" | "next_page_token" => {
3378                                Ok(GeneratedField::NextPageToken)
3379                            }
3380                            _ => Ok(GeneratedField::__SkipField__),
3381                        }
3382                    }
3383                }
3384                deserializer.deserialize_identifier(GeneratedVisitor)
3385            }
3386        }
3387        struct GeneratedVisitor;
3388        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3389            type Value = ListRecordSetsResponse;
3390            fn expecting(
3391                &self,
3392                formatter: &mut std::fmt::Formatter<'_>,
3393            ) -> std::fmt::Result {
3394                formatter
3395                    .write_str("struct origincloud.dns.v1beta1.ListRecordSetsResponse")
3396            }
3397            fn visit_map<V>(
3398                self,
3399                mut map_: V,
3400            ) -> std::result::Result<ListRecordSetsResponse, V::Error>
3401            where
3402                V: serde::de::MapAccess<'de>,
3403            {
3404                let mut record_sets__ = None;
3405                let mut next_page_token__ = None;
3406                while let Some(k) = map_.next_key()? {
3407                    match k {
3408                        GeneratedField::RecordSets => {
3409                            if record_sets__.is_some() {
3410                                return Err(serde::de::Error::duplicate_field("recordSets"));
3411                            }
3412                            record_sets__ = Some(map_.next_value()?);
3413                        }
3414                        GeneratedField::NextPageToken => {
3415                            if next_page_token__.is_some() {
3416                                return Err(
3417                                    serde::de::Error::duplicate_field("nextPageToken"),
3418                                );
3419                            }
3420                            next_page_token__ = Some(map_.next_value()?);
3421                        }
3422                        GeneratedField::__SkipField__ => {
3423                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3424                        }
3425                    }
3426                }
3427                Ok(ListRecordSetsResponse {
3428                    record_sets: record_sets__.unwrap_or_default(),
3429                    next_page_token: next_page_token__.unwrap_or_default(),
3430                })
3431            }
3432        }
3433        deserializer
3434            .deserialize_struct(
3435                "origincloud.dns.v1beta1.ListRecordSetsResponse",
3436                FIELDS,
3437                GeneratedVisitor,
3438            )
3439    }
3440}
3441impl serde::Serialize for ListVpcAttachmentsRequest {
3442    #[allow(deprecated)]
3443    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3444    where
3445        S: serde::Serializer,
3446    {
3447        use serde::ser::SerializeStruct;
3448        let mut len = 0;
3449        if !self.parent.is_empty() {
3450            len += 1;
3451        }
3452        if self.page_size != 0 {
3453            len += 1;
3454        }
3455        if !self.page_token.is_empty() {
3456            len += 1;
3457        }
3458        if !self.vpc.is_empty() {
3459            len += 1;
3460        }
3461        let mut struct_ser = serializer
3462            .serialize_struct("origincloud.dns.v1beta1.ListVpcAttachmentsRequest", len)?;
3463        if !self.parent.is_empty() {
3464            struct_ser.serialize_field("parent", &self.parent)?;
3465        }
3466        if self.page_size != 0 {
3467            struct_ser.serialize_field("pageSize", &self.page_size)?;
3468        }
3469        if !self.page_token.is_empty() {
3470            struct_ser.serialize_field("pageToken", &self.page_token)?;
3471        }
3472        if !self.vpc.is_empty() {
3473            struct_ser.serialize_field("vpc", &self.vpc)?;
3474        }
3475        struct_ser.end()
3476    }
3477}
3478impl<'de> serde::Deserialize<'de> for ListVpcAttachmentsRequest {
3479    #[allow(deprecated)]
3480    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3481    where
3482        D: serde::Deserializer<'de>,
3483    {
3484        const FIELDS: &[&str] = &[
3485            "parent",
3486            "page_size",
3487            "pageSize",
3488            "page_token",
3489            "pageToken",
3490            "vpc",
3491        ];
3492        #[allow(clippy::enum_variant_names)]
3493        enum GeneratedField {
3494            Parent,
3495            PageSize,
3496            PageToken,
3497            Vpc,
3498            __SkipField__,
3499        }
3500        impl<'de> serde::Deserialize<'de> for GeneratedField {
3501            fn deserialize<D>(
3502                deserializer: D,
3503            ) -> std::result::Result<GeneratedField, D::Error>
3504            where
3505                D: serde::Deserializer<'de>,
3506            {
3507                struct GeneratedVisitor;
3508                impl serde::de::Visitor<'_> for GeneratedVisitor {
3509                    type Value = GeneratedField;
3510                    fn expecting(
3511                        &self,
3512                        formatter: &mut std::fmt::Formatter<'_>,
3513                    ) -> std::fmt::Result {
3514                        write!(formatter, "expected one of: {:?}", & FIELDS)
3515                    }
3516                    #[allow(unused_variables)]
3517                    fn visit_str<E>(
3518                        self,
3519                        value: &str,
3520                    ) -> std::result::Result<GeneratedField, E>
3521                    where
3522                        E: serde::de::Error,
3523                    {
3524                        match value {
3525                            "parent" => Ok(GeneratedField::Parent),
3526                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
3527                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
3528                            "vpc" => Ok(GeneratedField::Vpc),
3529                            _ => Ok(GeneratedField::__SkipField__),
3530                        }
3531                    }
3532                }
3533                deserializer.deserialize_identifier(GeneratedVisitor)
3534            }
3535        }
3536        struct GeneratedVisitor;
3537        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3538            type Value = ListVpcAttachmentsRequest;
3539            fn expecting(
3540                &self,
3541                formatter: &mut std::fmt::Formatter<'_>,
3542            ) -> std::fmt::Result {
3543                formatter
3544                    .write_str(
3545                        "struct origincloud.dns.v1beta1.ListVpcAttachmentsRequest",
3546                    )
3547            }
3548            fn visit_map<V>(
3549                self,
3550                mut map_: V,
3551            ) -> std::result::Result<ListVpcAttachmentsRequest, V::Error>
3552            where
3553                V: serde::de::MapAccess<'de>,
3554            {
3555                let mut parent__ = None;
3556                let mut page_size__ = None;
3557                let mut page_token__ = None;
3558                let mut vpc__ = None;
3559                while let Some(k) = map_.next_key()? {
3560                    match k {
3561                        GeneratedField::Parent => {
3562                            if parent__.is_some() {
3563                                return Err(serde::de::Error::duplicate_field("parent"));
3564                            }
3565                            parent__ = Some(map_.next_value()?);
3566                        }
3567                        GeneratedField::PageSize => {
3568                            if page_size__.is_some() {
3569                                return Err(serde::de::Error::duplicate_field("pageSize"));
3570                            }
3571                            page_size__ = Some(
3572                                map_
3573                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3574                                    .0,
3575                            );
3576                        }
3577                        GeneratedField::PageToken => {
3578                            if page_token__.is_some() {
3579                                return Err(serde::de::Error::duplicate_field("pageToken"));
3580                            }
3581                            page_token__ = Some(map_.next_value()?);
3582                        }
3583                        GeneratedField::Vpc => {
3584                            if vpc__.is_some() {
3585                                return Err(serde::de::Error::duplicate_field("vpc"));
3586                            }
3587                            vpc__ = Some(map_.next_value()?);
3588                        }
3589                        GeneratedField::__SkipField__ => {
3590                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3591                        }
3592                    }
3593                }
3594                Ok(ListVpcAttachmentsRequest {
3595                    parent: parent__.unwrap_or_default(),
3596                    page_size: page_size__.unwrap_or_default(),
3597                    page_token: page_token__.unwrap_or_default(),
3598                    vpc: vpc__.unwrap_or_default(),
3599                })
3600            }
3601        }
3602        deserializer
3603            .deserialize_struct(
3604                "origincloud.dns.v1beta1.ListVpcAttachmentsRequest",
3605                FIELDS,
3606                GeneratedVisitor,
3607            )
3608    }
3609}
3610impl serde::Serialize for ListVpcAttachmentsResponse {
3611    #[allow(deprecated)]
3612    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3613    where
3614        S: serde::Serializer,
3615    {
3616        use serde::ser::SerializeStruct;
3617        let mut len = 0;
3618        if !self.vpc_attachments.is_empty() {
3619            len += 1;
3620        }
3621        if !self.next_page_token.is_empty() {
3622            len += 1;
3623        }
3624        let mut struct_ser = serializer
3625            .serialize_struct(
3626                "origincloud.dns.v1beta1.ListVpcAttachmentsResponse",
3627                len,
3628            )?;
3629        if !self.vpc_attachments.is_empty() {
3630            struct_ser.serialize_field("vpcAttachments", &self.vpc_attachments)?;
3631        }
3632        if !self.next_page_token.is_empty() {
3633            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
3634        }
3635        struct_ser.end()
3636    }
3637}
3638impl<'de> serde::Deserialize<'de> for ListVpcAttachmentsResponse {
3639    #[allow(deprecated)]
3640    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3641    where
3642        D: serde::Deserializer<'de>,
3643    {
3644        const FIELDS: &[&str] = &[
3645            "vpc_attachments",
3646            "vpcAttachments",
3647            "next_page_token",
3648            "nextPageToken",
3649        ];
3650        #[allow(clippy::enum_variant_names)]
3651        enum GeneratedField {
3652            VpcAttachments,
3653            NextPageToken,
3654            __SkipField__,
3655        }
3656        impl<'de> serde::Deserialize<'de> for GeneratedField {
3657            fn deserialize<D>(
3658                deserializer: D,
3659            ) -> std::result::Result<GeneratedField, D::Error>
3660            where
3661                D: serde::Deserializer<'de>,
3662            {
3663                struct GeneratedVisitor;
3664                impl serde::de::Visitor<'_> for GeneratedVisitor {
3665                    type Value = GeneratedField;
3666                    fn expecting(
3667                        &self,
3668                        formatter: &mut std::fmt::Formatter<'_>,
3669                    ) -> std::fmt::Result {
3670                        write!(formatter, "expected one of: {:?}", & FIELDS)
3671                    }
3672                    #[allow(unused_variables)]
3673                    fn visit_str<E>(
3674                        self,
3675                        value: &str,
3676                    ) -> std::result::Result<GeneratedField, E>
3677                    where
3678                        E: serde::de::Error,
3679                    {
3680                        match value {
3681                            "vpcAttachments" | "vpc_attachments" => {
3682                                Ok(GeneratedField::VpcAttachments)
3683                            }
3684                            "nextPageToken" | "next_page_token" => {
3685                                Ok(GeneratedField::NextPageToken)
3686                            }
3687                            _ => Ok(GeneratedField::__SkipField__),
3688                        }
3689                    }
3690                }
3691                deserializer.deserialize_identifier(GeneratedVisitor)
3692            }
3693        }
3694        struct GeneratedVisitor;
3695        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3696            type Value = ListVpcAttachmentsResponse;
3697            fn expecting(
3698                &self,
3699                formatter: &mut std::fmt::Formatter<'_>,
3700            ) -> std::fmt::Result {
3701                formatter
3702                    .write_str(
3703                        "struct origincloud.dns.v1beta1.ListVpcAttachmentsResponse",
3704                    )
3705            }
3706            fn visit_map<V>(
3707                self,
3708                mut map_: V,
3709            ) -> std::result::Result<ListVpcAttachmentsResponse, V::Error>
3710            where
3711                V: serde::de::MapAccess<'de>,
3712            {
3713                let mut vpc_attachments__ = None;
3714                let mut next_page_token__ = None;
3715                while let Some(k) = map_.next_key()? {
3716                    match k {
3717                        GeneratedField::VpcAttachments => {
3718                            if vpc_attachments__.is_some() {
3719                                return Err(
3720                                    serde::de::Error::duplicate_field("vpcAttachments"),
3721                                );
3722                            }
3723                            vpc_attachments__ = Some(map_.next_value()?);
3724                        }
3725                        GeneratedField::NextPageToken => {
3726                            if next_page_token__.is_some() {
3727                                return Err(
3728                                    serde::de::Error::duplicate_field("nextPageToken"),
3729                                );
3730                            }
3731                            next_page_token__ = Some(map_.next_value()?);
3732                        }
3733                        GeneratedField::__SkipField__ => {
3734                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3735                        }
3736                    }
3737                }
3738                Ok(ListVpcAttachmentsResponse {
3739                    vpc_attachments: vpc_attachments__.unwrap_or_default(),
3740                    next_page_token: next_page_token__.unwrap_or_default(),
3741                })
3742            }
3743        }
3744        deserializer
3745            .deserialize_struct(
3746                "origincloud.dns.v1beta1.ListVpcAttachmentsResponse",
3747                FIELDS,
3748                GeneratedVisitor,
3749            )
3750    }
3751}
3752impl serde::Serialize for OwnershipChallenge {
3753    #[allow(deprecated)]
3754    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3755    where
3756        S: serde::Serializer,
3757    {
3758        use serde::ser::SerializeStruct;
3759        let mut len = 0;
3760        if !self.dns_name.is_empty() {
3761            len += 1;
3762        }
3763        if !self.token.is_empty() {
3764            len += 1;
3765        }
3766        if self.expire_time.is_some() {
3767            len += 1;
3768        }
3769        if self.verify_time.is_some() {
3770            len += 1;
3771        }
3772        if self.suspend_time.is_some() {
3773            len += 1;
3774        }
3775        if self.suspension_reason != 0 {
3776            len += 1;
3777        }
3778        if self.last_check != 0 {
3779            len += 1;
3780        }
3781        let mut struct_ser = serializer
3782            .serialize_struct("origincloud.dns.v1beta1.OwnershipChallenge", len)?;
3783        if !self.dns_name.is_empty() {
3784            struct_ser.serialize_field("dnsName", &self.dns_name)?;
3785        }
3786        if !self.token.is_empty() {
3787            struct_ser.serialize_field("token", &self.token)?;
3788        }
3789        if let Some(v) = self.expire_time.as_ref() {
3790            struct_ser.serialize_field("expireTime", v)?;
3791        }
3792        if let Some(v) = self.verify_time.as_ref() {
3793            struct_ser.serialize_field("verifyTime", v)?;
3794        }
3795        if let Some(v) = self.suspend_time.as_ref() {
3796            struct_ser.serialize_field("suspendTime", v)?;
3797        }
3798        if self.suspension_reason != 0 {
3799            let v = ownership_challenge::SuspensionReason::try_from(
3800                    self.suspension_reason,
3801                )
3802                .map_err(|_| serde::ser::Error::custom(
3803                    format!("Invalid variant {}", self.suspension_reason),
3804                ))?;
3805            struct_ser.serialize_field("suspensionReason", &v)?;
3806        }
3807        if self.last_check != 0 {
3808            let v = ownership_challenge::CheckOutcome::try_from(self.last_check)
3809                .map_err(|_| serde::ser::Error::custom(
3810                    format!("Invalid variant {}", self.last_check),
3811                ))?;
3812            struct_ser.serialize_field("lastCheck", &v)?;
3813        }
3814        struct_ser.end()
3815    }
3816}
3817impl<'de> serde::Deserialize<'de> for OwnershipChallenge {
3818    #[allow(deprecated)]
3819    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3820    where
3821        D: serde::Deserializer<'de>,
3822    {
3823        const FIELDS: &[&str] = &[
3824            "dns_name",
3825            "dnsName",
3826            "token",
3827            "expire_time",
3828            "expireTime",
3829            "verify_time",
3830            "verifyTime",
3831            "suspend_time",
3832            "suspendTime",
3833            "suspension_reason",
3834            "suspensionReason",
3835            "last_check",
3836            "lastCheck",
3837        ];
3838        #[allow(clippy::enum_variant_names)]
3839        enum GeneratedField {
3840            DnsName,
3841            Token,
3842            ExpireTime,
3843            VerifyTime,
3844            SuspendTime,
3845            SuspensionReason,
3846            LastCheck,
3847            __SkipField__,
3848        }
3849        impl<'de> serde::Deserialize<'de> for GeneratedField {
3850            fn deserialize<D>(
3851                deserializer: D,
3852            ) -> std::result::Result<GeneratedField, D::Error>
3853            where
3854                D: serde::Deserializer<'de>,
3855            {
3856                struct GeneratedVisitor;
3857                impl serde::de::Visitor<'_> for GeneratedVisitor {
3858                    type Value = GeneratedField;
3859                    fn expecting(
3860                        &self,
3861                        formatter: &mut std::fmt::Formatter<'_>,
3862                    ) -> std::fmt::Result {
3863                        write!(formatter, "expected one of: {:?}", & FIELDS)
3864                    }
3865                    #[allow(unused_variables)]
3866                    fn visit_str<E>(
3867                        self,
3868                        value: &str,
3869                    ) -> std::result::Result<GeneratedField, E>
3870                    where
3871                        E: serde::de::Error,
3872                    {
3873                        match value {
3874                            "dnsName" | "dns_name" => Ok(GeneratedField::DnsName),
3875                            "token" => Ok(GeneratedField::Token),
3876                            "expireTime" | "expire_time" => {
3877                                Ok(GeneratedField::ExpireTime)
3878                            }
3879                            "verifyTime" | "verify_time" => {
3880                                Ok(GeneratedField::VerifyTime)
3881                            }
3882                            "suspendTime" | "suspend_time" => {
3883                                Ok(GeneratedField::SuspendTime)
3884                            }
3885                            "suspensionReason" | "suspension_reason" => {
3886                                Ok(GeneratedField::SuspensionReason)
3887                            }
3888                            "lastCheck" | "last_check" => Ok(GeneratedField::LastCheck),
3889                            _ => Ok(GeneratedField::__SkipField__),
3890                        }
3891                    }
3892                }
3893                deserializer.deserialize_identifier(GeneratedVisitor)
3894            }
3895        }
3896        struct GeneratedVisitor;
3897        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3898            type Value = OwnershipChallenge;
3899            fn expecting(
3900                &self,
3901                formatter: &mut std::fmt::Formatter<'_>,
3902            ) -> std::fmt::Result {
3903                formatter.write_str("struct origincloud.dns.v1beta1.OwnershipChallenge")
3904            }
3905            fn visit_map<V>(
3906                self,
3907                mut map_: V,
3908            ) -> std::result::Result<OwnershipChallenge, V::Error>
3909            where
3910                V: serde::de::MapAccess<'de>,
3911            {
3912                let mut dns_name__ = None;
3913                let mut token__ = None;
3914                let mut expire_time__ = None;
3915                let mut verify_time__ = None;
3916                let mut suspend_time__ = None;
3917                let mut suspension_reason__ = None;
3918                let mut last_check__ = None;
3919                while let Some(k) = map_.next_key()? {
3920                    match k {
3921                        GeneratedField::DnsName => {
3922                            if dns_name__.is_some() {
3923                                return Err(serde::de::Error::duplicate_field("dnsName"));
3924                            }
3925                            dns_name__ = Some(map_.next_value()?);
3926                        }
3927                        GeneratedField::Token => {
3928                            if token__.is_some() {
3929                                return Err(serde::de::Error::duplicate_field("token"));
3930                            }
3931                            token__ = Some(map_.next_value()?);
3932                        }
3933                        GeneratedField::ExpireTime => {
3934                            if expire_time__.is_some() {
3935                                return Err(serde::de::Error::duplicate_field("expireTime"));
3936                            }
3937                            expire_time__ = map_.next_value()?;
3938                        }
3939                        GeneratedField::VerifyTime => {
3940                            if verify_time__.is_some() {
3941                                return Err(serde::de::Error::duplicate_field("verifyTime"));
3942                            }
3943                            verify_time__ = map_.next_value()?;
3944                        }
3945                        GeneratedField::SuspendTime => {
3946                            if suspend_time__.is_some() {
3947                                return Err(
3948                                    serde::de::Error::duplicate_field("suspendTime"),
3949                                );
3950                            }
3951                            suspend_time__ = map_.next_value()?;
3952                        }
3953                        GeneratedField::SuspensionReason => {
3954                            if suspension_reason__.is_some() {
3955                                return Err(
3956                                    serde::de::Error::duplicate_field("suspensionReason"),
3957                                );
3958                            }
3959                            suspension_reason__ = Some(
3960                                map_.next_value::<ownership_challenge::SuspensionReason>()?
3961                                    as i32,
3962                            );
3963                        }
3964                        GeneratedField::LastCheck => {
3965                            if last_check__.is_some() {
3966                                return Err(serde::de::Error::duplicate_field("lastCheck"));
3967                            }
3968                            last_check__ = Some(
3969                                map_.next_value::<ownership_challenge::CheckOutcome>()?
3970                                    as i32,
3971                            );
3972                        }
3973                        GeneratedField::__SkipField__ => {
3974                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3975                        }
3976                    }
3977                }
3978                Ok(OwnershipChallenge {
3979                    dns_name: dns_name__.unwrap_or_default(),
3980                    token: token__.unwrap_or_default(),
3981                    expire_time: expire_time__,
3982                    verify_time: verify_time__,
3983                    suspend_time: suspend_time__,
3984                    suspension_reason: suspension_reason__.unwrap_or_default(),
3985                    last_check: last_check__.unwrap_or_default(),
3986                })
3987            }
3988        }
3989        deserializer
3990            .deserialize_struct(
3991                "origincloud.dns.v1beta1.OwnershipChallenge",
3992                FIELDS,
3993                GeneratedVisitor,
3994            )
3995    }
3996}
3997impl serde::Serialize for ownership_challenge::CheckOutcome {
3998    #[allow(deprecated)]
3999    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4000    where
4001        S: serde::Serializer,
4002    {
4003        let variant = match self {
4004            Self::Unspecified => "CHECK_OUTCOME_UNSPECIFIED",
4005            Self::Ok => "OK",
4006            Self::NotFound => "NOT_FOUND",
4007            Self::NameHeld => "NAME_HELD",
4008        };
4009        serializer.serialize_str(variant)
4010    }
4011}
4012impl<'de> serde::Deserialize<'de> for ownership_challenge::CheckOutcome {
4013    #[allow(deprecated)]
4014    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4015    where
4016        D: serde::Deserializer<'de>,
4017    {
4018        const FIELDS: &[&str] = &[
4019            "CHECK_OUTCOME_UNSPECIFIED",
4020            "OK",
4021            "NOT_FOUND",
4022            "NAME_HELD",
4023        ];
4024        struct GeneratedVisitor;
4025        impl serde::de::Visitor<'_> for GeneratedVisitor {
4026            type Value = ownership_challenge::CheckOutcome;
4027            fn expecting(
4028                &self,
4029                formatter: &mut std::fmt::Formatter<'_>,
4030            ) -> std::fmt::Result {
4031                write!(formatter, "expected one of: {:?}", & FIELDS)
4032            }
4033            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
4034            where
4035                E: serde::de::Error,
4036            {
4037                i32::try_from(v)
4038                    .ok()
4039                    .and_then(|x| {
4040                        x
4041                            .try_into()
4042                            .ok()
4043                            .or_else(|| Some(
4044                                ownership_challenge::CheckOutcome::default(),
4045                            ))
4046                    })
4047                    .ok_or_else(|| {
4048                        serde::de::Error::invalid_value(
4049                            serde::de::Unexpected::Signed(v),
4050                            &self,
4051                        )
4052                    })
4053            }
4054            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
4055            where
4056                E: serde::de::Error,
4057            {
4058                i32::try_from(v)
4059                    .ok()
4060                    .and_then(|x| {
4061                        x
4062                            .try_into()
4063                            .ok()
4064                            .or_else(|| Some(
4065                                ownership_challenge::CheckOutcome::default(),
4066                            ))
4067                    })
4068                    .ok_or_else(|| {
4069                        serde::de::Error::invalid_value(
4070                            serde::de::Unexpected::Unsigned(v),
4071                            &self,
4072                        )
4073                    })
4074            }
4075            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4076            where
4077                E: serde::de::Error,
4078            {
4079                match value {
4080                    "CHECK_OUTCOME_UNSPECIFIED" => {
4081                        Ok(ownership_challenge::CheckOutcome::Unspecified)
4082                    }
4083                    "OK" => Ok(ownership_challenge::CheckOutcome::Ok),
4084                    "NOT_FOUND" => Ok(ownership_challenge::CheckOutcome::NotFound),
4085                    "NAME_HELD" => Ok(ownership_challenge::CheckOutcome::NameHeld),
4086                    _ => Ok(ownership_challenge::CheckOutcome::default()),
4087                }
4088            }
4089        }
4090        deserializer.deserialize_any(GeneratedVisitor)
4091    }
4092}
4093impl serde::Serialize for ownership_challenge::SuspensionReason {
4094    #[allow(deprecated)]
4095    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4096    where
4097        S: serde::Serializer,
4098    {
4099        let variant = match self {
4100            Self::Unspecified => "SUSPENSION_REASON_UNSPECIFIED",
4101            Self::ChallengeLost => "CHALLENGE_LOST",
4102        };
4103        serializer.serialize_str(variant)
4104    }
4105}
4106impl<'de> serde::Deserialize<'de> for ownership_challenge::SuspensionReason {
4107    #[allow(deprecated)]
4108    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4109    where
4110        D: serde::Deserializer<'de>,
4111    {
4112        const FIELDS: &[&str] = &["SUSPENSION_REASON_UNSPECIFIED", "CHALLENGE_LOST"];
4113        struct GeneratedVisitor;
4114        impl serde::de::Visitor<'_> for GeneratedVisitor {
4115            type Value = ownership_challenge::SuspensionReason;
4116            fn expecting(
4117                &self,
4118                formatter: &mut std::fmt::Formatter<'_>,
4119            ) -> std::fmt::Result {
4120                write!(formatter, "expected one of: {:?}", & FIELDS)
4121            }
4122            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
4123            where
4124                E: serde::de::Error,
4125            {
4126                i32::try_from(v)
4127                    .ok()
4128                    .and_then(|x| {
4129                        x
4130                            .try_into()
4131                            .ok()
4132                            .or_else(|| Some(
4133                                ownership_challenge::SuspensionReason::default(),
4134                            ))
4135                    })
4136                    .ok_or_else(|| {
4137                        serde::de::Error::invalid_value(
4138                            serde::de::Unexpected::Signed(v),
4139                            &self,
4140                        )
4141                    })
4142            }
4143            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
4144            where
4145                E: serde::de::Error,
4146            {
4147                i32::try_from(v)
4148                    .ok()
4149                    .and_then(|x| {
4150                        x
4151                            .try_into()
4152                            .ok()
4153                            .or_else(|| Some(
4154                                ownership_challenge::SuspensionReason::default(),
4155                            ))
4156                    })
4157                    .ok_or_else(|| {
4158                        serde::de::Error::invalid_value(
4159                            serde::de::Unexpected::Unsigned(v),
4160                            &self,
4161                        )
4162                    })
4163            }
4164            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4165            where
4166                E: serde::de::Error,
4167            {
4168                match value {
4169                    "SUSPENSION_REASON_UNSPECIFIED" => {
4170                        Ok(ownership_challenge::SuspensionReason::Unspecified)
4171                    }
4172                    "CHALLENGE_LOST" => {
4173                        Ok(ownership_challenge::SuspensionReason::ChallengeLost)
4174                    }
4175                    _ => Ok(ownership_challenge::SuspensionReason::default()),
4176                }
4177            }
4178        }
4179        deserializer.deserialize_any(GeneratedVisitor)
4180    }
4181}
4182impl serde::Serialize for RecordSet {
4183    #[allow(deprecated)]
4184    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4185    where
4186        S: serde::Serializer,
4187    {
4188        use serde::ser::SerializeStruct;
4189        let mut len = 0;
4190        if !self.name.is_empty() {
4191            len += 1;
4192        }
4193        if !self.urn.is_empty() {
4194            len += 1;
4195        }
4196        if !self.dns_name.is_empty() {
4197            len += 1;
4198        }
4199        if self.r#type != 0 {
4200            len += 1;
4201        }
4202        if self.ttl.is_some() {
4203            len += 1;
4204        }
4205        if self.create_time.is_some() {
4206            len += 1;
4207        }
4208        if self.update_time.is_some() {
4209            len += 1;
4210        }
4211        if self.data.is_some() {
4212            len += 1;
4213        }
4214        let mut struct_ser = serializer
4215            .serialize_struct("origincloud.dns.v1beta1.RecordSet", len)?;
4216        if !self.name.is_empty() {
4217            struct_ser.serialize_field("name", &self.name)?;
4218        }
4219        if !self.urn.is_empty() {
4220            struct_ser.serialize_field("urn", &self.urn)?;
4221        }
4222        if !self.dns_name.is_empty() {
4223            struct_ser.serialize_field("dnsName", &self.dns_name)?;
4224        }
4225        if self.r#type != 0 {
4226            let v = record_set::Type::try_from(self.r#type)
4227                .map_err(|_| serde::ser::Error::custom(
4228                    format!("Invalid variant {}", self.r#type),
4229                ))?;
4230            struct_ser.serialize_field("type", &v)?;
4231        }
4232        if let Some(v) = self.ttl.as_ref() {
4233            struct_ser.serialize_field("ttl", v)?;
4234        }
4235        if let Some(v) = self.create_time.as_ref() {
4236            struct_ser.serialize_field("createTime", v)?;
4237        }
4238        if let Some(v) = self.update_time.as_ref() {
4239            struct_ser.serialize_field("updateTime", v)?;
4240        }
4241        if let Some(v) = self.data.as_ref() {
4242            match v {
4243                record_set::Data::Basic(v) => {
4244                    struct_ser.serialize_field("basic", v)?;
4245                }
4246                record_set::Data::Alias(v) => {
4247                    struct_ser.serialize_field("alias", v)?;
4248                }
4249            }
4250        }
4251        struct_ser.end()
4252    }
4253}
4254impl<'de> serde::Deserialize<'de> for RecordSet {
4255    #[allow(deprecated)]
4256    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4257    where
4258        D: serde::Deserializer<'de>,
4259    {
4260        const FIELDS: &[&str] = &[
4261            "name",
4262            "urn",
4263            "dns_name",
4264            "dnsName",
4265            "type",
4266            "ttl",
4267            "create_time",
4268            "createTime",
4269            "update_time",
4270            "updateTime",
4271            "basic",
4272            "alias",
4273        ];
4274        #[allow(clippy::enum_variant_names)]
4275        enum GeneratedField {
4276            Name,
4277            Urn,
4278            DnsName,
4279            Type,
4280            Ttl,
4281            CreateTime,
4282            UpdateTime,
4283            Basic,
4284            Alias,
4285            __SkipField__,
4286        }
4287        impl<'de> serde::Deserialize<'de> for GeneratedField {
4288            fn deserialize<D>(
4289                deserializer: D,
4290            ) -> std::result::Result<GeneratedField, D::Error>
4291            where
4292                D: serde::Deserializer<'de>,
4293            {
4294                struct GeneratedVisitor;
4295                impl serde::de::Visitor<'_> for GeneratedVisitor {
4296                    type Value = GeneratedField;
4297                    fn expecting(
4298                        &self,
4299                        formatter: &mut std::fmt::Formatter<'_>,
4300                    ) -> std::fmt::Result {
4301                        write!(formatter, "expected one of: {:?}", & FIELDS)
4302                    }
4303                    #[allow(unused_variables)]
4304                    fn visit_str<E>(
4305                        self,
4306                        value: &str,
4307                    ) -> std::result::Result<GeneratedField, E>
4308                    where
4309                        E: serde::de::Error,
4310                    {
4311                        match value {
4312                            "name" => Ok(GeneratedField::Name),
4313                            "urn" => Ok(GeneratedField::Urn),
4314                            "dnsName" | "dns_name" => Ok(GeneratedField::DnsName),
4315                            "type" => Ok(GeneratedField::Type),
4316                            "ttl" => Ok(GeneratedField::Ttl),
4317                            "createTime" | "create_time" => {
4318                                Ok(GeneratedField::CreateTime)
4319                            }
4320                            "updateTime" | "update_time" => {
4321                                Ok(GeneratedField::UpdateTime)
4322                            }
4323                            "basic" => Ok(GeneratedField::Basic),
4324                            "alias" => Ok(GeneratedField::Alias),
4325                            _ => Ok(GeneratedField::__SkipField__),
4326                        }
4327                    }
4328                }
4329                deserializer.deserialize_identifier(GeneratedVisitor)
4330            }
4331        }
4332        struct GeneratedVisitor;
4333        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4334            type Value = RecordSet;
4335            fn expecting(
4336                &self,
4337                formatter: &mut std::fmt::Formatter<'_>,
4338            ) -> std::fmt::Result {
4339                formatter.write_str("struct origincloud.dns.v1beta1.RecordSet")
4340            }
4341            fn visit_map<V>(
4342                self,
4343                mut map_: V,
4344            ) -> std::result::Result<RecordSet, V::Error>
4345            where
4346                V: serde::de::MapAccess<'de>,
4347            {
4348                let mut name__ = None;
4349                let mut urn__ = None;
4350                let mut dns_name__ = None;
4351                let mut r#type__ = None;
4352                let mut ttl__ = None;
4353                let mut create_time__ = None;
4354                let mut update_time__ = None;
4355                let mut data__ = None;
4356                while let Some(k) = map_.next_key()? {
4357                    match k {
4358                        GeneratedField::Name => {
4359                            if name__.is_some() {
4360                                return Err(serde::de::Error::duplicate_field("name"));
4361                            }
4362                            name__ = Some(map_.next_value()?);
4363                        }
4364                        GeneratedField::Urn => {
4365                            if urn__.is_some() {
4366                                return Err(serde::de::Error::duplicate_field("urn"));
4367                            }
4368                            urn__ = Some(map_.next_value()?);
4369                        }
4370                        GeneratedField::DnsName => {
4371                            if dns_name__.is_some() {
4372                                return Err(serde::de::Error::duplicate_field("dnsName"));
4373                            }
4374                            dns_name__ = Some(map_.next_value()?);
4375                        }
4376                        GeneratedField::Type => {
4377                            if r#type__.is_some() {
4378                                return Err(serde::de::Error::duplicate_field("type"));
4379                            }
4380                            r#type__ = Some(
4381                                map_.next_value::<record_set::Type>()? as i32,
4382                            );
4383                        }
4384                        GeneratedField::Ttl => {
4385                            if ttl__.is_some() {
4386                                return Err(serde::de::Error::duplicate_field("ttl"));
4387                            }
4388                            ttl__ = map_.next_value()?;
4389                        }
4390                        GeneratedField::CreateTime => {
4391                            if create_time__.is_some() {
4392                                return Err(serde::de::Error::duplicate_field("createTime"));
4393                            }
4394                            create_time__ = map_.next_value()?;
4395                        }
4396                        GeneratedField::UpdateTime => {
4397                            if update_time__.is_some() {
4398                                return Err(serde::de::Error::duplicate_field("updateTime"));
4399                            }
4400                            update_time__ = map_.next_value()?;
4401                        }
4402                        GeneratedField::Basic => {
4403                            if data__.is_some() {
4404                                return Err(serde::de::Error::duplicate_field("basic"));
4405                            }
4406                            data__ = map_
4407                                .next_value::<::std::option::Option<_>>()?
4408                                .map(record_set::Data::Basic);
4409                        }
4410                        GeneratedField::Alias => {
4411                            if data__.is_some() {
4412                                return Err(serde::de::Error::duplicate_field("alias"));
4413                            }
4414                            data__ = map_
4415                                .next_value::<::std::option::Option<_>>()?
4416                                .map(record_set::Data::Alias);
4417                        }
4418                        GeneratedField::__SkipField__ => {
4419                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4420                        }
4421                    }
4422                }
4423                Ok(RecordSet {
4424                    name: name__.unwrap_or_default(),
4425                    urn: urn__.unwrap_or_default(),
4426                    dns_name: dns_name__.unwrap_or_default(),
4427                    r#type: r#type__.unwrap_or_default(),
4428                    ttl: ttl__,
4429                    create_time: create_time__,
4430                    update_time: update_time__,
4431                    data: data__,
4432                })
4433            }
4434        }
4435        deserializer
4436            .deserialize_struct(
4437                "origincloud.dns.v1beta1.RecordSet",
4438                FIELDS,
4439                GeneratedVisitor,
4440            )
4441    }
4442}
4443impl serde::Serialize for record_set::Type {
4444    #[allow(deprecated)]
4445    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4446    where
4447        S: serde::Serializer,
4448    {
4449        let variant = match self {
4450            Self::Unspecified => "TYPE_UNSPECIFIED",
4451            Self::A => "A",
4452            Self::Aaaa => "AAAA",
4453            Self::Cname => "CNAME",
4454            Self::Txt => "TXT",
4455            Self::Mx => "MX",
4456            Self::Srv => "SRV",
4457            Self::Caa => "CAA",
4458        };
4459        serializer.serialize_str(variant)
4460    }
4461}
4462impl<'de> serde::Deserialize<'de> for record_set::Type {
4463    #[allow(deprecated)]
4464    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4465    where
4466        D: serde::Deserializer<'de>,
4467    {
4468        const FIELDS: &[&str] = &[
4469            "TYPE_UNSPECIFIED",
4470            "A",
4471            "AAAA",
4472            "CNAME",
4473            "TXT",
4474            "MX",
4475            "SRV",
4476            "CAA",
4477        ];
4478        struct GeneratedVisitor;
4479        impl serde::de::Visitor<'_> for GeneratedVisitor {
4480            type Value = record_set::Type;
4481            fn expecting(
4482                &self,
4483                formatter: &mut std::fmt::Formatter<'_>,
4484            ) -> std::fmt::Result {
4485                write!(formatter, "expected one of: {:?}", & FIELDS)
4486            }
4487            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
4488            where
4489                E: serde::de::Error,
4490            {
4491                i32::try_from(v)
4492                    .ok()
4493                    .and_then(|x| {
4494                        x.try_into().ok().or_else(|| Some(record_set::Type::default()))
4495                    })
4496                    .ok_or_else(|| {
4497                        serde::de::Error::invalid_value(
4498                            serde::de::Unexpected::Signed(v),
4499                            &self,
4500                        )
4501                    })
4502            }
4503            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
4504            where
4505                E: serde::de::Error,
4506            {
4507                i32::try_from(v)
4508                    .ok()
4509                    .and_then(|x| {
4510                        x.try_into().ok().or_else(|| Some(record_set::Type::default()))
4511                    })
4512                    .ok_or_else(|| {
4513                        serde::de::Error::invalid_value(
4514                            serde::de::Unexpected::Unsigned(v),
4515                            &self,
4516                        )
4517                    })
4518            }
4519            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4520            where
4521                E: serde::de::Error,
4522            {
4523                match value {
4524                    "TYPE_UNSPECIFIED" => Ok(record_set::Type::Unspecified),
4525                    "A" => Ok(record_set::Type::A),
4526                    "AAAA" => Ok(record_set::Type::Aaaa),
4527                    "CNAME" => Ok(record_set::Type::Cname),
4528                    "TXT" => Ok(record_set::Type::Txt),
4529                    "MX" => Ok(record_set::Type::Mx),
4530                    "SRV" => Ok(record_set::Type::Srv),
4531                    "CAA" => Ok(record_set::Type::Caa),
4532                    _ => Ok(record_set::Type::default()),
4533                }
4534            }
4535        }
4536        deserializer.deserialize_any(GeneratedVisitor)
4537    }
4538}
4539impl serde::Serialize for RecordSetUpdate {
4540    #[allow(deprecated)]
4541    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4542    where
4543        S: serde::Serializer,
4544    {
4545        use serde::ser::SerializeStruct;
4546        let mut len = 0;
4547        if self.record_set.is_some() {
4548            len += 1;
4549        }
4550        if self.update_mask.is_some() {
4551            len += 1;
4552        }
4553        let mut struct_ser = serializer
4554            .serialize_struct("origincloud.dns.v1beta1.RecordSetUpdate", len)?;
4555        if let Some(v) = self.record_set.as_ref() {
4556            struct_ser.serialize_field("recordSet", v)?;
4557        }
4558        if let Some(v) = self.update_mask.as_ref() {
4559            struct_ser.serialize_field("updateMask", v)?;
4560        }
4561        struct_ser.end()
4562    }
4563}
4564impl<'de> serde::Deserialize<'de> for RecordSetUpdate {
4565    #[allow(deprecated)]
4566    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4567    where
4568        D: serde::Deserializer<'de>,
4569    {
4570        const FIELDS: &[&str] = &[
4571            "record_set",
4572            "recordSet",
4573            "update_mask",
4574            "updateMask",
4575        ];
4576        #[allow(clippy::enum_variant_names)]
4577        enum GeneratedField {
4578            RecordSet,
4579            UpdateMask,
4580            __SkipField__,
4581        }
4582        impl<'de> serde::Deserialize<'de> for GeneratedField {
4583            fn deserialize<D>(
4584                deserializer: D,
4585            ) -> std::result::Result<GeneratedField, D::Error>
4586            where
4587                D: serde::Deserializer<'de>,
4588            {
4589                struct GeneratedVisitor;
4590                impl serde::de::Visitor<'_> for GeneratedVisitor {
4591                    type Value = GeneratedField;
4592                    fn expecting(
4593                        &self,
4594                        formatter: &mut std::fmt::Formatter<'_>,
4595                    ) -> std::fmt::Result {
4596                        write!(formatter, "expected one of: {:?}", & FIELDS)
4597                    }
4598                    #[allow(unused_variables)]
4599                    fn visit_str<E>(
4600                        self,
4601                        value: &str,
4602                    ) -> std::result::Result<GeneratedField, E>
4603                    where
4604                        E: serde::de::Error,
4605                    {
4606                        match value {
4607                            "recordSet" | "record_set" => Ok(GeneratedField::RecordSet),
4608                            "updateMask" | "update_mask" => {
4609                                Ok(GeneratedField::UpdateMask)
4610                            }
4611                            _ => Ok(GeneratedField::__SkipField__),
4612                        }
4613                    }
4614                }
4615                deserializer.deserialize_identifier(GeneratedVisitor)
4616            }
4617        }
4618        struct GeneratedVisitor;
4619        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4620            type Value = RecordSetUpdate;
4621            fn expecting(
4622                &self,
4623                formatter: &mut std::fmt::Formatter<'_>,
4624            ) -> std::fmt::Result {
4625                formatter.write_str("struct origincloud.dns.v1beta1.RecordSetUpdate")
4626            }
4627            fn visit_map<V>(
4628                self,
4629                mut map_: V,
4630            ) -> std::result::Result<RecordSetUpdate, V::Error>
4631            where
4632                V: serde::de::MapAccess<'de>,
4633            {
4634                let mut record_set__ = None;
4635                let mut update_mask__ = None;
4636                while let Some(k) = map_.next_key()? {
4637                    match k {
4638                        GeneratedField::RecordSet => {
4639                            if record_set__.is_some() {
4640                                return Err(serde::de::Error::duplicate_field("recordSet"));
4641                            }
4642                            record_set__ = map_.next_value()?;
4643                        }
4644                        GeneratedField::UpdateMask => {
4645                            if update_mask__.is_some() {
4646                                return Err(serde::de::Error::duplicate_field("updateMask"));
4647                            }
4648                            update_mask__ = map_.next_value()?;
4649                        }
4650                        GeneratedField::__SkipField__ => {
4651                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4652                        }
4653                    }
4654                }
4655                Ok(RecordSetUpdate {
4656                    record_set: record_set__,
4657                    update_mask: update_mask__,
4658                })
4659            }
4660        }
4661        deserializer
4662            .deserialize_struct(
4663                "origincloud.dns.v1beta1.RecordSetUpdate",
4664                FIELDS,
4665                GeneratedVisitor,
4666            )
4667    }
4668}
4669impl serde::Serialize for UpdateHostedZoneRequest {
4670    #[allow(deprecated)]
4671    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4672    where
4673        S: serde::Serializer,
4674    {
4675        use serde::ser::SerializeStruct;
4676        let mut len = 0;
4677        if self.hosted_zone.is_some() {
4678            len += 1;
4679        }
4680        if self.update_mask.is_some() {
4681            len += 1;
4682        }
4683        if !self.request_id.is_empty() {
4684            len += 1;
4685        }
4686        let mut struct_ser = serializer
4687            .serialize_struct("origincloud.dns.v1beta1.UpdateHostedZoneRequest", len)?;
4688        if let Some(v) = self.hosted_zone.as_ref() {
4689            struct_ser.serialize_field("hostedZone", v)?;
4690        }
4691        if let Some(v) = self.update_mask.as_ref() {
4692            struct_ser.serialize_field("updateMask", v)?;
4693        }
4694        if !self.request_id.is_empty() {
4695            struct_ser.serialize_field("requestId", &self.request_id)?;
4696        }
4697        struct_ser.end()
4698    }
4699}
4700impl<'de> serde::Deserialize<'de> for UpdateHostedZoneRequest {
4701    #[allow(deprecated)]
4702    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4703    where
4704        D: serde::Deserializer<'de>,
4705    {
4706        const FIELDS: &[&str] = &[
4707            "hosted_zone",
4708            "hostedZone",
4709            "update_mask",
4710            "updateMask",
4711            "request_id",
4712            "requestId",
4713        ];
4714        #[allow(clippy::enum_variant_names)]
4715        enum GeneratedField {
4716            HostedZone,
4717            UpdateMask,
4718            RequestId,
4719            __SkipField__,
4720        }
4721        impl<'de> serde::Deserialize<'de> for GeneratedField {
4722            fn deserialize<D>(
4723                deserializer: D,
4724            ) -> std::result::Result<GeneratedField, D::Error>
4725            where
4726                D: serde::Deserializer<'de>,
4727            {
4728                struct GeneratedVisitor;
4729                impl serde::de::Visitor<'_> for GeneratedVisitor {
4730                    type Value = GeneratedField;
4731                    fn expecting(
4732                        &self,
4733                        formatter: &mut std::fmt::Formatter<'_>,
4734                    ) -> std::fmt::Result {
4735                        write!(formatter, "expected one of: {:?}", & FIELDS)
4736                    }
4737                    #[allow(unused_variables)]
4738                    fn visit_str<E>(
4739                        self,
4740                        value: &str,
4741                    ) -> std::result::Result<GeneratedField, E>
4742                    where
4743                        E: serde::de::Error,
4744                    {
4745                        match value {
4746                            "hostedZone" | "hosted_zone" => {
4747                                Ok(GeneratedField::HostedZone)
4748                            }
4749                            "updateMask" | "update_mask" => {
4750                                Ok(GeneratedField::UpdateMask)
4751                            }
4752                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4753                            _ => Ok(GeneratedField::__SkipField__),
4754                        }
4755                    }
4756                }
4757                deserializer.deserialize_identifier(GeneratedVisitor)
4758            }
4759        }
4760        struct GeneratedVisitor;
4761        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4762            type Value = UpdateHostedZoneRequest;
4763            fn expecting(
4764                &self,
4765                formatter: &mut std::fmt::Formatter<'_>,
4766            ) -> std::fmt::Result {
4767                formatter
4768                    .write_str("struct origincloud.dns.v1beta1.UpdateHostedZoneRequest")
4769            }
4770            fn visit_map<V>(
4771                self,
4772                mut map_: V,
4773            ) -> std::result::Result<UpdateHostedZoneRequest, V::Error>
4774            where
4775                V: serde::de::MapAccess<'de>,
4776            {
4777                let mut hosted_zone__ = None;
4778                let mut update_mask__ = None;
4779                let mut request_id__ = None;
4780                while let Some(k) = map_.next_key()? {
4781                    match k {
4782                        GeneratedField::HostedZone => {
4783                            if hosted_zone__.is_some() {
4784                                return Err(serde::de::Error::duplicate_field("hostedZone"));
4785                            }
4786                            hosted_zone__ = map_.next_value()?;
4787                        }
4788                        GeneratedField::UpdateMask => {
4789                            if update_mask__.is_some() {
4790                                return Err(serde::de::Error::duplicate_field("updateMask"));
4791                            }
4792                            update_mask__ = map_.next_value()?;
4793                        }
4794                        GeneratedField::RequestId => {
4795                            if request_id__.is_some() {
4796                                return Err(serde::de::Error::duplicate_field("requestId"));
4797                            }
4798                            request_id__ = Some(map_.next_value()?);
4799                        }
4800                        GeneratedField::__SkipField__ => {
4801                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4802                        }
4803                    }
4804                }
4805                Ok(UpdateHostedZoneRequest {
4806                    hosted_zone: hosted_zone__,
4807                    update_mask: update_mask__,
4808                    request_id: request_id__.unwrap_or_default(),
4809                })
4810            }
4811        }
4812        deserializer
4813            .deserialize_struct(
4814                "origincloud.dns.v1beta1.UpdateHostedZoneRequest",
4815                FIELDS,
4816                GeneratedVisitor,
4817            )
4818    }
4819}
4820impl serde::Serialize for UpdateRecordSetRequest {
4821    #[allow(deprecated)]
4822    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4823    where
4824        S: serde::Serializer,
4825    {
4826        use serde::ser::SerializeStruct;
4827        let mut len = 0;
4828        if self.record_set.is_some() {
4829            len += 1;
4830        }
4831        if self.update_mask.is_some() {
4832            len += 1;
4833        }
4834        if !self.request_id.is_empty() {
4835            len += 1;
4836        }
4837        let mut struct_ser = serializer
4838            .serialize_struct("origincloud.dns.v1beta1.UpdateRecordSetRequest", len)?;
4839        if let Some(v) = self.record_set.as_ref() {
4840            struct_ser.serialize_field("recordSet", v)?;
4841        }
4842        if let Some(v) = self.update_mask.as_ref() {
4843            struct_ser.serialize_field("updateMask", v)?;
4844        }
4845        if !self.request_id.is_empty() {
4846            struct_ser.serialize_field("requestId", &self.request_id)?;
4847        }
4848        struct_ser.end()
4849    }
4850}
4851impl<'de> serde::Deserialize<'de> for UpdateRecordSetRequest {
4852    #[allow(deprecated)]
4853    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4854    where
4855        D: serde::Deserializer<'de>,
4856    {
4857        const FIELDS: &[&str] = &[
4858            "record_set",
4859            "recordSet",
4860            "update_mask",
4861            "updateMask",
4862            "request_id",
4863            "requestId",
4864        ];
4865        #[allow(clippy::enum_variant_names)]
4866        enum GeneratedField {
4867            RecordSet,
4868            UpdateMask,
4869            RequestId,
4870            __SkipField__,
4871        }
4872        impl<'de> serde::Deserialize<'de> for GeneratedField {
4873            fn deserialize<D>(
4874                deserializer: D,
4875            ) -> std::result::Result<GeneratedField, D::Error>
4876            where
4877                D: serde::Deserializer<'de>,
4878            {
4879                struct GeneratedVisitor;
4880                impl serde::de::Visitor<'_> for GeneratedVisitor {
4881                    type Value = GeneratedField;
4882                    fn expecting(
4883                        &self,
4884                        formatter: &mut std::fmt::Formatter<'_>,
4885                    ) -> std::fmt::Result {
4886                        write!(formatter, "expected one of: {:?}", & FIELDS)
4887                    }
4888                    #[allow(unused_variables)]
4889                    fn visit_str<E>(
4890                        self,
4891                        value: &str,
4892                    ) -> std::result::Result<GeneratedField, E>
4893                    where
4894                        E: serde::de::Error,
4895                    {
4896                        match value {
4897                            "recordSet" | "record_set" => Ok(GeneratedField::RecordSet),
4898                            "updateMask" | "update_mask" => {
4899                                Ok(GeneratedField::UpdateMask)
4900                            }
4901                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4902                            _ => Ok(GeneratedField::__SkipField__),
4903                        }
4904                    }
4905                }
4906                deserializer.deserialize_identifier(GeneratedVisitor)
4907            }
4908        }
4909        struct GeneratedVisitor;
4910        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4911            type Value = UpdateRecordSetRequest;
4912            fn expecting(
4913                &self,
4914                formatter: &mut std::fmt::Formatter<'_>,
4915            ) -> std::fmt::Result {
4916                formatter
4917                    .write_str("struct origincloud.dns.v1beta1.UpdateRecordSetRequest")
4918            }
4919            fn visit_map<V>(
4920                self,
4921                mut map_: V,
4922            ) -> std::result::Result<UpdateRecordSetRequest, V::Error>
4923            where
4924                V: serde::de::MapAccess<'de>,
4925            {
4926                let mut record_set__ = None;
4927                let mut update_mask__ = None;
4928                let mut request_id__ = None;
4929                while let Some(k) = map_.next_key()? {
4930                    match k {
4931                        GeneratedField::RecordSet => {
4932                            if record_set__.is_some() {
4933                                return Err(serde::de::Error::duplicate_field("recordSet"));
4934                            }
4935                            record_set__ = map_.next_value()?;
4936                        }
4937                        GeneratedField::UpdateMask => {
4938                            if update_mask__.is_some() {
4939                                return Err(serde::de::Error::duplicate_field("updateMask"));
4940                            }
4941                            update_mask__ = map_.next_value()?;
4942                        }
4943                        GeneratedField::RequestId => {
4944                            if request_id__.is_some() {
4945                                return Err(serde::de::Error::duplicate_field("requestId"));
4946                            }
4947                            request_id__ = Some(map_.next_value()?);
4948                        }
4949                        GeneratedField::__SkipField__ => {
4950                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4951                        }
4952                    }
4953                }
4954                Ok(UpdateRecordSetRequest {
4955                    record_set: record_set__,
4956                    update_mask: update_mask__,
4957                    request_id: request_id__.unwrap_or_default(),
4958                })
4959            }
4960        }
4961        deserializer
4962            .deserialize_struct(
4963                "origincloud.dns.v1beta1.UpdateRecordSetRequest",
4964                FIELDS,
4965                GeneratedVisitor,
4966            )
4967    }
4968}
4969impl serde::Serialize for VerifyHostedZoneRequest {
4970    #[allow(deprecated)]
4971    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4972    where
4973        S: serde::Serializer,
4974    {
4975        use serde::ser::SerializeStruct;
4976        let mut len = 0;
4977        if !self.name.is_empty() {
4978            len += 1;
4979        }
4980        let mut struct_ser = serializer
4981            .serialize_struct("origincloud.dns.v1beta1.VerifyHostedZoneRequest", len)?;
4982        if !self.name.is_empty() {
4983            struct_ser.serialize_field("name", &self.name)?;
4984        }
4985        struct_ser.end()
4986    }
4987}
4988impl<'de> serde::Deserialize<'de> for VerifyHostedZoneRequest {
4989    #[allow(deprecated)]
4990    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4991    where
4992        D: serde::Deserializer<'de>,
4993    {
4994        const FIELDS: &[&str] = &["name"];
4995        #[allow(clippy::enum_variant_names)]
4996        enum GeneratedField {
4997            Name,
4998            __SkipField__,
4999        }
5000        impl<'de> serde::Deserialize<'de> for GeneratedField {
5001            fn deserialize<D>(
5002                deserializer: D,
5003            ) -> std::result::Result<GeneratedField, D::Error>
5004            where
5005                D: serde::Deserializer<'de>,
5006            {
5007                struct GeneratedVisitor;
5008                impl serde::de::Visitor<'_> for GeneratedVisitor {
5009                    type Value = GeneratedField;
5010                    fn expecting(
5011                        &self,
5012                        formatter: &mut std::fmt::Formatter<'_>,
5013                    ) -> std::fmt::Result {
5014                        write!(formatter, "expected one of: {:?}", & FIELDS)
5015                    }
5016                    #[allow(unused_variables)]
5017                    fn visit_str<E>(
5018                        self,
5019                        value: &str,
5020                    ) -> std::result::Result<GeneratedField, E>
5021                    where
5022                        E: serde::de::Error,
5023                    {
5024                        match value {
5025                            "name" => Ok(GeneratedField::Name),
5026                            _ => Ok(GeneratedField::__SkipField__),
5027                        }
5028                    }
5029                }
5030                deserializer.deserialize_identifier(GeneratedVisitor)
5031            }
5032        }
5033        struct GeneratedVisitor;
5034        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5035            type Value = VerifyHostedZoneRequest;
5036            fn expecting(
5037                &self,
5038                formatter: &mut std::fmt::Formatter<'_>,
5039            ) -> std::fmt::Result {
5040                formatter
5041                    .write_str("struct origincloud.dns.v1beta1.VerifyHostedZoneRequest")
5042            }
5043            fn visit_map<V>(
5044                self,
5045                mut map_: V,
5046            ) -> std::result::Result<VerifyHostedZoneRequest, V::Error>
5047            where
5048                V: serde::de::MapAccess<'de>,
5049            {
5050                let mut name__ = None;
5051                while let Some(k) = map_.next_key()? {
5052                    match k {
5053                        GeneratedField::Name => {
5054                            if name__.is_some() {
5055                                return Err(serde::de::Error::duplicate_field("name"));
5056                            }
5057                            name__ = Some(map_.next_value()?);
5058                        }
5059                        GeneratedField::__SkipField__ => {
5060                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5061                        }
5062                    }
5063                }
5064                Ok(VerifyHostedZoneRequest {
5065                    name: name__.unwrap_or_default(),
5066                })
5067            }
5068        }
5069        deserializer
5070            .deserialize_struct(
5071                "origincloud.dns.v1beta1.VerifyHostedZoneRequest",
5072                FIELDS,
5073                GeneratedVisitor,
5074            )
5075    }
5076}
5077impl serde::Serialize for VpcAttachment {
5078    #[allow(deprecated)]
5079    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5080    where
5081        S: serde::Serializer,
5082    {
5083        use serde::ser::SerializeStruct;
5084        let mut len = 0;
5085        if !self.name.is_empty() {
5086            len += 1;
5087        }
5088        if !self.urn.is_empty() {
5089            len += 1;
5090        }
5091        if !self.vpc.is_empty() {
5092            len += 1;
5093        }
5094        if self.create_time.is_some() {
5095            len += 1;
5096        }
5097        let mut struct_ser = serializer
5098            .serialize_struct("origincloud.dns.v1beta1.VpcAttachment", len)?;
5099        if !self.name.is_empty() {
5100            struct_ser.serialize_field("name", &self.name)?;
5101        }
5102        if !self.urn.is_empty() {
5103            struct_ser.serialize_field("urn", &self.urn)?;
5104        }
5105        if !self.vpc.is_empty() {
5106            struct_ser.serialize_field("vpc", &self.vpc)?;
5107        }
5108        if let Some(v) = self.create_time.as_ref() {
5109            struct_ser.serialize_field("createTime", v)?;
5110        }
5111        struct_ser.end()
5112    }
5113}
5114impl<'de> serde::Deserialize<'de> for VpcAttachment {
5115    #[allow(deprecated)]
5116    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5117    where
5118        D: serde::Deserializer<'de>,
5119    {
5120        const FIELDS: &[&str] = &["name", "urn", "vpc", "create_time", "createTime"];
5121        #[allow(clippy::enum_variant_names)]
5122        enum GeneratedField {
5123            Name,
5124            Urn,
5125            Vpc,
5126            CreateTime,
5127            __SkipField__,
5128        }
5129        impl<'de> serde::Deserialize<'de> for GeneratedField {
5130            fn deserialize<D>(
5131                deserializer: D,
5132            ) -> std::result::Result<GeneratedField, D::Error>
5133            where
5134                D: serde::Deserializer<'de>,
5135            {
5136                struct GeneratedVisitor;
5137                impl serde::de::Visitor<'_> for GeneratedVisitor {
5138                    type Value = GeneratedField;
5139                    fn expecting(
5140                        &self,
5141                        formatter: &mut std::fmt::Formatter<'_>,
5142                    ) -> std::fmt::Result {
5143                        write!(formatter, "expected one of: {:?}", & FIELDS)
5144                    }
5145                    #[allow(unused_variables)]
5146                    fn visit_str<E>(
5147                        self,
5148                        value: &str,
5149                    ) -> std::result::Result<GeneratedField, E>
5150                    where
5151                        E: serde::de::Error,
5152                    {
5153                        match value {
5154                            "name" => Ok(GeneratedField::Name),
5155                            "urn" => Ok(GeneratedField::Urn),
5156                            "vpc" => Ok(GeneratedField::Vpc),
5157                            "createTime" | "create_time" => {
5158                                Ok(GeneratedField::CreateTime)
5159                            }
5160                            _ => Ok(GeneratedField::__SkipField__),
5161                        }
5162                    }
5163                }
5164                deserializer.deserialize_identifier(GeneratedVisitor)
5165            }
5166        }
5167        struct GeneratedVisitor;
5168        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5169            type Value = VpcAttachment;
5170            fn expecting(
5171                &self,
5172                formatter: &mut std::fmt::Formatter<'_>,
5173            ) -> std::fmt::Result {
5174                formatter.write_str("struct origincloud.dns.v1beta1.VpcAttachment")
5175            }
5176            fn visit_map<V>(
5177                self,
5178                mut map_: V,
5179            ) -> std::result::Result<VpcAttachment, V::Error>
5180            where
5181                V: serde::de::MapAccess<'de>,
5182            {
5183                let mut name__ = None;
5184                let mut urn__ = None;
5185                let mut vpc__ = None;
5186                let mut create_time__ = None;
5187                while let Some(k) = map_.next_key()? {
5188                    match k {
5189                        GeneratedField::Name => {
5190                            if name__.is_some() {
5191                                return Err(serde::de::Error::duplicate_field("name"));
5192                            }
5193                            name__ = Some(map_.next_value()?);
5194                        }
5195                        GeneratedField::Urn => {
5196                            if urn__.is_some() {
5197                                return Err(serde::de::Error::duplicate_field("urn"));
5198                            }
5199                            urn__ = Some(map_.next_value()?);
5200                        }
5201                        GeneratedField::Vpc => {
5202                            if vpc__.is_some() {
5203                                return Err(serde::de::Error::duplicate_field("vpc"));
5204                            }
5205                            vpc__ = Some(map_.next_value()?);
5206                        }
5207                        GeneratedField::CreateTime => {
5208                            if create_time__.is_some() {
5209                                return Err(serde::de::Error::duplicate_field("createTime"));
5210                            }
5211                            create_time__ = map_.next_value()?;
5212                        }
5213                        GeneratedField::__SkipField__ => {
5214                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5215                        }
5216                    }
5217                }
5218                Ok(VpcAttachment {
5219                    name: name__.unwrap_or_default(),
5220                    urn: urn__.unwrap_or_default(),
5221                    vpc: vpc__.unwrap_or_default(),
5222                    create_time: create_time__,
5223                })
5224            }
5225        }
5226        deserializer
5227            .deserialize_struct(
5228                "origincloud.dns.v1beta1.VpcAttachment",
5229                FIELDS,
5230                GeneratedVisitor,
5231            )
5232    }
5233}
5234/// Calls `HostedZoneService`.
5235///
5236/// Hosted zones: the domains a project's records are answered for.
5237///
5238/// A public zone holds its name only once it proves control of it: until
5239/// then it is `hosted_zone::State::PendingVerification`, and any number of zones of any
5240/// project may be pending for the same name. It proves control with a TXT
5241/// record at `_origin-challenge.{dns_name}` holding the zone's token,
5242/// answered by the name's current DNS. The first zone of a name to verify
5243/// becomes `hosted_zone::State::Active`, holds the name, and is answered from the platform's
5244/// name servers once the name is delegated to them; the others stay
5245/// pending. A zone that doesn't verify within its window is deleted with
5246/// its record sets. The platform checks pending zones on its own, more
5247/// rarely the longer they stay pending; `VerifyHostedZone` checks one now.
5248///
5249/// An active public zone is checked again every day. It keeps its name
5250/// while the name is delegated to the platform's name servers, or while the
5251/// token still answers at the name's other name servers. After several
5252/// checks in a row find the name delegated elsewhere without the token, it
5253/// is `hosted_zone::State::Suspended`: no longer answered, its record sets kept, and its name
5254/// free for another zone to verify. Verifying it again while its name is
5255/// free makes it active again.
5256///
5257/// A private zone is active from the start, and answers in the VPCs it is
5258/// attached to.
5259#[derive(Clone, Debug)]
5260pub struct HostedZoneClient {
5261    service: ::origincloud_core::Service,
5262}
5263impl HostedZoneClient {
5264    /// Returns a client of `HostedZoneService` that sends its calls through `client`.
5265    pub fn new(client: &::origincloud_core::Client) -> Self {
5266        Self {
5267            service: client.service("dns", false),
5268        }
5269    }
5270    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
5271    pub fn service(&self) -> &::origincloud_core::Service {
5272        &self.service
5273    }
5274    /// Returns a hosted zone.
5275    pub async fn get_hosted_zone(
5276        &self,
5277        request: GetHostedZoneRequest,
5278    ) -> ::core::result::Result<HostedZone, ::origincloud_core::Error> {
5279        let p0 = ::origincloud_core::path_value(
5280            "name",
5281            &request.name,
5282            "projects/*/hostedZones/*",
5283        )?;
5284        let query = ::origincloud_core::query(&request, &["name"])?;
5285        let call = ::origincloud_core::Request::new(
5286                ::origincloud_core::Method::GET,
5287                format!("/v1beta1/{p0}"),
5288            )
5289            .with_query(query)
5290            .idempotent();
5291        self.service.call(call).await
5292    }
5293    /// Lists a project's hosted zones, oldest first.
5294    pub async fn list_hosted_zones(
5295        &self,
5296        request: ListHostedZonesRequest,
5297    ) -> ::core::result::Result<ListHostedZonesResponse, ::origincloud_core::Error> {
5298        let p0 = ::origincloud_core::path_value(
5299            "parent",
5300            &request.parent,
5301            "projects/*",
5302        )?;
5303        let query = ::origincloud_core::query(&request, &["parent"])?;
5304        let call = ::origincloud_core::Request::new(
5305                ::origincloud_core::Method::GET,
5306                format!("/v1beta1/{p0}/hostedZones"),
5307            )
5308            .with_query(query)
5309            .idempotent();
5310        self.service.call(call).await
5311    }
5312    /// Returns everything [`list_hosted_zones`](Self::list_hosted_zones) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
5313    pub fn all_hosted_zones(
5314        &self,
5315        request: ListHostedZonesRequest,
5316    ) -> ::origincloud_core::Pages<HostedZone> {
5317        let client = self.clone();
5318        ::origincloud_core::Pages::new(
5319            request,
5320            move |request: ListHostedZonesRequest| {
5321                let client = client.clone();
5322                async move {
5323                    let page = client.list_hosted_zones(request).await?;
5324                    Ok((page.hosted_zones, page.next_page_token))
5325                }
5326            },
5327            |request: &mut ListHostedZonesRequest, token: ::std::string::String| {
5328                request.page_token = token;
5329            },
5330        )
5331    }
5332    /// Creates a hosted zone, empty. A public zone starts
5333    /// `hosted_zone::State::PendingVerification`, with the token to publish in `challenge`; a
5334    /// private zone starts `hosted_zone::State::Active`. Refused with `BAD_REQUEST` for a name the
5335    /// platform keeps for itself, or once the project's or organization's
5336    /// quota of zones is used up, and with `PAYMENT_METHOD_REQUIRED` while the
5337    /// project has no valid billing.
5338    pub async fn create_hosted_zone(
5339        &self,
5340        mut request: CreateHostedZoneRequest,
5341    ) -> ::core::result::Result<HostedZone, ::origincloud_core::Error> {
5342        if request.request_id.is_empty() {
5343            request.request_id = ::origincloud_core::new_request_id();
5344        }
5345        let p0 = ::origincloud_core::path_value(
5346            "parent",
5347            &request.parent,
5348            "projects/*",
5349        )?;
5350        let body = ::origincloud_core::json_body(
5351            request.hosted_zone.as_ref().unwrap_or(&::core::default::Default::default()),
5352        )?;
5353        let query = ::origincloud_core::query(&request, &["parent", "hostedZone"])?;
5354        let call = ::origincloud_core::Request::new(
5355                ::origincloud_core::Method::POST,
5356                format!("/v1beta1/{p0}/hostedZones"),
5357            )
5358            .with_body(body)
5359            .with_query(query)
5360            .idempotent();
5361        self.service.call(call).await
5362    }
5363    /// Changes a hosted zone's tags.
5364    pub async fn update_hosted_zone(
5365        &self,
5366        mut request: UpdateHostedZoneRequest,
5367    ) -> ::core::result::Result<HostedZone, ::origincloud_core::Error> {
5368        if request.request_id.is_empty() {
5369            request.request_id = ::origincloud_core::new_request_id();
5370        }
5371        let p0 = ::origincloud_core::path_value(
5372            "hostedZone.name",
5373            request.hosted_zone.as_ref().map_or("", |m| m.name.as_str()),
5374            "projects/*/hostedZones/*",
5375        )?;
5376        let body = ::origincloud_core::json_body(
5377            request.hosted_zone.as_ref().unwrap_or(&::core::default::Default::default()),
5378        )?;
5379        let query = ::origincloud_core::query(
5380            &request,
5381            &["hostedZone.name", "hostedZone"],
5382        )?;
5383        let call = ::origincloud_core::Request::new(
5384                ::origincloud_core::Method::PATCH,
5385                format!("/v1beta1/{p0}"),
5386            )
5387            .with_body(body)
5388            .with_query(query)
5389            .idempotent();
5390        self.service.call(call).await
5391    }
5392    /// Deletes a hosted zone. Refused with `CONFLICT` while it holds record
5393    /// sets or, for a private zone, VPC attachments: delete them first.
5394    pub async fn delete_hosted_zone(
5395        &self,
5396        mut request: DeleteHostedZoneRequest,
5397    ) -> ::core::result::Result<
5398        ::origincloud_core::protobuf::Empty,
5399        ::origincloud_core::Error,
5400    > {
5401        if request.request_id.is_empty() {
5402            request.request_id = ::origincloud_core::new_request_id();
5403        }
5404        let p0 = ::origincloud_core::path_value(
5405            "name",
5406            &request.name,
5407            "projects/*/hostedZones/*",
5408        )?;
5409        let query = ::origincloud_core::query(&request, &["name"])?;
5410        let call = ::origincloud_core::Request::new(
5411                ::origincloud_core::Method::DELETE,
5412                format!("/v1beta1/{p0}"),
5413            )
5414            .with_query(query)
5415            .idempotent();
5416        self.service.call(call).await
5417    }
5418    /// Checks a public zone's challenge now, instead of waiting for the
5419    /// platform's next check, and returns the zone as it is then, with the
5420    /// check's outcome in `challenge.last_check`. A pending zone whose token
5421    /// answers becomes `hosted_zone::State::Active`, and so does a suspended one while its name is
5422    /// free; otherwise the zone stays as it was. A call within 30 seconds of
5423    /// the zone's last check answers with that check's outcome and asks the
5424    /// name's DNS nothing. Refused with `ownership_challenge::CheckOutcome::NotFound` once a pending zone's
5425    /// window has ended, which deleted it, and with `SERVICE_UNAVAILABLE`,
5426    /// retryable, when the name's DNS didn't answer in time or too many checks
5427    /// are under way. A private zone has no challenge, and is refused with
5428    /// `BAD_REQUEST`. Checking an active zone changes nothing, so a client may
5429    /// repeat the call.
5430    pub async fn verify_hosted_zone(
5431        &self,
5432        request: VerifyHostedZoneRequest,
5433    ) -> ::core::result::Result<HostedZone, ::origincloud_core::Error> {
5434        let p0 = ::origincloud_core::path_value(
5435            "name",
5436            &request.name,
5437            "projects/*/hostedZones/*",
5438        )?;
5439        let body = ::origincloud_core::json_body(&request)?;
5440        let call = ::origincloud_core::Request::new(
5441                ::origincloud_core::Method::POST,
5442                format!("/v1beta1/{p0}:verify"),
5443            )
5444            .with_body(body);
5445        self.service.call(call).await
5446    }
5447}
5448/// Calls `RecordSetService`.
5449///
5450/// Record sets: every record of one name and type in a hosted zone. A zone
5451/// holds one record set per name and type, whatever its kind. A CNAME is
5452/// alone at its name and never at the zone's apex. The apex's SOA and NS
5453/// records are the platform's, written from the zone's name servers; they
5454/// aren't record sets, and no NS record delegates a name below the apex.
5455///
5456/// A change is recorded when its method answers, and answered wherever the
5457/// zone is served. `BatchChangeRecordSets` makes several changes at once,
5458/// all or none.
5459#[derive(Clone, Debug)]
5460pub struct RecordSetClient {
5461    service: ::origincloud_core::Service,
5462}
5463impl RecordSetClient {
5464    /// Returns a client of `RecordSetService` that sends its calls through `client`.
5465    pub fn new(client: &::origincloud_core::Client) -> Self {
5466        Self {
5467            service: client.service("dns", false),
5468        }
5469    }
5470    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
5471    pub fn service(&self) -> &::origincloud_core::Service {
5472        &self.service
5473    }
5474    /// Returns a record set.
5475    pub async fn get_record_set(
5476        &self,
5477        request: GetRecordSetRequest,
5478    ) -> ::core::result::Result<RecordSet, ::origincloud_core::Error> {
5479        let p0 = ::origincloud_core::path_value(
5480            "name",
5481            &request.name,
5482            "projects/*/hostedZones/*/recordSets/*",
5483        )?;
5484        let query = ::origincloud_core::query(&request, &["name"])?;
5485        let call = ::origincloud_core::Request::new(
5486                ::origincloud_core::Method::GET,
5487                format!("/v1beta1/{p0}"),
5488            )
5489            .with_query(query)
5490            .idempotent();
5491        self.service.call(call).await
5492    }
5493    /// Lists a zone's record sets by `dns_name`, then by `type`.
5494    pub async fn list_record_sets(
5495        &self,
5496        request: ListRecordSetsRequest,
5497    ) -> ::core::result::Result<ListRecordSetsResponse, ::origincloud_core::Error> {
5498        let p0 = ::origincloud_core::path_value(
5499            "parent",
5500            &request.parent,
5501            "projects/*/hostedZones/*",
5502        )?;
5503        let query = ::origincloud_core::query(&request, &["parent"])?;
5504        let call = ::origincloud_core::Request::new(
5505                ::origincloud_core::Method::GET,
5506                format!("/v1beta1/{p0}/recordSets"),
5507            )
5508            .with_query(query)
5509            .idempotent();
5510        self.service.call(call).await
5511    }
5512    /// Returns everything [`list_record_sets`](Self::list_record_sets) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
5513    pub fn all_record_sets(
5514        &self,
5515        request: ListRecordSetsRequest,
5516    ) -> ::origincloud_core::Pages<RecordSet> {
5517        let client = self.clone();
5518        ::origincloud_core::Pages::new(
5519            request,
5520            move |request: ListRecordSetsRequest| {
5521                let client = client.clone();
5522                async move {
5523                    let page = client.list_record_sets(request).await?;
5524                    Ok((page.record_sets, page.next_page_token))
5525                }
5526            },
5527            |request: &mut ListRecordSetsRequest, token: ::std::string::String| {
5528                request.page_token = token;
5529            },
5530        )
5531    }
5532    /// Creates a record set. Refused with `CONFLICT` when the zone holds a
5533    /// record set of that name and type, or when a CNAME would share its name.
5534    /// Refused with `BAD_REQUEST` for a name outside the zone, a value its
5535    /// type doesn't take, an alias to a Floating IP outside the zone's
5536    /// project, or once the project's or organization's quota of record sets
5537    /// is used up. An alias to a Floating IP that was created moments ago may
5538    /// be refused with `SERVICE_UNAVAILABLE`, retryable.
5539    pub async fn create_record_set(
5540        &self,
5541        mut request: CreateRecordSetRequest,
5542    ) -> ::core::result::Result<RecordSet, ::origincloud_core::Error> {
5543        if request.request_id.is_empty() {
5544            request.request_id = ::origincloud_core::new_request_id();
5545        }
5546        let p0 = ::origincloud_core::path_value(
5547            "parent",
5548            &request.parent,
5549            "projects/*/hostedZones/*",
5550        )?;
5551        let body = ::origincloud_core::json_body(
5552            request.record_set.as_ref().unwrap_or(&::core::default::Default::default()),
5553        )?;
5554        let query = ::origincloud_core::query(&request, &["parent", "recordSet"])?;
5555        let call = ::origincloud_core::Request::new(
5556                ::origincloud_core::Method::POST,
5557                format!("/v1beta1/{p0}/recordSets"),
5558            )
5559            .with_body(body)
5560            .with_query(query)
5561            .idempotent();
5562        self.service.call(call).await
5563    }
5564    /// Replaces a record set's TTL or what it answers with: `ttl`, `basic` or
5565    /// `alias`, or `*`. Naming one kind in `update_mask` replaces the kind the
5566    /// record set had. With `*`, a TTL left out keeps the record set's; naming
5567    /// `ttl` without one sets the default, 300 seconds. Its name and type
5568    /// stay; another type is a new record set.
5569    pub async fn update_record_set(
5570        &self,
5571        mut request: UpdateRecordSetRequest,
5572    ) -> ::core::result::Result<RecordSet, ::origincloud_core::Error> {
5573        if request.request_id.is_empty() {
5574            request.request_id = ::origincloud_core::new_request_id();
5575        }
5576        let p0 = ::origincloud_core::path_value(
5577            "recordSet.name",
5578            request.record_set.as_ref().map_or("", |m| m.name.as_str()),
5579            "projects/*/hostedZones/*/recordSets/*",
5580        )?;
5581        let body = ::origincloud_core::json_body(
5582            request.record_set.as_ref().unwrap_or(&::core::default::Default::default()),
5583        )?;
5584        let query = ::origincloud_core::query(
5585            &request,
5586            &["recordSet.name", "recordSet"],
5587        )?;
5588        let call = ::origincloud_core::Request::new(
5589                ::origincloud_core::Method::PATCH,
5590                format!("/v1beta1/{p0}"),
5591            )
5592            .with_body(body)
5593            .with_query(query)
5594            .idempotent();
5595        self.service.call(call).await
5596    }
5597    /// Deletes a record set.
5598    pub async fn delete_record_set(
5599        &self,
5600        mut request: DeleteRecordSetRequest,
5601    ) -> ::core::result::Result<
5602        ::origincloud_core::protobuf::Empty,
5603        ::origincloud_core::Error,
5604    > {
5605        if request.request_id.is_empty() {
5606            request.request_id = ::origincloud_core::new_request_id();
5607        }
5608        let p0 = ::origincloud_core::path_value(
5609            "name",
5610            &request.name,
5611            "projects/*/hostedZones/*/recordSets/*",
5612        )?;
5613        let query = ::origincloud_core::query(&request, &["name"])?;
5614        let call = ::origincloud_core::Request::new(
5615                ::origincloud_core::Method::DELETE,
5616                format!("/v1beta1/{p0}"),
5617            )
5618            .with_query(query)
5619            .idempotent();
5620        self.service.call(call).await
5621    }
5622    /// Deletes, replaces and creates record sets of one zone together, all or
5623    /// none. The zone is checked as the changes leave it, not after each
5624    /// change, so a CNAME may take the place of the A record set it replaces
5625    /// in one call. A batch makes 1 to 1000 changes, and names a record set
5626    /// once at most across `deletions` and `updates`. Each change is refused
5627    /// as its own method would refuse it, naming the change; then none is
5628    /// made.
5629    pub async fn batch_change_record_sets(
5630        &self,
5631        mut request: BatchChangeRecordSetsRequest,
5632    ) -> ::core::result::Result<
5633        BatchChangeRecordSetsResponse,
5634        ::origincloud_core::Error,
5635    > {
5636        if request.request_id.is_empty() {
5637            request.request_id = ::origincloud_core::new_request_id();
5638        }
5639        let p0 = ::origincloud_core::path_value(
5640            "parent",
5641            &request.parent,
5642            "projects/*/hostedZones/*",
5643        )?;
5644        let body = ::origincloud_core::json_body(&request)?;
5645        let call = ::origincloud_core::Request::new(
5646                ::origincloud_core::Method::POST,
5647                format!("/v1beta1/{p0}/recordSets:batchChange"),
5648            )
5649            .with_body(body)
5650            .idempotent();
5651        self.service.call(call).await
5652    }
5653}
5654/// Calls `VpcAttachmentService`.
5655///
5656/// VPC attachments: the VPCs a private zone answers in. Each attachment
5657/// makes the zone's names resolve from every instance in one VPC, in every
5658/// zone the VPC spans, and from no other VPC. A private zone attaches only
5659/// to VPCs of its own project, and a VPC holds at most one attached zone of
5660/// a name. An attachment's id is the VPC's id, so a client that knows the
5661/// zone and the VPC names the attachment without listing. Deleting a VPC
5662/// deletes its attachments. Attaching a public zone is refused: it answers on
5663/// the internet, in every VPC alike.
5664#[derive(Clone, Debug)]
5665pub struct VpcAttachmentClient {
5666    service: ::origincloud_core::Service,
5667}
5668impl VpcAttachmentClient {
5669    /// Returns a client of `VpcAttachmentService` that sends its calls through `client`.
5670    pub fn new(client: &::origincloud_core::Client) -> Self {
5671        Self {
5672            service: client.service("dns", false),
5673        }
5674    }
5675    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
5676    pub fn service(&self) -> &::origincloud_core::Service {
5677        &self.service
5678    }
5679    /// Returns a VPC attachment.
5680    pub async fn get_vpc_attachment(
5681        &self,
5682        request: GetVpcAttachmentRequest,
5683    ) -> ::core::result::Result<VpcAttachment, ::origincloud_core::Error> {
5684        let p0 = ::origincloud_core::path_value(
5685            "name",
5686            &request.name,
5687            "projects/*/hostedZones/*/vpcAttachments/*",
5688        )?;
5689        let query = ::origincloud_core::query(&request, &["name"])?;
5690        let call = ::origincloud_core::Request::new(
5691                ::origincloud_core::Method::GET,
5692                format!("/v1beta1/{p0}"),
5693            )
5694            .with_query(query)
5695            .idempotent();
5696        self.service.call(call).await
5697    }
5698    /// Lists a private zone's VPC attachments, oldest first. With `-` for the
5699    /// zone, lists every zone's in the project, which with `vpc` finds the
5700    /// zones attached to a VPC.
5701    pub async fn list_vpc_attachments(
5702        &self,
5703        request: ListVpcAttachmentsRequest,
5704    ) -> ::core::result::Result<ListVpcAttachmentsResponse, ::origincloud_core::Error> {
5705        let p0 = ::origincloud_core::path_value(
5706            "parent",
5707            &request.parent,
5708            "projects/*/hostedZones/*",
5709        )?;
5710        let query = ::origincloud_core::query(&request, &["parent"])?;
5711        let call = ::origincloud_core::Request::new(
5712                ::origincloud_core::Method::GET,
5713                format!("/v1beta1/{p0}/vpcAttachments"),
5714            )
5715            .with_query(query)
5716            .idempotent();
5717        self.service.call(call).await
5718    }
5719    /// Returns everything [`list_vpc_attachments`](Self::list_vpc_attachments) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
5720    pub fn all_vpc_attachments(
5721        &self,
5722        request: ListVpcAttachmentsRequest,
5723    ) -> ::origincloud_core::Pages<VpcAttachment> {
5724        let client = self.clone();
5725        ::origincloud_core::Pages::new(
5726            request,
5727            move |request: ListVpcAttachmentsRequest| {
5728                let client = client.clone();
5729                async move {
5730                    let page = client.list_vpc_attachments(request).await?;
5731                    Ok((page.vpc_attachments, page.next_page_token))
5732                }
5733            },
5734            |request: &mut ListVpcAttachmentsRequest, token: ::std::string::String| {
5735                request.page_token = token;
5736            },
5737        )
5738    }
5739    /// Attaches a private zone to a VPC of the zone's project. Refused with
5740    /// `BAD_REQUEST` for a public zone, or for a VPC that isn't in the zone's
5741    /// project, with the same words whichever project it is in. Refused with
5742    /// `CONFLICT` when the VPC holds an attached zone of the same name. A VPC
5743    /// created moments ago may be refused with `SERVICE_UNAVAILABLE`,
5744    /// retryable. The VPC's instances resolve the zone's names once the VPC's
5745    /// hosts serve the zone.
5746    pub async fn create_vpc_attachment(
5747        &self,
5748        mut request: CreateVpcAttachmentRequest,
5749    ) -> ::core::result::Result<VpcAttachment, ::origincloud_core::Error> {
5750        if request.request_id.is_empty() {
5751            request.request_id = ::origincloud_core::new_request_id();
5752        }
5753        let p0 = ::origincloud_core::path_value(
5754            "parent",
5755            &request.parent,
5756            "projects/*/hostedZones/*",
5757        )?;
5758        let body = ::origincloud_core::json_body(
5759            request
5760                .vpc_attachment
5761                .as_ref()
5762                .unwrap_or(&::core::default::Default::default()),
5763        )?;
5764        let query = ::origincloud_core::query(&request, &["parent", "vpcAttachment"])?;
5765        let call = ::origincloud_core::Request::new(
5766                ::origincloud_core::Method::POST,
5767                format!("/v1beta1/{p0}/vpcAttachments"),
5768            )
5769            .with_body(body)
5770            .with_query(query)
5771            .idempotent();
5772        self.service.call(call).await
5773    }
5774    /// Detaches a private zone from a VPC. The VPC's instances stop resolving
5775    /// the zone's names once the VPC's hosts drop the zone.
5776    pub async fn delete_vpc_attachment(
5777        &self,
5778        mut request: DeleteVpcAttachmentRequest,
5779    ) -> ::core::result::Result<
5780        ::origincloud_core::protobuf::Empty,
5781        ::origincloud_core::Error,
5782    > {
5783        if request.request_id.is_empty() {
5784            request.request_id = ::origincloud_core::new_request_id();
5785        }
5786        let p0 = ::origincloud_core::path_value(
5787            "name",
5788            &request.name,
5789            "projects/*/hostedZones/*/vpcAttachments/*",
5790        )?;
5791        let query = ::origincloud_core::query(&request, &["name"])?;
5792        let call = ::origincloud_core::Request::new(
5793                ::origincloud_core::Method::DELETE,
5794                format!("/v1beta1/{p0}"),
5795            )
5796            .with_query(query)
5797            .idempotent();
5798        self.service.call(call).await
5799    }
5800}