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