Skip to main content

origincloud_billing/generated/
origincloud.billing.v1beta1.rs

1// Code generated by origincloud-sdk-generator. DO NOT EDIT.
2// source: origincloud/billing/v1beta1/billing_account.proto
3// source: origincloud/billing/v1beta1/cost.proto
4// source: origincloud/billing/v1beta1/legal_acceptance.proto
5// source: origincloud/billing/v1beta1/legal_document.proto
6// source: origincloud/billing/v1beta1/price_list.proto
7// source: origincloud/billing/v1beta1/spend_limit.proto
8
9/// An organization's billing account: who invoices are issued to, and how
10/// its projects' usage is paid.
11#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12pub struct BillingAccount {
13    /// The billing account's resource name.
14    #[prost(string, tag = "1")]
15    pub name: ::prost::alloc::string::String,
16    /// The billing account's URN, the identifier access policies and the audit
17    /// log use.
18    #[prost(string, tag = "2")]
19    pub urn: ::prost::alloc::string::String,
20    /// The name the console and spend-limit alerts show. Not empty. An
21    /// organization's default account is called `default` until it is
22    /// renamed.
23    #[prost(string, tag = "3")]
24    pub display_name: ::prost::alloc::string::String,
25    /// Whether this is the organization's default billing account: the one
26    /// its new projects are linked to. Every organization has exactly one,
27    /// and it can't be deleted.
28    #[prost(bool, tag = "4")]
29    pub default_account: bool,
30    /// The postal address invoices are issued to. Required to create an
31    /// account; unset only on an organization's default account until its
32    /// profile is set.
33    #[prost(message, optional, tag = "5")]
34    pub billing_address: ::core::option::Option<BillingAddress>,
35    /// Where invoices are sent. Required to create an account; empty only on
36    /// an organization's default account until its profile is set.
37    #[prost(string, tag = "6")]
38    pub invoice_email: ::prost::alloc::string::String,
39    /// The VAT identification number invoices name; empty for none. Required
40    /// for a billing address outside Germany.
41    #[prost(string, tag = "7")]
42    pub vat_id: ::prost::alloc::string::String,
43    /// Who invoices are addressed to. Required to create an account; empty
44    /// only on an organization's default account until its profile is set.
45    #[prost(string, tag = "8")]
46    pub contact_person: ::prost::alloc::string::String,
47    /// How the account is paid.
48    #[prost(message, optional, tag = "9")]
49    pub payment_method: ::core::option::Option<PaymentMethod>,
50    /// When the billing account was created.
51    #[prost(message, optional, tag = "10")]
52    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
53    /// The principal that created the billing account, such as `user:<id>` or
54    /// `service_account:<id>`.
55    #[prost(string, tag = "11")]
56    pub creator: ::prost::alloc::string::String,
57}
58/// A postal address invoices are issued to. Every field is required.
59#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
60pub struct BillingAddress {
61    /// The street and house number.
62    #[prost(string, tag = "1")]
63    pub street: ::prost::alloc::string::String,
64    /// The city.
65    #[prost(string, tag = "2")]
66    pub city: ::prost::alloc::string::String,
67    /// The postal code.
68    #[prost(string, tag = "3")]
69    pub postal_code: ::prost::alloc::string::String,
70    /// The country, as the ISO 3166-1 alpha-2 code of one of the countries
71    /// ListBillingCountries lists, such as `DE`.
72    #[prost(string, tag = "4")]
73    pub region_code: ::prost::alloc::string::String,
74}
75/// How a billing account is paid. Only the payment method's kind and the
76/// last digits of a card are shown; the payment details themselves stay
77/// with the payment provider.
78#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
79pub struct PaymentMethod {
80    /// Whether the account can pay for usage.
81    #[prost(enumeration = "payment_method::State", tag = "1")]
82    pub state: i32,
83    /// The verified card's brand, such as `visa`; empty while no payment
84    /// method is verified, and for one that isn't a card.
85    #[prost(string, tag = "2")]
86    pub card_brand: ::prost::alloc::string::String,
87    /// The verified card's last four digits; empty while no payment method is
88    /// verified, and for one that isn't a card.
89    #[prost(string, tag = "3")]
90    pub card_last4: ::prost::alloc::string::String,
91}
92/// Nested message and enum types in `PaymentMethod`.
93pub mod payment_method {
94    /// Whether the account can pay for usage.
95    #[derive(
96        Clone,
97        Copy,
98        Debug,
99        PartialEq,
100        Eq,
101        Hash,
102        PartialOrd,
103        Ord,
104        ::prost::Enumeration
105    )]
106    #[repr(i32)]
107    pub enum State {
108        /// Not set.
109        Unspecified = 0,
110        /// No verified payment method: the projects linked to the account can't
111        /// create billable resources until one is added with
112        /// StartPaymentMethodSetup and ConfirmPaymentMethodSetup.
113        Missing = 1,
114        /// A payment method is verified, and billable resources can be created.
115        Verified = 2,
116        /// The account is invoiced by arrangement with the platform's operator:
117        /// it needs no payment method, and the setup methods are refused.
118        NotRequired = 3,
119    }
120    impl State {
121        /// String value of the enum field names used in the ProtoBuf definition.
122        ///
123        /// The values are not transformed in any way and thus are considered stable
124        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
125        pub fn as_str_name(&self) -> &'static str {
126            match self {
127                Self::Unspecified => "STATE_UNSPECIFIED",
128                Self::Missing => "MISSING",
129                Self::Verified => "VERIFIED",
130                Self::NotRequired => "NOT_REQUIRED",
131            }
132        }
133        /// Creates an enum from field names used in the ProtoBuf definition.
134        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
135            match value {
136                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
137                "MISSING" => Some(Self::Missing),
138                "VERIFIED" => Some(Self::Verified),
139                "NOT_REQUIRED" => Some(Self::NotRequired),
140                _ => None,
141            }
142        }
143    }
144}
145/// Which billing account pays for a project.
146#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
147pub struct ProjectBillingInfo {
148    /// The billing info's resource name, `projects/{project}/billingInfo`.
149    #[prost(string, tag = "1")]
150    pub name: ::prost::alloc::string::String,
151    /// The billing account that pays for the project's usage, one of its
152    /// organization's.
153    #[prost(string, tag = "3")]
154    pub billing_account: ::prost::alloc::string::String,
155}
156/// A country a billing address may be in.
157#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
158pub struct BillingCountry {
159    /// The country's resource name, `billingCountries/{code}`.
160    #[prost(string, tag = "1")]
161    pub name: ::prost::alloc::string::String,
162    /// The ISO 3166-1 alpha-2 code a billing address names it by, such as
163    /// `DE`.
164    #[prost(string, tag = "2")]
165    pub region_code: ::prost::alloc::string::String,
166    /// The country's name in English.
167    #[prost(string, tag = "3")]
168    pub display_name: ::prost::alloc::string::String,
169    /// Whether a billing account with an address in this country needs a
170    /// `vat_id`. Customers in every country but Germany are invoiced without
171    /// VAT, as businesses under the reverse-charge rule, which needs one.
172    #[prost(bool, tag = "4")]
173    pub vat_id_required: bool,
174}
175/// The request for GetBillingAccount.
176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
177pub struct GetBillingAccountRequest {
178    /// The billing account to return.
179    #[prost(string, tag = "1")]
180    pub name: ::prost::alloc::string::String,
181}
182/// The request for ListBillingAccounts.
183#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
184pub struct ListBillingAccountsRequest {
185    /// The organization whose billing accounts to list,
186    /// `organizations/{organization}`.
187    #[prost(string, tag = "1")]
188    pub parent: ::prost::alloc::string::String,
189    /// The most billing accounts to return; the server clamps it, and 0 means
190    /// its default.
191    #[prost(int32, tag = "2")]
192    pub page_size: i32,
193    /// A previous response's `next_page_token`, for the page after it.
194    #[prost(string, tag = "3")]
195    pub page_token: ::prost::alloc::string::String,
196}
197/// The response for ListBillingAccounts.
198#[derive(Clone, PartialEq, ::prost::Message)]
199pub struct ListBillingAccountsResponse {
200    /// The billing accounts on this page.
201    #[prost(message, repeated, tag = "1")]
202    pub billing_accounts: ::prost::alloc::vec::Vec<BillingAccount>,
203    /// The token for the next page; empty on the last one.
204    #[prost(string, tag = "2")]
205    pub next_page_token: ::prost::alloc::string::String,
206}
207/// The request for CreateBillingAccount.
208#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
209pub struct CreateBillingAccountRequest {
210    /// The organization to create the billing account in,
211    /// `organizations/{organization}`.
212    #[prost(string, tag = "1")]
213    pub parent: ::prost::alloc::string::String,
214    /// The billing account to create: its `display_name` and profile.
215    #[prost(message, optional, tag = "2")]
216    pub billing_account: ::core::option::Option<BillingAccount>,
217    /// A UUID; a repeat with the same id returns the billing account the first
218    /// request created instead of creating a second one.
219    #[prost(string, tag = "3")]
220    pub request_id: ::prost::alloc::string::String,
221}
222/// The request for UpdateBillingAccount.
223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
224pub struct UpdateBillingAccountRequest {
225    /// The billing account, by its name, with the fields to change.
226    #[prost(message, optional, tag = "1")]
227    pub billing_account: ::core::option::Option<BillingAccount>,
228    /// The fields to change: `display_name`, `billing_address`,
229    /// `invoice_email`, `vat_id` and `contact_person`. `*` is every one of
230    /// them.
231    #[prost(message, optional, tag = "2")]
232    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
233}
234/// The request for DeleteBillingAccount.
235#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
236pub struct DeleteBillingAccountRequest {
237    /// The billing account to delete.
238    #[prost(string, tag = "1")]
239    pub name: ::prost::alloc::string::String,
240}
241/// The request for StartPaymentMethodSetup.
242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
243pub struct StartPaymentMethodSetupRequest {
244    /// The billing account to add a payment method to.
245    #[prost(string, tag = "1")]
246    pub name: ::prost::alloc::string::String,
247}
248/// The response for StartPaymentMethodSetup.
249#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
250pub struct StartPaymentMethodSetupResponse {
251    /// The payment provider's page to open in a browser, where the payment
252    /// details are entered. It returns to the console when done.
253    #[prost(string, tag = "1")]
254    pub redirect_uri: ::prost::alloc::string::String,
255}
256/// The request for ConfirmPaymentMethodSetup.
257#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
258pub struct ConfirmPaymentMethodSetupRequest {
259    /// The billing account whose setup to complete.
260    #[prost(string, tag = "1")]
261    pub name: ::prost::alloc::string::String,
262}
263/// The request for GetProjectBillingInfo.
264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
265pub struct GetProjectBillingInfoRequest {
266    /// The billing info to return, `projects/{project}/billingInfo`.
267    #[prost(string, tag = "1")]
268    pub name: ::prost::alloc::string::String,
269}
270/// The request for UpdateProjectBillingInfo.
271#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
272pub struct UpdateProjectBillingInfoRequest {
273    /// The billing info, by its name, with the billing account to link.
274    #[prost(message, optional, tag = "1")]
275    pub project_billing_info: ::core::option::Option<ProjectBillingInfo>,
276    /// The fields to change: `billing_account`. `*` is the same.
277    #[prost(message, optional, tag = "2")]
278    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
279}
280/// The request for ListProjectBillingInfo.
281#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
282pub struct ListProjectBillingInfoRequest {
283    /// The billing account whose projects to list.
284    #[prost(string, tag = "1")]
285    pub name: ::prost::alloc::string::String,
286    /// The most projects to return; the server clamps it, and 0 means its
287    /// default.
288    #[prost(int32, tag = "2")]
289    pub page_size: i32,
290    /// A previous response's `next_page_token`, for the page after it.
291    #[prost(string, tag = "3")]
292    pub page_token: ::prost::alloc::string::String,
293}
294/// The response for ListProjectBillingInfo.
295#[derive(Clone, PartialEq, ::prost::Message)]
296pub struct ListProjectBillingInfoResponse {
297    /// The billing info of each project on this page.
298    #[prost(message, repeated, tag = "1")]
299    pub project_billing_infos: ::prost::alloc::vec::Vec<ProjectBillingInfo>,
300    /// The token for the next page; empty on the last one.
301    #[prost(string, tag = "2")]
302    pub next_page_token: ::prost::alloc::string::String,
303}
304/// The request for GetBillingCountry.
305#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
306pub struct GetBillingCountryRequest {
307    /// The country to return, `billingCountries/{code}`, such as
308    /// `billingCountries/DE`.
309    #[prost(string, tag = "1")]
310    pub name: ::prost::alloc::string::String,
311}
312/// The request for ListBillingCountries.
313#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
314pub struct ListBillingCountriesRequest {
315    /// The most countries to return; the server clamps it, and 0 means its
316    /// default.
317    #[prost(int32, tag = "1")]
318    pub page_size: i32,
319    /// A previous response's `next_page_token`, for the page after it.
320    #[prost(string, tag = "2")]
321    pub page_token: ::prost::alloc::string::String,
322}
323/// The response for ListBillingCountries.
324#[derive(Clone, PartialEq, ::prost::Message)]
325pub struct ListBillingCountriesResponse {
326    /// The countries on this page.
327    #[prost(message, repeated, tag = "1")]
328    pub billing_countries: ::prost::alloc::vec::Vec<BillingCountry>,
329    /// The token for the next page; empty on the last one.
330    #[prost(string, tag = "2")]
331    pub next_page_token: ::prost::alloc::string::String,
332}
333/// A cost report: the period's total, by service and, within a service, by
334/// product. Every amount is in EUR, before VAT, as a decimal string.
335#[derive(Clone, PartialEq, ::prost::Message)]
336pub struct CostReport {
337    /// The period's total.
338    #[prost(string, tag = "1")]
339    pub total: ::prost::alloc::string::String,
340    /// Each service with any cost in the period, such as `compute`, in name
341    /// order.
342    #[prost(message, repeated, tag = "2")]
343    pub services: ::prost::alloc::vec::Vec<ServiceCost>,
344}
345/// One service's cost in a report.
346#[derive(Clone, PartialEq, ::prost::Message)]
347pub struct ServiceCost {
348    /// The service, the first segment of its products' keys, such as
349    /// `compute`.
350    #[prost(string, tag = "1")]
351    pub service: ::prost::alloc::string::String,
352    /// The service's total.
353    #[prost(string, tag = "2")]
354    pub total: ::prost::alloc::string::String,
355    /// Each of the service's products with any cost in the period, in key
356    /// order.
357    #[prost(message, repeated, tag = "3")]
358    pub products: ::prost::alloc::vec::Vec<ProductCost>,
359}
360/// One product's cost in a report.
361#[derive(Clone, PartialEq, ::prost::Message)]
362pub struct ProductCost {
363    /// The product as the price list names it, such as `compute.gp1.core.2`.
364    #[prost(string, tag = "1")]
365    pub product_key: ::prost::alloc::string::String,
366    /// The product's total.
367    #[prost(string, tag = "2")]
368    pub total: ::prost::alloc::string::String,
369    /// The buckets with any cost, oldest first.
370    #[prost(message, repeated, tag = "3")]
371    pub buckets: ::prost::alloc::vec::Vec<CostBucket>,
372}
373/// The cost of one hour or one day.
374#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
375pub struct CostBucket {
376    /// When the bucket starts.
377    #[prost(message, optional, tag = "1")]
378    pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
379    /// The bucket's cost.
380    #[prost(string, tag = "2")]
381    pub amount: ::prost::alloc::string::String,
382}
383/// An organization's cost report: its projects' together, and each
384/// project's.
385#[derive(Clone, PartialEq, ::prost::Message)]
386pub struct OrganizationCostReport {
387    /// The period's total of every project.
388    #[prost(string, tag = "1")]
389    pub total: ::prost::alloc::string::String,
390    /// Each service with any cost in the period, over every project.
391    #[prost(message, repeated, tag = "2")]
392    pub services: ::prost::alloc::vec::Vec<ServiceCost>,
393    /// Each project with any cost in the period, in id order, a project
394    /// deleted since included.
395    #[prost(message, repeated, tag = "3")]
396    pub projects: ::prost::alloc::vec::Vec<ProjectCost>,
397}
398/// One project's cost in an organization's report, over every service.
399#[derive(Clone, PartialEq, ::prost::Message)]
400pub struct ProjectCost {
401    /// The project, `projects/{project}`.
402    #[prost(string, tag = "1")]
403    pub project: ::prost::alloc::string::String,
404    /// The project's total.
405    #[prost(string, tag = "2")]
406    pub total: ::prost::alloc::string::String,
407    /// The buckets with any cost, oldest first.
408    #[prost(message, repeated, tag = "3")]
409    pub buckets: ::prost::alloc::vec::Vec<CostBucket>,
410}
411/// One metered interval of one resource: how much of a metric it used from
412/// `start_time` to `end_time`.
413#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
414pub struct UsageRecord {
415    /// The kind of resource, such as `compute.instance`.
416    #[prost(string, tag = "1")]
417    pub resource_kind: ::prost::alloc::string::String,
418    /// The resource's id.
419    #[prost(string, tag = "2")]
420    pub resource_id: ::prost::alloc::string::String,
421    /// What was measured, such as `running_seconds`.
422    #[prost(string, tag = "3")]
423    pub metric: ::prost::alloc::string::String,
424    /// The product the usage is priced as, such as `compute.gp1.core.2`;
425    /// empty for a kind of resource that has none.
426    #[prost(string, tag = "4")]
427    pub product_key: ::prost::alloc::string::String,
428    /// How much was used, in the metric's unit, as a decimal string.
429    #[prost(string, tag = "5")]
430    pub quantity: ::prost::alloc::string::String,
431    /// When the interval starts.
432    #[prost(message, optional, tag = "6")]
433    pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
434    /// When the interval ends.
435    #[prost(message, optional, tag = "7")]
436    pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
437    /// The billing account the usage was charged to, the one the project was
438    /// linked to when it was recorded; empty if it had none.
439    #[prost(string, tag = "8")]
440    pub billing_account: ::prost::alloc::string::String,
441}
442/// The request for QueryProjectCost.
443#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
444pub struct QueryProjectCostRequest {
445    /// The project, `projects/{project}`.
446    #[prost(string, tag = "1")]
447    pub project: ::prost::alloc::string::String,
448    /// The period's start, included.
449    #[prost(message, optional, tag = "2")]
450    pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
451    /// The period's end, left out; after `start_time`.
452    #[prost(message, optional, tag = "3")]
453    pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
454    /// How finely to bucket the cost; daily when unset.
455    #[prost(enumeration = "Granularity", tag = "4")]
456    pub granularity: i32,
457}
458/// The request for QueryOrganizationCost.
459#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
460pub struct QueryOrganizationCostRequest {
461    /// The organization, `organizations/{organization}`.
462    #[prost(string, tag = "1")]
463    pub organization: ::prost::alloc::string::String,
464    /// The period's start, included.
465    #[prost(message, optional, tag = "2")]
466    pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
467    /// The period's end, left out; after `start_time`.
468    #[prost(message, optional, tag = "3")]
469    pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
470    /// How finely to bucket the cost; daily when unset.
471    #[prost(enumeration = "Granularity", tag = "4")]
472    pub granularity: i32,
473}
474/// The request for QueryBillingAccountCost.
475#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
476pub struct QueryBillingAccountCostRequest {
477    /// The billing account.
478    #[prost(string, tag = "1")]
479    pub billing_account: ::prost::alloc::string::String,
480    /// The period's start, included.
481    #[prost(message, optional, tag = "2")]
482    pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
483    /// The period's end, left out; after `start_time`.
484    #[prost(message, optional, tag = "3")]
485    pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
486    /// How finely to bucket the cost; daily when unset.
487    #[prost(enumeration = "Granularity", tag = "4")]
488    pub granularity: i32,
489}
490/// The request for QueryProjectUsage.
491#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
492pub struct QueryProjectUsageRequest {
493    /// The project, `projects/{project}`.
494    #[prost(string, tag = "1")]
495    pub project: ::prost::alloc::string::String,
496    /// The period's start: records that end after it are listed.
497    #[prost(message, optional, tag = "2")]
498    pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
499    /// The period's end: records that start before it are listed; after
500    /// `start_time`.
501    #[prost(message, optional, tag = "3")]
502    pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
503    /// The most records to return; the server clamps it, and 0 means its
504    /// default.
505    #[prost(int32, tag = "4")]
506    pub page_size: i32,
507    /// A previous response's `next_page_token`, for the page after it.
508    #[prost(string, tag = "5")]
509    pub page_token: ::prost::alloc::string::String,
510}
511/// The response for QueryProjectUsage.
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct QueryProjectUsageResponse {
514    /// The usage records on this page.
515    #[prost(message, repeated, tag = "1")]
516    pub usage_records: ::prost::alloc::vec::Vec<UsageRecord>,
517    /// The token for the next page; empty on the last one.
518    #[prost(string, tag = "2")]
519    pub next_page_token: ::prost::alloc::string::String,
520}
521/// How finely a report's cost is bucketed.
522#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
523#[repr(i32)]
524pub enum Granularity {
525    /// Not set: daily.
526    Unspecified = 0,
527    /// One bucket per hour, starting on the hour.
528    Hourly = 1,
529    /// One bucket per day, starting at midnight UTC.
530    Daily = 2,
531}
532impl Granularity {
533    /// String value of the enum field names used in the ProtoBuf definition.
534    ///
535    /// The values are not transformed in any way and thus are considered stable
536    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
537    pub fn as_str_name(&self) -> &'static str {
538        match self {
539            Self::Unspecified => "GRANULARITY_UNSPECIFIED",
540            Self::Hourly => "HOURLY",
541            Self::Daily => "DAILY",
542        }
543    }
544    /// Creates an enum from field names used in the ProtoBuf definition.
545    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
546        match value {
547            "GRANULARITY_UNSPECIFIED" => Some(Self::Unspecified),
548            "HOURLY" => Some(Self::Hourly),
549            "DAILY" => Some(Self::Daily),
550            _ => None,
551        }
552    }
553}
554/// A billing account's acceptance of one version of a legal document.
555#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
556pub struct LegalAcceptance {
557    /// The acceptance's resource name.
558    #[prost(string, tag = "1")]
559    pub name: ::prost::alloc::string::String,
560    /// The version accepted,
561    /// `legalDocuments/{legal_document}/versions/{version}`.
562    #[prost(string, tag = "2")]
563    pub legal_document_version: ::prost::alloc::string::String,
564    /// The SHA-256 of the text accepted: the version's `sha256`.
565    #[prost(string, tag = "3")]
566    pub sha256: ::prost::alloc::string::String,
567    /// Who accepted: `user:{id}`, or `service_account:{id}` for a service
568    /// account.
569    #[prost(string, tag = "4")]
570    pub accepter: ::prost::alloc::string::String,
571    /// When the version was accepted.
572    #[prost(message, optional, tag = "5")]
573    pub accept_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
574    /// How the acceptance came about.
575    #[prost(enumeration = "legal_acceptance::Method", tag = "6")]
576    pub method: i32,
577    /// Whether the accepter confirmed acting as a business. Always true.
578    #[prost(bool, tag = "7")]
579    pub acts_as_business: bool,
580    /// The legal entity that accepted, as it was at `accept_time`: the
581    /// organization's name.
582    #[prost(string, tag = "8")]
583    pub organization_display_name: ::prost::alloc::string::String,
584    /// The billing account's address at `accept_time`; unset for an account
585    /// that had none.
586    #[prost(message, optional, tag = "9")]
587    pub billing_address: ::core::option::Option<BillingAddress>,
588    /// The billing account's VAT identification number at `accept_time`;
589    /// empty when it had none.
590    #[prost(string, tag = "10")]
591    pub vat_id: ::prost::alloc::string::String,
592}
593/// Nested message and enum types in `LegalAcceptance`.
594pub mod legal_acceptance {
595    /// How the acceptance came about.
596    #[derive(
597        Clone,
598        Copy,
599        Debug,
600        PartialEq,
601        Eq,
602        Hash,
603        PartialOrd,
604        Ord,
605        ::prost::Enumeration
606    )]
607    #[repr(i32)]
608    pub enum Method {
609        /// Not used.
610        Unspecified = 0,
611        /// When the organization or the billing account was created.
612        Signup = 1,
613        /// A changed version of a document the account had accepted before.
614        Change = 2,
615        /// The first version of a document, by an account that existed before
616        /// the document was published.
617        Migration = 3,
618    }
619    impl Method {
620        /// String value of the enum field names used in the ProtoBuf definition.
621        ///
622        /// The values are not transformed in any way and thus are considered stable
623        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
624        pub fn as_str_name(&self) -> &'static str {
625            match self {
626                Self::Unspecified => "METHOD_UNSPECIFIED",
627                Self::Signup => "SIGNUP",
628                Self::Change => "CHANGE",
629                Self::Migration => "MIGRATION",
630            }
631        }
632        /// Creates an enum from field names used in the ProtoBuf definition.
633        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
634            match value {
635                "METHOD_UNSPECIFIED" => Some(Self::Unspecified),
636                "SIGNUP" => Some(Self::Signup),
637                "CHANGE" => Some(Self::Change),
638                "MIGRATION" => Some(Self::Migration),
639                _ => None,
640            }
641        }
642    }
643}
644/// A legal document version a billing account has yet to accept.
645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
646pub struct LegalRequirement {
647    /// The version, `legalDocuments/{legal_document}/versions/{version}`.
648    #[prost(string, tag = "1")]
649    pub legal_document_version: ::prost::alloc::string::String,
650    /// The version's title, such as `Terms of Service`.
651    #[prost(string, tag = "2")]
652    pub display_name: ::prost::alloc::string::String,
653    /// The day the version takes effect.
654    #[prost(message, optional, tag = "3")]
655    pub effective_date: ::core::option::Option<::origincloud_core::types::Date>,
656    /// A plain-language summary of what changed.
657    #[prost(string, tag = "4")]
658    pub change_summary: ::prost::alloc::string::String,
659    /// The version's `sha256`, to accept it by.
660    #[prost(string, tag = "5")]
661    pub sha256: ::prost::alloc::string::String,
662    /// In force already: until it is accepted, creating or growing billable
663    /// resources charged to the account is refused.
664    #[prost(bool, tag = "6")]
665    pub blocking: bool,
666}
667/// A version to accept, with the text it was shown as.
668#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
669pub struct LegalDocumentVersionToAccept {
670    /// The version, `legalDocuments/{legal_document}/versions/{version}`.
671    #[prost(string, tag = "1")]
672    pub legal_document_version: ::prost::alloc::string::String,
673    /// The version's `sha256`, as read with it: an acceptance is refused when
674    /// the text shown isn't the version's.
675    #[prost(string, tag = "2")]
676    pub sha256: ::prost::alloc::string::String,
677}
678/// The request for ListLegalAcceptances.
679#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
680pub struct ListLegalAcceptancesRequest {
681    /// The billing account,
682    /// `organizations/{organization}/billingAccounts/{billing_account}`.
683    #[prost(string, tag = "1")]
684    pub parent: ::prost::alloc::string::String,
685    /// The most acceptances to return; the server clamps it, and 0 means its
686    /// default.
687    #[prost(int32, tag = "2")]
688    pub page_size: i32,
689    /// A previous response's `next_page_token`, for the page after it.
690    #[prost(string, tag = "3")]
691    pub page_token: ::prost::alloc::string::String,
692}
693/// The response for ListLegalAcceptances and AcceptLegalDocuments.
694#[derive(Clone, PartialEq, ::prost::Message)]
695pub struct ListLegalAcceptancesResponse {
696    /// The acceptances on this page; for AcceptLegalDocuments, one per version
697    /// accepted, in the order requested.
698    #[prost(message, repeated, tag = "1")]
699    pub legal_acceptances: ::prost::alloc::vec::Vec<LegalAcceptance>,
700    /// The token for the next page; empty on the last one.
701    #[prost(string, tag = "2")]
702    pub next_page_token: ::prost::alloc::string::String,
703}
704/// The request for GetLegalAcceptance.
705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
706pub struct GetLegalAcceptanceRequest {
707    /// The acceptance to return.
708    #[prost(string, tag = "1")]
709    pub name: ::prost::alloc::string::String,
710}
711/// The request for AcceptLegalDocuments.
712#[derive(Clone, PartialEq, ::prost::Message)]
713pub struct AcceptLegalDocumentsRequest {
714    /// The billing account that accepts,
715    /// `organizations/{organization}/billingAccounts/{billing_account}`.
716    #[prost(string, tag = "1")]
717    pub name: ::prost::alloc::string::String,
718    /// The versions to accept.
719    #[prost(message, repeated, tag = "2")]
720    pub versions: ::prost::alloc::vec::Vec<LegalDocumentVersionToAccept>,
721    /// That the caller acts as a business (§ 14 BGB) for the billing account's
722    /// legal entity. Must be true.
723    #[prost(bool, tag = "3")]
724    pub acts_as_business: bool,
725}
726/// The request for QueryLegalRequirements.
727#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
728pub struct QueryLegalRequirementsRequest {
729    /// The billing account,
730    /// `organizations/{organization}/billingAccounts/{billing_account}`.
731    #[prost(string, tag = "1")]
732    pub name: ::prost::alloc::string::String,
733}
734/// The response for QueryLegalRequirements.
735#[derive(Clone, PartialEq, ::prost::Message)]
736pub struct QueryLegalRequirementsResponse {
737    /// The versions to accept, by document, then by the day they take effect.
738    #[prost(message, repeated, tag = "1")]
739    pub requirements: ::prost::alloc::vec::Vec<LegalRequirement>,
740}
741/// A legal document: every version of one kind of document, such as the Terms
742/// of Service.
743#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
744pub struct LegalDocument {
745    /// The document's resource name, `legalDocuments/{legal_document}`, where
746    /// `{legal_document}` is one of `terms`, `dpa`, `sla`, `aup`,
747    /// `subprocessors`, `toms`, `privacy`, `switching` and
748    /// `shared-responsibility`.
749    #[prost(string, tag = "1")]
750    pub name: ::prost::alloc::string::String,
751    /// The document's title, as its latest version names it, such as `Terms of
752    /// Service`.
753    #[prost(string, tag = "2")]
754    pub display_name: ::prost::alloc::string::String,
755    /// Whether a customer accepts this document. A `legal_document_version::ChangeClass::Material` version of one
756    /// that is accepted needs a new acceptance; the other documents are
757    /// published only.
758    #[prost(bool, tag = "3")]
759    pub acceptance_required: bool,
760    /// The version in force today, by its resource name. Empty while the first
761    /// version has not taken effect yet.
762    #[prost(string, tag = "4")]
763    pub current_version: ::prost::alloc::string::String,
764    /// The latest version published, by its resource name: `current_version`,
765    /// or a version announced to take effect later.
766    #[prost(string, tag = "5")]
767    pub latest_version: ::prost::alloc::string::String,
768}
769/// One published version of a legal document. It never changes once
770/// published.
771#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
772pub struct LegalDocumentVersion {
773    /// The version's resource name,
774    /// `legalDocuments/{legal_document}/versions/{version}`, where `{version}`
775    /// is `YYYY-MM`, or `YYYY-MM-2`, `YYYY-MM-3` and so on for another version
776    /// in the same month.
777    #[prost(string, tag = "1")]
778    pub name: ::prost::alloc::string::String,
779    /// The version's title, such as `Terms of Service`.
780    #[prost(string, tag = "2")]
781    pub display_name: ::prost::alloc::string::String,
782    /// The day the version takes effect. It applies from that day until the
783    /// next version of the document takes effect.
784    #[prost(message, optional, tag = "3")]
785    pub effective_date: ::core::option::Option<::origincloud_core::types::Date>,
786    /// What the version changes.
787    #[prost(enumeration = "legal_document_version::ChangeClass", tag = "4")]
788    pub change_class: i32,
789    /// A plain-language summary of what changed, as the acceptance dialog and
790    /// the announcement show it.
791    #[prost(string, tag = "5")]
792    pub change_summary: ::prost::alloc::string::String,
793    /// The SHA-256 of `markdown`, in lowercase hexadecimal: what identifies the
794    /// version, and what an acceptance of it records.
795    #[prost(string, tag = "6")]
796    pub sha256: ::prost::alloc::string::String,
797    /// The version's source, Markdown with its YAML front matter, exactly as
798    /// `sha256` is computed over it.
799    #[prost(string, tag = "7")]
800    pub markdown: ::prost::alloc::string::String,
801    /// The version's text as an HTML fragment, without its title: safe to embed
802    /// as it is. A reference to another legal document links the version of it
803    /// in force on `effective_date`.
804    #[prost(string, tag = "8")]
805    pub html: ::prost::alloc::string::String,
806    /// Where the version is published on the web, under a URL that never
807    /// changes, such as `<https://origincloud.eu/legal/terms/2026-12`.>
808    #[prost(string, tag = "9")]
809    pub uri: ::prost::alloc::string::String,
810    /// Where the version's PDF is downloaded from (DownloadLegalDocumentVersion).
811    #[prost(string, tag = "10")]
812    pub pdf_uri: ::prost::alloc::string::String,
813}
814/// Nested message and enum types in `LegalDocumentVersion`.
815pub mod legal_document_version {
816    /// What a version changes, and so what publishing it asks of a customer.
817    #[derive(
818        Clone,
819        Copy,
820        Debug,
821        PartialEq,
822        Eq,
823        Hash,
824        PartialOrd,
825        Ord,
826        ::prost::Enumeration
827    )]
828    #[repr(i32)]
829    pub enum ChangeClass {
830        /// Not used.
831        Unspecified = 0,
832        /// Changes rights or obligations. For a document customers accept, a
833        /// customer accepts this version before it applies to them, and it is
834        /// announced at least six weeks before it takes effect.
835        Material = 1,
836        /// Announced ahead and never accepted, such as a new sub-processor,
837        /// announced at least 30 days before it takes effect.
838        Notice = 2,
839        /// Wording, corrections and formatting. Asks nothing of anyone.
840        Editorial = 3,
841    }
842    impl ChangeClass {
843        /// String value of the enum field names used in the ProtoBuf definition.
844        ///
845        /// The values are not transformed in any way and thus are considered stable
846        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
847        pub fn as_str_name(&self) -> &'static str {
848            match self {
849                Self::Unspecified => "CHANGE_CLASS_UNSPECIFIED",
850                Self::Material => "MATERIAL",
851                Self::Notice => "NOTICE",
852                Self::Editorial => "EDITORIAL",
853            }
854        }
855        /// Creates an enum from field names used in the ProtoBuf definition.
856        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
857            match value {
858                "CHANGE_CLASS_UNSPECIFIED" => Some(Self::Unspecified),
859                "MATERIAL" => Some(Self::Material),
860                "NOTICE" => Some(Self::Notice),
861                "EDITORIAL" => Some(Self::Editorial),
862                _ => None,
863            }
864        }
865    }
866}
867/// The request for ListLegalDocuments.
868#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
869pub struct ListLegalDocumentsRequest {
870    /// The most documents to return; the server clamps it, and 0 means its
871    /// default.
872    #[prost(int32, tag = "1")]
873    pub page_size: i32,
874    /// A previous response's `next_page_token`, for the page after it.
875    #[prost(string, tag = "2")]
876    pub page_token: ::prost::alloc::string::String,
877}
878/// The response for ListLegalDocuments.
879#[derive(Clone, PartialEq, ::prost::Message)]
880pub struct ListLegalDocumentsResponse {
881    /// The documents on this page.
882    #[prost(message, repeated, tag = "1")]
883    pub legal_documents: ::prost::alloc::vec::Vec<LegalDocument>,
884    /// The token for the next page; empty on the last one.
885    #[prost(string, tag = "2")]
886    pub next_page_token: ::prost::alloc::string::String,
887}
888/// The request for GetLegalDocument.
889#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
890pub struct GetLegalDocumentRequest {
891    /// The document to return, `legalDocuments/{legal_document}`.
892    #[prost(string, tag = "1")]
893    pub name: ::prost::alloc::string::String,
894}
895/// The request for ListLegalDocumentVersions.
896#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
897pub struct ListLegalDocumentVersionsRequest {
898    /// The document whose versions to list, `legalDocuments/{legal_document}`.
899    #[prost(string, tag = "1")]
900    pub parent: ::prost::alloc::string::String,
901    /// The most versions to return; the server clamps it, and 0 means its
902    /// default.
903    #[prost(int32, tag = "2")]
904    pub page_size: i32,
905    /// A previous response's `next_page_token`, for the page after it.
906    #[prost(string, tag = "3")]
907    pub page_token: ::prost::alloc::string::String,
908}
909/// The response for ListLegalDocumentVersions.
910#[derive(Clone, PartialEq, ::prost::Message)]
911pub struct ListLegalDocumentVersionsResponse {
912    /// The versions on this page.
913    #[prost(message, repeated, tag = "1")]
914    pub legal_document_versions: ::prost::alloc::vec::Vec<LegalDocumentVersion>,
915    /// The token for the next page; empty on the last one.
916    #[prost(string, tag = "2")]
917    pub next_page_token: ::prost::alloc::string::String,
918}
919/// The request for GetLegalDocumentVersion.
920#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
921pub struct GetLegalDocumentVersionRequest {
922    /// The version to return,
923    /// `legalDocuments/{legal_document}/versions/{version}`.
924    #[prost(string, tag = "1")]
925    pub name: ::prost::alloc::string::String,
926}
927/// The request for DownloadLegalDocumentVersion.
928#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
929pub struct DownloadLegalDocumentVersionRequest {
930    /// The version to download,
931    /// `legalDocuments/{legal_document}/versions/{version}`.
932    #[prost(string, tag = "1")]
933    pub name: ::prost::alloc::string::String,
934}
935/// The price list. Every amount is in EUR, before VAT, which depends on the
936/// customer's country and is added on the invoice.
937#[derive(Clone, PartialEq, ::prost::Message)]
938pub struct PriceList {
939    /// Always `EUR`.
940    #[prost(string, tag = "1")]
941    pub currency: ::prost::alloc::string::String,
942    /// Always true: every amount is net, before VAT.
943    #[prost(bool, tag = "2")]
944    pub amounts_exclude_vat: bool,
945    /// When a list price was last set, changed, took effect or ended: what a
946    /// "prices last updated" line shows. Unset only while nothing is priced.
947    #[prost(message, optional, tag = "3")]
948    pub last_changed: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
949    /// One entry per product family with a price in effect, in the platform's
950    /// catalog order: `compute_instance`, `network_floating_ip`,
951    /// `network_nat_gateway`, `network_vpc_egress`, `network_vpc_ingress`,
952    /// `network_vpc_internal`, `storage_volume`, `storage_snapshot`,
953    /// `observability_custom_metric`, `observability_api_request`,
954    /// `observability_ingested_sample`, `dns_hosted_zone`, `dns_query`.
955    #[prost(message, repeated, tag = "4")]
956    pub families: ::prost::alloc::vec::Vec<PriceFamily>,
957}
958/// One product family's prices.
959#[derive(Clone, PartialEq, ::prost::Message)]
960pub struct PriceFamily {
961    /// The family, such as `compute_instance`.
962    #[prost(string, tag = "1")]
963    pub family: ::prost::alloc::string::String,
964    /// The family's prices in effect, by product key, numbers compared as
965    /// numbers: a class's instance types run from smallest to largest.
966    #[prost(message, repeated, tag = "2")]
967    pub prices: ::prost::alloc::vec::Vec<Price>,
968}
969/// The list price of one product.
970#[derive(Clone, PartialEq, ::prost::Message)]
971pub struct Price {
972    /// The product the price bills, as usage and cost reports name it, such
973    /// as `compute.gp1.core.2`, `storage.gp1` or `network.vpc_egress`.
974    #[prost(string, tag = "1")]
975    pub product_key: ::prost::alloc::string::String,
976    /// The parts of the product key, split out: `instance_type` for an instance,
977    /// `storage_class` for a volume. Empty for a product that has none.
978    #[prost(btree_map = "string, string", tag = "2")]
979    pub dimensions: ::prost::alloc::collections::BTreeMap<
980        ::prost::alloc::string::String,
981        ::prost::alloc::string::String,
982    >,
983    /// What is counted: `seconds`, `gib_hours`, `gb` (decimal, 10^9 bytes),
984    /// `metric_months`, `requests`, `samples` or `queries`.
985    #[prost(string, tag = "3")]
986    pub unit_type: ::prost::alloc::string::String,
987    /// How many of the unit the amount pays for: `3600` seconds is an
988    /// hourly rate, `1000` requests a rate per thousand.
989    #[prost(uint32, tag = "4")]
990    pub unit_count: u32,
991    /// The price of that many units, as a decimal string.
992    #[prost(string, tag = "5")]
993    pub amount: ::prost::alloc::string::String,
994    /// When the price took effect.
995    #[prost(message, optional, tag = "6")]
996    pub valid_from: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
997    /// When the price is to end; unset while no end is scheduled.
998    #[prost(message, optional, tag = "7")]
999    pub valid_until: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1000}
1001/// The request for GetPriceList, which takes nothing.
1002#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1003pub struct GetPriceListRequest {}
1004/// A billing account's spend limit: the most it means to spend in a calendar
1005/// month, and when to be told. Each threshold alerts once a month, the first
1006/// time the month's spend crosses it.
1007#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1008pub struct SpendLimit {
1009    /// The spend limit's resource name,
1010    /// `organizations/{organization}/billingAccounts/{billing_account}/spendLimit`.
1011    #[prost(string, tag = "1")]
1012    pub name: ::prost::alloc::string::String,
1013    /// The amount per calendar month in EUR, before VAT, as a decimal string
1014    /// such as `500.00`; more than zero. Unset means no spend limit.
1015    #[prost(string, optional, tag = "2")]
1016    pub limit: ::core::option::Option<::prost::alloc::string::String>,
1017    /// The percentages of `limit` whose crossing emails an alert, such as `80`
1018    /// and `100`; each from 1 to 32767, so a threshold can lie beyond the
1019    /// limit. Empty while there is no `limit`.
1020    #[prost(int32, repeated, packed = "false", tag = "3")]
1021    pub alert_thresholds_percent: ::prost::alloc::vec::Vec<i32>,
1022    /// Where alerts are sent. Empty while there is no `limit`, and an alert
1023    /// with no recipient is sent to nobody.
1024    #[prost(string, repeated, tag = "4")]
1025    pub notification_emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1026    /// When the spend limit was last set; unset while there is none.
1027    #[prost(message, optional, tag = "5")]
1028    pub update_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1029}
1030/// The request for GetSpendLimit.
1031#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1032pub struct GetSpendLimitRequest {
1033    /// The spend limit to return.
1034    #[prost(string, tag = "1")]
1035    pub name: ::prost::alloc::string::String,
1036}
1037/// The request for UpdateSpendLimit.
1038#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1039pub struct UpdateSpendLimitRequest {
1040    /// The spend limit, by its name, with the fields to change.
1041    #[prost(message, optional, tag = "1")]
1042    pub spend_limit: ::core::option::Option<SpendLimit>,
1043    /// The fields to change: `limit`, `alert_thresholds_percent` and
1044    /// `notification_emails`. `*` is every one of them.
1045    #[prost(message, optional, tag = "2")]
1046    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1047}
1048impl serde::Serialize for AcceptLegalDocumentsRequest {
1049    #[allow(deprecated)]
1050    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1051    where
1052        S: serde::Serializer,
1053    {
1054        use serde::ser::SerializeStruct;
1055        let mut len = 0;
1056        if !self.name.is_empty() {
1057            len += 1;
1058        }
1059        if !self.versions.is_empty() {
1060            len += 1;
1061        }
1062        if self.acts_as_business {
1063            len += 1;
1064        }
1065        let mut struct_ser = serializer
1066            .serialize_struct(
1067                "origincloud.billing.v1beta1.AcceptLegalDocumentsRequest",
1068                len,
1069            )?;
1070        if !self.name.is_empty() {
1071            struct_ser.serialize_field("name", &self.name)?;
1072        }
1073        if !self.versions.is_empty() {
1074            struct_ser.serialize_field("versions", &self.versions)?;
1075        }
1076        if self.acts_as_business {
1077            struct_ser.serialize_field("actsAsBusiness", &self.acts_as_business)?;
1078        }
1079        struct_ser.end()
1080    }
1081}
1082impl<'de> serde::Deserialize<'de> for AcceptLegalDocumentsRequest {
1083    #[allow(deprecated)]
1084    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1085    where
1086        D: serde::Deserializer<'de>,
1087    {
1088        const FIELDS: &[&str] = &[
1089            "name",
1090            "versions",
1091            "acts_as_business",
1092            "actsAsBusiness",
1093        ];
1094        #[allow(clippy::enum_variant_names)]
1095        enum GeneratedField {
1096            Name,
1097            Versions,
1098            ActsAsBusiness,
1099            __SkipField__,
1100        }
1101        impl<'de> serde::Deserialize<'de> for GeneratedField {
1102            fn deserialize<D>(
1103                deserializer: D,
1104            ) -> std::result::Result<GeneratedField, D::Error>
1105            where
1106                D: serde::Deserializer<'de>,
1107            {
1108                struct GeneratedVisitor;
1109                impl serde::de::Visitor<'_> for GeneratedVisitor {
1110                    type Value = GeneratedField;
1111                    fn expecting(
1112                        &self,
1113                        formatter: &mut std::fmt::Formatter<'_>,
1114                    ) -> std::fmt::Result {
1115                        write!(formatter, "expected one of: {:?}", & FIELDS)
1116                    }
1117                    #[allow(unused_variables)]
1118                    fn visit_str<E>(
1119                        self,
1120                        value: &str,
1121                    ) -> std::result::Result<GeneratedField, E>
1122                    where
1123                        E: serde::de::Error,
1124                    {
1125                        match value {
1126                            "name" => Ok(GeneratedField::Name),
1127                            "versions" => Ok(GeneratedField::Versions),
1128                            "actsAsBusiness" | "acts_as_business" => {
1129                                Ok(GeneratedField::ActsAsBusiness)
1130                            }
1131                            _ => Ok(GeneratedField::__SkipField__),
1132                        }
1133                    }
1134                }
1135                deserializer.deserialize_identifier(GeneratedVisitor)
1136            }
1137        }
1138        struct GeneratedVisitor;
1139        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1140            type Value = AcceptLegalDocumentsRequest;
1141            fn expecting(
1142                &self,
1143                formatter: &mut std::fmt::Formatter<'_>,
1144            ) -> std::fmt::Result {
1145                formatter
1146                    .write_str(
1147                        "struct origincloud.billing.v1beta1.AcceptLegalDocumentsRequest",
1148                    )
1149            }
1150            fn visit_map<V>(
1151                self,
1152                mut map_: V,
1153            ) -> std::result::Result<AcceptLegalDocumentsRequest, V::Error>
1154            where
1155                V: serde::de::MapAccess<'de>,
1156            {
1157                let mut name__ = None;
1158                let mut versions__ = None;
1159                let mut acts_as_business__ = None;
1160                while let Some(k) = map_.next_key()? {
1161                    match k {
1162                        GeneratedField::Name => {
1163                            if name__.is_some() {
1164                                return Err(serde::de::Error::duplicate_field("name"));
1165                            }
1166                            name__ = Some(map_.next_value()?);
1167                        }
1168                        GeneratedField::Versions => {
1169                            if versions__.is_some() {
1170                                return Err(serde::de::Error::duplicate_field("versions"));
1171                            }
1172                            versions__ = Some(map_.next_value()?);
1173                        }
1174                        GeneratedField::ActsAsBusiness => {
1175                            if acts_as_business__.is_some() {
1176                                return Err(
1177                                    serde::de::Error::duplicate_field("actsAsBusiness"),
1178                                );
1179                            }
1180                            acts_as_business__ = Some(map_.next_value()?);
1181                        }
1182                        GeneratedField::__SkipField__ => {
1183                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1184                        }
1185                    }
1186                }
1187                Ok(AcceptLegalDocumentsRequest {
1188                    name: name__.unwrap_or_default(),
1189                    versions: versions__.unwrap_or_default(),
1190                    acts_as_business: acts_as_business__.unwrap_or_default(),
1191                })
1192            }
1193        }
1194        deserializer
1195            .deserialize_struct(
1196                "origincloud.billing.v1beta1.AcceptLegalDocumentsRequest",
1197                FIELDS,
1198                GeneratedVisitor,
1199            )
1200    }
1201}
1202impl serde::Serialize for BillingAccount {
1203    #[allow(deprecated)]
1204    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1205    where
1206        S: serde::Serializer,
1207    {
1208        use serde::ser::SerializeStruct;
1209        let mut len = 0;
1210        if !self.name.is_empty() {
1211            len += 1;
1212        }
1213        if !self.urn.is_empty() {
1214            len += 1;
1215        }
1216        if !self.display_name.is_empty() {
1217            len += 1;
1218        }
1219        if self.default_account {
1220            len += 1;
1221        }
1222        if self.billing_address.is_some() {
1223            len += 1;
1224        }
1225        if !self.invoice_email.is_empty() {
1226            len += 1;
1227        }
1228        if !self.vat_id.is_empty() {
1229            len += 1;
1230        }
1231        if !self.contact_person.is_empty() {
1232            len += 1;
1233        }
1234        if self.payment_method.is_some() {
1235            len += 1;
1236        }
1237        if self.create_time.is_some() {
1238            len += 1;
1239        }
1240        if !self.creator.is_empty() {
1241            len += 1;
1242        }
1243        let mut struct_ser = serializer
1244            .serialize_struct("origincloud.billing.v1beta1.BillingAccount", len)?;
1245        if !self.name.is_empty() {
1246            struct_ser.serialize_field("name", &self.name)?;
1247        }
1248        if !self.urn.is_empty() {
1249            struct_ser.serialize_field("urn", &self.urn)?;
1250        }
1251        if !self.display_name.is_empty() {
1252            struct_ser.serialize_field("displayName", &self.display_name)?;
1253        }
1254        if self.default_account {
1255            struct_ser.serialize_field("defaultAccount", &self.default_account)?;
1256        }
1257        if let Some(v) = self.billing_address.as_ref() {
1258            struct_ser.serialize_field("billingAddress", v)?;
1259        }
1260        if !self.invoice_email.is_empty() {
1261            struct_ser.serialize_field("invoiceEmail", &self.invoice_email)?;
1262        }
1263        if !self.vat_id.is_empty() {
1264            struct_ser.serialize_field("vatId", &self.vat_id)?;
1265        }
1266        if !self.contact_person.is_empty() {
1267            struct_ser.serialize_field("contactPerson", &self.contact_person)?;
1268        }
1269        if let Some(v) = self.payment_method.as_ref() {
1270            struct_ser.serialize_field("paymentMethod", v)?;
1271        }
1272        if let Some(v) = self.create_time.as_ref() {
1273            struct_ser.serialize_field("createTime", v)?;
1274        }
1275        if !self.creator.is_empty() {
1276            struct_ser.serialize_field("creator", &self.creator)?;
1277        }
1278        struct_ser.end()
1279    }
1280}
1281impl<'de> serde::Deserialize<'de> for BillingAccount {
1282    #[allow(deprecated)]
1283    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1284    where
1285        D: serde::Deserializer<'de>,
1286    {
1287        const FIELDS: &[&str] = &[
1288            "name",
1289            "urn",
1290            "display_name",
1291            "displayName",
1292            "default_account",
1293            "defaultAccount",
1294            "billing_address",
1295            "billingAddress",
1296            "invoice_email",
1297            "invoiceEmail",
1298            "vat_id",
1299            "vatId",
1300            "contact_person",
1301            "contactPerson",
1302            "payment_method",
1303            "paymentMethod",
1304            "create_time",
1305            "createTime",
1306            "creator",
1307        ];
1308        #[allow(clippy::enum_variant_names)]
1309        enum GeneratedField {
1310            Name,
1311            Urn,
1312            DisplayName,
1313            DefaultAccount,
1314            BillingAddress,
1315            InvoiceEmail,
1316            VatId,
1317            ContactPerson,
1318            PaymentMethod,
1319            CreateTime,
1320            Creator,
1321            __SkipField__,
1322        }
1323        impl<'de> serde::Deserialize<'de> for GeneratedField {
1324            fn deserialize<D>(
1325                deserializer: D,
1326            ) -> std::result::Result<GeneratedField, D::Error>
1327            where
1328                D: serde::Deserializer<'de>,
1329            {
1330                struct GeneratedVisitor;
1331                impl serde::de::Visitor<'_> for GeneratedVisitor {
1332                    type Value = GeneratedField;
1333                    fn expecting(
1334                        &self,
1335                        formatter: &mut std::fmt::Formatter<'_>,
1336                    ) -> std::fmt::Result {
1337                        write!(formatter, "expected one of: {:?}", & FIELDS)
1338                    }
1339                    #[allow(unused_variables)]
1340                    fn visit_str<E>(
1341                        self,
1342                        value: &str,
1343                    ) -> std::result::Result<GeneratedField, E>
1344                    where
1345                        E: serde::de::Error,
1346                    {
1347                        match value {
1348                            "name" => Ok(GeneratedField::Name),
1349                            "urn" => Ok(GeneratedField::Urn),
1350                            "displayName" | "display_name" => {
1351                                Ok(GeneratedField::DisplayName)
1352                            }
1353                            "defaultAccount" | "default_account" => {
1354                                Ok(GeneratedField::DefaultAccount)
1355                            }
1356                            "billingAddress" | "billing_address" => {
1357                                Ok(GeneratedField::BillingAddress)
1358                            }
1359                            "invoiceEmail" | "invoice_email" => {
1360                                Ok(GeneratedField::InvoiceEmail)
1361                            }
1362                            "vatId" | "vat_id" => Ok(GeneratedField::VatId),
1363                            "contactPerson" | "contact_person" => {
1364                                Ok(GeneratedField::ContactPerson)
1365                            }
1366                            "paymentMethod" | "payment_method" => {
1367                                Ok(GeneratedField::PaymentMethod)
1368                            }
1369                            "createTime" | "create_time" => {
1370                                Ok(GeneratedField::CreateTime)
1371                            }
1372                            "creator" => Ok(GeneratedField::Creator),
1373                            _ => Ok(GeneratedField::__SkipField__),
1374                        }
1375                    }
1376                }
1377                deserializer.deserialize_identifier(GeneratedVisitor)
1378            }
1379        }
1380        struct GeneratedVisitor;
1381        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1382            type Value = BillingAccount;
1383            fn expecting(
1384                &self,
1385                formatter: &mut std::fmt::Formatter<'_>,
1386            ) -> std::fmt::Result {
1387                formatter.write_str("struct origincloud.billing.v1beta1.BillingAccount")
1388            }
1389            fn visit_map<V>(
1390                self,
1391                mut map_: V,
1392            ) -> std::result::Result<BillingAccount, V::Error>
1393            where
1394                V: serde::de::MapAccess<'de>,
1395            {
1396                let mut name__ = None;
1397                let mut urn__ = None;
1398                let mut display_name__ = None;
1399                let mut default_account__ = None;
1400                let mut billing_address__ = None;
1401                let mut invoice_email__ = None;
1402                let mut vat_id__ = None;
1403                let mut contact_person__ = None;
1404                let mut payment_method__ = None;
1405                let mut create_time__ = None;
1406                let mut creator__ = None;
1407                while let Some(k) = map_.next_key()? {
1408                    match k {
1409                        GeneratedField::Name => {
1410                            if name__.is_some() {
1411                                return Err(serde::de::Error::duplicate_field("name"));
1412                            }
1413                            name__ = Some(map_.next_value()?);
1414                        }
1415                        GeneratedField::Urn => {
1416                            if urn__.is_some() {
1417                                return Err(serde::de::Error::duplicate_field("urn"));
1418                            }
1419                            urn__ = Some(map_.next_value()?);
1420                        }
1421                        GeneratedField::DisplayName => {
1422                            if display_name__.is_some() {
1423                                return Err(
1424                                    serde::de::Error::duplicate_field("displayName"),
1425                                );
1426                            }
1427                            display_name__ = Some(map_.next_value()?);
1428                        }
1429                        GeneratedField::DefaultAccount => {
1430                            if default_account__.is_some() {
1431                                return Err(
1432                                    serde::de::Error::duplicate_field("defaultAccount"),
1433                                );
1434                            }
1435                            default_account__ = Some(map_.next_value()?);
1436                        }
1437                        GeneratedField::BillingAddress => {
1438                            if billing_address__.is_some() {
1439                                return Err(
1440                                    serde::de::Error::duplicate_field("billingAddress"),
1441                                );
1442                            }
1443                            billing_address__ = map_.next_value()?;
1444                        }
1445                        GeneratedField::InvoiceEmail => {
1446                            if invoice_email__.is_some() {
1447                                return Err(
1448                                    serde::de::Error::duplicate_field("invoiceEmail"),
1449                                );
1450                            }
1451                            invoice_email__ = Some(map_.next_value()?);
1452                        }
1453                        GeneratedField::VatId => {
1454                            if vat_id__.is_some() {
1455                                return Err(serde::de::Error::duplicate_field("vatId"));
1456                            }
1457                            vat_id__ = Some(map_.next_value()?);
1458                        }
1459                        GeneratedField::ContactPerson => {
1460                            if contact_person__.is_some() {
1461                                return Err(
1462                                    serde::de::Error::duplicate_field("contactPerson"),
1463                                );
1464                            }
1465                            contact_person__ = Some(map_.next_value()?);
1466                        }
1467                        GeneratedField::PaymentMethod => {
1468                            if payment_method__.is_some() {
1469                                return Err(
1470                                    serde::de::Error::duplicate_field("paymentMethod"),
1471                                );
1472                            }
1473                            payment_method__ = map_.next_value()?;
1474                        }
1475                        GeneratedField::CreateTime => {
1476                            if create_time__.is_some() {
1477                                return Err(serde::de::Error::duplicate_field("createTime"));
1478                            }
1479                            create_time__ = map_.next_value()?;
1480                        }
1481                        GeneratedField::Creator => {
1482                            if creator__.is_some() {
1483                                return Err(serde::de::Error::duplicate_field("creator"));
1484                            }
1485                            creator__ = Some(map_.next_value()?);
1486                        }
1487                        GeneratedField::__SkipField__ => {
1488                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1489                        }
1490                    }
1491                }
1492                Ok(BillingAccount {
1493                    name: name__.unwrap_or_default(),
1494                    urn: urn__.unwrap_or_default(),
1495                    display_name: display_name__.unwrap_or_default(),
1496                    default_account: default_account__.unwrap_or_default(),
1497                    billing_address: billing_address__,
1498                    invoice_email: invoice_email__.unwrap_or_default(),
1499                    vat_id: vat_id__.unwrap_or_default(),
1500                    contact_person: contact_person__.unwrap_or_default(),
1501                    payment_method: payment_method__,
1502                    create_time: create_time__,
1503                    creator: creator__.unwrap_or_default(),
1504                })
1505            }
1506        }
1507        deserializer
1508            .deserialize_struct(
1509                "origincloud.billing.v1beta1.BillingAccount",
1510                FIELDS,
1511                GeneratedVisitor,
1512            )
1513    }
1514}
1515impl serde::Serialize for BillingAddress {
1516    #[allow(deprecated)]
1517    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1518    where
1519        S: serde::Serializer,
1520    {
1521        use serde::ser::SerializeStruct;
1522        let mut len = 0;
1523        if !self.street.is_empty() {
1524            len += 1;
1525        }
1526        if !self.city.is_empty() {
1527            len += 1;
1528        }
1529        if !self.postal_code.is_empty() {
1530            len += 1;
1531        }
1532        if !self.region_code.is_empty() {
1533            len += 1;
1534        }
1535        let mut struct_ser = serializer
1536            .serialize_struct("origincloud.billing.v1beta1.BillingAddress", len)?;
1537        if !self.street.is_empty() {
1538            struct_ser.serialize_field("street", &self.street)?;
1539        }
1540        if !self.city.is_empty() {
1541            struct_ser.serialize_field("city", &self.city)?;
1542        }
1543        if !self.postal_code.is_empty() {
1544            struct_ser.serialize_field("postalCode", &self.postal_code)?;
1545        }
1546        if !self.region_code.is_empty() {
1547            struct_ser.serialize_field("regionCode", &self.region_code)?;
1548        }
1549        struct_ser.end()
1550    }
1551}
1552impl<'de> serde::Deserialize<'de> for BillingAddress {
1553    #[allow(deprecated)]
1554    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1555    where
1556        D: serde::Deserializer<'de>,
1557    {
1558        const FIELDS: &[&str] = &[
1559            "street",
1560            "city",
1561            "postal_code",
1562            "postalCode",
1563            "region_code",
1564            "regionCode",
1565        ];
1566        #[allow(clippy::enum_variant_names)]
1567        enum GeneratedField {
1568            Street,
1569            City,
1570            PostalCode,
1571            RegionCode,
1572            __SkipField__,
1573        }
1574        impl<'de> serde::Deserialize<'de> for GeneratedField {
1575            fn deserialize<D>(
1576                deserializer: D,
1577            ) -> std::result::Result<GeneratedField, D::Error>
1578            where
1579                D: serde::Deserializer<'de>,
1580            {
1581                struct GeneratedVisitor;
1582                impl serde::de::Visitor<'_> for GeneratedVisitor {
1583                    type Value = GeneratedField;
1584                    fn expecting(
1585                        &self,
1586                        formatter: &mut std::fmt::Formatter<'_>,
1587                    ) -> std::fmt::Result {
1588                        write!(formatter, "expected one of: {:?}", & FIELDS)
1589                    }
1590                    #[allow(unused_variables)]
1591                    fn visit_str<E>(
1592                        self,
1593                        value: &str,
1594                    ) -> std::result::Result<GeneratedField, E>
1595                    where
1596                        E: serde::de::Error,
1597                    {
1598                        match value {
1599                            "street" => Ok(GeneratedField::Street),
1600                            "city" => Ok(GeneratedField::City),
1601                            "postalCode" | "postal_code" => {
1602                                Ok(GeneratedField::PostalCode)
1603                            }
1604                            "regionCode" | "region_code" => {
1605                                Ok(GeneratedField::RegionCode)
1606                            }
1607                            _ => Ok(GeneratedField::__SkipField__),
1608                        }
1609                    }
1610                }
1611                deserializer.deserialize_identifier(GeneratedVisitor)
1612            }
1613        }
1614        struct GeneratedVisitor;
1615        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1616            type Value = BillingAddress;
1617            fn expecting(
1618                &self,
1619                formatter: &mut std::fmt::Formatter<'_>,
1620            ) -> std::fmt::Result {
1621                formatter.write_str("struct origincloud.billing.v1beta1.BillingAddress")
1622            }
1623            fn visit_map<V>(
1624                self,
1625                mut map_: V,
1626            ) -> std::result::Result<BillingAddress, V::Error>
1627            where
1628                V: serde::de::MapAccess<'de>,
1629            {
1630                let mut street__ = None;
1631                let mut city__ = None;
1632                let mut postal_code__ = None;
1633                let mut region_code__ = None;
1634                while let Some(k) = map_.next_key()? {
1635                    match k {
1636                        GeneratedField::Street => {
1637                            if street__.is_some() {
1638                                return Err(serde::de::Error::duplicate_field("street"));
1639                            }
1640                            street__ = Some(map_.next_value()?);
1641                        }
1642                        GeneratedField::City => {
1643                            if city__.is_some() {
1644                                return Err(serde::de::Error::duplicate_field("city"));
1645                            }
1646                            city__ = Some(map_.next_value()?);
1647                        }
1648                        GeneratedField::PostalCode => {
1649                            if postal_code__.is_some() {
1650                                return Err(serde::de::Error::duplicate_field("postalCode"));
1651                            }
1652                            postal_code__ = Some(map_.next_value()?);
1653                        }
1654                        GeneratedField::RegionCode => {
1655                            if region_code__.is_some() {
1656                                return Err(serde::de::Error::duplicate_field("regionCode"));
1657                            }
1658                            region_code__ = Some(map_.next_value()?);
1659                        }
1660                        GeneratedField::__SkipField__ => {
1661                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1662                        }
1663                    }
1664                }
1665                Ok(BillingAddress {
1666                    street: street__.unwrap_or_default(),
1667                    city: city__.unwrap_or_default(),
1668                    postal_code: postal_code__.unwrap_or_default(),
1669                    region_code: region_code__.unwrap_or_default(),
1670                })
1671            }
1672        }
1673        deserializer
1674            .deserialize_struct(
1675                "origincloud.billing.v1beta1.BillingAddress",
1676                FIELDS,
1677                GeneratedVisitor,
1678            )
1679    }
1680}
1681impl serde::Serialize for BillingCountry {
1682    #[allow(deprecated)]
1683    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1684    where
1685        S: serde::Serializer,
1686    {
1687        use serde::ser::SerializeStruct;
1688        let mut len = 0;
1689        if !self.name.is_empty() {
1690            len += 1;
1691        }
1692        if !self.region_code.is_empty() {
1693            len += 1;
1694        }
1695        if !self.display_name.is_empty() {
1696            len += 1;
1697        }
1698        if self.vat_id_required {
1699            len += 1;
1700        }
1701        let mut struct_ser = serializer
1702            .serialize_struct("origincloud.billing.v1beta1.BillingCountry", len)?;
1703        if !self.name.is_empty() {
1704            struct_ser.serialize_field("name", &self.name)?;
1705        }
1706        if !self.region_code.is_empty() {
1707            struct_ser.serialize_field("regionCode", &self.region_code)?;
1708        }
1709        if !self.display_name.is_empty() {
1710            struct_ser.serialize_field("displayName", &self.display_name)?;
1711        }
1712        if self.vat_id_required {
1713            struct_ser.serialize_field("vatIdRequired", &self.vat_id_required)?;
1714        }
1715        struct_ser.end()
1716    }
1717}
1718impl<'de> serde::Deserialize<'de> for BillingCountry {
1719    #[allow(deprecated)]
1720    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1721    where
1722        D: serde::Deserializer<'de>,
1723    {
1724        const FIELDS: &[&str] = &[
1725            "name",
1726            "region_code",
1727            "regionCode",
1728            "display_name",
1729            "displayName",
1730            "vat_id_required",
1731            "vatIdRequired",
1732        ];
1733        #[allow(clippy::enum_variant_names)]
1734        enum GeneratedField {
1735            Name,
1736            RegionCode,
1737            DisplayName,
1738            VatIdRequired,
1739            __SkipField__,
1740        }
1741        impl<'de> serde::Deserialize<'de> for GeneratedField {
1742            fn deserialize<D>(
1743                deserializer: D,
1744            ) -> std::result::Result<GeneratedField, D::Error>
1745            where
1746                D: serde::Deserializer<'de>,
1747            {
1748                struct GeneratedVisitor;
1749                impl serde::de::Visitor<'_> for GeneratedVisitor {
1750                    type Value = GeneratedField;
1751                    fn expecting(
1752                        &self,
1753                        formatter: &mut std::fmt::Formatter<'_>,
1754                    ) -> std::fmt::Result {
1755                        write!(formatter, "expected one of: {:?}", & FIELDS)
1756                    }
1757                    #[allow(unused_variables)]
1758                    fn visit_str<E>(
1759                        self,
1760                        value: &str,
1761                    ) -> std::result::Result<GeneratedField, E>
1762                    where
1763                        E: serde::de::Error,
1764                    {
1765                        match value {
1766                            "name" => Ok(GeneratedField::Name),
1767                            "regionCode" | "region_code" => {
1768                                Ok(GeneratedField::RegionCode)
1769                            }
1770                            "displayName" | "display_name" => {
1771                                Ok(GeneratedField::DisplayName)
1772                            }
1773                            "vatIdRequired" | "vat_id_required" => {
1774                                Ok(GeneratedField::VatIdRequired)
1775                            }
1776                            _ => Ok(GeneratedField::__SkipField__),
1777                        }
1778                    }
1779                }
1780                deserializer.deserialize_identifier(GeneratedVisitor)
1781            }
1782        }
1783        struct GeneratedVisitor;
1784        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1785            type Value = BillingCountry;
1786            fn expecting(
1787                &self,
1788                formatter: &mut std::fmt::Formatter<'_>,
1789            ) -> std::fmt::Result {
1790                formatter.write_str("struct origincloud.billing.v1beta1.BillingCountry")
1791            }
1792            fn visit_map<V>(
1793                self,
1794                mut map_: V,
1795            ) -> std::result::Result<BillingCountry, V::Error>
1796            where
1797                V: serde::de::MapAccess<'de>,
1798            {
1799                let mut name__ = None;
1800                let mut region_code__ = None;
1801                let mut display_name__ = None;
1802                let mut vat_id_required__ = None;
1803                while let Some(k) = map_.next_key()? {
1804                    match k {
1805                        GeneratedField::Name => {
1806                            if name__.is_some() {
1807                                return Err(serde::de::Error::duplicate_field("name"));
1808                            }
1809                            name__ = Some(map_.next_value()?);
1810                        }
1811                        GeneratedField::RegionCode => {
1812                            if region_code__.is_some() {
1813                                return Err(serde::de::Error::duplicate_field("regionCode"));
1814                            }
1815                            region_code__ = Some(map_.next_value()?);
1816                        }
1817                        GeneratedField::DisplayName => {
1818                            if display_name__.is_some() {
1819                                return Err(
1820                                    serde::de::Error::duplicate_field("displayName"),
1821                                );
1822                            }
1823                            display_name__ = Some(map_.next_value()?);
1824                        }
1825                        GeneratedField::VatIdRequired => {
1826                            if vat_id_required__.is_some() {
1827                                return Err(
1828                                    serde::de::Error::duplicate_field("vatIdRequired"),
1829                                );
1830                            }
1831                            vat_id_required__ = Some(map_.next_value()?);
1832                        }
1833                        GeneratedField::__SkipField__ => {
1834                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1835                        }
1836                    }
1837                }
1838                Ok(BillingCountry {
1839                    name: name__.unwrap_or_default(),
1840                    region_code: region_code__.unwrap_or_default(),
1841                    display_name: display_name__.unwrap_or_default(),
1842                    vat_id_required: vat_id_required__.unwrap_or_default(),
1843                })
1844            }
1845        }
1846        deserializer
1847            .deserialize_struct(
1848                "origincloud.billing.v1beta1.BillingCountry",
1849                FIELDS,
1850                GeneratedVisitor,
1851            )
1852    }
1853}
1854impl serde::Serialize for ConfirmPaymentMethodSetupRequest {
1855    #[allow(deprecated)]
1856    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1857    where
1858        S: serde::Serializer,
1859    {
1860        use serde::ser::SerializeStruct;
1861        let mut len = 0;
1862        if !self.name.is_empty() {
1863            len += 1;
1864        }
1865        let mut struct_ser = serializer
1866            .serialize_struct(
1867                "origincloud.billing.v1beta1.ConfirmPaymentMethodSetupRequest",
1868                len,
1869            )?;
1870        if !self.name.is_empty() {
1871            struct_ser.serialize_field("name", &self.name)?;
1872        }
1873        struct_ser.end()
1874    }
1875}
1876impl<'de> serde::Deserialize<'de> for ConfirmPaymentMethodSetupRequest {
1877    #[allow(deprecated)]
1878    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1879    where
1880        D: serde::Deserializer<'de>,
1881    {
1882        const FIELDS: &[&str] = &["name"];
1883        #[allow(clippy::enum_variant_names)]
1884        enum GeneratedField {
1885            Name,
1886            __SkipField__,
1887        }
1888        impl<'de> serde::Deserialize<'de> for GeneratedField {
1889            fn deserialize<D>(
1890                deserializer: D,
1891            ) -> std::result::Result<GeneratedField, D::Error>
1892            where
1893                D: serde::Deserializer<'de>,
1894            {
1895                struct GeneratedVisitor;
1896                impl serde::de::Visitor<'_> for GeneratedVisitor {
1897                    type Value = GeneratedField;
1898                    fn expecting(
1899                        &self,
1900                        formatter: &mut std::fmt::Formatter<'_>,
1901                    ) -> std::fmt::Result {
1902                        write!(formatter, "expected one of: {:?}", & FIELDS)
1903                    }
1904                    #[allow(unused_variables)]
1905                    fn visit_str<E>(
1906                        self,
1907                        value: &str,
1908                    ) -> std::result::Result<GeneratedField, E>
1909                    where
1910                        E: serde::de::Error,
1911                    {
1912                        match value {
1913                            "name" => Ok(GeneratedField::Name),
1914                            _ => Ok(GeneratedField::__SkipField__),
1915                        }
1916                    }
1917                }
1918                deserializer.deserialize_identifier(GeneratedVisitor)
1919            }
1920        }
1921        struct GeneratedVisitor;
1922        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1923            type Value = ConfirmPaymentMethodSetupRequest;
1924            fn expecting(
1925                &self,
1926                formatter: &mut std::fmt::Formatter<'_>,
1927            ) -> std::fmt::Result {
1928                formatter
1929                    .write_str(
1930                        "struct origincloud.billing.v1beta1.ConfirmPaymentMethodSetupRequest",
1931                    )
1932            }
1933            fn visit_map<V>(
1934                self,
1935                mut map_: V,
1936            ) -> std::result::Result<ConfirmPaymentMethodSetupRequest, V::Error>
1937            where
1938                V: serde::de::MapAccess<'de>,
1939            {
1940                let mut name__ = None;
1941                while let Some(k) = map_.next_key()? {
1942                    match k {
1943                        GeneratedField::Name => {
1944                            if name__.is_some() {
1945                                return Err(serde::de::Error::duplicate_field("name"));
1946                            }
1947                            name__ = Some(map_.next_value()?);
1948                        }
1949                        GeneratedField::__SkipField__ => {
1950                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1951                        }
1952                    }
1953                }
1954                Ok(ConfirmPaymentMethodSetupRequest {
1955                    name: name__.unwrap_or_default(),
1956                })
1957            }
1958        }
1959        deserializer
1960            .deserialize_struct(
1961                "origincloud.billing.v1beta1.ConfirmPaymentMethodSetupRequest",
1962                FIELDS,
1963                GeneratedVisitor,
1964            )
1965    }
1966}
1967impl serde::Serialize for CostBucket {
1968    #[allow(deprecated)]
1969    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1970    where
1971        S: serde::Serializer,
1972    {
1973        use serde::ser::SerializeStruct;
1974        let mut len = 0;
1975        if self.start_time.is_some() {
1976            len += 1;
1977        }
1978        if !self.amount.is_empty() {
1979            len += 1;
1980        }
1981        let mut struct_ser = serializer
1982            .serialize_struct("origincloud.billing.v1beta1.CostBucket", len)?;
1983        if let Some(v) = self.start_time.as_ref() {
1984            struct_ser.serialize_field("startTime", v)?;
1985        }
1986        if !self.amount.is_empty() {
1987            struct_ser.serialize_field("amount", &self.amount)?;
1988        }
1989        struct_ser.end()
1990    }
1991}
1992impl<'de> serde::Deserialize<'de> for CostBucket {
1993    #[allow(deprecated)]
1994    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1995    where
1996        D: serde::Deserializer<'de>,
1997    {
1998        const FIELDS: &[&str] = &["start_time", "startTime", "amount"];
1999        #[allow(clippy::enum_variant_names)]
2000        enum GeneratedField {
2001            StartTime,
2002            Amount,
2003            __SkipField__,
2004        }
2005        impl<'de> serde::Deserialize<'de> for GeneratedField {
2006            fn deserialize<D>(
2007                deserializer: D,
2008            ) -> std::result::Result<GeneratedField, D::Error>
2009            where
2010                D: serde::Deserializer<'de>,
2011            {
2012                struct GeneratedVisitor;
2013                impl serde::de::Visitor<'_> for GeneratedVisitor {
2014                    type Value = GeneratedField;
2015                    fn expecting(
2016                        &self,
2017                        formatter: &mut std::fmt::Formatter<'_>,
2018                    ) -> std::fmt::Result {
2019                        write!(formatter, "expected one of: {:?}", & FIELDS)
2020                    }
2021                    #[allow(unused_variables)]
2022                    fn visit_str<E>(
2023                        self,
2024                        value: &str,
2025                    ) -> std::result::Result<GeneratedField, E>
2026                    where
2027                        E: serde::de::Error,
2028                    {
2029                        match value {
2030                            "startTime" | "start_time" => Ok(GeneratedField::StartTime),
2031                            "amount" => Ok(GeneratedField::Amount),
2032                            _ => Ok(GeneratedField::__SkipField__),
2033                        }
2034                    }
2035                }
2036                deserializer.deserialize_identifier(GeneratedVisitor)
2037            }
2038        }
2039        struct GeneratedVisitor;
2040        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2041            type Value = CostBucket;
2042            fn expecting(
2043                &self,
2044                formatter: &mut std::fmt::Formatter<'_>,
2045            ) -> std::fmt::Result {
2046                formatter.write_str("struct origincloud.billing.v1beta1.CostBucket")
2047            }
2048            fn visit_map<V>(
2049                self,
2050                mut map_: V,
2051            ) -> std::result::Result<CostBucket, V::Error>
2052            where
2053                V: serde::de::MapAccess<'de>,
2054            {
2055                let mut start_time__ = None;
2056                let mut amount__ = None;
2057                while let Some(k) = map_.next_key()? {
2058                    match k {
2059                        GeneratedField::StartTime => {
2060                            if start_time__.is_some() {
2061                                return Err(serde::de::Error::duplicate_field("startTime"));
2062                            }
2063                            start_time__ = map_.next_value()?;
2064                        }
2065                        GeneratedField::Amount => {
2066                            if amount__.is_some() {
2067                                return Err(serde::de::Error::duplicate_field("amount"));
2068                            }
2069                            amount__ = Some(map_.next_value()?);
2070                        }
2071                        GeneratedField::__SkipField__ => {
2072                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2073                        }
2074                    }
2075                }
2076                Ok(CostBucket {
2077                    start_time: start_time__,
2078                    amount: amount__.unwrap_or_default(),
2079                })
2080            }
2081        }
2082        deserializer
2083            .deserialize_struct(
2084                "origincloud.billing.v1beta1.CostBucket",
2085                FIELDS,
2086                GeneratedVisitor,
2087            )
2088    }
2089}
2090impl serde::Serialize for CostReport {
2091    #[allow(deprecated)]
2092    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2093    where
2094        S: serde::Serializer,
2095    {
2096        use serde::ser::SerializeStruct;
2097        let mut len = 0;
2098        if !self.total.is_empty() {
2099            len += 1;
2100        }
2101        if !self.services.is_empty() {
2102            len += 1;
2103        }
2104        let mut struct_ser = serializer
2105            .serialize_struct("origincloud.billing.v1beta1.CostReport", len)?;
2106        if !self.total.is_empty() {
2107            struct_ser.serialize_field("total", &self.total)?;
2108        }
2109        if !self.services.is_empty() {
2110            struct_ser.serialize_field("services", &self.services)?;
2111        }
2112        struct_ser.end()
2113    }
2114}
2115impl<'de> serde::Deserialize<'de> for CostReport {
2116    #[allow(deprecated)]
2117    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2118    where
2119        D: serde::Deserializer<'de>,
2120    {
2121        const FIELDS: &[&str] = &["total", "services"];
2122        #[allow(clippy::enum_variant_names)]
2123        enum GeneratedField {
2124            Total,
2125            Services,
2126            __SkipField__,
2127        }
2128        impl<'de> serde::Deserialize<'de> for GeneratedField {
2129            fn deserialize<D>(
2130                deserializer: D,
2131            ) -> std::result::Result<GeneratedField, D::Error>
2132            where
2133                D: serde::Deserializer<'de>,
2134            {
2135                struct GeneratedVisitor;
2136                impl serde::de::Visitor<'_> for GeneratedVisitor {
2137                    type Value = GeneratedField;
2138                    fn expecting(
2139                        &self,
2140                        formatter: &mut std::fmt::Formatter<'_>,
2141                    ) -> std::fmt::Result {
2142                        write!(formatter, "expected one of: {:?}", & FIELDS)
2143                    }
2144                    #[allow(unused_variables)]
2145                    fn visit_str<E>(
2146                        self,
2147                        value: &str,
2148                    ) -> std::result::Result<GeneratedField, E>
2149                    where
2150                        E: serde::de::Error,
2151                    {
2152                        match value {
2153                            "total" => Ok(GeneratedField::Total),
2154                            "services" => Ok(GeneratedField::Services),
2155                            _ => Ok(GeneratedField::__SkipField__),
2156                        }
2157                    }
2158                }
2159                deserializer.deserialize_identifier(GeneratedVisitor)
2160            }
2161        }
2162        struct GeneratedVisitor;
2163        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2164            type Value = CostReport;
2165            fn expecting(
2166                &self,
2167                formatter: &mut std::fmt::Formatter<'_>,
2168            ) -> std::fmt::Result {
2169                formatter.write_str("struct origincloud.billing.v1beta1.CostReport")
2170            }
2171            fn visit_map<V>(
2172                self,
2173                mut map_: V,
2174            ) -> std::result::Result<CostReport, V::Error>
2175            where
2176                V: serde::de::MapAccess<'de>,
2177            {
2178                let mut total__ = None;
2179                let mut services__ = None;
2180                while let Some(k) = map_.next_key()? {
2181                    match k {
2182                        GeneratedField::Total => {
2183                            if total__.is_some() {
2184                                return Err(serde::de::Error::duplicate_field("total"));
2185                            }
2186                            total__ = Some(map_.next_value()?);
2187                        }
2188                        GeneratedField::Services => {
2189                            if services__.is_some() {
2190                                return Err(serde::de::Error::duplicate_field("services"));
2191                            }
2192                            services__ = Some(map_.next_value()?);
2193                        }
2194                        GeneratedField::__SkipField__ => {
2195                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2196                        }
2197                    }
2198                }
2199                Ok(CostReport {
2200                    total: total__.unwrap_or_default(),
2201                    services: services__.unwrap_or_default(),
2202                })
2203            }
2204        }
2205        deserializer
2206            .deserialize_struct(
2207                "origincloud.billing.v1beta1.CostReport",
2208                FIELDS,
2209                GeneratedVisitor,
2210            )
2211    }
2212}
2213impl serde::Serialize for CreateBillingAccountRequest {
2214    #[allow(deprecated)]
2215    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2216    where
2217        S: serde::Serializer,
2218    {
2219        use serde::ser::SerializeStruct;
2220        let mut len = 0;
2221        if !self.parent.is_empty() {
2222            len += 1;
2223        }
2224        if self.billing_account.is_some() {
2225            len += 1;
2226        }
2227        if !self.request_id.is_empty() {
2228            len += 1;
2229        }
2230        let mut struct_ser = serializer
2231            .serialize_struct(
2232                "origincloud.billing.v1beta1.CreateBillingAccountRequest",
2233                len,
2234            )?;
2235        if !self.parent.is_empty() {
2236            struct_ser.serialize_field("parent", &self.parent)?;
2237        }
2238        if let Some(v) = self.billing_account.as_ref() {
2239            struct_ser.serialize_field("billingAccount", v)?;
2240        }
2241        if !self.request_id.is_empty() {
2242            struct_ser.serialize_field("requestId", &self.request_id)?;
2243        }
2244        struct_ser.end()
2245    }
2246}
2247impl<'de> serde::Deserialize<'de> for CreateBillingAccountRequest {
2248    #[allow(deprecated)]
2249    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2250    where
2251        D: serde::Deserializer<'de>,
2252    {
2253        const FIELDS: &[&str] = &[
2254            "parent",
2255            "billing_account",
2256            "billingAccount",
2257            "request_id",
2258            "requestId",
2259        ];
2260        #[allow(clippy::enum_variant_names)]
2261        enum GeneratedField {
2262            Parent,
2263            BillingAccount,
2264            RequestId,
2265            __SkipField__,
2266        }
2267        impl<'de> serde::Deserialize<'de> for GeneratedField {
2268            fn deserialize<D>(
2269                deserializer: D,
2270            ) -> std::result::Result<GeneratedField, D::Error>
2271            where
2272                D: serde::Deserializer<'de>,
2273            {
2274                struct GeneratedVisitor;
2275                impl serde::de::Visitor<'_> for GeneratedVisitor {
2276                    type Value = GeneratedField;
2277                    fn expecting(
2278                        &self,
2279                        formatter: &mut std::fmt::Formatter<'_>,
2280                    ) -> std::fmt::Result {
2281                        write!(formatter, "expected one of: {:?}", & FIELDS)
2282                    }
2283                    #[allow(unused_variables)]
2284                    fn visit_str<E>(
2285                        self,
2286                        value: &str,
2287                    ) -> std::result::Result<GeneratedField, E>
2288                    where
2289                        E: serde::de::Error,
2290                    {
2291                        match value {
2292                            "parent" => Ok(GeneratedField::Parent),
2293                            "billingAccount" | "billing_account" => {
2294                                Ok(GeneratedField::BillingAccount)
2295                            }
2296                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
2297                            _ => Ok(GeneratedField::__SkipField__),
2298                        }
2299                    }
2300                }
2301                deserializer.deserialize_identifier(GeneratedVisitor)
2302            }
2303        }
2304        struct GeneratedVisitor;
2305        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2306            type Value = CreateBillingAccountRequest;
2307            fn expecting(
2308                &self,
2309                formatter: &mut std::fmt::Formatter<'_>,
2310            ) -> std::fmt::Result {
2311                formatter
2312                    .write_str(
2313                        "struct origincloud.billing.v1beta1.CreateBillingAccountRequest",
2314                    )
2315            }
2316            fn visit_map<V>(
2317                self,
2318                mut map_: V,
2319            ) -> std::result::Result<CreateBillingAccountRequest, V::Error>
2320            where
2321                V: serde::de::MapAccess<'de>,
2322            {
2323                let mut parent__ = None;
2324                let mut billing_account__ = None;
2325                let mut request_id__ = None;
2326                while let Some(k) = map_.next_key()? {
2327                    match k {
2328                        GeneratedField::Parent => {
2329                            if parent__.is_some() {
2330                                return Err(serde::de::Error::duplicate_field("parent"));
2331                            }
2332                            parent__ = Some(map_.next_value()?);
2333                        }
2334                        GeneratedField::BillingAccount => {
2335                            if billing_account__.is_some() {
2336                                return Err(
2337                                    serde::de::Error::duplicate_field("billingAccount"),
2338                                );
2339                            }
2340                            billing_account__ = map_.next_value()?;
2341                        }
2342                        GeneratedField::RequestId => {
2343                            if request_id__.is_some() {
2344                                return Err(serde::de::Error::duplicate_field("requestId"));
2345                            }
2346                            request_id__ = Some(map_.next_value()?);
2347                        }
2348                        GeneratedField::__SkipField__ => {
2349                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2350                        }
2351                    }
2352                }
2353                Ok(CreateBillingAccountRequest {
2354                    parent: parent__.unwrap_or_default(),
2355                    billing_account: billing_account__,
2356                    request_id: request_id__.unwrap_or_default(),
2357                })
2358            }
2359        }
2360        deserializer
2361            .deserialize_struct(
2362                "origincloud.billing.v1beta1.CreateBillingAccountRequest",
2363                FIELDS,
2364                GeneratedVisitor,
2365            )
2366    }
2367}
2368impl serde::Serialize for DeleteBillingAccountRequest {
2369    #[allow(deprecated)]
2370    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2371    where
2372        S: serde::Serializer,
2373    {
2374        use serde::ser::SerializeStruct;
2375        let mut len = 0;
2376        if !self.name.is_empty() {
2377            len += 1;
2378        }
2379        let mut struct_ser = serializer
2380            .serialize_struct(
2381                "origincloud.billing.v1beta1.DeleteBillingAccountRequest",
2382                len,
2383            )?;
2384        if !self.name.is_empty() {
2385            struct_ser.serialize_field("name", &self.name)?;
2386        }
2387        struct_ser.end()
2388    }
2389}
2390impl<'de> serde::Deserialize<'de> for DeleteBillingAccountRequest {
2391    #[allow(deprecated)]
2392    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2393    where
2394        D: serde::Deserializer<'de>,
2395    {
2396        const FIELDS: &[&str] = &["name"];
2397        #[allow(clippy::enum_variant_names)]
2398        enum GeneratedField {
2399            Name,
2400            __SkipField__,
2401        }
2402        impl<'de> serde::Deserialize<'de> for GeneratedField {
2403            fn deserialize<D>(
2404                deserializer: D,
2405            ) -> std::result::Result<GeneratedField, D::Error>
2406            where
2407                D: serde::Deserializer<'de>,
2408            {
2409                struct GeneratedVisitor;
2410                impl serde::de::Visitor<'_> for GeneratedVisitor {
2411                    type Value = GeneratedField;
2412                    fn expecting(
2413                        &self,
2414                        formatter: &mut std::fmt::Formatter<'_>,
2415                    ) -> std::fmt::Result {
2416                        write!(formatter, "expected one of: {:?}", & FIELDS)
2417                    }
2418                    #[allow(unused_variables)]
2419                    fn visit_str<E>(
2420                        self,
2421                        value: &str,
2422                    ) -> std::result::Result<GeneratedField, E>
2423                    where
2424                        E: serde::de::Error,
2425                    {
2426                        match value {
2427                            "name" => Ok(GeneratedField::Name),
2428                            _ => Ok(GeneratedField::__SkipField__),
2429                        }
2430                    }
2431                }
2432                deserializer.deserialize_identifier(GeneratedVisitor)
2433            }
2434        }
2435        struct GeneratedVisitor;
2436        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2437            type Value = DeleteBillingAccountRequest;
2438            fn expecting(
2439                &self,
2440                formatter: &mut std::fmt::Formatter<'_>,
2441            ) -> std::fmt::Result {
2442                formatter
2443                    .write_str(
2444                        "struct origincloud.billing.v1beta1.DeleteBillingAccountRequest",
2445                    )
2446            }
2447            fn visit_map<V>(
2448                self,
2449                mut map_: V,
2450            ) -> std::result::Result<DeleteBillingAccountRequest, V::Error>
2451            where
2452                V: serde::de::MapAccess<'de>,
2453            {
2454                let mut name__ = None;
2455                while let Some(k) = map_.next_key()? {
2456                    match k {
2457                        GeneratedField::Name => {
2458                            if name__.is_some() {
2459                                return Err(serde::de::Error::duplicate_field("name"));
2460                            }
2461                            name__ = Some(map_.next_value()?);
2462                        }
2463                        GeneratedField::__SkipField__ => {
2464                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2465                        }
2466                    }
2467                }
2468                Ok(DeleteBillingAccountRequest {
2469                    name: name__.unwrap_or_default(),
2470                })
2471            }
2472        }
2473        deserializer
2474            .deserialize_struct(
2475                "origincloud.billing.v1beta1.DeleteBillingAccountRequest",
2476                FIELDS,
2477                GeneratedVisitor,
2478            )
2479    }
2480}
2481impl serde::Serialize for DownloadLegalDocumentVersionRequest {
2482    #[allow(deprecated)]
2483    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2484    where
2485        S: serde::Serializer,
2486    {
2487        use serde::ser::SerializeStruct;
2488        let mut len = 0;
2489        if !self.name.is_empty() {
2490            len += 1;
2491        }
2492        let mut struct_ser = serializer
2493            .serialize_struct(
2494                "origincloud.billing.v1beta1.DownloadLegalDocumentVersionRequest",
2495                len,
2496            )?;
2497        if !self.name.is_empty() {
2498            struct_ser.serialize_field("name", &self.name)?;
2499        }
2500        struct_ser.end()
2501    }
2502}
2503impl<'de> serde::Deserialize<'de> for DownloadLegalDocumentVersionRequest {
2504    #[allow(deprecated)]
2505    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2506    where
2507        D: serde::Deserializer<'de>,
2508    {
2509        const FIELDS: &[&str] = &["name"];
2510        #[allow(clippy::enum_variant_names)]
2511        enum GeneratedField {
2512            Name,
2513            __SkipField__,
2514        }
2515        impl<'de> serde::Deserialize<'de> for GeneratedField {
2516            fn deserialize<D>(
2517                deserializer: D,
2518            ) -> std::result::Result<GeneratedField, D::Error>
2519            where
2520                D: serde::Deserializer<'de>,
2521            {
2522                struct GeneratedVisitor;
2523                impl serde::de::Visitor<'_> for GeneratedVisitor {
2524                    type Value = GeneratedField;
2525                    fn expecting(
2526                        &self,
2527                        formatter: &mut std::fmt::Formatter<'_>,
2528                    ) -> std::fmt::Result {
2529                        write!(formatter, "expected one of: {:?}", & FIELDS)
2530                    }
2531                    #[allow(unused_variables)]
2532                    fn visit_str<E>(
2533                        self,
2534                        value: &str,
2535                    ) -> std::result::Result<GeneratedField, E>
2536                    where
2537                        E: serde::de::Error,
2538                    {
2539                        match value {
2540                            "name" => Ok(GeneratedField::Name),
2541                            _ => Ok(GeneratedField::__SkipField__),
2542                        }
2543                    }
2544                }
2545                deserializer.deserialize_identifier(GeneratedVisitor)
2546            }
2547        }
2548        struct GeneratedVisitor;
2549        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2550            type Value = DownloadLegalDocumentVersionRequest;
2551            fn expecting(
2552                &self,
2553                formatter: &mut std::fmt::Formatter<'_>,
2554            ) -> std::fmt::Result {
2555                formatter
2556                    .write_str(
2557                        "struct origincloud.billing.v1beta1.DownloadLegalDocumentVersionRequest",
2558                    )
2559            }
2560            fn visit_map<V>(
2561                self,
2562                mut map_: V,
2563            ) -> std::result::Result<DownloadLegalDocumentVersionRequest, V::Error>
2564            where
2565                V: serde::de::MapAccess<'de>,
2566            {
2567                let mut name__ = None;
2568                while let Some(k) = map_.next_key()? {
2569                    match k {
2570                        GeneratedField::Name => {
2571                            if name__.is_some() {
2572                                return Err(serde::de::Error::duplicate_field("name"));
2573                            }
2574                            name__ = Some(map_.next_value()?);
2575                        }
2576                        GeneratedField::__SkipField__ => {
2577                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2578                        }
2579                    }
2580                }
2581                Ok(DownloadLegalDocumentVersionRequest {
2582                    name: name__.unwrap_or_default(),
2583                })
2584            }
2585        }
2586        deserializer
2587            .deserialize_struct(
2588                "origincloud.billing.v1beta1.DownloadLegalDocumentVersionRequest",
2589                FIELDS,
2590                GeneratedVisitor,
2591            )
2592    }
2593}
2594impl serde::Serialize for GetBillingAccountRequest {
2595    #[allow(deprecated)]
2596    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2597    where
2598        S: serde::Serializer,
2599    {
2600        use serde::ser::SerializeStruct;
2601        let mut len = 0;
2602        if !self.name.is_empty() {
2603            len += 1;
2604        }
2605        let mut struct_ser = serializer
2606            .serialize_struct(
2607                "origincloud.billing.v1beta1.GetBillingAccountRequest",
2608                len,
2609            )?;
2610        if !self.name.is_empty() {
2611            struct_ser.serialize_field("name", &self.name)?;
2612        }
2613        struct_ser.end()
2614    }
2615}
2616impl<'de> serde::Deserialize<'de> for GetBillingAccountRequest {
2617    #[allow(deprecated)]
2618    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2619    where
2620        D: serde::Deserializer<'de>,
2621    {
2622        const FIELDS: &[&str] = &["name"];
2623        #[allow(clippy::enum_variant_names)]
2624        enum GeneratedField {
2625            Name,
2626            __SkipField__,
2627        }
2628        impl<'de> serde::Deserialize<'de> for GeneratedField {
2629            fn deserialize<D>(
2630                deserializer: D,
2631            ) -> std::result::Result<GeneratedField, D::Error>
2632            where
2633                D: serde::Deserializer<'de>,
2634            {
2635                struct GeneratedVisitor;
2636                impl serde::de::Visitor<'_> for GeneratedVisitor {
2637                    type Value = GeneratedField;
2638                    fn expecting(
2639                        &self,
2640                        formatter: &mut std::fmt::Formatter<'_>,
2641                    ) -> std::fmt::Result {
2642                        write!(formatter, "expected one of: {:?}", & FIELDS)
2643                    }
2644                    #[allow(unused_variables)]
2645                    fn visit_str<E>(
2646                        self,
2647                        value: &str,
2648                    ) -> std::result::Result<GeneratedField, E>
2649                    where
2650                        E: serde::de::Error,
2651                    {
2652                        match value {
2653                            "name" => Ok(GeneratedField::Name),
2654                            _ => Ok(GeneratedField::__SkipField__),
2655                        }
2656                    }
2657                }
2658                deserializer.deserialize_identifier(GeneratedVisitor)
2659            }
2660        }
2661        struct GeneratedVisitor;
2662        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2663            type Value = GetBillingAccountRequest;
2664            fn expecting(
2665                &self,
2666                formatter: &mut std::fmt::Formatter<'_>,
2667            ) -> std::fmt::Result {
2668                formatter
2669                    .write_str(
2670                        "struct origincloud.billing.v1beta1.GetBillingAccountRequest",
2671                    )
2672            }
2673            fn visit_map<V>(
2674                self,
2675                mut map_: V,
2676            ) -> std::result::Result<GetBillingAccountRequest, V::Error>
2677            where
2678                V: serde::de::MapAccess<'de>,
2679            {
2680                let mut name__ = None;
2681                while let Some(k) = map_.next_key()? {
2682                    match k {
2683                        GeneratedField::Name => {
2684                            if name__.is_some() {
2685                                return Err(serde::de::Error::duplicate_field("name"));
2686                            }
2687                            name__ = Some(map_.next_value()?);
2688                        }
2689                        GeneratedField::__SkipField__ => {
2690                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2691                        }
2692                    }
2693                }
2694                Ok(GetBillingAccountRequest {
2695                    name: name__.unwrap_or_default(),
2696                })
2697            }
2698        }
2699        deserializer
2700            .deserialize_struct(
2701                "origincloud.billing.v1beta1.GetBillingAccountRequest",
2702                FIELDS,
2703                GeneratedVisitor,
2704            )
2705    }
2706}
2707impl serde::Serialize for GetBillingCountryRequest {
2708    #[allow(deprecated)]
2709    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2710    where
2711        S: serde::Serializer,
2712    {
2713        use serde::ser::SerializeStruct;
2714        let mut len = 0;
2715        if !self.name.is_empty() {
2716            len += 1;
2717        }
2718        let mut struct_ser = serializer
2719            .serialize_struct(
2720                "origincloud.billing.v1beta1.GetBillingCountryRequest",
2721                len,
2722            )?;
2723        if !self.name.is_empty() {
2724            struct_ser.serialize_field("name", &self.name)?;
2725        }
2726        struct_ser.end()
2727    }
2728}
2729impl<'de> serde::Deserialize<'de> for GetBillingCountryRequest {
2730    #[allow(deprecated)]
2731    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2732    where
2733        D: serde::Deserializer<'de>,
2734    {
2735        const FIELDS: &[&str] = &["name"];
2736        #[allow(clippy::enum_variant_names)]
2737        enum GeneratedField {
2738            Name,
2739            __SkipField__,
2740        }
2741        impl<'de> serde::Deserialize<'de> for GeneratedField {
2742            fn deserialize<D>(
2743                deserializer: D,
2744            ) -> std::result::Result<GeneratedField, D::Error>
2745            where
2746                D: serde::Deserializer<'de>,
2747            {
2748                struct GeneratedVisitor;
2749                impl serde::de::Visitor<'_> for GeneratedVisitor {
2750                    type Value = GeneratedField;
2751                    fn expecting(
2752                        &self,
2753                        formatter: &mut std::fmt::Formatter<'_>,
2754                    ) -> std::fmt::Result {
2755                        write!(formatter, "expected one of: {:?}", & FIELDS)
2756                    }
2757                    #[allow(unused_variables)]
2758                    fn visit_str<E>(
2759                        self,
2760                        value: &str,
2761                    ) -> std::result::Result<GeneratedField, E>
2762                    where
2763                        E: serde::de::Error,
2764                    {
2765                        match value {
2766                            "name" => Ok(GeneratedField::Name),
2767                            _ => Ok(GeneratedField::__SkipField__),
2768                        }
2769                    }
2770                }
2771                deserializer.deserialize_identifier(GeneratedVisitor)
2772            }
2773        }
2774        struct GeneratedVisitor;
2775        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2776            type Value = GetBillingCountryRequest;
2777            fn expecting(
2778                &self,
2779                formatter: &mut std::fmt::Formatter<'_>,
2780            ) -> std::fmt::Result {
2781                formatter
2782                    .write_str(
2783                        "struct origincloud.billing.v1beta1.GetBillingCountryRequest",
2784                    )
2785            }
2786            fn visit_map<V>(
2787                self,
2788                mut map_: V,
2789            ) -> std::result::Result<GetBillingCountryRequest, V::Error>
2790            where
2791                V: serde::de::MapAccess<'de>,
2792            {
2793                let mut name__ = None;
2794                while let Some(k) = map_.next_key()? {
2795                    match k {
2796                        GeneratedField::Name => {
2797                            if name__.is_some() {
2798                                return Err(serde::de::Error::duplicate_field("name"));
2799                            }
2800                            name__ = Some(map_.next_value()?);
2801                        }
2802                        GeneratedField::__SkipField__ => {
2803                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2804                        }
2805                    }
2806                }
2807                Ok(GetBillingCountryRequest {
2808                    name: name__.unwrap_or_default(),
2809                })
2810            }
2811        }
2812        deserializer
2813            .deserialize_struct(
2814                "origincloud.billing.v1beta1.GetBillingCountryRequest",
2815                FIELDS,
2816                GeneratedVisitor,
2817            )
2818    }
2819}
2820impl serde::Serialize for GetLegalAcceptanceRequest {
2821    #[allow(deprecated)]
2822    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2823    where
2824        S: serde::Serializer,
2825    {
2826        use serde::ser::SerializeStruct;
2827        let mut len = 0;
2828        if !self.name.is_empty() {
2829            len += 1;
2830        }
2831        let mut struct_ser = serializer
2832            .serialize_struct(
2833                "origincloud.billing.v1beta1.GetLegalAcceptanceRequest",
2834                len,
2835            )?;
2836        if !self.name.is_empty() {
2837            struct_ser.serialize_field("name", &self.name)?;
2838        }
2839        struct_ser.end()
2840    }
2841}
2842impl<'de> serde::Deserialize<'de> for GetLegalAcceptanceRequest {
2843    #[allow(deprecated)]
2844    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2845    where
2846        D: serde::Deserializer<'de>,
2847    {
2848        const FIELDS: &[&str] = &["name"];
2849        #[allow(clippy::enum_variant_names)]
2850        enum GeneratedField {
2851            Name,
2852            __SkipField__,
2853        }
2854        impl<'de> serde::Deserialize<'de> for GeneratedField {
2855            fn deserialize<D>(
2856                deserializer: D,
2857            ) -> std::result::Result<GeneratedField, D::Error>
2858            where
2859                D: serde::Deserializer<'de>,
2860            {
2861                struct GeneratedVisitor;
2862                impl serde::de::Visitor<'_> for GeneratedVisitor {
2863                    type Value = GeneratedField;
2864                    fn expecting(
2865                        &self,
2866                        formatter: &mut std::fmt::Formatter<'_>,
2867                    ) -> std::fmt::Result {
2868                        write!(formatter, "expected one of: {:?}", & FIELDS)
2869                    }
2870                    #[allow(unused_variables)]
2871                    fn visit_str<E>(
2872                        self,
2873                        value: &str,
2874                    ) -> std::result::Result<GeneratedField, E>
2875                    where
2876                        E: serde::de::Error,
2877                    {
2878                        match value {
2879                            "name" => Ok(GeneratedField::Name),
2880                            _ => Ok(GeneratedField::__SkipField__),
2881                        }
2882                    }
2883                }
2884                deserializer.deserialize_identifier(GeneratedVisitor)
2885            }
2886        }
2887        struct GeneratedVisitor;
2888        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2889            type Value = GetLegalAcceptanceRequest;
2890            fn expecting(
2891                &self,
2892                formatter: &mut std::fmt::Formatter<'_>,
2893            ) -> std::fmt::Result {
2894                formatter
2895                    .write_str(
2896                        "struct origincloud.billing.v1beta1.GetLegalAcceptanceRequest",
2897                    )
2898            }
2899            fn visit_map<V>(
2900                self,
2901                mut map_: V,
2902            ) -> std::result::Result<GetLegalAcceptanceRequest, V::Error>
2903            where
2904                V: serde::de::MapAccess<'de>,
2905            {
2906                let mut name__ = None;
2907                while let Some(k) = map_.next_key()? {
2908                    match k {
2909                        GeneratedField::Name => {
2910                            if name__.is_some() {
2911                                return Err(serde::de::Error::duplicate_field("name"));
2912                            }
2913                            name__ = Some(map_.next_value()?);
2914                        }
2915                        GeneratedField::__SkipField__ => {
2916                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2917                        }
2918                    }
2919                }
2920                Ok(GetLegalAcceptanceRequest {
2921                    name: name__.unwrap_or_default(),
2922                })
2923            }
2924        }
2925        deserializer
2926            .deserialize_struct(
2927                "origincloud.billing.v1beta1.GetLegalAcceptanceRequest",
2928                FIELDS,
2929                GeneratedVisitor,
2930            )
2931    }
2932}
2933impl serde::Serialize for GetLegalDocumentRequest {
2934    #[allow(deprecated)]
2935    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2936    where
2937        S: serde::Serializer,
2938    {
2939        use serde::ser::SerializeStruct;
2940        let mut len = 0;
2941        if !self.name.is_empty() {
2942            len += 1;
2943        }
2944        let mut struct_ser = serializer
2945            .serialize_struct(
2946                "origincloud.billing.v1beta1.GetLegalDocumentRequest",
2947                len,
2948            )?;
2949        if !self.name.is_empty() {
2950            struct_ser.serialize_field("name", &self.name)?;
2951        }
2952        struct_ser.end()
2953    }
2954}
2955impl<'de> serde::Deserialize<'de> for GetLegalDocumentRequest {
2956    #[allow(deprecated)]
2957    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2958    where
2959        D: serde::Deserializer<'de>,
2960    {
2961        const FIELDS: &[&str] = &["name"];
2962        #[allow(clippy::enum_variant_names)]
2963        enum GeneratedField {
2964            Name,
2965            __SkipField__,
2966        }
2967        impl<'de> serde::Deserialize<'de> for GeneratedField {
2968            fn deserialize<D>(
2969                deserializer: D,
2970            ) -> std::result::Result<GeneratedField, D::Error>
2971            where
2972                D: serde::Deserializer<'de>,
2973            {
2974                struct GeneratedVisitor;
2975                impl serde::de::Visitor<'_> for GeneratedVisitor {
2976                    type Value = GeneratedField;
2977                    fn expecting(
2978                        &self,
2979                        formatter: &mut std::fmt::Formatter<'_>,
2980                    ) -> std::fmt::Result {
2981                        write!(formatter, "expected one of: {:?}", & FIELDS)
2982                    }
2983                    #[allow(unused_variables)]
2984                    fn visit_str<E>(
2985                        self,
2986                        value: &str,
2987                    ) -> std::result::Result<GeneratedField, E>
2988                    where
2989                        E: serde::de::Error,
2990                    {
2991                        match value {
2992                            "name" => Ok(GeneratedField::Name),
2993                            _ => Ok(GeneratedField::__SkipField__),
2994                        }
2995                    }
2996                }
2997                deserializer.deserialize_identifier(GeneratedVisitor)
2998            }
2999        }
3000        struct GeneratedVisitor;
3001        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3002            type Value = GetLegalDocumentRequest;
3003            fn expecting(
3004                &self,
3005                formatter: &mut std::fmt::Formatter<'_>,
3006            ) -> std::fmt::Result {
3007                formatter
3008                    .write_str(
3009                        "struct origincloud.billing.v1beta1.GetLegalDocumentRequest",
3010                    )
3011            }
3012            fn visit_map<V>(
3013                self,
3014                mut map_: V,
3015            ) -> std::result::Result<GetLegalDocumentRequest, V::Error>
3016            where
3017                V: serde::de::MapAccess<'de>,
3018            {
3019                let mut name__ = None;
3020                while let Some(k) = map_.next_key()? {
3021                    match k {
3022                        GeneratedField::Name => {
3023                            if name__.is_some() {
3024                                return Err(serde::de::Error::duplicate_field("name"));
3025                            }
3026                            name__ = Some(map_.next_value()?);
3027                        }
3028                        GeneratedField::__SkipField__ => {
3029                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3030                        }
3031                    }
3032                }
3033                Ok(GetLegalDocumentRequest {
3034                    name: name__.unwrap_or_default(),
3035                })
3036            }
3037        }
3038        deserializer
3039            .deserialize_struct(
3040                "origincloud.billing.v1beta1.GetLegalDocumentRequest",
3041                FIELDS,
3042                GeneratedVisitor,
3043            )
3044    }
3045}
3046impl serde::Serialize for GetLegalDocumentVersionRequest {
3047    #[allow(deprecated)]
3048    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3049    where
3050        S: serde::Serializer,
3051    {
3052        use serde::ser::SerializeStruct;
3053        let mut len = 0;
3054        if !self.name.is_empty() {
3055            len += 1;
3056        }
3057        let mut struct_ser = serializer
3058            .serialize_struct(
3059                "origincloud.billing.v1beta1.GetLegalDocumentVersionRequest",
3060                len,
3061            )?;
3062        if !self.name.is_empty() {
3063            struct_ser.serialize_field("name", &self.name)?;
3064        }
3065        struct_ser.end()
3066    }
3067}
3068impl<'de> serde::Deserialize<'de> for GetLegalDocumentVersionRequest {
3069    #[allow(deprecated)]
3070    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3071    where
3072        D: serde::Deserializer<'de>,
3073    {
3074        const FIELDS: &[&str] = &["name"];
3075        #[allow(clippy::enum_variant_names)]
3076        enum GeneratedField {
3077            Name,
3078            __SkipField__,
3079        }
3080        impl<'de> serde::Deserialize<'de> for GeneratedField {
3081            fn deserialize<D>(
3082                deserializer: D,
3083            ) -> std::result::Result<GeneratedField, D::Error>
3084            where
3085                D: serde::Deserializer<'de>,
3086            {
3087                struct GeneratedVisitor;
3088                impl serde::de::Visitor<'_> for GeneratedVisitor {
3089                    type Value = GeneratedField;
3090                    fn expecting(
3091                        &self,
3092                        formatter: &mut std::fmt::Formatter<'_>,
3093                    ) -> std::fmt::Result {
3094                        write!(formatter, "expected one of: {:?}", & FIELDS)
3095                    }
3096                    #[allow(unused_variables)]
3097                    fn visit_str<E>(
3098                        self,
3099                        value: &str,
3100                    ) -> std::result::Result<GeneratedField, E>
3101                    where
3102                        E: serde::de::Error,
3103                    {
3104                        match value {
3105                            "name" => Ok(GeneratedField::Name),
3106                            _ => Ok(GeneratedField::__SkipField__),
3107                        }
3108                    }
3109                }
3110                deserializer.deserialize_identifier(GeneratedVisitor)
3111            }
3112        }
3113        struct GeneratedVisitor;
3114        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3115            type Value = GetLegalDocumentVersionRequest;
3116            fn expecting(
3117                &self,
3118                formatter: &mut std::fmt::Formatter<'_>,
3119            ) -> std::fmt::Result {
3120                formatter
3121                    .write_str(
3122                        "struct origincloud.billing.v1beta1.GetLegalDocumentVersionRequest",
3123                    )
3124            }
3125            fn visit_map<V>(
3126                self,
3127                mut map_: V,
3128            ) -> std::result::Result<GetLegalDocumentVersionRequest, V::Error>
3129            where
3130                V: serde::de::MapAccess<'de>,
3131            {
3132                let mut name__ = None;
3133                while let Some(k) = map_.next_key()? {
3134                    match k {
3135                        GeneratedField::Name => {
3136                            if name__.is_some() {
3137                                return Err(serde::de::Error::duplicate_field("name"));
3138                            }
3139                            name__ = Some(map_.next_value()?);
3140                        }
3141                        GeneratedField::__SkipField__ => {
3142                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3143                        }
3144                    }
3145                }
3146                Ok(GetLegalDocumentVersionRequest {
3147                    name: name__.unwrap_or_default(),
3148                })
3149            }
3150        }
3151        deserializer
3152            .deserialize_struct(
3153                "origincloud.billing.v1beta1.GetLegalDocumentVersionRequest",
3154                FIELDS,
3155                GeneratedVisitor,
3156            )
3157    }
3158}
3159impl serde::Serialize for GetPriceListRequest {
3160    #[allow(deprecated)]
3161    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3162    where
3163        S: serde::Serializer,
3164    {
3165        use serde::ser::SerializeStruct;
3166        let len = 0;
3167        let struct_ser = serializer
3168            .serialize_struct("origincloud.billing.v1beta1.GetPriceListRequest", len)?;
3169        struct_ser.end()
3170    }
3171}
3172impl<'de> serde::Deserialize<'de> for GetPriceListRequest {
3173    #[allow(deprecated)]
3174    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3175    where
3176        D: serde::Deserializer<'de>,
3177    {
3178        const FIELDS: &[&str] = &[];
3179        #[allow(clippy::enum_variant_names)]
3180        enum GeneratedField {
3181            __SkipField__,
3182        }
3183        impl<'de> serde::Deserialize<'de> for GeneratedField {
3184            fn deserialize<D>(
3185                deserializer: D,
3186            ) -> std::result::Result<GeneratedField, D::Error>
3187            where
3188                D: serde::Deserializer<'de>,
3189            {
3190                struct GeneratedVisitor;
3191                impl serde::de::Visitor<'_> for GeneratedVisitor {
3192                    type Value = GeneratedField;
3193                    fn expecting(
3194                        &self,
3195                        formatter: &mut std::fmt::Formatter<'_>,
3196                    ) -> std::fmt::Result {
3197                        write!(formatter, "expected one of: {:?}", & FIELDS)
3198                    }
3199                    #[allow(unused_variables)]
3200                    fn visit_str<E>(
3201                        self,
3202                        value: &str,
3203                    ) -> std::result::Result<GeneratedField, E>
3204                    where
3205                        E: serde::de::Error,
3206                    {
3207                        Ok(GeneratedField::__SkipField__)
3208                    }
3209                }
3210                deserializer.deserialize_identifier(GeneratedVisitor)
3211            }
3212        }
3213        struct GeneratedVisitor;
3214        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3215            type Value = GetPriceListRequest;
3216            fn expecting(
3217                &self,
3218                formatter: &mut std::fmt::Formatter<'_>,
3219            ) -> std::fmt::Result {
3220                formatter
3221                    .write_str("struct origincloud.billing.v1beta1.GetPriceListRequest")
3222            }
3223            fn visit_map<V>(
3224                self,
3225                mut map_: V,
3226            ) -> std::result::Result<GetPriceListRequest, V::Error>
3227            where
3228                V: serde::de::MapAccess<'de>,
3229            {
3230                while map_.next_key::<GeneratedField>()?.is_some() {
3231                    let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3232                }
3233                Ok(GetPriceListRequest {})
3234            }
3235        }
3236        deserializer
3237            .deserialize_struct(
3238                "origincloud.billing.v1beta1.GetPriceListRequest",
3239                FIELDS,
3240                GeneratedVisitor,
3241            )
3242    }
3243}
3244impl serde::Serialize for GetProjectBillingInfoRequest {
3245    #[allow(deprecated)]
3246    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3247    where
3248        S: serde::Serializer,
3249    {
3250        use serde::ser::SerializeStruct;
3251        let mut len = 0;
3252        if !self.name.is_empty() {
3253            len += 1;
3254        }
3255        let mut struct_ser = serializer
3256            .serialize_struct(
3257                "origincloud.billing.v1beta1.GetProjectBillingInfoRequest",
3258                len,
3259            )?;
3260        if !self.name.is_empty() {
3261            struct_ser.serialize_field("name", &self.name)?;
3262        }
3263        struct_ser.end()
3264    }
3265}
3266impl<'de> serde::Deserialize<'de> for GetProjectBillingInfoRequest {
3267    #[allow(deprecated)]
3268    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3269    where
3270        D: serde::Deserializer<'de>,
3271    {
3272        const FIELDS: &[&str] = &["name"];
3273        #[allow(clippy::enum_variant_names)]
3274        enum GeneratedField {
3275            Name,
3276            __SkipField__,
3277        }
3278        impl<'de> serde::Deserialize<'de> for GeneratedField {
3279            fn deserialize<D>(
3280                deserializer: D,
3281            ) -> std::result::Result<GeneratedField, D::Error>
3282            where
3283                D: serde::Deserializer<'de>,
3284            {
3285                struct GeneratedVisitor;
3286                impl serde::de::Visitor<'_> for GeneratedVisitor {
3287                    type Value = GeneratedField;
3288                    fn expecting(
3289                        &self,
3290                        formatter: &mut std::fmt::Formatter<'_>,
3291                    ) -> std::fmt::Result {
3292                        write!(formatter, "expected one of: {:?}", & FIELDS)
3293                    }
3294                    #[allow(unused_variables)]
3295                    fn visit_str<E>(
3296                        self,
3297                        value: &str,
3298                    ) -> std::result::Result<GeneratedField, E>
3299                    where
3300                        E: serde::de::Error,
3301                    {
3302                        match value {
3303                            "name" => Ok(GeneratedField::Name),
3304                            _ => Ok(GeneratedField::__SkipField__),
3305                        }
3306                    }
3307                }
3308                deserializer.deserialize_identifier(GeneratedVisitor)
3309            }
3310        }
3311        struct GeneratedVisitor;
3312        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3313            type Value = GetProjectBillingInfoRequest;
3314            fn expecting(
3315                &self,
3316                formatter: &mut std::fmt::Formatter<'_>,
3317            ) -> std::fmt::Result {
3318                formatter
3319                    .write_str(
3320                        "struct origincloud.billing.v1beta1.GetProjectBillingInfoRequest",
3321                    )
3322            }
3323            fn visit_map<V>(
3324                self,
3325                mut map_: V,
3326            ) -> std::result::Result<GetProjectBillingInfoRequest, V::Error>
3327            where
3328                V: serde::de::MapAccess<'de>,
3329            {
3330                let mut name__ = None;
3331                while let Some(k) = map_.next_key()? {
3332                    match k {
3333                        GeneratedField::Name => {
3334                            if name__.is_some() {
3335                                return Err(serde::de::Error::duplicate_field("name"));
3336                            }
3337                            name__ = Some(map_.next_value()?);
3338                        }
3339                        GeneratedField::__SkipField__ => {
3340                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3341                        }
3342                    }
3343                }
3344                Ok(GetProjectBillingInfoRequest {
3345                    name: name__.unwrap_or_default(),
3346                })
3347            }
3348        }
3349        deserializer
3350            .deserialize_struct(
3351                "origincloud.billing.v1beta1.GetProjectBillingInfoRequest",
3352                FIELDS,
3353                GeneratedVisitor,
3354            )
3355    }
3356}
3357impl serde::Serialize for GetSpendLimitRequest {
3358    #[allow(deprecated)]
3359    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3360    where
3361        S: serde::Serializer,
3362    {
3363        use serde::ser::SerializeStruct;
3364        let mut len = 0;
3365        if !self.name.is_empty() {
3366            len += 1;
3367        }
3368        let mut struct_ser = serializer
3369            .serialize_struct("origincloud.billing.v1beta1.GetSpendLimitRequest", len)?;
3370        if !self.name.is_empty() {
3371            struct_ser.serialize_field("name", &self.name)?;
3372        }
3373        struct_ser.end()
3374    }
3375}
3376impl<'de> serde::Deserialize<'de> for GetSpendLimitRequest {
3377    #[allow(deprecated)]
3378    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3379    where
3380        D: serde::Deserializer<'de>,
3381    {
3382        const FIELDS: &[&str] = &["name"];
3383        #[allow(clippy::enum_variant_names)]
3384        enum GeneratedField {
3385            Name,
3386            __SkipField__,
3387        }
3388        impl<'de> serde::Deserialize<'de> for GeneratedField {
3389            fn deserialize<D>(
3390                deserializer: D,
3391            ) -> std::result::Result<GeneratedField, D::Error>
3392            where
3393                D: serde::Deserializer<'de>,
3394            {
3395                struct GeneratedVisitor;
3396                impl serde::de::Visitor<'_> for GeneratedVisitor {
3397                    type Value = GeneratedField;
3398                    fn expecting(
3399                        &self,
3400                        formatter: &mut std::fmt::Formatter<'_>,
3401                    ) -> std::fmt::Result {
3402                        write!(formatter, "expected one of: {:?}", & FIELDS)
3403                    }
3404                    #[allow(unused_variables)]
3405                    fn visit_str<E>(
3406                        self,
3407                        value: &str,
3408                    ) -> std::result::Result<GeneratedField, E>
3409                    where
3410                        E: serde::de::Error,
3411                    {
3412                        match value {
3413                            "name" => Ok(GeneratedField::Name),
3414                            _ => Ok(GeneratedField::__SkipField__),
3415                        }
3416                    }
3417                }
3418                deserializer.deserialize_identifier(GeneratedVisitor)
3419            }
3420        }
3421        struct GeneratedVisitor;
3422        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3423            type Value = GetSpendLimitRequest;
3424            fn expecting(
3425                &self,
3426                formatter: &mut std::fmt::Formatter<'_>,
3427            ) -> std::fmt::Result {
3428                formatter
3429                    .write_str("struct origincloud.billing.v1beta1.GetSpendLimitRequest")
3430            }
3431            fn visit_map<V>(
3432                self,
3433                mut map_: V,
3434            ) -> std::result::Result<GetSpendLimitRequest, V::Error>
3435            where
3436                V: serde::de::MapAccess<'de>,
3437            {
3438                let mut name__ = None;
3439                while let Some(k) = map_.next_key()? {
3440                    match k {
3441                        GeneratedField::Name => {
3442                            if name__.is_some() {
3443                                return Err(serde::de::Error::duplicate_field("name"));
3444                            }
3445                            name__ = Some(map_.next_value()?);
3446                        }
3447                        GeneratedField::__SkipField__ => {
3448                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3449                        }
3450                    }
3451                }
3452                Ok(GetSpendLimitRequest {
3453                    name: name__.unwrap_or_default(),
3454                })
3455            }
3456        }
3457        deserializer
3458            .deserialize_struct(
3459                "origincloud.billing.v1beta1.GetSpendLimitRequest",
3460                FIELDS,
3461                GeneratedVisitor,
3462            )
3463    }
3464}
3465impl serde::Serialize for Granularity {
3466    #[allow(deprecated)]
3467    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3468    where
3469        S: serde::Serializer,
3470    {
3471        let variant = match self {
3472            Self::Unspecified => "GRANULARITY_UNSPECIFIED",
3473            Self::Hourly => "HOURLY",
3474            Self::Daily => "DAILY",
3475        };
3476        serializer.serialize_str(variant)
3477    }
3478}
3479impl<'de> serde::Deserialize<'de> for Granularity {
3480    #[allow(deprecated)]
3481    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3482    where
3483        D: serde::Deserializer<'de>,
3484    {
3485        const FIELDS: &[&str] = &["GRANULARITY_UNSPECIFIED", "HOURLY", "DAILY"];
3486        struct GeneratedVisitor;
3487        impl serde::de::Visitor<'_> for GeneratedVisitor {
3488            type Value = Granularity;
3489            fn expecting(
3490                &self,
3491                formatter: &mut std::fmt::Formatter<'_>,
3492            ) -> std::fmt::Result {
3493                write!(formatter, "expected one of: {:?}", & FIELDS)
3494            }
3495            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
3496            where
3497                E: serde::de::Error,
3498            {
3499                i32::try_from(v)
3500                    .ok()
3501                    .and_then(|x| {
3502                        x.try_into().ok().or_else(|| Some(Granularity::default()))
3503                    })
3504                    .ok_or_else(|| {
3505                        serde::de::Error::invalid_value(
3506                            serde::de::Unexpected::Signed(v),
3507                            &self,
3508                        )
3509                    })
3510            }
3511            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
3512            where
3513                E: serde::de::Error,
3514            {
3515                i32::try_from(v)
3516                    .ok()
3517                    .and_then(|x| {
3518                        x.try_into().ok().or_else(|| Some(Granularity::default()))
3519                    })
3520                    .ok_or_else(|| {
3521                        serde::de::Error::invalid_value(
3522                            serde::de::Unexpected::Unsigned(v),
3523                            &self,
3524                        )
3525                    })
3526            }
3527            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3528            where
3529                E: serde::de::Error,
3530            {
3531                match value {
3532                    "GRANULARITY_UNSPECIFIED" => Ok(Granularity::Unspecified),
3533                    "HOURLY" => Ok(Granularity::Hourly),
3534                    "DAILY" => Ok(Granularity::Daily),
3535                    _ => Ok(Granularity::default()),
3536                }
3537            }
3538        }
3539        deserializer.deserialize_any(GeneratedVisitor)
3540    }
3541}
3542impl serde::Serialize for LegalAcceptance {
3543    #[allow(deprecated)]
3544    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3545    where
3546        S: serde::Serializer,
3547    {
3548        use serde::ser::SerializeStruct;
3549        let mut len = 0;
3550        if !self.name.is_empty() {
3551            len += 1;
3552        }
3553        if !self.legal_document_version.is_empty() {
3554            len += 1;
3555        }
3556        if !self.sha256.is_empty() {
3557            len += 1;
3558        }
3559        if !self.accepter.is_empty() {
3560            len += 1;
3561        }
3562        if self.accept_time.is_some() {
3563            len += 1;
3564        }
3565        if self.method != 0 {
3566            len += 1;
3567        }
3568        if self.acts_as_business {
3569            len += 1;
3570        }
3571        if !self.organization_display_name.is_empty() {
3572            len += 1;
3573        }
3574        if self.billing_address.is_some() {
3575            len += 1;
3576        }
3577        if !self.vat_id.is_empty() {
3578            len += 1;
3579        }
3580        let mut struct_ser = serializer
3581            .serialize_struct("origincloud.billing.v1beta1.LegalAcceptance", len)?;
3582        if !self.name.is_empty() {
3583            struct_ser.serialize_field("name", &self.name)?;
3584        }
3585        if !self.legal_document_version.is_empty() {
3586            struct_ser
3587                .serialize_field("legalDocumentVersion", &self.legal_document_version)?;
3588        }
3589        if !self.sha256.is_empty() {
3590            struct_ser.serialize_field("sha256", &self.sha256)?;
3591        }
3592        if !self.accepter.is_empty() {
3593            struct_ser.serialize_field("accepter", &self.accepter)?;
3594        }
3595        if let Some(v) = self.accept_time.as_ref() {
3596            struct_ser.serialize_field("acceptTime", v)?;
3597        }
3598        if self.method != 0 {
3599            let v = legal_acceptance::Method::try_from(self.method)
3600                .map_err(|_| serde::ser::Error::custom(
3601                    format!("Invalid variant {}", self.method),
3602                ))?;
3603            struct_ser.serialize_field("method", &v)?;
3604        }
3605        if self.acts_as_business {
3606            struct_ser.serialize_field("actsAsBusiness", &self.acts_as_business)?;
3607        }
3608        if !self.organization_display_name.is_empty() {
3609            struct_ser
3610                .serialize_field(
3611                    "organizationDisplayName",
3612                    &self.organization_display_name,
3613                )?;
3614        }
3615        if let Some(v) = self.billing_address.as_ref() {
3616            struct_ser.serialize_field("billingAddress", v)?;
3617        }
3618        if !self.vat_id.is_empty() {
3619            struct_ser.serialize_field("vatId", &self.vat_id)?;
3620        }
3621        struct_ser.end()
3622    }
3623}
3624impl<'de> serde::Deserialize<'de> for LegalAcceptance {
3625    #[allow(deprecated)]
3626    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3627    where
3628        D: serde::Deserializer<'de>,
3629    {
3630        const FIELDS: &[&str] = &[
3631            "name",
3632            "legal_document_version",
3633            "legalDocumentVersion",
3634            "sha256",
3635            "accepter",
3636            "accept_time",
3637            "acceptTime",
3638            "method",
3639            "acts_as_business",
3640            "actsAsBusiness",
3641            "organization_display_name",
3642            "organizationDisplayName",
3643            "billing_address",
3644            "billingAddress",
3645            "vat_id",
3646            "vatId",
3647        ];
3648        #[allow(clippy::enum_variant_names)]
3649        enum GeneratedField {
3650            Name,
3651            LegalDocumentVersion,
3652            Sha256,
3653            Accepter,
3654            AcceptTime,
3655            Method,
3656            ActsAsBusiness,
3657            OrganizationDisplayName,
3658            BillingAddress,
3659            VatId,
3660            __SkipField__,
3661        }
3662        impl<'de> serde::Deserialize<'de> for GeneratedField {
3663            fn deserialize<D>(
3664                deserializer: D,
3665            ) -> std::result::Result<GeneratedField, D::Error>
3666            where
3667                D: serde::Deserializer<'de>,
3668            {
3669                struct GeneratedVisitor;
3670                impl serde::de::Visitor<'_> for GeneratedVisitor {
3671                    type Value = GeneratedField;
3672                    fn expecting(
3673                        &self,
3674                        formatter: &mut std::fmt::Formatter<'_>,
3675                    ) -> std::fmt::Result {
3676                        write!(formatter, "expected one of: {:?}", & FIELDS)
3677                    }
3678                    #[allow(unused_variables)]
3679                    fn visit_str<E>(
3680                        self,
3681                        value: &str,
3682                    ) -> std::result::Result<GeneratedField, E>
3683                    where
3684                        E: serde::de::Error,
3685                    {
3686                        match value {
3687                            "name" => Ok(GeneratedField::Name),
3688                            "legalDocumentVersion" | "legal_document_version" => {
3689                                Ok(GeneratedField::LegalDocumentVersion)
3690                            }
3691                            "sha256" => Ok(GeneratedField::Sha256),
3692                            "accepter" => Ok(GeneratedField::Accepter),
3693                            "acceptTime" | "accept_time" => {
3694                                Ok(GeneratedField::AcceptTime)
3695                            }
3696                            "method" => Ok(GeneratedField::Method),
3697                            "actsAsBusiness" | "acts_as_business" => {
3698                                Ok(GeneratedField::ActsAsBusiness)
3699                            }
3700                            "organizationDisplayName" | "organization_display_name" => {
3701                                Ok(GeneratedField::OrganizationDisplayName)
3702                            }
3703                            "billingAddress" | "billing_address" => {
3704                                Ok(GeneratedField::BillingAddress)
3705                            }
3706                            "vatId" | "vat_id" => Ok(GeneratedField::VatId),
3707                            _ => Ok(GeneratedField::__SkipField__),
3708                        }
3709                    }
3710                }
3711                deserializer.deserialize_identifier(GeneratedVisitor)
3712            }
3713        }
3714        struct GeneratedVisitor;
3715        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3716            type Value = LegalAcceptance;
3717            fn expecting(
3718                &self,
3719                formatter: &mut std::fmt::Formatter<'_>,
3720            ) -> std::fmt::Result {
3721                formatter.write_str("struct origincloud.billing.v1beta1.LegalAcceptance")
3722            }
3723            fn visit_map<V>(
3724                self,
3725                mut map_: V,
3726            ) -> std::result::Result<LegalAcceptance, V::Error>
3727            where
3728                V: serde::de::MapAccess<'de>,
3729            {
3730                let mut name__ = None;
3731                let mut legal_document_version__ = None;
3732                let mut sha256__ = None;
3733                let mut accepter__ = None;
3734                let mut accept_time__ = None;
3735                let mut method__ = None;
3736                let mut acts_as_business__ = None;
3737                let mut organization_display_name__ = None;
3738                let mut billing_address__ = None;
3739                let mut vat_id__ = None;
3740                while let Some(k) = map_.next_key()? {
3741                    match k {
3742                        GeneratedField::Name => {
3743                            if name__.is_some() {
3744                                return Err(serde::de::Error::duplicate_field("name"));
3745                            }
3746                            name__ = Some(map_.next_value()?);
3747                        }
3748                        GeneratedField::LegalDocumentVersion => {
3749                            if legal_document_version__.is_some() {
3750                                return Err(
3751                                    serde::de::Error::duplicate_field("legalDocumentVersion"),
3752                                );
3753                            }
3754                            legal_document_version__ = Some(map_.next_value()?);
3755                        }
3756                        GeneratedField::Sha256 => {
3757                            if sha256__.is_some() {
3758                                return Err(serde::de::Error::duplicate_field("sha256"));
3759                            }
3760                            sha256__ = Some(map_.next_value()?);
3761                        }
3762                        GeneratedField::Accepter => {
3763                            if accepter__.is_some() {
3764                                return Err(serde::de::Error::duplicate_field("accepter"));
3765                            }
3766                            accepter__ = Some(map_.next_value()?);
3767                        }
3768                        GeneratedField::AcceptTime => {
3769                            if accept_time__.is_some() {
3770                                return Err(serde::de::Error::duplicate_field("acceptTime"));
3771                            }
3772                            accept_time__ = map_.next_value()?;
3773                        }
3774                        GeneratedField::Method => {
3775                            if method__.is_some() {
3776                                return Err(serde::de::Error::duplicate_field("method"));
3777                            }
3778                            method__ = Some(
3779                                map_.next_value::<legal_acceptance::Method>()? as i32,
3780                            );
3781                        }
3782                        GeneratedField::ActsAsBusiness => {
3783                            if acts_as_business__.is_some() {
3784                                return Err(
3785                                    serde::de::Error::duplicate_field("actsAsBusiness"),
3786                                );
3787                            }
3788                            acts_as_business__ = Some(map_.next_value()?);
3789                        }
3790                        GeneratedField::OrganizationDisplayName => {
3791                            if organization_display_name__.is_some() {
3792                                return Err(
3793                                    serde::de::Error::duplicate_field("organizationDisplayName"),
3794                                );
3795                            }
3796                            organization_display_name__ = Some(map_.next_value()?);
3797                        }
3798                        GeneratedField::BillingAddress => {
3799                            if billing_address__.is_some() {
3800                                return Err(
3801                                    serde::de::Error::duplicate_field("billingAddress"),
3802                                );
3803                            }
3804                            billing_address__ = map_.next_value()?;
3805                        }
3806                        GeneratedField::VatId => {
3807                            if vat_id__.is_some() {
3808                                return Err(serde::de::Error::duplicate_field("vatId"));
3809                            }
3810                            vat_id__ = Some(map_.next_value()?);
3811                        }
3812                        GeneratedField::__SkipField__ => {
3813                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3814                        }
3815                    }
3816                }
3817                Ok(LegalAcceptance {
3818                    name: name__.unwrap_or_default(),
3819                    legal_document_version: legal_document_version__.unwrap_or_default(),
3820                    sha256: sha256__.unwrap_or_default(),
3821                    accepter: accepter__.unwrap_or_default(),
3822                    accept_time: accept_time__,
3823                    method: method__.unwrap_or_default(),
3824                    acts_as_business: acts_as_business__.unwrap_or_default(),
3825                    organization_display_name: organization_display_name__
3826                        .unwrap_or_default(),
3827                    billing_address: billing_address__,
3828                    vat_id: vat_id__.unwrap_or_default(),
3829                })
3830            }
3831        }
3832        deserializer
3833            .deserialize_struct(
3834                "origincloud.billing.v1beta1.LegalAcceptance",
3835                FIELDS,
3836                GeneratedVisitor,
3837            )
3838    }
3839}
3840impl serde::Serialize for legal_acceptance::Method {
3841    #[allow(deprecated)]
3842    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3843    where
3844        S: serde::Serializer,
3845    {
3846        let variant = match self {
3847            Self::Unspecified => "METHOD_UNSPECIFIED",
3848            Self::Signup => "SIGNUP",
3849            Self::Change => "CHANGE",
3850            Self::Migration => "MIGRATION",
3851        };
3852        serializer.serialize_str(variant)
3853    }
3854}
3855impl<'de> serde::Deserialize<'de> for legal_acceptance::Method {
3856    #[allow(deprecated)]
3857    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3858    where
3859        D: serde::Deserializer<'de>,
3860    {
3861        const FIELDS: &[&str] = &["METHOD_UNSPECIFIED", "SIGNUP", "CHANGE", "MIGRATION"];
3862        struct GeneratedVisitor;
3863        impl serde::de::Visitor<'_> for GeneratedVisitor {
3864            type Value = legal_acceptance::Method;
3865            fn expecting(
3866                &self,
3867                formatter: &mut std::fmt::Formatter<'_>,
3868            ) -> std::fmt::Result {
3869                write!(formatter, "expected one of: {:?}", & FIELDS)
3870            }
3871            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
3872            where
3873                E: serde::de::Error,
3874            {
3875                i32::try_from(v)
3876                    .ok()
3877                    .and_then(|x| {
3878                        x
3879                            .try_into()
3880                            .ok()
3881                            .or_else(|| Some(legal_acceptance::Method::default()))
3882                    })
3883                    .ok_or_else(|| {
3884                        serde::de::Error::invalid_value(
3885                            serde::de::Unexpected::Signed(v),
3886                            &self,
3887                        )
3888                    })
3889            }
3890            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
3891            where
3892                E: serde::de::Error,
3893            {
3894                i32::try_from(v)
3895                    .ok()
3896                    .and_then(|x| {
3897                        x
3898                            .try_into()
3899                            .ok()
3900                            .or_else(|| Some(legal_acceptance::Method::default()))
3901                    })
3902                    .ok_or_else(|| {
3903                        serde::de::Error::invalid_value(
3904                            serde::de::Unexpected::Unsigned(v),
3905                            &self,
3906                        )
3907                    })
3908            }
3909            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3910            where
3911                E: serde::de::Error,
3912            {
3913                match value {
3914                    "METHOD_UNSPECIFIED" => Ok(legal_acceptance::Method::Unspecified),
3915                    "SIGNUP" => Ok(legal_acceptance::Method::Signup),
3916                    "CHANGE" => Ok(legal_acceptance::Method::Change),
3917                    "MIGRATION" => Ok(legal_acceptance::Method::Migration),
3918                    _ => Ok(legal_acceptance::Method::default()),
3919                }
3920            }
3921        }
3922        deserializer.deserialize_any(GeneratedVisitor)
3923    }
3924}
3925impl serde::Serialize for LegalDocument {
3926    #[allow(deprecated)]
3927    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3928    where
3929        S: serde::Serializer,
3930    {
3931        use serde::ser::SerializeStruct;
3932        let mut len = 0;
3933        if !self.name.is_empty() {
3934            len += 1;
3935        }
3936        if !self.display_name.is_empty() {
3937            len += 1;
3938        }
3939        if self.acceptance_required {
3940            len += 1;
3941        }
3942        if !self.current_version.is_empty() {
3943            len += 1;
3944        }
3945        if !self.latest_version.is_empty() {
3946            len += 1;
3947        }
3948        let mut struct_ser = serializer
3949            .serialize_struct("origincloud.billing.v1beta1.LegalDocument", len)?;
3950        if !self.name.is_empty() {
3951            struct_ser.serialize_field("name", &self.name)?;
3952        }
3953        if !self.display_name.is_empty() {
3954            struct_ser.serialize_field("displayName", &self.display_name)?;
3955        }
3956        if self.acceptance_required {
3957            struct_ser.serialize_field("acceptanceRequired", &self.acceptance_required)?;
3958        }
3959        if !self.current_version.is_empty() {
3960            struct_ser.serialize_field("currentVersion", &self.current_version)?;
3961        }
3962        if !self.latest_version.is_empty() {
3963            struct_ser.serialize_field("latestVersion", &self.latest_version)?;
3964        }
3965        struct_ser.end()
3966    }
3967}
3968impl<'de> serde::Deserialize<'de> for LegalDocument {
3969    #[allow(deprecated)]
3970    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3971    where
3972        D: serde::Deserializer<'de>,
3973    {
3974        const FIELDS: &[&str] = &[
3975            "name",
3976            "display_name",
3977            "displayName",
3978            "acceptance_required",
3979            "acceptanceRequired",
3980            "current_version",
3981            "currentVersion",
3982            "latest_version",
3983            "latestVersion",
3984        ];
3985        #[allow(clippy::enum_variant_names)]
3986        enum GeneratedField {
3987            Name,
3988            DisplayName,
3989            AcceptanceRequired,
3990            CurrentVersion,
3991            LatestVersion,
3992            __SkipField__,
3993        }
3994        impl<'de> serde::Deserialize<'de> for GeneratedField {
3995            fn deserialize<D>(
3996                deserializer: D,
3997            ) -> std::result::Result<GeneratedField, D::Error>
3998            where
3999                D: serde::Deserializer<'de>,
4000            {
4001                struct GeneratedVisitor;
4002                impl serde::de::Visitor<'_> for GeneratedVisitor {
4003                    type Value = GeneratedField;
4004                    fn expecting(
4005                        &self,
4006                        formatter: &mut std::fmt::Formatter<'_>,
4007                    ) -> std::fmt::Result {
4008                        write!(formatter, "expected one of: {:?}", & FIELDS)
4009                    }
4010                    #[allow(unused_variables)]
4011                    fn visit_str<E>(
4012                        self,
4013                        value: &str,
4014                    ) -> std::result::Result<GeneratedField, E>
4015                    where
4016                        E: serde::de::Error,
4017                    {
4018                        match value {
4019                            "name" => Ok(GeneratedField::Name),
4020                            "displayName" | "display_name" => {
4021                                Ok(GeneratedField::DisplayName)
4022                            }
4023                            "acceptanceRequired" | "acceptance_required" => {
4024                                Ok(GeneratedField::AcceptanceRequired)
4025                            }
4026                            "currentVersion" | "current_version" => {
4027                                Ok(GeneratedField::CurrentVersion)
4028                            }
4029                            "latestVersion" | "latest_version" => {
4030                                Ok(GeneratedField::LatestVersion)
4031                            }
4032                            _ => Ok(GeneratedField::__SkipField__),
4033                        }
4034                    }
4035                }
4036                deserializer.deserialize_identifier(GeneratedVisitor)
4037            }
4038        }
4039        struct GeneratedVisitor;
4040        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4041            type Value = LegalDocument;
4042            fn expecting(
4043                &self,
4044                formatter: &mut std::fmt::Formatter<'_>,
4045            ) -> std::fmt::Result {
4046                formatter.write_str("struct origincloud.billing.v1beta1.LegalDocument")
4047            }
4048            fn visit_map<V>(
4049                self,
4050                mut map_: V,
4051            ) -> std::result::Result<LegalDocument, V::Error>
4052            where
4053                V: serde::de::MapAccess<'de>,
4054            {
4055                let mut name__ = None;
4056                let mut display_name__ = None;
4057                let mut acceptance_required__ = None;
4058                let mut current_version__ = None;
4059                let mut latest_version__ = None;
4060                while let Some(k) = map_.next_key()? {
4061                    match k {
4062                        GeneratedField::Name => {
4063                            if name__.is_some() {
4064                                return Err(serde::de::Error::duplicate_field("name"));
4065                            }
4066                            name__ = Some(map_.next_value()?);
4067                        }
4068                        GeneratedField::DisplayName => {
4069                            if display_name__.is_some() {
4070                                return Err(
4071                                    serde::de::Error::duplicate_field("displayName"),
4072                                );
4073                            }
4074                            display_name__ = Some(map_.next_value()?);
4075                        }
4076                        GeneratedField::AcceptanceRequired => {
4077                            if acceptance_required__.is_some() {
4078                                return Err(
4079                                    serde::de::Error::duplicate_field("acceptanceRequired"),
4080                                );
4081                            }
4082                            acceptance_required__ = Some(map_.next_value()?);
4083                        }
4084                        GeneratedField::CurrentVersion => {
4085                            if current_version__.is_some() {
4086                                return Err(
4087                                    serde::de::Error::duplicate_field("currentVersion"),
4088                                );
4089                            }
4090                            current_version__ = Some(map_.next_value()?);
4091                        }
4092                        GeneratedField::LatestVersion => {
4093                            if latest_version__.is_some() {
4094                                return Err(
4095                                    serde::de::Error::duplicate_field("latestVersion"),
4096                                );
4097                            }
4098                            latest_version__ = Some(map_.next_value()?);
4099                        }
4100                        GeneratedField::__SkipField__ => {
4101                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4102                        }
4103                    }
4104                }
4105                Ok(LegalDocument {
4106                    name: name__.unwrap_or_default(),
4107                    display_name: display_name__.unwrap_or_default(),
4108                    acceptance_required: acceptance_required__.unwrap_or_default(),
4109                    current_version: current_version__.unwrap_or_default(),
4110                    latest_version: latest_version__.unwrap_or_default(),
4111                })
4112            }
4113        }
4114        deserializer
4115            .deserialize_struct(
4116                "origincloud.billing.v1beta1.LegalDocument",
4117                FIELDS,
4118                GeneratedVisitor,
4119            )
4120    }
4121}
4122impl serde::Serialize for LegalDocumentVersion {
4123    #[allow(deprecated)]
4124    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4125    where
4126        S: serde::Serializer,
4127    {
4128        use serde::ser::SerializeStruct;
4129        let mut len = 0;
4130        if !self.name.is_empty() {
4131            len += 1;
4132        }
4133        if !self.display_name.is_empty() {
4134            len += 1;
4135        }
4136        if self.effective_date.is_some() {
4137            len += 1;
4138        }
4139        if self.change_class != 0 {
4140            len += 1;
4141        }
4142        if !self.change_summary.is_empty() {
4143            len += 1;
4144        }
4145        if !self.sha256.is_empty() {
4146            len += 1;
4147        }
4148        if !self.markdown.is_empty() {
4149            len += 1;
4150        }
4151        if !self.html.is_empty() {
4152            len += 1;
4153        }
4154        if !self.uri.is_empty() {
4155            len += 1;
4156        }
4157        if !self.pdf_uri.is_empty() {
4158            len += 1;
4159        }
4160        let mut struct_ser = serializer
4161            .serialize_struct("origincloud.billing.v1beta1.LegalDocumentVersion", len)?;
4162        if !self.name.is_empty() {
4163            struct_ser.serialize_field("name", &self.name)?;
4164        }
4165        if !self.display_name.is_empty() {
4166            struct_ser.serialize_field("displayName", &self.display_name)?;
4167        }
4168        if let Some(v) = self.effective_date.as_ref() {
4169            struct_ser.serialize_field("effectiveDate", v)?;
4170        }
4171        if self.change_class != 0 {
4172            let v = legal_document_version::ChangeClass::try_from(self.change_class)
4173                .map_err(|_| serde::ser::Error::custom(
4174                    format!("Invalid variant {}", self.change_class),
4175                ))?;
4176            struct_ser.serialize_field("changeClass", &v)?;
4177        }
4178        if !self.change_summary.is_empty() {
4179            struct_ser.serialize_field("changeSummary", &self.change_summary)?;
4180        }
4181        if !self.sha256.is_empty() {
4182            struct_ser.serialize_field("sha256", &self.sha256)?;
4183        }
4184        if !self.markdown.is_empty() {
4185            struct_ser.serialize_field("markdown", &self.markdown)?;
4186        }
4187        if !self.html.is_empty() {
4188            struct_ser.serialize_field("html", &self.html)?;
4189        }
4190        if !self.uri.is_empty() {
4191            struct_ser.serialize_field("uri", &self.uri)?;
4192        }
4193        if !self.pdf_uri.is_empty() {
4194            struct_ser.serialize_field("pdfUri", &self.pdf_uri)?;
4195        }
4196        struct_ser.end()
4197    }
4198}
4199impl<'de> serde::Deserialize<'de> for LegalDocumentVersion {
4200    #[allow(deprecated)]
4201    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4202    where
4203        D: serde::Deserializer<'de>,
4204    {
4205        const FIELDS: &[&str] = &[
4206            "name",
4207            "display_name",
4208            "displayName",
4209            "effective_date",
4210            "effectiveDate",
4211            "change_class",
4212            "changeClass",
4213            "change_summary",
4214            "changeSummary",
4215            "sha256",
4216            "markdown",
4217            "html",
4218            "uri",
4219            "pdf_uri",
4220            "pdfUri",
4221        ];
4222        #[allow(clippy::enum_variant_names)]
4223        enum GeneratedField {
4224            Name,
4225            DisplayName,
4226            EffectiveDate,
4227            ChangeClass,
4228            ChangeSummary,
4229            Sha256,
4230            Markdown,
4231            Html,
4232            Uri,
4233            PdfUri,
4234            __SkipField__,
4235        }
4236        impl<'de> serde::Deserialize<'de> for GeneratedField {
4237            fn deserialize<D>(
4238                deserializer: D,
4239            ) -> std::result::Result<GeneratedField, D::Error>
4240            where
4241                D: serde::Deserializer<'de>,
4242            {
4243                struct GeneratedVisitor;
4244                impl serde::de::Visitor<'_> for GeneratedVisitor {
4245                    type Value = GeneratedField;
4246                    fn expecting(
4247                        &self,
4248                        formatter: &mut std::fmt::Formatter<'_>,
4249                    ) -> std::fmt::Result {
4250                        write!(formatter, "expected one of: {:?}", & FIELDS)
4251                    }
4252                    #[allow(unused_variables)]
4253                    fn visit_str<E>(
4254                        self,
4255                        value: &str,
4256                    ) -> std::result::Result<GeneratedField, E>
4257                    where
4258                        E: serde::de::Error,
4259                    {
4260                        match value {
4261                            "name" => Ok(GeneratedField::Name),
4262                            "displayName" | "display_name" => {
4263                                Ok(GeneratedField::DisplayName)
4264                            }
4265                            "effectiveDate" | "effective_date" => {
4266                                Ok(GeneratedField::EffectiveDate)
4267                            }
4268                            "changeClass" | "change_class" => {
4269                                Ok(GeneratedField::ChangeClass)
4270                            }
4271                            "changeSummary" | "change_summary" => {
4272                                Ok(GeneratedField::ChangeSummary)
4273                            }
4274                            "sha256" => Ok(GeneratedField::Sha256),
4275                            "markdown" => Ok(GeneratedField::Markdown),
4276                            "html" => Ok(GeneratedField::Html),
4277                            "uri" => Ok(GeneratedField::Uri),
4278                            "pdfUri" | "pdf_uri" => Ok(GeneratedField::PdfUri),
4279                            _ => Ok(GeneratedField::__SkipField__),
4280                        }
4281                    }
4282                }
4283                deserializer.deserialize_identifier(GeneratedVisitor)
4284            }
4285        }
4286        struct GeneratedVisitor;
4287        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4288            type Value = LegalDocumentVersion;
4289            fn expecting(
4290                &self,
4291                formatter: &mut std::fmt::Formatter<'_>,
4292            ) -> std::fmt::Result {
4293                formatter
4294                    .write_str("struct origincloud.billing.v1beta1.LegalDocumentVersion")
4295            }
4296            fn visit_map<V>(
4297                self,
4298                mut map_: V,
4299            ) -> std::result::Result<LegalDocumentVersion, V::Error>
4300            where
4301                V: serde::de::MapAccess<'de>,
4302            {
4303                let mut name__ = None;
4304                let mut display_name__ = None;
4305                let mut effective_date__ = None;
4306                let mut change_class__ = None;
4307                let mut change_summary__ = None;
4308                let mut sha256__ = None;
4309                let mut markdown__ = None;
4310                let mut html__ = None;
4311                let mut uri__ = None;
4312                let mut pdf_uri__ = None;
4313                while let Some(k) = map_.next_key()? {
4314                    match k {
4315                        GeneratedField::Name => {
4316                            if name__.is_some() {
4317                                return Err(serde::de::Error::duplicate_field("name"));
4318                            }
4319                            name__ = Some(map_.next_value()?);
4320                        }
4321                        GeneratedField::DisplayName => {
4322                            if display_name__.is_some() {
4323                                return Err(
4324                                    serde::de::Error::duplicate_field("displayName"),
4325                                );
4326                            }
4327                            display_name__ = Some(map_.next_value()?);
4328                        }
4329                        GeneratedField::EffectiveDate => {
4330                            if effective_date__.is_some() {
4331                                return Err(
4332                                    serde::de::Error::duplicate_field("effectiveDate"),
4333                                );
4334                            }
4335                            effective_date__ = map_.next_value()?;
4336                        }
4337                        GeneratedField::ChangeClass => {
4338                            if change_class__.is_some() {
4339                                return Err(
4340                                    serde::de::Error::duplicate_field("changeClass"),
4341                                );
4342                            }
4343                            change_class__ = Some(
4344                                map_.next_value::<legal_document_version::ChangeClass>()?
4345                                    as i32,
4346                            );
4347                        }
4348                        GeneratedField::ChangeSummary => {
4349                            if change_summary__.is_some() {
4350                                return Err(
4351                                    serde::de::Error::duplicate_field("changeSummary"),
4352                                );
4353                            }
4354                            change_summary__ = Some(map_.next_value()?);
4355                        }
4356                        GeneratedField::Sha256 => {
4357                            if sha256__.is_some() {
4358                                return Err(serde::de::Error::duplicate_field("sha256"));
4359                            }
4360                            sha256__ = Some(map_.next_value()?);
4361                        }
4362                        GeneratedField::Markdown => {
4363                            if markdown__.is_some() {
4364                                return Err(serde::de::Error::duplicate_field("markdown"));
4365                            }
4366                            markdown__ = Some(map_.next_value()?);
4367                        }
4368                        GeneratedField::Html => {
4369                            if html__.is_some() {
4370                                return Err(serde::de::Error::duplicate_field("html"));
4371                            }
4372                            html__ = Some(map_.next_value()?);
4373                        }
4374                        GeneratedField::Uri => {
4375                            if uri__.is_some() {
4376                                return Err(serde::de::Error::duplicate_field("uri"));
4377                            }
4378                            uri__ = Some(map_.next_value()?);
4379                        }
4380                        GeneratedField::PdfUri => {
4381                            if pdf_uri__.is_some() {
4382                                return Err(serde::de::Error::duplicate_field("pdfUri"));
4383                            }
4384                            pdf_uri__ = Some(map_.next_value()?);
4385                        }
4386                        GeneratedField::__SkipField__ => {
4387                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4388                        }
4389                    }
4390                }
4391                Ok(LegalDocumentVersion {
4392                    name: name__.unwrap_or_default(),
4393                    display_name: display_name__.unwrap_or_default(),
4394                    effective_date: effective_date__,
4395                    change_class: change_class__.unwrap_or_default(),
4396                    change_summary: change_summary__.unwrap_or_default(),
4397                    sha256: sha256__.unwrap_or_default(),
4398                    markdown: markdown__.unwrap_or_default(),
4399                    html: html__.unwrap_or_default(),
4400                    uri: uri__.unwrap_or_default(),
4401                    pdf_uri: pdf_uri__.unwrap_or_default(),
4402                })
4403            }
4404        }
4405        deserializer
4406            .deserialize_struct(
4407                "origincloud.billing.v1beta1.LegalDocumentVersion",
4408                FIELDS,
4409                GeneratedVisitor,
4410            )
4411    }
4412}
4413impl serde::Serialize for legal_document_version::ChangeClass {
4414    #[allow(deprecated)]
4415    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4416    where
4417        S: serde::Serializer,
4418    {
4419        let variant = match self {
4420            Self::Unspecified => "CHANGE_CLASS_UNSPECIFIED",
4421            Self::Material => "MATERIAL",
4422            Self::Notice => "NOTICE",
4423            Self::Editorial => "EDITORIAL",
4424        };
4425        serializer.serialize_str(variant)
4426    }
4427}
4428impl<'de> serde::Deserialize<'de> for legal_document_version::ChangeClass {
4429    #[allow(deprecated)]
4430    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4431    where
4432        D: serde::Deserializer<'de>,
4433    {
4434        const FIELDS: &[&str] = &[
4435            "CHANGE_CLASS_UNSPECIFIED",
4436            "MATERIAL",
4437            "NOTICE",
4438            "EDITORIAL",
4439        ];
4440        struct GeneratedVisitor;
4441        impl serde::de::Visitor<'_> for GeneratedVisitor {
4442            type Value = legal_document_version::ChangeClass;
4443            fn expecting(
4444                &self,
4445                formatter: &mut std::fmt::Formatter<'_>,
4446            ) -> std::fmt::Result {
4447                write!(formatter, "expected one of: {:?}", & FIELDS)
4448            }
4449            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
4450            where
4451                E: serde::de::Error,
4452            {
4453                i32::try_from(v)
4454                    .ok()
4455                    .and_then(|x| {
4456                        x
4457                            .try_into()
4458                            .ok()
4459                            .or_else(|| Some(
4460                                legal_document_version::ChangeClass::default(),
4461                            ))
4462                    })
4463                    .ok_or_else(|| {
4464                        serde::de::Error::invalid_value(
4465                            serde::de::Unexpected::Signed(v),
4466                            &self,
4467                        )
4468                    })
4469            }
4470            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
4471            where
4472                E: serde::de::Error,
4473            {
4474                i32::try_from(v)
4475                    .ok()
4476                    .and_then(|x| {
4477                        x
4478                            .try_into()
4479                            .ok()
4480                            .or_else(|| Some(
4481                                legal_document_version::ChangeClass::default(),
4482                            ))
4483                    })
4484                    .ok_or_else(|| {
4485                        serde::de::Error::invalid_value(
4486                            serde::de::Unexpected::Unsigned(v),
4487                            &self,
4488                        )
4489                    })
4490            }
4491            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
4492            where
4493                E: serde::de::Error,
4494            {
4495                match value {
4496                    "CHANGE_CLASS_UNSPECIFIED" => {
4497                        Ok(legal_document_version::ChangeClass::Unspecified)
4498                    }
4499                    "MATERIAL" => Ok(legal_document_version::ChangeClass::Material),
4500                    "NOTICE" => Ok(legal_document_version::ChangeClass::Notice),
4501                    "EDITORIAL" => Ok(legal_document_version::ChangeClass::Editorial),
4502                    _ => Ok(legal_document_version::ChangeClass::default()),
4503                }
4504            }
4505        }
4506        deserializer.deserialize_any(GeneratedVisitor)
4507    }
4508}
4509impl serde::Serialize for LegalDocumentVersionToAccept {
4510    #[allow(deprecated)]
4511    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4512    where
4513        S: serde::Serializer,
4514    {
4515        use serde::ser::SerializeStruct;
4516        let mut len = 0;
4517        if !self.legal_document_version.is_empty() {
4518            len += 1;
4519        }
4520        if !self.sha256.is_empty() {
4521            len += 1;
4522        }
4523        let mut struct_ser = serializer
4524            .serialize_struct(
4525                "origincloud.billing.v1beta1.LegalDocumentVersionToAccept",
4526                len,
4527            )?;
4528        if !self.legal_document_version.is_empty() {
4529            struct_ser
4530                .serialize_field("legalDocumentVersion", &self.legal_document_version)?;
4531        }
4532        if !self.sha256.is_empty() {
4533            struct_ser.serialize_field("sha256", &self.sha256)?;
4534        }
4535        struct_ser.end()
4536    }
4537}
4538impl<'de> serde::Deserialize<'de> for LegalDocumentVersionToAccept {
4539    #[allow(deprecated)]
4540    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4541    where
4542        D: serde::Deserializer<'de>,
4543    {
4544        const FIELDS: &[&str] = &[
4545            "legal_document_version",
4546            "legalDocumentVersion",
4547            "sha256",
4548        ];
4549        #[allow(clippy::enum_variant_names)]
4550        enum GeneratedField {
4551            LegalDocumentVersion,
4552            Sha256,
4553            __SkipField__,
4554        }
4555        impl<'de> serde::Deserialize<'de> for GeneratedField {
4556            fn deserialize<D>(
4557                deserializer: D,
4558            ) -> std::result::Result<GeneratedField, D::Error>
4559            where
4560                D: serde::Deserializer<'de>,
4561            {
4562                struct GeneratedVisitor;
4563                impl serde::de::Visitor<'_> for GeneratedVisitor {
4564                    type Value = GeneratedField;
4565                    fn expecting(
4566                        &self,
4567                        formatter: &mut std::fmt::Formatter<'_>,
4568                    ) -> std::fmt::Result {
4569                        write!(formatter, "expected one of: {:?}", & FIELDS)
4570                    }
4571                    #[allow(unused_variables)]
4572                    fn visit_str<E>(
4573                        self,
4574                        value: &str,
4575                    ) -> std::result::Result<GeneratedField, E>
4576                    where
4577                        E: serde::de::Error,
4578                    {
4579                        match value {
4580                            "legalDocumentVersion" | "legal_document_version" => {
4581                                Ok(GeneratedField::LegalDocumentVersion)
4582                            }
4583                            "sha256" => Ok(GeneratedField::Sha256),
4584                            _ => Ok(GeneratedField::__SkipField__),
4585                        }
4586                    }
4587                }
4588                deserializer.deserialize_identifier(GeneratedVisitor)
4589            }
4590        }
4591        struct GeneratedVisitor;
4592        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4593            type Value = LegalDocumentVersionToAccept;
4594            fn expecting(
4595                &self,
4596                formatter: &mut std::fmt::Formatter<'_>,
4597            ) -> std::fmt::Result {
4598                formatter
4599                    .write_str(
4600                        "struct origincloud.billing.v1beta1.LegalDocumentVersionToAccept",
4601                    )
4602            }
4603            fn visit_map<V>(
4604                self,
4605                mut map_: V,
4606            ) -> std::result::Result<LegalDocumentVersionToAccept, V::Error>
4607            where
4608                V: serde::de::MapAccess<'de>,
4609            {
4610                let mut legal_document_version__ = None;
4611                let mut sha256__ = None;
4612                while let Some(k) = map_.next_key()? {
4613                    match k {
4614                        GeneratedField::LegalDocumentVersion => {
4615                            if legal_document_version__.is_some() {
4616                                return Err(
4617                                    serde::de::Error::duplicate_field("legalDocumentVersion"),
4618                                );
4619                            }
4620                            legal_document_version__ = Some(map_.next_value()?);
4621                        }
4622                        GeneratedField::Sha256 => {
4623                            if sha256__.is_some() {
4624                                return Err(serde::de::Error::duplicate_field("sha256"));
4625                            }
4626                            sha256__ = Some(map_.next_value()?);
4627                        }
4628                        GeneratedField::__SkipField__ => {
4629                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4630                        }
4631                    }
4632                }
4633                Ok(LegalDocumentVersionToAccept {
4634                    legal_document_version: legal_document_version__.unwrap_or_default(),
4635                    sha256: sha256__.unwrap_or_default(),
4636                })
4637            }
4638        }
4639        deserializer
4640            .deserialize_struct(
4641                "origincloud.billing.v1beta1.LegalDocumentVersionToAccept",
4642                FIELDS,
4643                GeneratedVisitor,
4644            )
4645    }
4646}
4647impl serde::Serialize for LegalRequirement {
4648    #[allow(deprecated)]
4649    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4650    where
4651        S: serde::Serializer,
4652    {
4653        use serde::ser::SerializeStruct;
4654        let mut len = 0;
4655        if !self.legal_document_version.is_empty() {
4656            len += 1;
4657        }
4658        if !self.display_name.is_empty() {
4659            len += 1;
4660        }
4661        if self.effective_date.is_some() {
4662            len += 1;
4663        }
4664        if !self.change_summary.is_empty() {
4665            len += 1;
4666        }
4667        if !self.sha256.is_empty() {
4668            len += 1;
4669        }
4670        if self.blocking {
4671            len += 1;
4672        }
4673        let mut struct_ser = serializer
4674            .serialize_struct("origincloud.billing.v1beta1.LegalRequirement", len)?;
4675        if !self.legal_document_version.is_empty() {
4676            struct_ser
4677                .serialize_field("legalDocumentVersion", &self.legal_document_version)?;
4678        }
4679        if !self.display_name.is_empty() {
4680            struct_ser.serialize_field("displayName", &self.display_name)?;
4681        }
4682        if let Some(v) = self.effective_date.as_ref() {
4683            struct_ser.serialize_field("effectiveDate", v)?;
4684        }
4685        if !self.change_summary.is_empty() {
4686            struct_ser.serialize_field("changeSummary", &self.change_summary)?;
4687        }
4688        if !self.sha256.is_empty() {
4689            struct_ser.serialize_field("sha256", &self.sha256)?;
4690        }
4691        if self.blocking {
4692            struct_ser.serialize_field("blocking", &self.blocking)?;
4693        }
4694        struct_ser.end()
4695    }
4696}
4697impl<'de> serde::Deserialize<'de> for LegalRequirement {
4698    #[allow(deprecated)]
4699    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4700    where
4701        D: serde::Deserializer<'de>,
4702    {
4703        const FIELDS: &[&str] = &[
4704            "legal_document_version",
4705            "legalDocumentVersion",
4706            "display_name",
4707            "displayName",
4708            "effective_date",
4709            "effectiveDate",
4710            "change_summary",
4711            "changeSummary",
4712            "sha256",
4713            "blocking",
4714        ];
4715        #[allow(clippy::enum_variant_names)]
4716        enum GeneratedField {
4717            LegalDocumentVersion,
4718            DisplayName,
4719            EffectiveDate,
4720            ChangeSummary,
4721            Sha256,
4722            Blocking,
4723            __SkipField__,
4724        }
4725        impl<'de> serde::Deserialize<'de> for GeneratedField {
4726            fn deserialize<D>(
4727                deserializer: D,
4728            ) -> std::result::Result<GeneratedField, D::Error>
4729            where
4730                D: serde::Deserializer<'de>,
4731            {
4732                struct GeneratedVisitor;
4733                impl serde::de::Visitor<'_> for GeneratedVisitor {
4734                    type Value = GeneratedField;
4735                    fn expecting(
4736                        &self,
4737                        formatter: &mut std::fmt::Formatter<'_>,
4738                    ) -> std::fmt::Result {
4739                        write!(formatter, "expected one of: {:?}", & FIELDS)
4740                    }
4741                    #[allow(unused_variables)]
4742                    fn visit_str<E>(
4743                        self,
4744                        value: &str,
4745                    ) -> std::result::Result<GeneratedField, E>
4746                    where
4747                        E: serde::de::Error,
4748                    {
4749                        match value {
4750                            "legalDocumentVersion" | "legal_document_version" => {
4751                                Ok(GeneratedField::LegalDocumentVersion)
4752                            }
4753                            "displayName" | "display_name" => {
4754                                Ok(GeneratedField::DisplayName)
4755                            }
4756                            "effectiveDate" | "effective_date" => {
4757                                Ok(GeneratedField::EffectiveDate)
4758                            }
4759                            "changeSummary" | "change_summary" => {
4760                                Ok(GeneratedField::ChangeSummary)
4761                            }
4762                            "sha256" => Ok(GeneratedField::Sha256),
4763                            "blocking" => Ok(GeneratedField::Blocking),
4764                            _ => Ok(GeneratedField::__SkipField__),
4765                        }
4766                    }
4767                }
4768                deserializer.deserialize_identifier(GeneratedVisitor)
4769            }
4770        }
4771        struct GeneratedVisitor;
4772        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4773            type Value = LegalRequirement;
4774            fn expecting(
4775                &self,
4776                formatter: &mut std::fmt::Formatter<'_>,
4777            ) -> std::fmt::Result {
4778                formatter
4779                    .write_str("struct origincloud.billing.v1beta1.LegalRequirement")
4780            }
4781            fn visit_map<V>(
4782                self,
4783                mut map_: V,
4784            ) -> std::result::Result<LegalRequirement, V::Error>
4785            where
4786                V: serde::de::MapAccess<'de>,
4787            {
4788                let mut legal_document_version__ = None;
4789                let mut display_name__ = None;
4790                let mut effective_date__ = None;
4791                let mut change_summary__ = None;
4792                let mut sha256__ = None;
4793                let mut blocking__ = None;
4794                while let Some(k) = map_.next_key()? {
4795                    match k {
4796                        GeneratedField::LegalDocumentVersion => {
4797                            if legal_document_version__.is_some() {
4798                                return Err(
4799                                    serde::de::Error::duplicate_field("legalDocumentVersion"),
4800                                );
4801                            }
4802                            legal_document_version__ = Some(map_.next_value()?);
4803                        }
4804                        GeneratedField::DisplayName => {
4805                            if display_name__.is_some() {
4806                                return Err(
4807                                    serde::de::Error::duplicate_field("displayName"),
4808                                );
4809                            }
4810                            display_name__ = Some(map_.next_value()?);
4811                        }
4812                        GeneratedField::EffectiveDate => {
4813                            if effective_date__.is_some() {
4814                                return Err(
4815                                    serde::de::Error::duplicate_field("effectiveDate"),
4816                                );
4817                            }
4818                            effective_date__ = map_.next_value()?;
4819                        }
4820                        GeneratedField::ChangeSummary => {
4821                            if change_summary__.is_some() {
4822                                return Err(
4823                                    serde::de::Error::duplicate_field("changeSummary"),
4824                                );
4825                            }
4826                            change_summary__ = Some(map_.next_value()?);
4827                        }
4828                        GeneratedField::Sha256 => {
4829                            if sha256__.is_some() {
4830                                return Err(serde::de::Error::duplicate_field("sha256"));
4831                            }
4832                            sha256__ = Some(map_.next_value()?);
4833                        }
4834                        GeneratedField::Blocking => {
4835                            if blocking__.is_some() {
4836                                return Err(serde::de::Error::duplicate_field("blocking"));
4837                            }
4838                            blocking__ = Some(map_.next_value()?);
4839                        }
4840                        GeneratedField::__SkipField__ => {
4841                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4842                        }
4843                    }
4844                }
4845                Ok(LegalRequirement {
4846                    legal_document_version: legal_document_version__.unwrap_or_default(),
4847                    display_name: display_name__.unwrap_or_default(),
4848                    effective_date: effective_date__,
4849                    change_summary: change_summary__.unwrap_or_default(),
4850                    sha256: sha256__.unwrap_or_default(),
4851                    blocking: blocking__.unwrap_or_default(),
4852                })
4853            }
4854        }
4855        deserializer
4856            .deserialize_struct(
4857                "origincloud.billing.v1beta1.LegalRequirement",
4858                FIELDS,
4859                GeneratedVisitor,
4860            )
4861    }
4862}
4863impl serde::Serialize for ListBillingAccountsRequest {
4864    #[allow(deprecated)]
4865    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4866    where
4867        S: serde::Serializer,
4868    {
4869        use serde::ser::SerializeStruct;
4870        let mut len = 0;
4871        if !self.parent.is_empty() {
4872            len += 1;
4873        }
4874        if self.page_size != 0 {
4875            len += 1;
4876        }
4877        if !self.page_token.is_empty() {
4878            len += 1;
4879        }
4880        let mut struct_ser = serializer
4881            .serialize_struct(
4882                "origincloud.billing.v1beta1.ListBillingAccountsRequest",
4883                len,
4884            )?;
4885        if !self.parent.is_empty() {
4886            struct_ser.serialize_field("parent", &self.parent)?;
4887        }
4888        if self.page_size != 0 {
4889            struct_ser.serialize_field("pageSize", &self.page_size)?;
4890        }
4891        if !self.page_token.is_empty() {
4892            struct_ser.serialize_field("pageToken", &self.page_token)?;
4893        }
4894        struct_ser.end()
4895    }
4896}
4897impl<'de> serde::Deserialize<'de> for ListBillingAccountsRequest {
4898    #[allow(deprecated)]
4899    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4900    where
4901        D: serde::Deserializer<'de>,
4902    {
4903        const FIELDS: &[&str] = &[
4904            "parent",
4905            "page_size",
4906            "pageSize",
4907            "page_token",
4908            "pageToken",
4909        ];
4910        #[allow(clippy::enum_variant_names)]
4911        enum GeneratedField {
4912            Parent,
4913            PageSize,
4914            PageToken,
4915            __SkipField__,
4916        }
4917        impl<'de> serde::Deserialize<'de> for GeneratedField {
4918            fn deserialize<D>(
4919                deserializer: D,
4920            ) -> std::result::Result<GeneratedField, D::Error>
4921            where
4922                D: serde::Deserializer<'de>,
4923            {
4924                struct GeneratedVisitor;
4925                impl serde::de::Visitor<'_> for GeneratedVisitor {
4926                    type Value = GeneratedField;
4927                    fn expecting(
4928                        &self,
4929                        formatter: &mut std::fmt::Formatter<'_>,
4930                    ) -> std::fmt::Result {
4931                        write!(formatter, "expected one of: {:?}", & FIELDS)
4932                    }
4933                    #[allow(unused_variables)]
4934                    fn visit_str<E>(
4935                        self,
4936                        value: &str,
4937                    ) -> std::result::Result<GeneratedField, E>
4938                    where
4939                        E: serde::de::Error,
4940                    {
4941                        match value {
4942                            "parent" => Ok(GeneratedField::Parent),
4943                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
4944                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
4945                            _ => Ok(GeneratedField::__SkipField__),
4946                        }
4947                    }
4948                }
4949                deserializer.deserialize_identifier(GeneratedVisitor)
4950            }
4951        }
4952        struct GeneratedVisitor;
4953        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4954            type Value = ListBillingAccountsRequest;
4955            fn expecting(
4956                &self,
4957                formatter: &mut std::fmt::Formatter<'_>,
4958            ) -> std::fmt::Result {
4959                formatter
4960                    .write_str(
4961                        "struct origincloud.billing.v1beta1.ListBillingAccountsRequest",
4962                    )
4963            }
4964            fn visit_map<V>(
4965                self,
4966                mut map_: V,
4967            ) -> std::result::Result<ListBillingAccountsRequest, V::Error>
4968            where
4969                V: serde::de::MapAccess<'de>,
4970            {
4971                let mut parent__ = None;
4972                let mut page_size__ = None;
4973                let mut page_token__ = None;
4974                while let Some(k) = map_.next_key()? {
4975                    match k {
4976                        GeneratedField::Parent => {
4977                            if parent__.is_some() {
4978                                return Err(serde::de::Error::duplicate_field("parent"));
4979                            }
4980                            parent__ = Some(map_.next_value()?);
4981                        }
4982                        GeneratedField::PageSize => {
4983                            if page_size__.is_some() {
4984                                return Err(serde::de::Error::duplicate_field("pageSize"));
4985                            }
4986                            page_size__ = Some(
4987                                map_
4988                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
4989                                    .0,
4990                            );
4991                        }
4992                        GeneratedField::PageToken => {
4993                            if page_token__.is_some() {
4994                                return Err(serde::de::Error::duplicate_field("pageToken"));
4995                            }
4996                            page_token__ = Some(map_.next_value()?);
4997                        }
4998                        GeneratedField::__SkipField__ => {
4999                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5000                        }
5001                    }
5002                }
5003                Ok(ListBillingAccountsRequest {
5004                    parent: parent__.unwrap_or_default(),
5005                    page_size: page_size__.unwrap_or_default(),
5006                    page_token: page_token__.unwrap_or_default(),
5007                })
5008            }
5009        }
5010        deserializer
5011            .deserialize_struct(
5012                "origincloud.billing.v1beta1.ListBillingAccountsRequest",
5013                FIELDS,
5014                GeneratedVisitor,
5015            )
5016    }
5017}
5018impl serde::Serialize for ListBillingAccountsResponse {
5019    #[allow(deprecated)]
5020    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5021    where
5022        S: serde::Serializer,
5023    {
5024        use serde::ser::SerializeStruct;
5025        let mut len = 0;
5026        if !self.billing_accounts.is_empty() {
5027            len += 1;
5028        }
5029        if !self.next_page_token.is_empty() {
5030            len += 1;
5031        }
5032        let mut struct_ser = serializer
5033            .serialize_struct(
5034                "origincloud.billing.v1beta1.ListBillingAccountsResponse",
5035                len,
5036            )?;
5037        if !self.billing_accounts.is_empty() {
5038            struct_ser.serialize_field("billingAccounts", &self.billing_accounts)?;
5039        }
5040        if !self.next_page_token.is_empty() {
5041            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
5042        }
5043        struct_ser.end()
5044    }
5045}
5046impl<'de> serde::Deserialize<'de> for ListBillingAccountsResponse {
5047    #[allow(deprecated)]
5048    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5049    where
5050        D: serde::Deserializer<'de>,
5051    {
5052        const FIELDS: &[&str] = &[
5053            "billing_accounts",
5054            "billingAccounts",
5055            "next_page_token",
5056            "nextPageToken",
5057        ];
5058        #[allow(clippy::enum_variant_names)]
5059        enum GeneratedField {
5060            BillingAccounts,
5061            NextPageToken,
5062            __SkipField__,
5063        }
5064        impl<'de> serde::Deserialize<'de> for GeneratedField {
5065            fn deserialize<D>(
5066                deserializer: D,
5067            ) -> std::result::Result<GeneratedField, D::Error>
5068            where
5069                D: serde::Deserializer<'de>,
5070            {
5071                struct GeneratedVisitor;
5072                impl serde::de::Visitor<'_> for GeneratedVisitor {
5073                    type Value = GeneratedField;
5074                    fn expecting(
5075                        &self,
5076                        formatter: &mut std::fmt::Formatter<'_>,
5077                    ) -> std::fmt::Result {
5078                        write!(formatter, "expected one of: {:?}", & FIELDS)
5079                    }
5080                    #[allow(unused_variables)]
5081                    fn visit_str<E>(
5082                        self,
5083                        value: &str,
5084                    ) -> std::result::Result<GeneratedField, E>
5085                    where
5086                        E: serde::de::Error,
5087                    {
5088                        match value {
5089                            "billingAccounts" | "billing_accounts" => {
5090                                Ok(GeneratedField::BillingAccounts)
5091                            }
5092                            "nextPageToken" | "next_page_token" => {
5093                                Ok(GeneratedField::NextPageToken)
5094                            }
5095                            _ => Ok(GeneratedField::__SkipField__),
5096                        }
5097                    }
5098                }
5099                deserializer.deserialize_identifier(GeneratedVisitor)
5100            }
5101        }
5102        struct GeneratedVisitor;
5103        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5104            type Value = ListBillingAccountsResponse;
5105            fn expecting(
5106                &self,
5107                formatter: &mut std::fmt::Formatter<'_>,
5108            ) -> std::fmt::Result {
5109                formatter
5110                    .write_str(
5111                        "struct origincloud.billing.v1beta1.ListBillingAccountsResponse",
5112                    )
5113            }
5114            fn visit_map<V>(
5115                self,
5116                mut map_: V,
5117            ) -> std::result::Result<ListBillingAccountsResponse, V::Error>
5118            where
5119                V: serde::de::MapAccess<'de>,
5120            {
5121                let mut billing_accounts__ = None;
5122                let mut next_page_token__ = None;
5123                while let Some(k) = map_.next_key()? {
5124                    match k {
5125                        GeneratedField::BillingAccounts => {
5126                            if billing_accounts__.is_some() {
5127                                return Err(
5128                                    serde::de::Error::duplicate_field("billingAccounts"),
5129                                );
5130                            }
5131                            billing_accounts__ = Some(map_.next_value()?);
5132                        }
5133                        GeneratedField::NextPageToken => {
5134                            if next_page_token__.is_some() {
5135                                return Err(
5136                                    serde::de::Error::duplicate_field("nextPageToken"),
5137                                );
5138                            }
5139                            next_page_token__ = Some(map_.next_value()?);
5140                        }
5141                        GeneratedField::__SkipField__ => {
5142                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5143                        }
5144                    }
5145                }
5146                Ok(ListBillingAccountsResponse {
5147                    billing_accounts: billing_accounts__.unwrap_or_default(),
5148                    next_page_token: next_page_token__.unwrap_or_default(),
5149                })
5150            }
5151        }
5152        deserializer
5153            .deserialize_struct(
5154                "origincloud.billing.v1beta1.ListBillingAccountsResponse",
5155                FIELDS,
5156                GeneratedVisitor,
5157            )
5158    }
5159}
5160impl serde::Serialize for ListBillingCountriesRequest {
5161    #[allow(deprecated)]
5162    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5163    where
5164        S: serde::Serializer,
5165    {
5166        use serde::ser::SerializeStruct;
5167        let mut len = 0;
5168        if self.page_size != 0 {
5169            len += 1;
5170        }
5171        if !self.page_token.is_empty() {
5172            len += 1;
5173        }
5174        let mut struct_ser = serializer
5175            .serialize_struct(
5176                "origincloud.billing.v1beta1.ListBillingCountriesRequest",
5177                len,
5178            )?;
5179        if self.page_size != 0 {
5180            struct_ser.serialize_field("pageSize", &self.page_size)?;
5181        }
5182        if !self.page_token.is_empty() {
5183            struct_ser.serialize_field("pageToken", &self.page_token)?;
5184        }
5185        struct_ser.end()
5186    }
5187}
5188impl<'de> serde::Deserialize<'de> for ListBillingCountriesRequest {
5189    #[allow(deprecated)]
5190    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5191    where
5192        D: serde::Deserializer<'de>,
5193    {
5194        const FIELDS: &[&str] = &["page_size", "pageSize", "page_token", "pageToken"];
5195        #[allow(clippy::enum_variant_names)]
5196        enum GeneratedField {
5197            PageSize,
5198            PageToken,
5199            __SkipField__,
5200        }
5201        impl<'de> serde::Deserialize<'de> for GeneratedField {
5202            fn deserialize<D>(
5203                deserializer: D,
5204            ) -> std::result::Result<GeneratedField, D::Error>
5205            where
5206                D: serde::Deserializer<'de>,
5207            {
5208                struct GeneratedVisitor;
5209                impl serde::de::Visitor<'_> for GeneratedVisitor {
5210                    type Value = GeneratedField;
5211                    fn expecting(
5212                        &self,
5213                        formatter: &mut std::fmt::Formatter<'_>,
5214                    ) -> std::fmt::Result {
5215                        write!(formatter, "expected one of: {:?}", & FIELDS)
5216                    }
5217                    #[allow(unused_variables)]
5218                    fn visit_str<E>(
5219                        self,
5220                        value: &str,
5221                    ) -> std::result::Result<GeneratedField, E>
5222                    where
5223                        E: serde::de::Error,
5224                    {
5225                        match value {
5226                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
5227                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
5228                            _ => Ok(GeneratedField::__SkipField__),
5229                        }
5230                    }
5231                }
5232                deserializer.deserialize_identifier(GeneratedVisitor)
5233            }
5234        }
5235        struct GeneratedVisitor;
5236        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5237            type Value = ListBillingCountriesRequest;
5238            fn expecting(
5239                &self,
5240                formatter: &mut std::fmt::Formatter<'_>,
5241            ) -> std::fmt::Result {
5242                formatter
5243                    .write_str(
5244                        "struct origincloud.billing.v1beta1.ListBillingCountriesRequest",
5245                    )
5246            }
5247            fn visit_map<V>(
5248                self,
5249                mut map_: V,
5250            ) -> std::result::Result<ListBillingCountriesRequest, V::Error>
5251            where
5252                V: serde::de::MapAccess<'de>,
5253            {
5254                let mut page_size__ = None;
5255                let mut page_token__ = None;
5256                while let Some(k) = map_.next_key()? {
5257                    match k {
5258                        GeneratedField::PageSize => {
5259                            if page_size__.is_some() {
5260                                return Err(serde::de::Error::duplicate_field("pageSize"));
5261                            }
5262                            page_size__ = Some(
5263                                map_
5264                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5265                                    .0,
5266                            );
5267                        }
5268                        GeneratedField::PageToken => {
5269                            if page_token__.is_some() {
5270                                return Err(serde::de::Error::duplicate_field("pageToken"));
5271                            }
5272                            page_token__ = Some(map_.next_value()?);
5273                        }
5274                        GeneratedField::__SkipField__ => {
5275                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5276                        }
5277                    }
5278                }
5279                Ok(ListBillingCountriesRequest {
5280                    page_size: page_size__.unwrap_or_default(),
5281                    page_token: page_token__.unwrap_or_default(),
5282                })
5283            }
5284        }
5285        deserializer
5286            .deserialize_struct(
5287                "origincloud.billing.v1beta1.ListBillingCountriesRequest",
5288                FIELDS,
5289                GeneratedVisitor,
5290            )
5291    }
5292}
5293impl serde::Serialize for ListBillingCountriesResponse {
5294    #[allow(deprecated)]
5295    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5296    where
5297        S: serde::Serializer,
5298    {
5299        use serde::ser::SerializeStruct;
5300        let mut len = 0;
5301        if !self.billing_countries.is_empty() {
5302            len += 1;
5303        }
5304        if !self.next_page_token.is_empty() {
5305            len += 1;
5306        }
5307        let mut struct_ser = serializer
5308            .serialize_struct(
5309                "origincloud.billing.v1beta1.ListBillingCountriesResponse",
5310                len,
5311            )?;
5312        if !self.billing_countries.is_empty() {
5313            struct_ser.serialize_field("billingCountries", &self.billing_countries)?;
5314        }
5315        if !self.next_page_token.is_empty() {
5316            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
5317        }
5318        struct_ser.end()
5319    }
5320}
5321impl<'de> serde::Deserialize<'de> for ListBillingCountriesResponse {
5322    #[allow(deprecated)]
5323    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5324    where
5325        D: serde::Deserializer<'de>,
5326    {
5327        const FIELDS: &[&str] = &[
5328            "billing_countries",
5329            "billingCountries",
5330            "next_page_token",
5331            "nextPageToken",
5332        ];
5333        #[allow(clippy::enum_variant_names)]
5334        enum GeneratedField {
5335            BillingCountries,
5336            NextPageToken,
5337            __SkipField__,
5338        }
5339        impl<'de> serde::Deserialize<'de> for GeneratedField {
5340            fn deserialize<D>(
5341                deserializer: D,
5342            ) -> std::result::Result<GeneratedField, D::Error>
5343            where
5344                D: serde::Deserializer<'de>,
5345            {
5346                struct GeneratedVisitor;
5347                impl serde::de::Visitor<'_> for GeneratedVisitor {
5348                    type Value = GeneratedField;
5349                    fn expecting(
5350                        &self,
5351                        formatter: &mut std::fmt::Formatter<'_>,
5352                    ) -> std::fmt::Result {
5353                        write!(formatter, "expected one of: {:?}", & FIELDS)
5354                    }
5355                    #[allow(unused_variables)]
5356                    fn visit_str<E>(
5357                        self,
5358                        value: &str,
5359                    ) -> std::result::Result<GeneratedField, E>
5360                    where
5361                        E: serde::de::Error,
5362                    {
5363                        match value {
5364                            "billingCountries" | "billing_countries" => {
5365                                Ok(GeneratedField::BillingCountries)
5366                            }
5367                            "nextPageToken" | "next_page_token" => {
5368                                Ok(GeneratedField::NextPageToken)
5369                            }
5370                            _ => Ok(GeneratedField::__SkipField__),
5371                        }
5372                    }
5373                }
5374                deserializer.deserialize_identifier(GeneratedVisitor)
5375            }
5376        }
5377        struct GeneratedVisitor;
5378        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5379            type Value = ListBillingCountriesResponse;
5380            fn expecting(
5381                &self,
5382                formatter: &mut std::fmt::Formatter<'_>,
5383            ) -> std::fmt::Result {
5384                formatter
5385                    .write_str(
5386                        "struct origincloud.billing.v1beta1.ListBillingCountriesResponse",
5387                    )
5388            }
5389            fn visit_map<V>(
5390                self,
5391                mut map_: V,
5392            ) -> std::result::Result<ListBillingCountriesResponse, V::Error>
5393            where
5394                V: serde::de::MapAccess<'de>,
5395            {
5396                let mut billing_countries__ = None;
5397                let mut next_page_token__ = None;
5398                while let Some(k) = map_.next_key()? {
5399                    match k {
5400                        GeneratedField::BillingCountries => {
5401                            if billing_countries__.is_some() {
5402                                return Err(
5403                                    serde::de::Error::duplicate_field("billingCountries"),
5404                                );
5405                            }
5406                            billing_countries__ = Some(map_.next_value()?);
5407                        }
5408                        GeneratedField::NextPageToken => {
5409                            if next_page_token__.is_some() {
5410                                return Err(
5411                                    serde::de::Error::duplicate_field("nextPageToken"),
5412                                );
5413                            }
5414                            next_page_token__ = Some(map_.next_value()?);
5415                        }
5416                        GeneratedField::__SkipField__ => {
5417                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5418                        }
5419                    }
5420                }
5421                Ok(ListBillingCountriesResponse {
5422                    billing_countries: billing_countries__.unwrap_or_default(),
5423                    next_page_token: next_page_token__.unwrap_or_default(),
5424                })
5425            }
5426        }
5427        deserializer
5428            .deserialize_struct(
5429                "origincloud.billing.v1beta1.ListBillingCountriesResponse",
5430                FIELDS,
5431                GeneratedVisitor,
5432            )
5433    }
5434}
5435impl serde::Serialize for ListLegalAcceptancesRequest {
5436    #[allow(deprecated)]
5437    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5438    where
5439        S: serde::Serializer,
5440    {
5441        use serde::ser::SerializeStruct;
5442        let mut len = 0;
5443        if !self.parent.is_empty() {
5444            len += 1;
5445        }
5446        if self.page_size != 0 {
5447            len += 1;
5448        }
5449        if !self.page_token.is_empty() {
5450            len += 1;
5451        }
5452        let mut struct_ser = serializer
5453            .serialize_struct(
5454                "origincloud.billing.v1beta1.ListLegalAcceptancesRequest",
5455                len,
5456            )?;
5457        if !self.parent.is_empty() {
5458            struct_ser.serialize_field("parent", &self.parent)?;
5459        }
5460        if self.page_size != 0 {
5461            struct_ser.serialize_field("pageSize", &self.page_size)?;
5462        }
5463        if !self.page_token.is_empty() {
5464            struct_ser.serialize_field("pageToken", &self.page_token)?;
5465        }
5466        struct_ser.end()
5467    }
5468}
5469impl<'de> serde::Deserialize<'de> for ListLegalAcceptancesRequest {
5470    #[allow(deprecated)]
5471    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5472    where
5473        D: serde::Deserializer<'de>,
5474    {
5475        const FIELDS: &[&str] = &[
5476            "parent",
5477            "page_size",
5478            "pageSize",
5479            "page_token",
5480            "pageToken",
5481        ];
5482        #[allow(clippy::enum_variant_names)]
5483        enum GeneratedField {
5484            Parent,
5485            PageSize,
5486            PageToken,
5487            __SkipField__,
5488        }
5489        impl<'de> serde::Deserialize<'de> for GeneratedField {
5490            fn deserialize<D>(
5491                deserializer: D,
5492            ) -> std::result::Result<GeneratedField, D::Error>
5493            where
5494                D: serde::Deserializer<'de>,
5495            {
5496                struct GeneratedVisitor;
5497                impl serde::de::Visitor<'_> for GeneratedVisitor {
5498                    type Value = GeneratedField;
5499                    fn expecting(
5500                        &self,
5501                        formatter: &mut std::fmt::Formatter<'_>,
5502                    ) -> std::fmt::Result {
5503                        write!(formatter, "expected one of: {:?}", & FIELDS)
5504                    }
5505                    #[allow(unused_variables)]
5506                    fn visit_str<E>(
5507                        self,
5508                        value: &str,
5509                    ) -> std::result::Result<GeneratedField, E>
5510                    where
5511                        E: serde::de::Error,
5512                    {
5513                        match value {
5514                            "parent" => Ok(GeneratedField::Parent),
5515                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
5516                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
5517                            _ => Ok(GeneratedField::__SkipField__),
5518                        }
5519                    }
5520                }
5521                deserializer.deserialize_identifier(GeneratedVisitor)
5522            }
5523        }
5524        struct GeneratedVisitor;
5525        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5526            type Value = ListLegalAcceptancesRequest;
5527            fn expecting(
5528                &self,
5529                formatter: &mut std::fmt::Formatter<'_>,
5530            ) -> std::fmt::Result {
5531                formatter
5532                    .write_str(
5533                        "struct origincloud.billing.v1beta1.ListLegalAcceptancesRequest",
5534                    )
5535            }
5536            fn visit_map<V>(
5537                self,
5538                mut map_: V,
5539            ) -> std::result::Result<ListLegalAcceptancesRequest, V::Error>
5540            where
5541                V: serde::de::MapAccess<'de>,
5542            {
5543                let mut parent__ = None;
5544                let mut page_size__ = None;
5545                let mut page_token__ = None;
5546                while let Some(k) = map_.next_key()? {
5547                    match k {
5548                        GeneratedField::Parent => {
5549                            if parent__.is_some() {
5550                                return Err(serde::de::Error::duplicate_field("parent"));
5551                            }
5552                            parent__ = Some(map_.next_value()?);
5553                        }
5554                        GeneratedField::PageSize => {
5555                            if page_size__.is_some() {
5556                                return Err(serde::de::Error::duplicate_field("pageSize"));
5557                            }
5558                            page_size__ = Some(
5559                                map_
5560                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5561                                    .0,
5562                            );
5563                        }
5564                        GeneratedField::PageToken => {
5565                            if page_token__.is_some() {
5566                                return Err(serde::de::Error::duplicate_field("pageToken"));
5567                            }
5568                            page_token__ = Some(map_.next_value()?);
5569                        }
5570                        GeneratedField::__SkipField__ => {
5571                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5572                        }
5573                    }
5574                }
5575                Ok(ListLegalAcceptancesRequest {
5576                    parent: parent__.unwrap_or_default(),
5577                    page_size: page_size__.unwrap_or_default(),
5578                    page_token: page_token__.unwrap_or_default(),
5579                })
5580            }
5581        }
5582        deserializer
5583            .deserialize_struct(
5584                "origincloud.billing.v1beta1.ListLegalAcceptancesRequest",
5585                FIELDS,
5586                GeneratedVisitor,
5587            )
5588    }
5589}
5590impl serde::Serialize for ListLegalAcceptancesResponse {
5591    #[allow(deprecated)]
5592    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5593    where
5594        S: serde::Serializer,
5595    {
5596        use serde::ser::SerializeStruct;
5597        let mut len = 0;
5598        if !self.legal_acceptances.is_empty() {
5599            len += 1;
5600        }
5601        if !self.next_page_token.is_empty() {
5602            len += 1;
5603        }
5604        let mut struct_ser = serializer
5605            .serialize_struct(
5606                "origincloud.billing.v1beta1.ListLegalAcceptancesResponse",
5607                len,
5608            )?;
5609        if !self.legal_acceptances.is_empty() {
5610            struct_ser.serialize_field("legalAcceptances", &self.legal_acceptances)?;
5611        }
5612        if !self.next_page_token.is_empty() {
5613            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
5614        }
5615        struct_ser.end()
5616    }
5617}
5618impl<'de> serde::Deserialize<'de> for ListLegalAcceptancesResponse {
5619    #[allow(deprecated)]
5620    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5621    where
5622        D: serde::Deserializer<'de>,
5623    {
5624        const FIELDS: &[&str] = &[
5625            "legal_acceptances",
5626            "legalAcceptances",
5627            "next_page_token",
5628            "nextPageToken",
5629        ];
5630        #[allow(clippy::enum_variant_names)]
5631        enum GeneratedField {
5632            LegalAcceptances,
5633            NextPageToken,
5634            __SkipField__,
5635        }
5636        impl<'de> serde::Deserialize<'de> for GeneratedField {
5637            fn deserialize<D>(
5638                deserializer: D,
5639            ) -> std::result::Result<GeneratedField, D::Error>
5640            where
5641                D: serde::Deserializer<'de>,
5642            {
5643                struct GeneratedVisitor;
5644                impl serde::de::Visitor<'_> for GeneratedVisitor {
5645                    type Value = GeneratedField;
5646                    fn expecting(
5647                        &self,
5648                        formatter: &mut std::fmt::Formatter<'_>,
5649                    ) -> std::fmt::Result {
5650                        write!(formatter, "expected one of: {:?}", & FIELDS)
5651                    }
5652                    #[allow(unused_variables)]
5653                    fn visit_str<E>(
5654                        self,
5655                        value: &str,
5656                    ) -> std::result::Result<GeneratedField, E>
5657                    where
5658                        E: serde::de::Error,
5659                    {
5660                        match value {
5661                            "legalAcceptances" | "legal_acceptances" => {
5662                                Ok(GeneratedField::LegalAcceptances)
5663                            }
5664                            "nextPageToken" | "next_page_token" => {
5665                                Ok(GeneratedField::NextPageToken)
5666                            }
5667                            _ => Ok(GeneratedField::__SkipField__),
5668                        }
5669                    }
5670                }
5671                deserializer.deserialize_identifier(GeneratedVisitor)
5672            }
5673        }
5674        struct GeneratedVisitor;
5675        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5676            type Value = ListLegalAcceptancesResponse;
5677            fn expecting(
5678                &self,
5679                formatter: &mut std::fmt::Formatter<'_>,
5680            ) -> std::fmt::Result {
5681                formatter
5682                    .write_str(
5683                        "struct origincloud.billing.v1beta1.ListLegalAcceptancesResponse",
5684                    )
5685            }
5686            fn visit_map<V>(
5687                self,
5688                mut map_: V,
5689            ) -> std::result::Result<ListLegalAcceptancesResponse, V::Error>
5690            where
5691                V: serde::de::MapAccess<'de>,
5692            {
5693                let mut legal_acceptances__ = None;
5694                let mut next_page_token__ = None;
5695                while let Some(k) = map_.next_key()? {
5696                    match k {
5697                        GeneratedField::LegalAcceptances => {
5698                            if legal_acceptances__.is_some() {
5699                                return Err(
5700                                    serde::de::Error::duplicate_field("legalAcceptances"),
5701                                );
5702                            }
5703                            legal_acceptances__ = Some(map_.next_value()?);
5704                        }
5705                        GeneratedField::NextPageToken => {
5706                            if next_page_token__.is_some() {
5707                                return Err(
5708                                    serde::de::Error::duplicate_field("nextPageToken"),
5709                                );
5710                            }
5711                            next_page_token__ = Some(map_.next_value()?);
5712                        }
5713                        GeneratedField::__SkipField__ => {
5714                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5715                        }
5716                    }
5717                }
5718                Ok(ListLegalAcceptancesResponse {
5719                    legal_acceptances: legal_acceptances__.unwrap_or_default(),
5720                    next_page_token: next_page_token__.unwrap_or_default(),
5721                })
5722            }
5723        }
5724        deserializer
5725            .deserialize_struct(
5726                "origincloud.billing.v1beta1.ListLegalAcceptancesResponse",
5727                FIELDS,
5728                GeneratedVisitor,
5729            )
5730    }
5731}
5732impl serde::Serialize for ListLegalDocumentVersionsRequest {
5733    #[allow(deprecated)]
5734    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5735    where
5736        S: serde::Serializer,
5737    {
5738        use serde::ser::SerializeStruct;
5739        let mut len = 0;
5740        if !self.parent.is_empty() {
5741            len += 1;
5742        }
5743        if self.page_size != 0 {
5744            len += 1;
5745        }
5746        if !self.page_token.is_empty() {
5747            len += 1;
5748        }
5749        let mut struct_ser = serializer
5750            .serialize_struct(
5751                "origincloud.billing.v1beta1.ListLegalDocumentVersionsRequest",
5752                len,
5753            )?;
5754        if !self.parent.is_empty() {
5755            struct_ser.serialize_field("parent", &self.parent)?;
5756        }
5757        if self.page_size != 0 {
5758            struct_ser.serialize_field("pageSize", &self.page_size)?;
5759        }
5760        if !self.page_token.is_empty() {
5761            struct_ser.serialize_field("pageToken", &self.page_token)?;
5762        }
5763        struct_ser.end()
5764    }
5765}
5766impl<'de> serde::Deserialize<'de> for ListLegalDocumentVersionsRequest {
5767    #[allow(deprecated)]
5768    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5769    where
5770        D: serde::Deserializer<'de>,
5771    {
5772        const FIELDS: &[&str] = &[
5773            "parent",
5774            "page_size",
5775            "pageSize",
5776            "page_token",
5777            "pageToken",
5778        ];
5779        #[allow(clippy::enum_variant_names)]
5780        enum GeneratedField {
5781            Parent,
5782            PageSize,
5783            PageToken,
5784            __SkipField__,
5785        }
5786        impl<'de> serde::Deserialize<'de> for GeneratedField {
5787            fn deserialize<D>(
5788                deserializer: D,
5789            ) -> std::result::Result<GeneratedField, D::Error>
5790            where
5791                D: serde::Deserializer<'de>,
5792            {
5793                struct GeneratedVisitor;
5794                impl serde::de::Visitor<'_> for GeneratedVisitor {
5795                    type Value = GeneratedField;
5796                    fn expecting(
5797                        &self,
5798                        formatter: &mut std::fmt::Formatter<'_>,
5799                    ) -> std::fmt::Result {
5800                        write!(formatter, "expected one of: {:?}", & FIELDS)
5801                    }
5802                    #[allow(unused_variables)]
5803                    fn visit_str<E>(
5804                        self,
5805                        value: &str,
5806                    ) -> std::result::Result<GeneratedField, E>
5807                    where
5808                        E: serde::de::Error,
5809                    {
5810                        match value {
5811                            "parent" => Ok(GeneratedField::Parent),
5812                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
5813                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
5814                            _ => Ok(GeneratedField::__SkipField__),
5815                        }
5816                    }
5817                }
5818                deserializer.deserialize_identifier(GeneratedVisitor)
5819            }
5820        }
5821        struct GeneratedVisitor;
5822        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5823            type Value = ListLegalDocumentVersionsRequest;
5824            fn expecting(
5825                &self,
5826                formatter: &mut std::fmt::Formatter<'_>,
5827            ) -> std::fmt::Result {
5828                formatter
5829                    .write_str(
5830                        "struct origincloud.billing.v1beta1.ListLegalDocumentVersionsRequest",
5831                    )
5832            }
5833            fn visit_map<V>(
5834                self,
5835                mut map_: V,
5836            ) -> std::result::Result<ListLegalDocumentVersionsRequest, V::Error>
5837            where
5838                V: serde::de::MapAccess<'de>,
5839            {
5840                let mut parent__ = None;
5841                let mut page_size__ = None;
5842                let mut page_token__ = None;
5843                while let Some(k) = map_.next_key()? {
5844                    match k {
5845                        GeneratedField::Parent => {
5846                            if parent__.is_some() {
5847                                return Err(serde::de::Error::duplicate_field("parent"));
5848                            }
5849                            parent__ = Some(map_.next_value()?);
5850                        }
5851                        GeneratedField::PageSize => {
5852                            if page_size__.is_some() {
5853                                return Err(serde::de::Error::duplicate_field("pageSize"));
5854                            }
5855                            page_size__ = Some(
5856                                map_
5857                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5858                                    .0,
5859                            );
5860                        }
5861                        GeneratedField::PageToken => {
5862                            if page_token__.is_some() {
5863                                return Err(serde::de::Error::duplicate_field("pageToken"));
5864                            }
5865                            page_token__ = Some(map_.next_value()?);
5866                        }
5867                        GeneratedField::__SkipField__ => {
5868                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5869                        }
5870                    }
5871                }
5872                Ok(ListLegalDocumentVersionsRequest {
5873                    parent: parent__.unwrap_or_default(),
5874                    page_size: page_size__.unwrap_or_default(),
5875                    page_token: page_token__.unwrap_or_default(),
5876                })
5877            }
5878        }
5879        deserializer
5880            .deserialize_struct(
5881                "origincloud.billing.v1beta1.ListLegalDocumentVersionsRequest",
5882                FIELDS,
5883                GeneratedVisitor,
5884            )
5885    }
5886}
5887impl serde::Serialize for ListLegalDocumentVersionsResponse {
5888    #[allow(deprecated)]
5889    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5890    where
5891        S: serde::Serializer,
5892    {
5893        use serde::ser::SerializeStruct;
5894        let mut len = 0;
5895        if !self.legal_document_versions.is_empty() {
5896            len += 1;
5897        }
5898        if !self.next_page_token.is_empty() {
5899            len += 1;
5900        }
5901        let mut struct_ser = serializer
5902            .serialize_struct(
5903                "origincloud.billing.v1beta1.ListLegalDocumentVersionsResponse",
5904                len,
5905            )?;
5906        if !self.legal_document_versions.is_empty() {
5907            struct_ser
5908                .serialize_field(
5909                    "legalDocumentVersions",
5910                    &self.legal_document_versions,
5911                )?;
5912        }
5913        if !self.next_page_token.is_empty() {
5914            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
5915        }
5916        struct_ser.end()
5917    }
5918}
5919impl<'de> serde::Deserialize<'de> for ListLegalDocumentVersionsResponse {
5920    #[allow(deprecated)]
5921    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5922    where
5923        D: serde::Deserializer<'de>,
5924    {
5925        const FIELDS: &[&str] = &[
5926            "legal_document_versions",
5927            "legalDocumentVersions",
5928            "next_page_token",
5929            "nextPageToken",
5930        ];
5931        #[allow(clippy::enum_variant_names)]
5932        enum GeneratedField {
5933            LegalDocumentVersions,
5934            NextPageToken,
5935            __SkipField__,
5936        }
5937        impl<'de> serde::Deserialize<'de> for GeneratedField {
5938            fn deserialize<D>(
5939                deserializer: D,
5940            ) -> std::result::Result<GeneratedField, D::Error>
5941            where
5942                D: serde::Deserializer<'de>,
5943            {
5944                struct GeneratedVisitor;
5945                impl serde::de::Visitor<'_> for GeneratedVisitor {
5946                    type Value = GeneratedField;
5947                    fn expecting(
5948                        &self,
5949                        formatter: &mut std::fmt::Formatter<'_>,
5950                    ) -> std::fmt::Result {
5951                        write!(formatter, "expected one of: {:?}", & FIELDS)
5952                    }
5953                    #[allow(unused_variables)]
5954                    fn visit_str<E>(
5955                        self,
5956                        value: &str,
5957                    ) -> std::result::Result<GeneratedField, E>
5958                    where
5959                        E: serde::de::Error,
5960                    {
5961                        match value {
5962                            "legalDocumentVersions" | "legal_document_versions" => {
5963                                Ok(GeneratedField::LegalDocumentVersions)
5964                            }
5965                            "nextPageToken" | "next_page_token" => {
5966                                Ok(GeneratedField::NextPageToken)
5967                            }
5968                            _ => Ok(GeneratedField::__SkipField__),
5969                        }
5970                    }
5971                }
5972                deserializer.deserialize_identifier(GeneratedVisitor)
5973            }
5974        }
5975        struct GeneratedVisitor;
5976        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5977            type Value = ListLegalDocumentVersionsResponse;
5978            fn expecting(
5979                &self,
5980                formatter: &mut std::fmt::Formatter<'_>,
5981            ) -> std::fmt::Result {
5982                formatter
5983                    .write_str(
5984                        "struct origincloud.billing.v1beta1.ListLegalDocumentVersionsResponse",
5985                    )
5986            }
5987            fn visit_map<V>(
5988                self,
5989                mut map_: V,
5990            ) -> std::result::Result<ListLegalDocumentVersionsResponse, V::Error>
5991            where
5992                V: serde::de::MapAccess<'de>,
5993            {
5994                let mut legal_document_versions__ = None;
5995                let mut next_page_token__ = None;
5996                while let Some(k) = map_.next_key()? {
5997                    match k {
5998                        GeneratedField::LegalDocumentVersions => {
5999                            if legal_document_versions__.is_some() {
6000                                return Err(
6001                                    serde::de::Error::duplicate_field("legalDocumentVersions"),
6002                                );
6003                            }
6004                            legal_document_versions__ = Some(map_.next_value()?);
6005                        }
6006                        GeneratedField::NextPageToken => {
6007                            if next_page_token__.is_some() {
6008                                return Err(
6009                                    serde::de::Error::duplicate_field("nextPageToken"),
6010                                );
6011                            }
6012                            next_page_token__ = Some(map_.next_value()?);
6013                        }
6014                        GeneratedField::__SkipField__ => {
6015                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6016                        }
6017                    }
6018                }
6019                Ok(ListLegalDocumentVersionsResponse {
6020                    legal_document_versions: legal_document_versions__
6021                        .unwrap_or_default(),
6022                    next_page_token: next_page_token__.unwrap_or_default(),
6023                })
6024            }
6025        }
6026        deserializer
6027            .deserialize_struct(
6028                "origincloud.billing.v1beta1.ListLegalDocumentVersionsResponse",
6029                FIELDS,
6030                GeneratedVisitor,
6031            )
6032    }
6033}
6034impl serde::Serialize for ListLegalDocumentsRequest {
6035    #[allow(deprecated)]
6036    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6037    where
6038        S: serde::Serializer,
6039    {
6040        use serde::ser::SerializeStruct;
6041        let mut len = 0;
6042        if self.page_size != 0 {
6043            len += 1;
6044        }
6045        if !self.page_token.is_empty() {
6046            len += 1;
6047        }
6048        let mut struct_ser = serializer
6049            .serialize_struct(
6050                "origincloud.billing.v1beta1.ListLegalDocumentsRequest",
6051                len,
6052            )?;
6053        if self.page_size != 0 {
6054            struct_ser.serialize_field("pageSize", &self.page_size)?;
6055        }
6056        if !self.page_token.is_empty() {
6057            struct_ser.serialize_field("pageToken", &self.page_token)?;
6058        }
6059        struct_ser.end()
6060    }
6061}
6062impl<'de> serde::Deserialize<'de> for ListLegalDocumentsRequest {
6063    #[allow(deprecated)]
6064    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6065    where
6066        D: serde::Deserializer<'de>,
6067    {
6068        const FIELDS: &[&str] = &["page_size", "pageSize", "page_token", "pageToken"];
6069        #[allow(clippy::enum_variant_names)]
6070        enum GeneratedField {
6071            PageSize,
6072            PageToken,
6073            __SkipField__,
6074        }
6075        impl<'de> serde::Deserialize<'de> for GeneratedField {
6076            fn deserialize<D>(
6077                deserializer: D,
6078            ) -> std::result::Result<GeneratedField, D::Error>
6079            where
6080                D: serde::Deserializer<'de>,
6081            {
6082                struct GeneratedVisitor;
6083                impl serde::de::Visitor<'_> for GeneratedVisitor {
6084                    type Value = GeneratedField;
6085                    fn expecting(
6086                        &self,
6087                        formatter: &mut std::fmt::Formatter<'_>,
6088                    ) -> std::fmt::Result {
6089                        write!(formatter, "expected one of: {:?}", & FIELDS)
6090                    }
6091                    #[allow(unused_variables)]
6092                    fn visit_str<E>(
6093                        self,
6094                        value: &str,
6095                    ) -> std::result::Result<GeneratedField, E>
6096                    where
6097                        E: serde::de::Error,
6098                    {
6099                        match value {
6100                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
6101                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
6102                            _ => Ok(GeneratedField::__SkipField__),
6103                        }
6104                    }
6105                }
6106                deserializer.deserialize_identifier(GeneratedVisitor)
6107            }
6108        }
6109        struct GeneratedVisitor;
6110        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6111            type Value = ListLegalDocumentsRequest;
6112            fn expecting(
6113                &self,
6114                formatter: &mut std::fmt::Formatter<'_>,
6115            ) -> std::fmt::Result {
6116                formatter
6117                    .write_str(
6118                        "struct origincloud.billing.v1beta1.ListLegalDocumentsRequest",
6119                    )
6120            }
6121            fn visit_map<V>(
6122                self,
6123                mut map_: V,
6124            ) -> std::result::Result<ListLegalDocumentsRequest, V::Error>
6125            where
6126                V: serde::de::MapAccess<'de>,
6127            {
6128                let mut page_size__ = None;
6129                let mut page_token__ = None;
6130                while let Some(k) = map_.next_key()? {
6131                    match k {
6132                        GeneratedField::PageSize => {
6133                            if page_size__.is_some() {
6134                                return Err(serde::de::Error::duplicate_field("pageSize"));
6135                            }
6136                            page_size__ = Some(
6137                                map_
6138                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
6139                                    .0,
6140                            );
6141                        }
6142                        GeneratedField::PageToken => {
6143                            if page_token__.is_some() {
6144                                return Err(serde::de::Error::duplicate_field("pageToken"));
6145                            }
6146                            page_token__ = Some(map_.next_value()?);
6147                        }
6148                        GeneratedField::__SkipField__ => {
6149                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6150                        }
6151                    }
6152                }
6153                Ok(ListLegalDocumentsRequest {
6154                    page_size: page_size__.unwrap_or_default(),
6155                    page_token: page_token__.unwrap_or_default(),
6156                })
6157            }
6158        }
6159        deserializer
6160            .deserialize_struct(
6161                "origincloud.billing.v1beta1.ListLegalDocumentsRequest",
6162                FIELDS,
6163                GeneratedVisitor,
6164            )
6165    }
6166}
6167impl serde::Serialize for ListLegalDocumentsResponse {
6168    #[allow(deprecated)]
6169    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6170    where
6171        S: serde::Serializer,
6172    {
6173        use serde::ser::SerializeStruct;
6174        let mut len = 0;
6175        if !self.legal_documents.is_empty() {
6176            len += 1;
6177        }
6178        if !self.next_page_token.is_empty() {
6179            len += 1;
6180        }
6181        let mut struct_ser = serializer
6182            .serialize_struct(
6183                "origincloud.billing.v1beta1.ListLegalDocumentsResponse",
6184                len,
6185            )?;
6186        if !self.legal_documents.is_empty() {
6187            struct_ser.serialize_field("legalDocuments", &self.legal_documents)?;
6188        }
6189        if !self.next_page_token.is_empty() {
6190            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
6191        }
6192        struct_ser.end()
6193    }
6194}
6195impl<'de> serde::Deserialize<'de> for ListLegalDocumentsResponse {
6196    #[allow(deprecated)]
6197    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6198    where
6199        D: serde::Deserializer<'de>,
6200    {
6201        const FIELDS: &[&str] = &[
6202            "legal_documents",
6203            "legalDocuments",
6204            "next_page_token",
6205            "nextPageToken",
6206        ];
6207        #[allow(clippy::enum_variant_names)]
6208        enum GeneratedField {
6209            LegalDocuments,
6210            NextPageToken,
6211            __SkipField__,
6212        }
6213        impl<'de> serde::Deserialize<'de> for GeneratedField {
6214            fn deserialize<D>(
6215                deserializer: D,
6216            ) -> std::result::Result<GeneratedField, D::Error>
6217            where
6218                D: serde::Deserializer<'de>,
6219            {
6220                struct GeneratedVisitor;
6221                impl serde::de::Visitor<'_> for GeneratedVisitor {
6222                    type Value = GeneratedField;
6223                    fn expecting(
6224                        &self,
6225                        formatter: &mut std::fmt::Formatter<'_>,
6226                    ) -> std::fmt::Result {
6227                        write!(formatter, "expected one of: {:?}", & FIELDS)
6228                    }
6229                    #[allow(unused_variables)]
6230                    fn visit_str<E>(
6231                        self,
6232                        value: &str,
6233                    ) -> std::result::Result<GeneratedField, E>
6234                    where
6235                        E: serde::de::Error,
6236                    {
6237                        match value {
6238                            "legalDocuments" | "legal_documents" => {
6239                                Ok(GeneratedField::LegalDocuments)
6240                            }
6241                            "nextPageToken" | "next_page_token" => {
6242                                Ok(GeneratedField::NextPageToken)
6243                            }
6244                            _ => Ok(GeneratedField::__SkipField__),
6245                        }
6246                    }
6247                }
6248                deserializer.deserialize_identifier(GeneratedVisitor)
6249            }
6250        }
6251        struct GeneratedVisitor;
6252        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6253            type Value = ListLegalDocumentsResponse;
6254            fn expecting(
6255                &self,
6256                formatter: &mut std::fmt::Formatter<'_>,
6257            ) -> std::fmt::Result {
6258                formatter
6259                    .write_str(
6260                        "struct origincloud.billing.v1beta1.ListLegalDocumentsResponse",
6261                    )
6262            }
6263            fn visit_map<V>(
6264                self,
6265                mut map_: V,
6266            ) -> std::result::Result<ListLegalDocumentsResponse, V::Error>
6267            where
6268                V: serde::de::MapAccess<'de>,
6269            {
6270                let mut legal_documents__ = None;
6271                let mut next_page_token__ = None;
6272                while let Some(k) = map_.next_key()? {
6273                    match k {
6274                        GeneratedField::LegalDocuments => {
6275                            if legal_documents__.is_some() {
6276                                return Err(
6277                                    serde::de::Error::duplicate_field("legalDocuments"),
6278                                );
6279                            }
6280                            legal_documents__ = Some(map_.next_value()?);
6281                        }
6282                        GeneratedField::NextPageToken => {
6283                            if next_page_token__.is_some() {
6284                                return Err(
6285                                    serde::de::Error::duplicate_field("nextPageToken"),
6286                                );
6287                            }
6288                            next_page_token__ = Some(map_.next_value()?);
6289                        }
6290                        GeneratedField::__SkipField__ => {
6291                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6292                        }
6293                    }
6294                }
6295                Ok(ListLegalDocumentsResponse {
6296                    legal_documents: legal_documents__.unwrap_or_default(),
6297                    next_page_token: next_page_token__.unwrap_or_default(),
6298                })
6299            }
6300        }
6301        deserializer
6302            .deserialize_struct(
6303                "origincloud.billing.v1beta1.ListLegalDocumentsResponse",
6304                FIELDS,
6305                GeneratedVisitor,
6306            )
6307    }
6308}
6309impl serde::Serialize for ListProjectBillingInfoRequest {
6310    #[allow(deprecated)]
6311    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6312    where
6313        S: serde::Serializer,
6314    {
6315        use serde::ser::SerializeStruct;
6316        let mut len = 0;
6317        if !self.name.is_empty() {
6318            len += 1;
6319        }
6320        if self.page_size != 0 {
6321            len += 1;
6322        }
6323        if !self.page_token.is_empty() {
6324            len += 1;
6325        }
6326        let mut struct_ser = serializer
6327            .serialize_struct(
6328                "origincloud.billing.v1beta1.ListProjectBillingInfoRequest",
6329                len,
6330            )?;
6331        if !self.name.is_empty() {
6332            struct_ser.serialize_field("name", &self.name)?;
6333        }
6334        if self.page_size != 0 {
6335            struct_ser.serialize_field("pageSize", &self.page_size)?;
6336        }
6337        if !self.page_token.is_empty() {
6338            struct_ser.serialize_field("pageToken", &self.page_token)?;
6339        }
6340        struct_ser.end()
6341    }
6342}
6343impl<'de> serde::Deserialize<'de> for ListProjectBillingInfoRequest {
6344    #[allow(deprecated)]
6345    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6346    where
6347        D: serde::Deserializer<'de>,
6348    {
6349        const FIELDS: &[&str] = &[
6350            "name",
6351            "page_size",
6352            "pageSize",
6353            "page_token",
6354            "pageToken",
6355        ];
6356        #[allow(clippy::enum_variant_names)]
6357        enum GeneratedField {
6358            Name,
6359            PageSize,
6360            PageToken,
6361            __SkipField__,
6362        }
6363        impl<'de> serde::Deserialize<'de> for GeneratedField {
6364            fn deserialize<D>(
6365                deserializer: D,
6366            ) -> std::result::Result<GeneratedField, D::Error>
6367            where
6368                D: serde::Deserializer<'de>,
6369            {
6370                struct GeneratedVisitor;
6371                impl serde::de::Visitor<'_> for GeneratedVisitor {
6372                    type Value = GeneratedField;
6373                    fn expecting(
6374                        &self,
6375                        formatter: &mut std::fmt::Formatter<'_>,
6376                    ) -> std::fmt::Result {
6377                        write!(formatter, "expected one of: {:?}", & FIELDS)
6378                    }
6379                    #[allow(unused_variables)]
6380                    fn visit_str<E>(
6381                        self,
6382                        value: &str,
6383                    ) -> std::result::Result<GeneratedField, E>
6384                    where
6385                        E: serde::de::Error,
6386                    {
6387                        match value {
6388                            "name" => Ok(GeneratedField::Name),
6389                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
6390                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
6391                            _ => Ok(GeneratedField::__SkipField__),
6392                        }
6393                    }
6394                }
6395                deserializer.deserialize_identifier(GeneratedVisitor)
6396            }
6397        }
6398        struct GeneratedVisitor;
6399        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6400            type Value = ListProjectBillingInfoRequest;
6401            fn expecting(
6402                &self,
6403                formatter: &mut std::fmt::Formatter<'_>,
6404            ) -> std::fmt::Result {
6405                formatter
6406                    .write_str(
6407                        "struct origincloud.billing.v1beta1.ListProjectBillingInfoRequest",
6408                    )
6409            }
6410            fn visit_map<V>(
6411                self,
6412                mut map_: V,
6413            ) -> std::result::Result<ListProjectBillingInfoRequest, V::Error>
6414            where
6415                V: serde::de::MapAccess<'de>,
6416            {
6417                let mut name__ = None;
6418                let mut page_size__ = None;
6419                let mut page_token__ = None;
6420                while let Some(k) = map_.next_key()? {
6421                    match k {
6422                        GeneratedField::Name => {
6423                            if name__.is_some() {
6424                                return Err(serde::de::Error::duplicate_field("name"));
6425                            }
6426                            name__ = Some(map_.next_value()?);
6427                        }
6428                        GeneratedField::PageSize => {
6429                            if page_size__.is_some() {
6430                                return Err(serde::de::Error::duplicate_field("pageSize"));
6431                            }
6432                            page_size__ = Some(
6433                                map_
6434                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
6435                                    .0,
6436                            );
6437                        }
6438                        GeneratedField::PageToken => {
6439                            if page_token__.is_some() {
6440                                return Err(serde::de::Error::duplicate_field("pageToken"));
6441                            }
6442                            page_token__ = Some(map_.next_value()?);
6443                        }
6444                        GeneratedField::__SkipField__ => {
6445                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6446                        }
6447                    }
6448                }
6449                Ok(ListProjectBillingInfoRequest {
6450                    name: name__.unwrap_or_default(),
6451                    page_size: page_size__.unwrap_or_default(),
6452                    page_token: page_token__.unwrap_or_default(),
6453                })
6454            }
6455        }
6456        deserializer
6457            .deserialize_struct(
6458                "origincloud.billing.v1beta1.ListProjectBillingInfoRequest",
6459                FIELDS,
6460                GeneratedVisitor,
6461            )
6462    }
6463}
6464impl serde::Serialize for ListProjectBillingInfoResponse {
6465    #[allow(deprecated)]
6466    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6467    where
6468        S: serde::Serializer,
6469    {
6470        use serde::ser::SerializeStruct;
6471        let mut len = 0;
6472        if !self.project_billing_infos.is_empty() {
6473            len += 1;
6474        }
6475        if !self.next_page_token.is_empty() {
6476            len += 1;
6477        }
6478        let mut struct_ser = serializer
6479            .serialize_struct(
6480                "origincloud.billing.v1beta1.ListProjectBillingInfoResponse",
6481                len,
6482            )?;
6483        if !self.project_billing_infos.is_empty() {
6484            struct_ser
6485                .serialize_field("projectBillingInfos", &self.project_billing_infos)?;
6486        }
6487        if !self.next_page_token.is_empty() {
6488            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
6489        }
6490        struct_ser.end()
6491    }
6492}
6493impl<'de> serde::Deserialize<'de> for ListProjectBillingInfoResponse {
6494    #[allow(deprecated)]
6495    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6496    where
6497        D: serde::Deserializer<'de>,
6498    {
6499        const FIELDS: &[&str] = &[
6500            "project_billing_infos",
6501            "projectBillingInfos",
6502            "next_page_token",
6503            "nextPageToken",
6504        ];
6505        #[allow(clippy::enum_variant_names)]
6506        enum GeneratedField {
6507            ProjectBillingInfos,
6508            NextPageToken,
6509            __SkipField__,
6510        }
6511        impl<'de> serde::Deserialize<'de> for GeneratedField {
6512            fn deserialize<D>(
6513                deserializer: D,
6514            ) -> std::result::Result<GeneratedField, D::Error>
6515            where
6516                D: serde::Deserializer<'de>,
6517            {
6518                struct GeneratedVisitor;
6519                impl serde::de::Visitor<'_> for GeneratedVisitor {
6520                    type Value = GeneratedField;
6521                    fn expecting(
6522                        &self,
6523                        formatter: &mut std::fmt::Formatter<'_>,
6524                    ) -> std::fmt::Result {
6525                        write!(formatter, "expected one of: {:?}", & FIELDS)
6526                    }
6527                    #[allow(unused_variables)]
6528                    fn visit_str<E>(
6529                        self,
6530                        value: &str,
6531                    ) -> std::result::Result<GeneratedField, E>
6532                    where
6533                        E: serde::de::Error,
6534                    {
6535                        match value {
6536                            "projectBillingInfos" | "project_billing_infos" => {
6537                                Ok(GeneratedField::ProjectBillingInfos)
6538                            }
6539                            "nextPageToken" | "next_page_token" => {
6540                                Ok(GeneratedField::NextPageToken)
6541                            }
6542                            _ => Ok(GeneratedField::__SkipField__),
6543                        }
6544                    }
6545                }
6546                deserializer.deserialize_identifier(GeneratedVisitor)
6547            }
6548        }
6549        struct GeneratedVisitor;
6550        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6551            type Value = ListProjectBillingInfoResponse;
6552            fn expecting(
6553                &self,
6554                formatter: &mut std::fmt::Formatter<'_>,
6555            ) -> std::fmt::Result {
6556                formatter
6557                    .write_str(
6558                        "struct origincloud.billing.v1beta1.ListProjectBillingInfoResponse",
6559                    )
6560            }
6561            fn visit_map<V>(
6562                self,
6563                mut map_: V,
6564            ) -> std::result::Result<ListProjectBillingInfoResponse, V::Error>
6565            where
6566                V: serde::de::MapAccess<'de>,
6567            {
6568                let mut project_billing_infos__ = None;
6569                let mut next_page_token__ = None;
6570                while let Some(k) = map_.next_key()? {
6571                    match k {
6572                        GeneratedField::ProjectBillingInfos => {
6573                            if project_billing_infos__.is_some() {
6574                                return Err(
6575                                    serde::de::Error::duplicate_field("projectBillingInfos"),
6576                                );
6577                            }
6578                            project_billing_infos__ = Some(map_.next_value()?);
6579                        }
6580                        GeneratedField::NextPageToken => {
6581                            if next_page_token__.is_some() {
6582                                return Err(
6583                                    serde::de::Error::duplicate_field("nextPageToken"),
6584                                );
6585                            }
6586                            next_page_token__ = Some(map_.next_value()?);
6587                        }
6588                        GeneratedField::__SkipField__ => {
6589                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6590                        }
6591                    }
6592                }
6593                Ok(ListProjectBillingInfoResponse {
6594                    project_billing_infos: project_billing_infos__.unwrap_or_default(),
6595                    next_page_token: next_page_token__.unwrap_or_default(),
6596                })
6597            }
6598        }
6599        deserializer
6600            .deserialize_struct(
6601                "origincloud.billing.v1beta1.ListProjectBillingInfoResponse",
6602                FIELDS,
6603                GeneratedVisitor,
6604            )
6605    }
6606}
6607impl serde::Serialize for OrganizationCostReport {
6608    #[allow(deprecated)]
6609    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6610    where
6611        S: serde::Serializer,
6612    {
6613        use serde::ser::SerializeStruct;
6614        let mut len = 0;
6615        if !self.total.is_empty() {
6616            len += 1;
6617        }
6618        if !self.services.is_empty() {
6619            len += 1;
6620        }
6621        if !self.projects.is_empty() {
6622            len += 1;
6623        }
6624        let mut struct_ser = serializer
6625            .serialize_struct(
6626                "origincloud.billing.v1beta1.OrganizationCostReport",
6627                len,
6628            )?;
6629        if !self.total.is_empty() {
6630            struct_ser.serialize_field("total", &self.total)?;
6631        }
6632        if !self.services.is_empty() {
6633            struct_ser.serialize_field("services", &self.services)?;
6634        }
6635        if !self.projects.is_empty() {
6636            struct_ser.serialize_field("projects", &self.projects)?;
6637        }
6638        struct_ser.end()
6639    }
6640}
6641impl<'de> serde::Deserialize<'de> for OrganizationCostReport {
6642    #[allow(deprecated)]
6643    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6644    where
6645        D: serde::Deserializer<'de>,
6646    {
6647        const FIELDS: &[&str] = &["total", "services", "projects"];
6648        #[allow(clippy::enum_variant_names)]
6649        enum GeneratedField {
6650            Total,
6651            Services,
6652            Projects,
6653            __SkipField__,
6654        }
6655        impl<'de> serde::Deserialize<'de> for GeneratedField {
6656            fn deserialize<D>(
6657                deserializer: D,
6658            ) -> std::result::Result<GeneratedField, D::Error>
6659            where
6660                D: serde::Deserializer<'de>,
6661            {
6662                struct GeneratedVisitor;
6663                impl serde::de::Visitor<'_> for GeneratedVisitor {
6664                    type Value = GeneratedField;
6665                    fn expecting(
6666                        &self,
6667                        formatter: &mut std::fmt::Formatter<'_>,
6668                    ) -> std::fmt::Result {
6669                        write!(formatter, "expected one of: {:?}", & FIELDS)
6670                    }
6671                    #[allow(unused_variables)]
6672                    fn visit_str<E>(
6673                        self,
6674                        value: &str,
6675                    ) -> std::result::Result<GeneratedField, E>
6676                    where
6677                        E: serde::de::Error,
6678                    {
6679                        match value {
6680                            "total" => Ok(GeneratedField::Total),
6681                            "services" => Ok(GeneratedField::Services),
6682                            "projects" => Ok(GeneratedField::Projects),
6683                            _ => Ok(GeneratedField::__SkipField__),
6684                        }
6685                    }
6686                }
6687                deserializer.deserialize_identifier(GeneratedVisitor)
6688            }
6689        }
6690        struct GeneratedVisitor;
6691        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6692            type Value = OrganizationCostReport;
6693            fn expecting(
6694                &self,
6695                formatter: &mut std::fmt::Formatter<'_>,
6696            ) -> std::fmt::Result {
6697                formatter
6698                    .write_str(
6699                        "struct origincloud.billing.v1beta1.OrganizationCostReport",
6700                    )
6701            }
6702            fn visit_map<V>(
6703                self,
6704                mut map_: V,
6705            ) -> std::result::Result<OrganizationCostReport, V::Error>
6706            where
6707                V: serde::de::MapAccess<'de>,
6708            {
6709                let mut total__ = None;
6710                let mut services__ = None;
6711                let mut projects__ = None;
6712                while let Some(k) = map_.next_key()? {
6713                    match k {
6714                        GeneratedField::Total => {
6715                            if total__.is_some() {
6716                                return Err(serde::de::Error::duplicate_field("total"));
6717                            }
6718                            total__ = Some(map_.next_value()?);
6719                        }
6720                        GeneratedField::Services => {
6721                            if services__.is_some() {
6722                                return Err(serde::de::Error::duplicate_field("services"));
6723                            }
6724                            services__ = Some(map_.next_value()?);
6725                        }
6726                        GeneratedField::Projects => {
6727                            if projects__.is_some() {
6728                                return Err(serde::de::Error::duplicate_field("projects"));
6729                            }
6730                            projects__ = Some(map_.next_value()?);
6731                        }
6732                        GeneratedField::__SkipField__ => {
6733                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6734                        }
6735                    }
6736                }
6737                Ok(OrganizationCostReport {
6738                    total: total__.unwrap_or_default(),
6739                    services: services__.unwrap_or_default(),
6740                    projects: projects__.unwrap_or_default(),
6741                })
6742            }
6743        }
6744        deserializer
6745            .deserialize_struct(
6746                "origincloud.billing.v1beta1.OrganizationCostReport",
6747                FIELDS,
6748                GeneratedVisitor,
6749            )
6750    }
6751}
6752impl serde::Serialize for PaymentMethod {
6753    #[allow(deprecated)]
6754    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6755    where
6756        S: serde::Serializer,
6757    {
6758        use serde::ser::SerializeStruct;
6759        let mut len = 0;
6760        if self.state != 0 {
6761            len += 1;
6762        }
6763        if !self.card_brand.is_empty() {
6764            len += 1;
6765        }
6766        if !self.card_last4.is_empty() {
6767            len += 1;
6768        }
6769        let mut struct_ser = serializer
6770            .serialize_struct("origincloud.billing.v1beta1.PaymentMethod", len)?;
6771        if self.state != 0 {
6772            let v = payment_method::State::try_from(self.state)
6773                .map_err(|_| serde::ser::Error::custom(
6774                    format!("Invalid variant {}", self.state),
6775                ))?;
6776            struct_ser.serialize_field("state", &v)?;
6777        }
6778        if !self.card_brand.is_empty() {
6779            struct_ser.serialize_field("cardBrand", &self.card_brand)?;
6780        }
6781        if !self.card_last4.is_empty() {
6782            struct_ser.serialize_field("cardLast4", &self.card_last4)?;
6783        }
6784        struct_ser.end()
6785    }
6786}
6787impl<'de> serde::Deserialize<'de> for PaymentMethod {
6788    #[allow(deprecated)]
6789    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6790    where
6791        D: serde::Deserializer<'de>,
6792    {
6793        const FIELDS: &[&str] = &[
6794            "state",
6795            "card_brand",
6796            "cardBrand",
6797            "card_last4",
6798            "cardLast4",
6799        ];
6800        #[allow(clippy::enum_variant_names)]
6801        enum GeneratedField {
6802            State,
6803            CardBrand,
6804            CardLast4,
6805            __SkipField__,
6806        }
6807        impl<'de> serde::Deserialize<'de> for GeneratedField {
6808            fn deserialize<D>(
6809                deserializer: D,
6810            ) -> std::result::Result<GeneratedField, D::Error>
6811            where
6812                D: serde::Deserializer<'de>,
6813            {
6814                struct GeneratedVisitor;
6815                impl serde::de::Visitor<'_> for GeneratedVisitor {
6816                    type Value = GeneratedField;
6817                    fn expecting(
6818                        &self,
6819                        formatter: &mut std::fmt::Formatter<'_>,
6820                    ) -> std::fmt::Result {
6821                        write!(formatter, "expected one of: {:?}", & FIELDS)
6822                    }
6823                    #[allow(unused_variables)]
6824                    fn visit_str<E>(
6825                        self,
6826                        value: &str,
6827                    ) -> std::result::Result<GeneratedField, E>
6828                    where
6829                        E: serde::de::Error,
6830                    {
6831                        match value {
6832                            "state" => Ok(GeneratedField::State),
6833                            "cardBrand" | "card_brand" => Ok(GeneratedField::CardBrand),
6834                            "cardLast4" | "card_last4" => Ok(GeneratedField::CardLast4),
6835                            _ => Ok(GeneratedField::__SkipField__),
6836                        }
6837                    }
6838                }
6839                deserializer.deserialize_identifier(GeneratedVisitor)
6840            }
6841        }
6842        struct GeneratedVisitor;
6843        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6844            type Value = PaymentMethod;
6845            fn expecting(
6846                &self,
6847                formatter: &mut std::fmt::Formatter<'_>,
6848            ) -> std::fmt::Result {
6849                formatter.write_str("struct origincloud.billing.v1beta1.PaymentMethod")
6850            }
6851            fn visit_map<V>(
6852                self,
6853                mut map_: V,
6854            ) -> std::result::Result<PaymentMethod, V::Error>
6855            where
6856                V: serde::de::MapAccess<'de>,
6857            {
6858                let mut state__ = None;
6859                let mut card_brand__ = None;
6860                let mut card_last4__ = None;
6861                while let Some(k) = map_.next_key()? {
6862                    match k {
6863                        GeneratedField::State => {
6864                            if state__.is_some() {
6865                                return Err(serde::de::Error::duplicate_field("state"));
6866                            }
6867                            state__ = Some(
6868                                map_.next_value::<payment_method::State>()? as i32,
6869                            );
6870                        }
6871                        GeneratedField::CardBrand => {
6872                            if card_brand__.is_some() {
6873                                return Err(serde::de::Error::duplicate_field("cardBrand"));
6874                            }
6875                            card_brand__ = Some(map_.next_value()?);
6876                        }
6877                        GeneratedField::CardLast4 => {
6878                            if card_last4__.is_some() {
6879                                return Err(serde::de::Error::duplicate_field("cardLast4"));
6880                            }
6881                            card_last4__ = Some(map_.next_value()?);
6882                        }
6883                        GeneratedField::__SkipField__ => {
6884                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6885                        }
6886                    }
6887                }
6888                Ok(PaymentMethod {
6889                    state: state__.unwrap_or_default(),
6890                    card_brand: card_brand__.unwrap_or_default(),
6891                    card_last4: card_last4__.unwrap_or_default(),
6892                })
6893            }
6894        }
6895        deserializer
6896            .deserialize_struct(
6897                "origincloud.billing.v1beta1.PaymentMethod",
6898                FIELDS,
6899                GeneratedVisitor,
6900            )
6901    }
6902}
6903impl serde::Serialize for payment_method::State {
6904    #[allow(deprecated)]
6905    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6906    where
6907        S: serde::Serializer,
6908    {
6909        let variant = match self {
6910            Self::Unspecified => "STATE_UNSPECIFIED",
6911            Self::Missing => "MISSING",
6912            Self::Verified => "VERIFIED",
6913            Self::NotRequired => "NOT_REQUIRED",
6914        };
6915        serializer.serialize_str(variant)
6916    }
6917}
6918impl<'de> serde::Deserialize<'de> for payment_method::State {
6919    #[allow(deprecated)]
6920    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6921    where
6922        D: serde::Deserializer<'de>,
6923    {
6924        const FIELDS: &[&str] = &[
6925            "STATE_UNSPECIFIED",
6926            "MISSING",
6927            "VERIFIED",
6928            "NOT_REQUIRED",
6929        ];
6930        struct GeneratedVisitor;
6931        impl serde::de::Visitor<'_> for GeneratedVisitor {
6932            type Value = payment_method::State;
6933            fn expecting(
6934                &self,
6935                formatter: &mut std::fmt::Formatter<'_>,
6936            ) -> std::fmt::Result {
6937                write!(formatter, "expected one of: {:?}", & FIELDS)
6938            }
6939            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
6940            where
6941                E: serde::de::Error,
6942            {
6943                i32::try_from(v)
6944                    .ok()
6945                    .and_then(|x| {
6946                        x
6947                            .try_into()
6948                            .ok()
6949                            .or_else(|| Some(payment_method::State::default()))
6950                    })
6951                    .ok_or_else(|| {
6952                        serde::de::Error::invalid_value(
6953                            serde::de::Unexpected::Signed(v),
6954                            &self,
6955                        )
6956                    })
6957            }
6958            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
6959            where
6960                E: serde::de::Error,
6961            {
6962                i32::try_from(v)
6963                    .ok()
6964                    .and_then(|x| {
6965                        x
6966                            .try_into()
6967                            .ok()
6968                            .or_else(|| Some(payment_method::State::default()))
6969                    })
6970                    .ok_or_else(|| {
6971                        serde::de::Error::invalid_value(
6972                            serde::de::Unexpected::Unsigned(v),
6973                            &self,
6974                        )
6975                    })
6976            }
6977            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
6978            where
6979                E: serde::de::Error,
6980            {
6981                match value {
6982                    "STATE_UNSPECIFIED" => Ok(payment_method::State::Unspecified),
6983                    "MISSING" => Ok(payment_method::State::Missing),
6984                    "VERIFIED" => Ok(payment_method::State::Verified),
6985                    "NOT_REQUIRED" => Ok(payment_method::State::NotRequired),
6986                    _ => Ok(payment_method::State::default()),
6987                }
6988            }
6989        }
6990        deserializer.deserialize_any(GeneratedVisitor)
6991    }
6992}
6993impl serde::Serialize for Price {
6994    #[allow(deprecated)]
6995    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6996    where
6997        S: serde::Serializer,
6998    {
6999        use serde::ser::SerializeStruct;
7000        let mut len = 0;
7001        if !self.product_key.is_empty() {
7002            len += 1;
7003        }
7004        if !self.dimensions.is_empty() {
7005            len += 1;
7006        }
7007        if !self.unit_type.is_empty() {
7008            len += 1;
7009        }
7010        if self.unit_count != 0 {
7011            len += 1;
7012        }
7013        if !self.amount.is_empty() {
7014            len += 1;
7015        }
7016        if self.valid_from.is_some() {
7017            len += 1;
7018        }
7019        if self.valid_until.is_some() {
7020            len += 1;
7021        }
7022        let mut struct_ser = serializer
7023            .serialize_struct("origincloud.billing.v1beta1.Price", len)?;
7024        if !self.product_key.is_empty() {
7025            struct_ser.serialize_field("product_key", &self.product_key)?;
7026        }
7027        if !self.dimensions.is_empty() {
7028            struct_ser.serialize_field("dimensions", &self.dimensions)?;
7029        }
7030        if !self.unit_type.is_empty() {
7031            struct_ser.serialize_field("unit_type", &self.unit_type)?;
7032        }
7033        if self.unit_count != 0 {
7034            struct_ser.serialize_field("unit_count", &self.unit_count)?;
7035        }
7036        if !self.amount.is_empty() {
7037            struct_ser.serialize_field("amount", &self.amount)?;
7038        }
7039        if let Some(v) = self.valid_from.as_ref() {
7040            struct_ser.serialize_field("valid_from", v)?;
7041        }
7042        if let Some(v) = self.valid_until.as_ref() {
7043            struct_ser.serialize_field("valid_until", v)?;
7044        }
7045        struct_ser.end()
7046    }
7047}
7048impl<'de> serde::Deserialize<'de> for Price {
7049    #[allow(deprecated)]
7050    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7051    where
7052        D: serde::Deserializer<'de>,
7053    {
7054        const FIELDS: &[&str] = &[
7055            "product_key",
7056            "dimensions",
7057            "unit_type",
7058            "unit_count",
7059            "amount",
7060            "valid_from",
7061            "valid_until",
7062        ];
7063        #[allow(clippy::enum_variant_names)]
7064        enum GeneratedField {
7065            ProductKey,
7066            Dimensions,
7067            UnitType,
7068            UnitCount,
7069            Amount,
7070            ValidFrom,
7071            ValidUntil,
7072            __SkipField__,
7073        }
7074        impl<'de> serde::Deserialize<'de> for GeneratedField {
7075            fn deserialize<D>(
7076                deserializer: D,
7077            ) -> std::result::Result<GeneratedField, D::Error>
7078            where
7079                D: serde::Deserializer<'de>,
7080            {
7081                struct GeneratedVisitor;
7082                impl serde::de::Visitor<'_> for GeneratedVisitor {
7083                    type Value = GeneratedField;
7084                    fn expecting(
7085                        &self,
7086                        formatter: &mut std::fmt::Formatter<'_>,
7087                    ) -> std::fmt::Result {
7088                        write!(formatter, "expected one of: {:?}", & FIELDS)
7089                    }
7090                    #[allow(unused_variables)]
7091                    fn visit_str<E>(
7092                        self,
7093                        value: &str,
7094                    ) -> std::result::Result<GeneratedField, E>
7095                    where
7096                        E: serde::de::Error,
7097                    {
7098                        match value {
7099                            "product_key" => Ok(GeneratedField::ProductKey),
7100                            "dimensions" => Ok(GeneratedField::Dimensions),
7101                            "unit_type" => Ok(GeneratedField::UnitType),
7102                            "unit_count" => Ok(GeneratedField::UnitCount),
7103                            "amount" => Ok(GeneratedField::Amount),
7104                            "valid_from" => Ok(GeneratedField::ValidFrom),
7105                            "valid_until" => Ok(GeneratedField::ValidUntil),
7106                            _ => Ok(GeneratedField::__SkipField__),
7107                        }
7108                    }
7109                }
7110                deserializer.deserialize_identifier(GeneratedVisitor)
7111            }
7112        }
7113        struct GeneratedVisitor;
7114        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7115            type Value = Price;
7116            fn expecting(
7117                &self,
7118                formatter: &mut std::fmt::Formatter<'_>,
7119            ) -> std::fmt::Result {
7120                formatter.write_str("struct origincloud.billing.v1beta1.Price")
7121            }
7122            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Price, V::Error>
7123            where
7124                V: serde::de::MapAccess<'de>,
7125            {
7126                let mut product_key__ = None;
7127                let mut dimensions__ = None;
7128                let mut unit_type__ = None;
7129                let mut unit_count__ = None;
7130                let mut amount__ = None;
7131                let mut valid_from__ = None;
7132                let mut valid_until__ = None;
7133                while let Some(k) = map_.next_key()? {
7134                    match k {
7135                        GeneratedField::ProductKey => {
7136                            if product_key__.is_some() {
7137                                return Err(
7138                                    serde::de::Error::duplicate_field("product_key"),
7139                                );
7140                            }
7141                            product_key__ = Some(map_.next_value()?);
7142                        }
7143                        GeneratedField::Dimensions => {
7144                            if dimensions__.is_some() {
7145                                return Err(serde::de::Error::duplicate_field("dimensions"));
7146                            }
7147                            dimensions__ = Some(
7148                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
7149                            );
7150                        }
7151                        GeneratedField::UnitType => {
7152                            if unit_type__.is_some() {
7153                                return Err(serde::de::Error::duplicate_field("unit_type"));
7154                            }
7155                            unit_type__ = Some(map_.next_value()?);
7156                        }
7157                        GeneratedField::UnitCount => {
7158                            if unit_count__.is_some() {
7159                                return Err(serde::de::Error::duplicate_field("unit_count"));
7160                            }
7161                            unit_count__ = Some(
7162                                map_
7163                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
7164                                    .0,
7165                            );
7166                        }
7167                        GeneratedField::Amount => {
7168                            if amount__.is_some() {
7169                                return Err(serde::de::Error::duplicate_field("amount"));
7170                            }
7171                            amount__ = Some(map_.next_value()?);
7172                        }
7173                        GeneratedField::ValidFrom => {
7174                            if valid_from__.is_some() {
7175                                return Err(serde::de::Error::duplicate_field("valid_from"));
7176                            }
7177                            valid_from__ = map_.next_value()?;
7178                        }
7179                        GeneratedField::ValidUntil => {
7180                            if valid_until__.is_some() {
7181                                return Err(
7182                                    serde::de::Error::duplicate_field("valid_until"),
7183                                );
7184                            }
7185                            valid_until__ = map_.next_value()?;
7186                        }
7187                        GeneratedField::__SkipField__ => {
7188                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7189                        }
7190                    }
7191                }
7192                Ok(Price {
7193                    product_key: product_key__.unwrap_or_default(),
7194                    dimensions: dimensions__.unwrap_or_default(),
7195                    unit_type: unit_type__.unwrap_or_default(),
7196                    unit_count: unit_count__.unwrap_or_default(),
7197                    amount: amount__.unwrap_or_default(),
7198                    valid_from: valid_from__,
7199                    valid_until: valid_until__,
7200                })
7201            }
7202        }
7203        deserializer
7204            .deserialize_struct(
7205                "origincloud.billing.v1beta1.Price",
7206                FIELDS,
7207                GeneratedVisitor,
7208            )
7209    }
7210}
7211impl serde::Serialize for PriceFamily {
7212    #[allow(deprecated)]
7213    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7214    where
7215        S: serde::Serializer,
7216    {
7217        use serde::ser::SerializeStruct;
7218        let mut len = 0;
7219        if !self.family.is_empty() {
7220            len += 1;
7221        }
7222        if !self.prices.is_empty() {
7223            len += 1;
7224        }
7225        let mut struct_ser = serializer
7226            .serialize_struct("origincloud.billing.v1beta1.PriceFamily", len)?;
7227        if !self.family.is_empty() {
7228            struct_ser.serialize_field("family", &self.family)?;
7229        }
7230        if !self.prices.is_empty() {
7231            struct_ser.serialize_field("prices", &self.prices)?;
7232        }
7233        struct_ser.end()
7234    }
7235}
7236impl<'de> serde::Deserialize<'de> for PriceFamily {
7237    #[allow(deprecated)]
7238    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7239    where
7240        D: serde::Deserializer<'de>,
7241    {
7242        const FIELDS: &[&str] = &["family", "prices"];
7243        #[allow(clippy::enum_variant_names)]
7244        enum GeneratedField {
7245            Family,
7246            Prices,
7247            __SkipField__,
7248        }
7249        impl<'de> serde::Deserialize<'de> for GeneratedField {
7250            fn deserialize<D>(
7251                deserializer: D,
7252            ) -> std::result::Result<GeneratedField, D::Error>
7253            where
7254                D: serde::Deserializer<'de>,
7255            {
7256                struct GeneratedVisitor;
7257                impl serde::de::Visitor<'_> for GeneratedVisitor {
7258                    type Value = GeneratedField;
7259                    fn expecting(
7260                        &self,
7261                        formatter: &mut std::fmt::Formatter<'_>,
7262                    ) -> std::fmt::Result {
7263                        write!(formatter, "expected one of: {:?}", & FIELDS)
7264                    }
7265                    #[allow(unused_variables)]
7266                    fn visit_str<E>(
7267                        self,
7268                        value: &str,
7269                    ) -> std::result::Result<GeneratedField, E>
7270                    where
7271                        E: serde::de::Error,
7272                    {
7273                        match value {
7274                            "family" => Ok(GeneratedField::Family),
7275                            "prices" => Ok(GeneratedField::Prices),
7276                            _ => Ok(GeneratedField::__SkipField__),
7277                        }
7278                    }
7279                }
7280                deserializer.deserialize_identifier(GeneratedVisitor)
7281            }
7282        }
7283        struct GeneratedVisitor;
7284        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7285            type Value = PriceFamily;
7286            fn expecting(
7287                &self,
7288                formatter: &mut std::fmt::Formatter<'_>,
7289            ) -> std::fmt::Result {
7290                formatter.write_str("struct origincloud.billing.v1beta1.PriceFamily")
7291            }
7292            fn visit_map<V>(
7293                self,
7294                mut map_: V,
7295            ) -> std::result::Result<PriceFamily, V::Error>
7296            where
7297                V: serde::de::MapAccess<'de>,
7298            {
7299                let mut family__ = None;
7300                let mut prices__ = None;
7301                while let Some(k) = map_.next_key()? {
7302                    match k {
7303                        GeneratedField::Family => {
7304                            if family__.is_some() {
7305                                return Err(serde::de::Error::duplicate_field("family"));
7306                            }
7307                            family__ = Some(map_.next_value()?);
7308                        }
7309                        GeneratedField::Prices => {
7310                            if prices__.is_some() {
7311                                return Err(serde::de::Error::duplicate_field("prices"));
7312                            }
7313                            prices__ = Some(map_.next_value()?);
7314                        }
7315                        GeneratedField::__SkipField__ => {
7316                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7317                        }
7318                    }
7319                }
7320                Ok(PriceFamily {
7321                    family: family__.unwrap_or_default(),
7322                    prices: prices__.unwrap_or_default(),
7323                })
7324            }
7325        }
7326        deserializer
7327            .deserialize_struct(
7328                "origincloud.billing.v1beta1.PriceFamily",
7329                FIELDS,
7330                GeneratedVisitor,
7331            )
7332    }
7333}
7334impl serde::Serialize for PriceList {
7335    #[allow(deprecated)]
7336    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7337    where
7338        S: serde::Serializer,
7339    {
7340        use serde::ser::SerializeStruct;
7341        let mut len = 0;
7342        if !self.currency.is_empty() {
7343            len += 1;
7344        }
7345        if self.amounts_exclude_vat {
7346            len += 1;
7347        }
7348        if self.last_changed.is_some() {
7349            len += 1;
7350        }
7351        if !self.families.is_empty() {
7352            len += 1;
7353        }
7354        let mut struct_ser = serializer
7355            .serialize_struct("origincloud.billing.v1beta1.PriceList", len)?;
7356        if !self.currency.is_empty() {
7357            struct_ser.serialize_field("currency", &self.currency)?;
7358        }
7359        if self.amounts_exclude_vat {
7360            struct_ser
7361                .serialize_field("amounts_exclude_vat", &self.amounts_exclude_vat)?;
7362        }
7363        if let Some(v) = self.last_changed.as_ref() {
7364            struct_ser.serialize_field("last_changed", v)?;
7365        }
7366        if !self.families.is_empty() {
7367            struct_ser.serialize_field("families", &self.families)?;
7368        }
7369        struct_ser.end()
7370    }
7371}
7372impl<'de> serde::Deserialize<'de> for PriceList {
7373    #[allow(deprecated)]
7374    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7375    where
7376        D: serde::Deserializer<'de>,
7377    {
7378        const FIELDS: &[&str] = &[
7379            "currency",
7380            "amounts_exclude_vat",
7381            "last_changed",
7382            "families",
7383        ];
7384        #[allow(clippy::enum_variant_names)]
7385        enum GeneratedField {
7386            Currency,
7387            AmountsExcludeVat,
7388            LastChanged,
7389            Families,
7390            __SkipField__,
7391        }
7392        impl<'de> serde::Deserialize<'de> for GeneratedField {
7393            fn deserialize<D>(
7394                deserializer: D,
7395            ) -> std::result::Result<GeneratedField, D::Error>
7396            where
7397                D: serde::Deserializer<'de>,
7398            {
7399                struct GeneratedVisitor;
7400                impl serde::de::Visitor<'_> for GeneratedVisitor {
7401                    type Value = GeneratedField;
7402                    fn expecting(
7403                        &self,
7404                        formatter: &mut std::fmt::Formatter<'_>,
7405                    ) -> std::fmt::Result {
7406                        write!(formatter, "expected one of: {:?}", & FIELDS)
7407                    }
7408                    #[allow(unused_variables)]
7409                    fn visit_str<E>(
7410                        self,
7411                        value: &str,
7412                    ) -> std::result::Result<GeneratedField, E>
7413                    where
7414                        E: serde::de::Error,
7415                    {
7416                        match value {
7417                            "currency" => Ok(GeneratedField::Currency),
7418                            "amounts_exclude_vat" => {
7419                                Ok(GeneratedField::AmountsExcludeVat)
7420                            }
7421                            "last_changed" => Ok(GeneratedField::LastChanged),
7422                            "families" => Ok(GeneratedField::Families),
7423                            _ => Ok(GeneratedField::__SkipField__),
7424                        }
7425                    }
7426                }
7427                deserializer.deserialize_identifier(GeneratedVisitor)
7428            }
7429        }
7430        struct GeneratedVisitor;
7431        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7432            type Value = PriceList;
7433            fn expecting(
7434                &self,
7435                formatter: &mut std::fmt::Formatter<'_>,
7436            ) -> std::fmt::Result {
7437                formatter.write_str("struct origincloud.billing.v1beta1.PriceList")
7438            }
7439            fn visit_map<V>(
7440                self,
7441                mut map_: V,
7442            ) -> std::result::Result<PriceList, V::Error>
7443            where
7444                V: serde::de::MapAccess<'de>,
7445            {
7446                let mut currency__ = None;
7447                let mut amounts_exclude_vat__ = None;
7448                let mut last_changed__ = None;
7449                let mut families__ = None;
7450                while let Some(k) = map_.next_key()? {
7451                    match k {
7452                        GeneratedField::Currency => {
7453                            if currency__.is_some() {
7454                                return Err(serde::de::Error::duplicate_field("currency"));
7455                            }
7456                            currency__ = Some(map_.next_value()?);
7457                        }
7458                        GeneratedField::AmountsExcludeVat => {
7459                            if amounts_exclude_vat__.is_some() {
7460                                return Err(
7461                                    serde::de::Error::duplicate_field("amounts_exclude_vat"),
7462                                );
7463                            }
7464                            amounts_exclude_vat__ = Some(map_.next_value()?);
7465                        }
7466                        GeneratedField::LastChanged => {
7467                            if last_changed__.is_some() {
7468                                return Err(
7469                                    serde::de::Error::duplicate_field("last_changed"),
7470                                );
7471                            }
7472                            last_changed__ = map_.next_value()?;
7473                        }
7474                        GeneratedField::Families => {
7475                            if families__.is_some() {
7476                                return Err(serde::de::Error::duplicate_field("families"));
7477                            }
7478                            families__ = Some(map_.next_value()?);
7479                        }
7480                        GeneratedField::__SkipField__ => {
7481                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7482                        }
7483                    }
7484                }
7485                Ok(PriceList {
7486                    currency: currency__.unwrap_or_default(),
7487                    amounts_exclude_vat: amounts_exclude_vat__.unwrap_or_default(),
7488                    last_changed: last_changed__,
7489                    families: families__.unwrap_or_default(),
7490                })
7491            }
7492        }
7493        deserializer
7494            .deserialize_struct(
7495                "origincloud.billing.v1beta1.PriceList",
7496                FIELDS,
7497                GeneratedVisitor,
7498            )
7499    }
7500}
7501impl serde::Serialize for ProductCost {
7502    #[allow(deprecated)]
7503    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7504    where
7505        S: serde::Serializer,
7506    {
7507        use serde::ser::SerializeStruct;
7508        let mut len = 0;
7509        if !self.product_key.is_empty() {
7510            len += 1;
7511        }
7512        if !self.total.is_empty() {
7513            len += 1;
7514        }
7515        if !self.buckets.is_empty() {
7516            len += 1;
7517        }
7518        let mut struct_ser = serializer
7519            .serialize_struct("origincloud.billing.v1beta1.ProductCost", len)?;
7520        if !self.product_key.is_empty() {
7521            struct_ser.serialize_field("productKey", &self.product_key)?;
7522        }
7523        if !self.total.is_empty() {
7524            struct_ser.serialize_field("total", &self.total)?;
7525        }
7526        if !self.buckets.is_empty() {
7527            struct_ser.serialize_field("buckets", &self.buckets)?;
7528        }
7529        struct_ser.end()
7530    }
7531}
7532impl<'de> serde::Deserialize<'de> for ProductCost {
7533    #[allow(deprecated)]
7534    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7535    where
7536        D: serde::Deserializer<'de>,
7537    {
7538        const FIELDS: &[&str] = &["product_key", "productKey", "total", "buckets"];
7539        #[allow(clippy::enum_variant_names)]
7540        enum GeneratedField {
7541            ProductKey,
7542            Total,
7543            Buckets,
7544            __SkipField__,
7545        }
7546        impl<'de> serde::Deserialize<'de> for GeneratedField {
7547            fn deserialize<D>(
7548                deserializer: D,
7549            ) -> std::result::Result<GeneratedField, D::Error>
7550            where
7551                D: serde::Deserializer<'de>,
7552            {
7553                struct GeneratedVisitor;
7554                impl serde::de::Visitor<'_> for GeneratedVisitor {
7555                    type Value = GeneratedField;
7556                    fn expecting(
7557                        &self,
7558                        formatter: &mut std::fmt::Formatter<'_>,
7559                    ) -> std::fmt::Result {
7560                        write!(formatter, "expected one of: {:?}", & FIELDS)
7561                    }
7562                    #[allow(unused_variables)]
7563                    fn visit_str<E>(
7564                        self,
7565                        value: &str,
7566                    ) -> std::result::Result<GeneratedField, E>
7567                    where
7568                        E: serde::de::Error,
7569                    {
7570                        match value {
7571                            "productKey" | "product_key" => {
7572                                Ok(GeneratedField::ProductKey)
7573                            }
7574                            "total" => Ok(GeneratedField::Total),
7575                            "buckets" => Ok(GeneratedField::Buckets),
7576                            _ => Ok(GeneratedField::__SkipField__),
7577                        }
7578                    }
7579                }
7580                deserializer.deserialize_identifier(GeneratedVisitor)
7581            }
7582        }
7583        struct GeneratedVisitor;
7584        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7585            type Value = ProductCost;
7586            fn expecting(
7587                &self,
7588                formatter: &mut std::fmt::Formatter<'_>,
7589            ) -> std::fmt::Result {
7590                formatter.write_str("struct origincloud.billing.v1beta1.ProductCost")
7591            }
7592            fn visit_map<V>(
7593                self,
7594                mut map_: V,
7595            ) -> std::result::Result<ProductCost, V::Error>
7596            where
7597                V: serde::de::MapAccess<'de>,
7598            {
7599                let mut product_key__ = None;
7600                let mut total__ = None;
7601                let mut buckets__ = None;
7602                while let Some(k) = map_.next_key()? {
7603                    match k {
7604                        GeneratedField::ProductKey => {
7605                            if product_key__.is_some() {
7606                                return Err(serde::de::Error::duplicate_field("productKey"));
7607                            }
7608                            product_key__ = Some(map_.next_value()?);
7609                        }
7610                        GeneratedField::Total => {
7611                            if total__.is_some() {
7612                                return Err(serde::de::Error::duplicate_field("total"));
7613                            }
7614                            total__ = Some(map_.next_value()?);
7615                        }
7616                        GeneratedField::Buckets => {
7617                            if buckets__.is_some() {
7618                                return Err(serde::de::Error::duplicate_field("buckets"));
7619                            }
7620                            buckets__ = Some(map_.next_value()?);
7621                        }
7622                        GeneratedField::__SkipField__ => {
7623                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7624                        }
7625                    }
7626                }
7627                Ok(ProductCost {
7628                    product_key: product_key__.unwrap_or_default(),
7629                    total: total__.unwrap_or_default(),
7630                    buckets: buckets__.unwrap_or_default(),
7631                })
7632            }
7633        }
7634        deserializer
7635            .deserialize_struct(
7636                "origincloud.billing.v1beta1.ProductCost",
7637                FIELDS,
7638                GeneratedVisitor,
7639            )
7640    }
7641}
7642impl serde::Serialize for ProjectBillingInfo {
7643    #[allow(deprecated)]
7644    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7645    where
7646        S: serde::Serializer,
7647    {
7648        use serde::ser::SerializeStruct;
7649        let mut len = 0;
7650        if !self.name.is_empty() {
7651            len += 1;
7652        }
7653        if !self.billing_account.is_empty() {
7654            len += 1;
7655        }
7656        let mut struct_ser = serializer
7657            .serialize_struct("origincloud.billing.v1beta1.ProjectBillingInfo", len)?;
7658        if !self.name.is_empty() {
7659            struct_ser.serialize_field("name", &self.name)?;
7660        }
7661        if !self.billing_account.is_empty() {
7662            struct_ser.serialize_field("billingAccount", &self.billing_account)?;
7663        }
7664        struct_ser.end()
7665    }
7666}
7667impl<'de> serde::Deserialize<'de> for ProjectBillingInfo {
7668    #[allow(deprecated)]
7669    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7670    where
7671        D: serde::Deserializer<'de>,
7672    {
7673        const FIELDS: &[&str] = &["name", "billing_account", "billingAccount"];
7674        #[allow(clippy::enum_variant_names)]
7675        enum GeneratedField {
7676            Name,
7677            BillingAccount,
7678            __SkipField__,
7679        }
7680        impl<'de> serde::Deserialize<'de> for GeneratedField {
7681            fn deserialize<D>(
7682                deserializer: D,
7683            ) -> std::result::Result<GeneratedField, D::Error>
7684            where
7685                D: serde::Deserializer<'de>,
7686            {
7687                struct GeneratedVisitor;
7688                impl serde::de::Visitor<'_> for GeneratedVisitor {
7689                    type Value = GeneratedField;
7690                    fn expecting(
7691                        &self,
7692                        formatter: &mut std::fmt::Formatter<'_>,
7693                    ) -> std::fmt::Result {
7694                        write!(formatter, "expected one of: {:?}", & FIELDS)
7695                    }
7696                    #[allow(unused_variables)]
7697                    fn visit_str<E>(
7698                        self,
7699                        value: &str,
7700                    ) -> std::result::Result<GeneratedField, E>
7701                    where
7702                        E: serde::de::Error,
7703                    {
7704                        match value {
7705                            "name" => Ok(GeneratedField::Name),
7706                            "billingAccount" | "billing_account" => {
7707                                Ok(GeneratedField::BillingAccount)
7708                            }
7709                            _ => Ok(GeneratedField::__SkipField__),
7710                        }
7711                    }
7712                }
7713                deserializer.deserialize_identifier(GeneratedVisitor)
7714            }
7715        }
7716        struct GeneratedVisitor;
7717        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7718            type Value = ProjectBillingInfo;
7719            fn expecting(
7720                &self,
7721                formatter: &mut std::fmt::Formatter<'_>,
7722            ) -> std::fmt::Result {
7723                formatter
7724                    .write_str("struct origincloud.billing.v1beta1.ProjectBillingInfo")
7725            }
7726            fn visit_map<V>(
7727                self,
7728                mut map_: V,
7729            ) -> std::result::Result<ProjectBillingInfo, V::Error>
7730            where
7731                V: serde::de::MapAccess<'de>,
7732            {
7733                let mut name__ = None;
7734                let mut billing_account__ = None;
7735                while let Some(k) = map_.next_key()? {
7736                    match k {
7737                        GeneratedField::Name => {
7738                            if name__.is_some() {
7739                                return Err(serde::de::Error::duplicate_field("name"));
7740                            }
7741                            name__ = Some(map_.next_value()?);
7742                        }
7743                        GeneratedField::BillingAccount => {
7744                            if billing_account__.is_some() {
7745                                return Err(
7746                                    serde::de::Error::duplicate_field("billingAccount"),
7747                                );
7748                            }
7749                            billing_account__ = Some(map_.next_value()?);
7750                        }
7751                        GeneratedField::__SkipField__ => {
7752                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7753                        }
7754                    }
7755                }
7756                Ok(ProjectBillingInfo {
7757                    name: name__.unwrap_or_default(),
7758                    billing_account: billing_account__.unwrap_or_default(),
7759                })
7760            }
7761        }
7762        deserializer
7763            .deserialize_struct(
7764                "origincloud.billing.v1beta1.ProjectBillingInfo",
7765                FIELDS,
7766                GeneratedVisitor,
7767            )
7768    }
7769}
7770impl serde::Serialize for ProjectCost {
7771    #[allow(deprecated)]
7772    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7773    where
7774        S: serde::Serializer,
7775    {
7776        use serde::ser::SerializeStruct;
7777        let mut len = 0;
7778        if !self.project.is_empty() {
7779            len += 1;
7780        }
7781        if !self.total.is_empty() {
7782            len += 1;
7783        }
7784        if !self.buckets.is_empty() {
7785            len += 1;
7786        }
7787        let mut struct_ser = serializer
7788            .serialize_struct("origincloud.billing.v1beta1.ProjectCost", len)?;
7789        if !self.project.is_empty() {
7790            struct_ser.serialize_field("project", &self.project)?;
7791        }
7792        if !self.total.is_empty() {
7793            struct_ser.serialize_field("total", &self.total)?;
7794        }
7795        if !self.buckets.is_empty() {
7796            struct_ser.serialize_field("buckets", &self.buckets)?;
7797        }
7798        struct_ser.end()
7799    }
7800}
7801impl<'de> serde::Deserialize<'de> for ProjectCost {
7802    #[allow(deprecated)]
7803    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7804    where
7805        D: serde::Deserializer<'de>,
7806    {
7807        const FIELDS: &[&str] = &["project", "total", "buckets"];
7808        #[allow(clippy::enum_variant_names)]
7809        enum GeneratedField {
7810            Project,
7811            Total,
7812            Buckets,
7813            __SkipField__,
7814        }
7815        impl<'de> serde::Deserialize<'de> for GeneratedField {
7816            fn deserialize<D>(
7817                deserializer: D,
7818            ) -> std::result::Result<GeneratedField, D::Error>
7819            where
7820                D: serde::Deserializer<'de>,
7821            {
7822                struct GeneratedVisitor;
7823                impl serde::de::Visitor<'_> for GeneratedVisitor {
7824                    type Value = GeneratedField;
7825                    fn expecting(
7826                        &self,
7827                        formatter: &mut std::fmt::Formatter<'_>,
7828                    ) -> std::fmt::Result {
7829                        write!(formatter, "expected one of: {:?}", & FIELDS)
7830                    }
7831                    #[allow(unused_variables)]
7832                    fn visit_str<E>(
7833                        self,
7834                        value: &str,
7835                    ) -> std::result::Result<GeneratedField, E>
7836                    where
7837                        E: serde::de::Error,
7838                    {
7839                        match value {
7840                            "project" => Ok(GeneratedField::Project),
7841                            "total" => Ok(GeneratedField::Total),
7842                            "buckets" => Ok(GeneratedField::Buckets),
7843                            _ => Ok(GeneratedField::__SkipField__),
7844                        }
7845                    }
7846                }
7847                deserializer.deserialize_identifier(GeneratedVisitor)
7848            }
7849        }
7850        struct GeneratedVisitor;
7851        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7852            type Value = ProjectCost;
7853            fn expecting(
7854                &self,
7855                formatter: &mut std::fmt::Formatter<'_>,
7856            ) -> std::fmt::Result {
7857                formatter.write_str("struct origincloud.billing.v1beta1.ProjectCost")
7858            }
7859            fn visit_map<V>(
7860                self,
7861                mut map_: V,
7862            ) -> std::result::Result<ProjectCost, V::Error>
7863            where
7864                V: serde::de::MapAccess<'de>,
7865            {
7866                let mut project__ = None;
7867                let mut total__ = None;
7868                let mut buckets__ = None;
7869                while let Some(k) = map_.next_key()? {
7870                    match k {
7871                        GeneratedField::Project => {
7872                            if project__.is_some() {
7873                                return Err(serde::de::Error::duplicate_field("project"));
7874                            }
7875                            project__ = Some(map_.next_value()?);
7876                        }
7877                        GeneratedField::Total => {
7878                            if total__.is_some() {
7879                                return Err(serde::de::Error::duplicate_field("total"));
7880                            }
7881                            total__ = Some(map_.next_value()?);
7882                        }
7883                        GeneratedField::Buckets => {
7884                            if buckets__.is_some() {
7885                                return Err(serde::de::Error::duplicate_field("buckets"));
7886                            }
7887                            buckets__ = Some(map_.next_value()?);
7888                        }
7889                        GeneratedField::__SkipField__ => {
7890                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7891                        }
7892                    }
7893                }
7894                Ok(ProjectCost {
7895                    project: project__.unwrap_or_default(),
7896                    total: total__.unwrap_or_default(),
7897                    buckets: buckets__.unwrap_or_default(),
7898                })
7899            }
7900        }
7901        deserializer
7902            .deserialize_struct(
7903                "origincloud.billing.v1beta1.ProjectCost",
7904                FIELDS,
7905                GeneratedVisitor,
7906            )
7907    }
7908}
7909impl serde::Serialize for QueryBillingAccountCostRequest {
7910    #[allow(deprecated)]
7911    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7912    where
7913        S: serde::Serializer,
7914    {
7915        use serde::ser::SerializeStruct;
7916        let mut len = 0;
7917        if !self.billing_account.is_empty() {
7918            len += 1;
7919        }
7920        if self.start_time.is_some() {
7921            len += 1;
7922        }
7923        if self.end_time.is_some() {
7924            len += 1;
7925        }
7926        if self.granularity != 0 {
7927            len += 1;
7928        }
7929        let mut struct_ser = serializer
7930            .serialize_struct(
7931                "origincloud.billing.v1beta1.QueryBillingAccountCostRequest",
7932                len,
7933            )?;
7934        if !self.billing_account.is_empty() {
7935            struct_ser.serialize_field("billingAccount", &self.billing_account)?;
7936        }
7937        if let Some(v) = self.start_time.as_ref() {
7938            struct_ser.serialize_field("startTime", v)?;
7939        }
7940        if let Some(v) = self.end_time.as_ref() {
7941            struct_ser.serialize_field("endTime", v)?;
7942        }
7943        if self.granularity != 0 {
7944            let v = Granularity::try_from(self.granularity)
7945                .map_err(|_| serde::ser::Error::custom(
7946                    format!("Invalid variant {}", self.granularity),
7947                ))?;
7948            struct_ser.serialize_field("granularity", &v)?;
7949        }
7950        struct_ser.end()
7951    }
7952}
7953impl<'de> serde::Deserialize<'de> for QueryBillingAccountCostRequest {
7954    #[allow(deprecated)]
7955    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7956    where
7957        D: serde::Deserializer<'de>,
7958    {
7959        const FIELDS: &[&str] = &[
7960            "billing_account",
7961            "billingAccount",
7962            "start_time",
7963            "startTime",
7964            "end_time",
7965            "endTime",
7966            "granularity",
7967        ];
7968        #[allow(clippy::enum_variant_names)]
7969        enum GeneratedField {
7970            BillingAccount,
7971            StartTime,
7972            EndTime,
7973            Granularity,
7974            __SkipField__,
7975        }
7976        impl<'de> serde::Deserialize<'de> for GeneratedField {
7977            fn deserialize<D>(
7978                deserializer: D,
7979            ) -> std::result::Result<GeneratedField, D::Error>
7980            where
7981                D: serde::Deserializer<'de>,
7982            {
7983                struct GeneratedVisitor;
7984                impl serde::de::Visitor<'_> for GeneratedVisitor {
7985                    type Value = GeneratedField;
7986                    fn expecting(
7987                        &self,
7988                        formatter: &mut std::fmt::Formatter<'_>,
7989                    ) -> std::fmt::Result {
7990                        write!(formatter, "expected one of: {:?}", & FIELDS)
7991                    }
7992                    #[allow(unused_variables)]
7993                    fn visit_str<E>(
7994                        self,
7995                        value: &str,
7996                    ) -> std::result::Result<GeneratedField, E>
7997                    where
7998                        E: serde::de::Error,
7999                    {
8000                        match value {
8001                            "billingAccount" | "billing_account" => {
8002                                Ok(GeneratedField::BillingAccount)
8003                            }
8004                            "startTime" | "start_time" => Ok(GeneratedField::StartTime),
8005                            "endTime" | "end_time" => Ok(GeneratedField::EndTime),
8006                            "granularity" => Ok(GeneratedField::Granularity),
8007                            _ => Ok(GeneratedField::__SkipField__),
8008                        }
8009                    }
8010                }
8011                deserializer.deserialize_identifier(GeneratedVisitor)
8012            }
8013        }
8014        struct GeneratedVisitor;
8015        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8016            type Value = QueryBillingAccountCostRequest;
8017            fn expecting(
8018                &self,
8019                formatter: &mut std::fmt::Formatter<'_>,
8020            ) -> std::fmt::Result {
8021                formatter
8022                    .write_str(
8023                        "struct origincloud.billing.v1beta1.QueryBillingAccountCostRequest",
8024                    )
8025            }
8026            fn visit_map<V>(
8027                self,
8028                mut map_: V,
8029            ) -> std::result::Result<QueryBillingAccountCostRequest, V::Error>
8030            where
8031                V: serde::de::MapAccess<'de>,
8032            {
8033                let mut billing_account__ = None;
8034                let mut start_time__ = None;
8035                let mut end_time__ = None;
8036                let mut granularity__ = None;
8037                while let Some(k) = map_.next_key()? {
8038                    match k {
8039                        GeneratedField::BillingAccount => {
8040                            if billing_account__.is_some() {
8041                                return Err(
8042                                    serde::de::Error::duplicate_field("billingAccount"),
8043                                );
8044                            }
8045                            billing_account__ = Some(map_.next_value()?);
8046                        }
8047                        GeneratedField::StartTime => {
8048                            if start_time__.is_some() {
8049                                return Err(serde::de::Error::duplicate_field("startTime"));
8050                            }
8051                            start_time__ = map_.next_value()?;
8052                        }
8053                        GeneratedField::EndTime => {
8054                            if end_time__.is_some() {
8055                                return Err(serde::de::Error::duplicate_field("endTime"));
8056                            }
8057                            end_time__ = map_.next_value()?;
8058                        }
8059                        GeneratedField::Granularity => {
8060                            if granularity__.is_some() {
8061                                return Err(
8062                                    serde::de::Error::duplicate_field("granularity"),
8063                                );
8064                            }
8065                            granularity__ = Some(
8066                                map_.next_value::<Granularity>()? as i32,
8067                            );
8068                        }
8069                        GeneratedField::__SkipField__ => {
8070                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8071                        }
8072                    }
8073                }
8074                Ok(QueryBillingAccountCostRequest {
8075                    billing_account: billing_account__.unwrap_or_default(),
8076                    start_time: start_time__,
8077                    end_time: end_time__,
8078                    granularity: granularity__.unwrap_or_default(),
8079                })
8080            }
8081        }
8082        deserializer
8083            .deserialize_struct(
8084                "origincloud.billing.v1beta1.QueryBillingAccountCostRequest",
8085                FIELDS,
8086                GeneratedVisitor,
8087            )
8088    }
8089}
8090impl serde::Serialize for QueryLegalRequirementsRequest {
8091    #[allow(deprecated)]
8092    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8093    where
8094        S: serde::Serializer,
8095    {
8096        use serde::ser::SerializeStruct;
8097        let mut len = 0;
8098        if !self.name.is_empty() {
8099            len += 1;
8100        }
8101        let mut struct_ser = serializer
8102            .serialize_struct(
8103                "origincloud.billing.v1beta1.QueryLegalRequirementsRequest",
8104                len,
8105            )?;
8106        if !self.name.is_empty() {
8107            struct_ser.serialize_field("name", &self.name)?;
8108        }
8109        struct_ser.end()
8110    }
8111}
8112impl<'de> serde::Deserialize<'de> for QueryLegalRequirementsRequest {
8113    #[allow(deprecated)]
8114    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8115    where
8116        D: serde::Deserializer<'de>,
8117    {
8118        const FIELDS: &[&str] = &["name"];
8119        #[allow(clippy::enum_variant_names)]
8120        enum GeneratedField {
8121            Name,
8122            __SkipField__,
8123        }
8124        impl<'de> serde::Deserialize<'de> for GeneratedField {
8125            fn deserialize<D>(
8126                deserializer: D,
8127            ) -> std::result::Result<GeneratedField, D::Error>
8128            where
8129                D: serde::Deserializer<'de>,
8130            {
8131                struct GeneratedVisitor;
8132                impl serde::de::Visitor<'_> for GeneratedVisitor {
8133                    type Value = GeneratedField;
8134                    fn expecting(
8135                        &self,
8136                        formatter: &mut std::fmt::Formatter<'_>,
8137                    ) -> std::fmt::Result {
8138                        write!(formatter, "expected one of: {:?}", & FIELDS)
8139                    }
8140                    #[allow(unused_variables)]
8141                    fn visit_str<E>(
8142                        self,
8143                        value: &str,
8144                    ) -> std::result::Result<GeneratedField, E>
8145                    where
8146                        E: serde::de::Error,
8147                    {
8148                        match value {
8149                            "name" => Ok(GeneratedField::Name),
8150                            _ => Ok(GeneratedField::__SkipField__),
8151                        }
8152                    }
8153                }
8154                deserializer.deserialize_identifier(GeneratedVisitor)
8155            }
8156        }
8157        struct GeneratedVisitor;
8158        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8159            type Value = QueryLegalRequirementsRequest;
8160            fn expecting(
8161                &self,
8162                formatter: &mut std::fmt::Formatter<'_>,
8163            ) -> std::fmt::Result {
8164                formatter
8165                    .write_str(
8166                        "struct origincloud.billing.v1beta1.QueryLegalRequirementsRequest",
8167                    )
8168            }
8169            fn visit_map<V>(
8170                self,
8171                mut map_: V,
8172            ) -> std::result::Result<QueryLegalRequirementsRequest, V::Error>
8173            where
8174                V: serde::de::MapAccess<'de>,
8175            {
8176                let mut name__ = None;
8177                while let Some(k) = map_.next_key()? {
8178                    match k {
8179                        GeneratedField::Name => {
8180                            if name__.is_some() {
8181                                return Err(serde::de::Error::duplicate_field("name"));
8182                            }
8183                            name__ = Some(map_.next_value()?);
8184                        }
8185                        GeneratedField::__SkipField__ => {
8186                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8187                        }
8188                    }
8189                }
8190                Ok(QueryLegalRequirementsRequest {
8191                    name: name__.unwrap_or_default(),
8192                })
8193            }
8194        }
8195        deserializer
8196            .deserialize_struct(
8197                "origincloud.billing.v1beta1.QueryLegalRequirementsRequest",
8198                FIELDS,
8199                GeneratedVisitor,
8200            )
8201    }
8202}
8203impl serde::Serialize for QueryLegalRequirementsResponse {
8204    #[allow(deprecated)]
8205    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8206    where
8207        S: serde::Serializer,
8208    {
8209        use serde::ser::SerializeStruct;
8210        let mut len = 0;
8211        if !self.requirements.is_empty() {
8212            len += 1;
8213        }
8214        let mut struct_ser = serializer
8215            .serialize_struct(
8216                "origincloud.billing.v1beta1.QueryLegalRequirementsResponse",
8217                len,
8218            )?;
8219        if !self.requirements.is_empty() {
8220            struct_ser.serialize_field("requirements", &self.requirements)?;
8221        }
8222        struct_ser.end()
8223    }
8224}
8225impl<'de> serde::Deserialize<'de> for QueryLegalRequirementsResponse {
8226    #[allow(deprecated)]
8227    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8228    where
8229        D: serde::Deserializer<'de>,
8230    {
8231        const FIELDS: &[&str] = &["requirements"];
8232        #[allow(clippy::enum_variant_names)]
8233        enum GeneratedField {
8234            Requirements,
8235            __SkipField__,
8236        }
8237        impl<'de> serde::Deserialize<'de> for GeneratedField {
8238            fn deserialize<D>(
8239                deserializer: D,
8240            ) -> std::result::Result<GeneratedField, D::Error>
8241            where
8242                D: serde::Deserializer<'de>,
8243            {
8244                struct GeneratedVisitor;
8245                impl serde::de::Visitor<'_> for GeneratedVisitor {
8246                    type Value = GeneratedField;
8247                    fn expecting(
8248                        &self,
8249                        formatter: &mut std::fmt::Formatter<'_>,
8250                    ) -> std::fmt::Result {
8251                        write!(formatter, "expected one of: {:?}", & FIELDS)
8252                    }
8253                    #[allow(unused_variables)]
8254                    fn visit_str<E>(
8255                        self,
8256                        value: &str,
8257                    ) -> std::result::Result<GeneratedField, E>
8258                    where
8259                        E: serde::de::Error,
8260                    {
8261                        match value {
8262                            "requirements" => Ok(GeneratedField::Requirements),
8263                            _ => Ok(GeneratedField::__SkipField__),
8264                        }
8265                    }
8266                }
8267                deserializer.deserialize_identifier(GeneratedVisitor)
8268            }
8269        }
8270        struct GeneratedVisitor;
8271        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8272            type Value = QueryLegalRequirementsResponse;
8273            fn expecting(
8274                &self,
8275                formatter: &mut std::fmt::Formatter<'_>,
8276            ) -> std::fmt::Result {
8277                formatter
8278                    .write_str(
8279                        "struct origincloud.billing.v1beta1.QueryLegalRequirementsResponse",
8280                    )
8281            }
8282            fn visit_map<V>(
8283                self,
8284                mut map_: V,
8285            ) -> std::result::Result<QueryLegalRequirementsResponse, V::Error>
8286            where
8287                V: serde::de::MapAccess<'de>,
8288            {
8289                let mut requirements__ = None;
8290                while let Some(k) = map_.next_key()? {
8291                    match k {
8292                        GeneratedField::Requirements => {
8293                            if requirements__.is_some() {
8294                                return Err(
8295                                    serde::de::Error::duplicate_field("requirements"),
8296                                );
8297                            }
8298                            requirements__ = Some(map_.next_value()?);
8299                        }
8300                        GeneratedField::__SkipField__ => {
8301                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8302                        }
8303                    }
8304                }
8305                Ok(QueryLegalRequirementsResponse {
8306                    requirements: requirements__.unwrap_or_default(),
8307                })
8308            }
8309        }
8310        deserializer
8311            .deserialize_struct(
8312                "origincloud.billing.v1beta1.QueryLegalRequirementsResponse",
8313                FIELDS,
8314                GeneratedVisitor,
8315            )
8316    }
8317}
8318impl serde::Serialize for QueryOrganizationCostRequest {
8319    #[allow(deprecated)]
8320    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8321    where
8322        S: serde::Serializer,
8323    {
8324        use serde::ser::SerializeStruct;
8325        let mut len = 0;
8326        if !self.organization.is_empty() {
8327            len += 1;
8328        }
8329        if self.start_time.is_some() {
8330            len += 1;
8331        }
8332        if self.end_time.is_some() {
8333            len += 1;
8334        }
8335        if self.granularity != 0 {
8336            len += 1;
8337        }
8338        let mut struct_ser = serializer
8339            .serialize_struct(
8340                "origincloud.billing.v1beta1.QueryOrganizationCostRequest",
8341                len,
8342            )?;
8343        if !self.organization.is_empty() {
8344            struct_ser.serialize_field("organization", &self.organization)?;
8345        }
8346        if let Some(v) = self.start_time.as_ref() {
8347            struct_ser.serialize_field("startTime", v)?;
8348        }
8349        if let Some(v) = self.end_time.as_ref() {
8350            struct_ser.serialize_field("endTime", v)?;
8351        }
8352        if self.granularity != 0 {
8353            let v = Granularity::try_from(self.granularity)
8354                .map_err(|_| serde::ser::Error::custom(
8355                    format!("Invalid variant {}", self.granularity),
8356                ))?;
8357            struct_ser.serialize_field("granularity", &v)?;
8358        }
8359        struct_ser.end()
8360    }
8361}
8362impl<'de> serde::Deserialize<'de> for QueryOrganizationCostRequest {
8363    #[allow(deprecated)]
8364    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8365    where
8366        D: serde::Deserializer<'de>,
8367    {
8368        const FIELDS: &[&str] = &[
8369            "organization",
8370            "start_time",
8371            "startTime",
8372            "end_time",
8373            "endTime",
8374            "granularity",
8375        ];
8376        #[allow(clippy::enum_variant_names)]
8377        enum GeneratedField {
8378            Organization,
8379            StartTime,
8380            EndTime,
8381            Granularity,
8382            __SkipField__,
8383        }
8384        impl<'de> serde::Deserialize<'de> for GeneratedField {
8385            fn deserialize<D>(
8386                deserializer: D,
8387            ) -> std::result::Result<GeneratedField, D::Error>
8388            where
8389                D: serde::Deserializer<'de>,
8390            {
8391                struct GeneratedVisitor;
8392                impl serde::de::Visitor<'_> for GeneratedVisitor {
8393                    type Value = GeneratedField;
8394                    fn expecting(
8395                        &self,
8396                        formatter: &mut std::fmt::Formatter<'_>,
8397                    ) -> std::fmt::Result {
8398                        write!(formatter, "expected one of: {:?}", & FIELDS)
8399                    }
8400                    #[allow(unused_variables)]
8401                    fn visit_str<E>(
8402                        self,
8403                        value: &str,
8404                    ) -> std::result::Result<GeneratedField, E>
8405                    where
8406                        E: serde::de::Error,
8407                    {
8408                        match value {
8409                            "organization" => Ok(GeneratedField::Organization),
8410                            "startTime" | "start_time" => Ok(GeneratedField::StartTime),
8411                            "endTime" | "end_time" => Ok(GeneratedField::EndTime),
8412                            "granularity" => Ok(GeneratedField::Granularity),
8413                            _ => Ok(GeneratedField::__SkipField__),
8414                        }
8415                    }
8416                }
8417                deserializer.deserialize_identifier(GeneratedVisitor)
8418            }
8419        }
8420        struct GeneratedVisitor;
8421        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8422            type Value = QueryOrganizationCostRequest;
8423            fn expecting(
8424                &self,
8425                formatter: &mut std::fmt::Formatter<'_>,
8426            ) -> std::fmt::Result {
8427                formatter
8428                    .write_str(
8429                        "struct origincloud.billing.v1beta1.QueryOrganizationCostRequest",
8430                    )
8431            }
8432            fn visit_map<V>(
8433                self,
8434                mut map_: V,
8435            ) -> std::result::Result<QueryOrganizationCostRequest, V::Error>
8436            where
8437                V: serde::de::MapAccess<'de>,
8438            {
8439                let mut organization__ = None;
8440                let mut start_time__ = None;
8441                let mut end_time__ = None;
8442                let mut granularity__ = None;
8443                while let Some(k) = map_.next_key()? {
8444                    match k {
8445                        GeneratedField::Organization => {
8446                            if organization__.is_some() {
8447                                return Err(
8448                                    serde::de::Error::duplicate_field("organization"),
8449                                );
8450                            }
8451                            organization__ = Some(map_.next_value()?);
8452                        }
8453                        GeneratedField::StartTime => {
8454                            if start_time__.is_some() {
8455                                return Err(serde::de::Error::duplicate_field("startTime"));
8456                            }
8457                            start_time__ = map_.next_value()?;
8458                        }
8459                        GeneratedField::EndTime => {
8460                            if end_time__.is_some() {
8461                                return Err(serde::de::Error::duplicate_field("endTime"));
8462                            }
8463                            end_time__ = map_.next_value()?;
8464                        }
8465                        GeneratedField::Granularity => {
8466                            if granularity__.is_some() {
8467                                return Err(
8468                                    serde::de::Error::duplicate_field("granularity"),
8469                                );
8470                            }
8471                            granularity__ = Some(
8472                                map_.next_value::<Granularity>()? as i32,
8473                            );
8474                        }
8475                        GeneratedField::__SkipField__ => {
8476                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8477                        }
8478                    }
8479                }
8480                Ok(QueryOrganizationCostRequest {
8481                    organization: organization__.unwrap_or_default(),
8482                    start_time: start_time__,
8483                    end_time: end_time__,
8484                    granularity: granularity__.unwrap_or_default(),
8485                })
8486            }
8487        }
8488        deserializer
8489            .deserialize_struct(
8490                "origincloud.billing.v1beta1.QueryOrganizationCostRequest",
8491                FIELDS,
8492                GeneratedVisitor,
8493            )
8494    }
8495}
8496impl serde::Serialize for QueryProjectCostRequest {
8497    #[allow(deprecated)]
8498    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8499    where
8500        S: serde::Serializer,
8501    {
8502        use serde::ser::SerializeStruct;
8503        let mut len = 0;
8504        if !self.project.is_empty() {
8505            len += 1;
8506        }
8507        if self.start_time.is_some() {
8508            len += 1;
8509        }
8510        if self.end_time.is_some() {
8511            len += 1;
8512        }
8513        if self.granularity != 0 {
8514            len += 1;
8515        }
8516        let mut struct_ser = serializer
8517            .serialize_struct(
8518                "origincloud.billing.v1beta1.QueryProjectCostRequest",
8519                len,
8520            )?;
8521        if !self.project.is_empty() {
8522            struct_ser.serialize_field("project", &self.project)?;
8523        }
8524        if let Some(v) = self.start_time.as_ref() {
8525            struct_ser.serialize_field("startTime", v)?;
8526        }
8527        if let Some(v) = self.end_time.as_ref() {
8528            struct_ser.serialize_field("endTime", v)?;
8529        }
8530        if self.granularity != 0 {
8531            let v = Granularity::try_from(self.granularity)
8532                .map_err(|_| serde::ser::Error::custom(
8533                    format!("Invalid variant {}", self.granularity),
8534                ))?;
8535            struct_ser.serialize_field("granularity", &v)?;
8536        }
8537        struct_ser.end()
8538    }
8539}
8540impl<'de> serde::Deserialize<'de> for QueryProjectCostRequest {
8541    #[allow(deprecated)]
8542    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8543    where
8544        D: serde::Deserializer<'de>,
8545    {
8546        const FIELDS: &[&str] = &[
8547            "project",
8548            "start_time",
8549            "startTime",
8550            "end_time",
8551            "endTime",
8552            "granularity",
8553        ];
8554        #[allow(clippy::enum_variant_names)]
8555        enum GeneratedField {
8556            Project,
8557            StartTime,
8558            EndTime,
8559            Granularity,
8560            __SkipField__,
8561        }
8562        impl<'de> serde::Deserialize<'de> for GeneratedField {
8563            fn deserialize<D>(
8564                deserializer: D,
8565            ) -> std::result::Result<GeneratedField, D::Error>
8566            where
8567                D: serde::Deserializer<'de>,
8568            {
8569                struct GeneratedVisitor;
8570                impl serde::de::Visitor<'_> for GeneratedVisitor {
8571                    type Value = GeneratedField;
8572                    fn expecting(
8573                        &self,
8574                        formatter: &mut std::fmt::Formatter<'_>,
8575                    ) -> std::fmt::Result {
8576                        write!(formatter, "expected one of: {:?}", & FIELDS)
8577                    }
8578                    #[allow(unused_variables)]
8579                    fn visit_str<E>(
8580                        self,
8581                        value: &str,
8582                    ) -> std::result::Result<GeneratedField, E>
8583                    where
8584                        E: serde::de::Error,
8585                    {
8586                        match value {
8587                            "project" => Ok(GeneratedField::Project),
8588                            "startTime" | "start_time" => Ok(GeneratedField::StartTime),
8589                            "endTime" | "end_time" => Ok(GeneratedField::EndTime),
8590                            "granularity" => Ok(GeneratedField::Granularity),
8591                            _ => Ok(GeneratedField::__SkipField__),
8592                        }
8593                    }
8594                }
8595                deserializer.deserialize_identifier(GeneratedVisitor)
8596            }
8597        }
8598        struct GeneratedVisitor;
8599        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8600            type Value = QueryProjectCostRequest;
8601            fn expecting(
8602                &self,
8603                formatter: &mut std::fmt::Formatter<'_>,
8604            ) -> std::fmt::Result {
8605                formatter
8606                    .write_str(
8607                        "struct origincloud.billing.v1beta1.QueryProjectCostRequest",
8608                    )
8609            }
8610            fn visit_map<V>(
8611                self,
8612                mut map_: V,
8613            ) -> std::result::Result<QueryProjectCostRequest, V::Error>
8614            where
8615                V: serde::de::MapAccess<'de>,
8616            {
8617                let mut project__ = None;
8618                let mut start_time__ = None;
8619                let mut end_time__ = None;
8620                let mut granularity__ = None;
8621                while let Some(k) = map_.next_key()? {
8622                    match k {
8623                        GeneratedField::Project => {
8624                            if project__.is_some() {
8625                                return Err(serde::de::Error::duplicate_field("project"));
8626                            }
8627                            project__ = Some(map_.next_value()?);
8628                        }
8629                        GeneratedField::StartTime => {
8630                            if start_time__.is_some() {
8631                                return Err(serde::de::Error::duplicate_field("startTime"));
8632                            }
8633                            start_time__ = map_.next_value()?;
8634                        }
8635                        GeneratedField::EndTime => {
8636                            if end_time__.is_some() {
8637                                return Err(serde::de::Error::duplicate_field("endTime"));
8638                            }
8639                            end_time__ = map_.next_value()?;
8640                        }
8641                        GeneratedField::Granularity => {
8642                            if granularity__.is_some() {
8643                                return Err(
8644                                    serde::de::Error::duplicate_field("granularity"),
8645                                );
8646                            }
8647                            granularity__ = Some(
8648                                map_.next_value::<Granularity>()? as i32,
8649                            );
8650                        }
8651                        GeneratedField::__SkipField__ => {
8652                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8653                        }
8654                    }
8655                }
8656                Ok(QueryProjectCostRequest {
8657                    project: project__.unwrap_or_default(),
8658                    start_time: start_time__,
8659                    end_time: end_time__,
8660                    granularity: granularity__.unwrap_or_default(),
8661                })
8662            }
8663        }
8664        deserializer
8665            .deserialize_struct(
8666                "origincloud.billing.v1beta1.QueryProjectCostRequest",
8667                FIELDS,
8668                GeneratedVisitor,
8669            )
8670    }
8671}
8672impl serde::Serialize for QueryProjectUsageRequest {
8673    #[allow(deprecated)]
8674    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8675    where
8676        S: serde::Serializer,
8677    {
8678        use serde::ser::SerializeStruct;
8679        let mut len = 0;
8680        if !self.project.is_empty() {
8681            len += 1;
8682        }
8683        if self.start_time.is_some() {
8684            len += 1;
8685        }
8686        if self.end_time.is_some() {
8687            len += 1;
8688        }
8689        if self.page_size != 0 {
8690            len += 1;
8691        }
8692        if !self.page_token.is_empty() {
8693            len += 1;
8694        }
8695        let mut struct_ser = serializer
8696            .serialize_struct(
8697                "origincloud.billing.v1beta1.QueryProjectUsageRequest",
8698                len,
8699            )?;
8700        if !self.project.is_empty() {
8701            struct_ser.serialize_field("project", &self.project)?;
8702        }
8703        if let Some(v) = self.start_time.as_ref() {
8704            struct_ser.serialize_field("startTime", v)?;
8705        }
8706        if let Some(v) = self.end_time.as_ref() {
8707            struct_ser.serialize_field("endTime", v)?;
8708        }
8709        if self.page_size != 0 {
8710            struct_ser.serialize_field("pageSize", &self.page_size)?;
8711        }
8712        if !self.page_token.is_empty() {
8713            struct_ser.serialize_field("pageToken", &self.page_token)?;
8714        }
8715        struct_ser.end()
8716    }
8717}
8718impl<'de> serde::Deserialize<'de> for QueryProjectUsageRequest {
8719    #[allow(deprecated)]
8720    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8721    where
8722        D: serde::Deserializer<'de>,
8723    {
8724        const FIELDS: &[&str] = &[
8725            "project",
8726            "start_time",
8727            "startTime",
8728            "end_time",
8729            "endTime",
8730            "page_size",
8731            "pageSize",
8732            "page_token",
8733            "pageToken",
8734        ];
8735        #[allow(clippy::enum_variant_names)]
8736        enum GeneratedField {
8737            Project,
8738            StartTime,
8739            EndTime,
8740            PageSize,
8741            PageToken,
8742            __SkipField__,
8743        }
8744        impl<'de> serde::Deserialize<'de> for GeneratedField {
8745            fn deserialize<D>(
8746                deserializer: D,
8747            ) -> std::result::Result<GeneratedField, D::Error>
8748            where
8749                D: serde::Deserializer<'de>,
8750            {
8751                struct GeneratedVisitor;
8752                impl serde::de::Visitor<'_> for GeneratedVisitor {
8753                    type Value = GeneratedField;
8754                    fn expecting(
8755                        &self,
8756                        formatter: &mut std::fmt::Formatter<'_>,
8757                    ) -> std::fmt::Result {
8758                        write!(formatter, "expected one of: {:?}", & FIELDS)
8759                    }
8760                    #[allow(unused_variables)]
8761                    fn visit_str<E>(
8762                        self,
8763                        value: &str,
8764                    ) -> std::result::Result<GeneratedField, E>
8765                    where
8766                        E: serde::de::Error,
8767                    {
8768                        match value {
8769                            "project" => Ok(GeneratedField::Project),
8770                            "startTime" | "start_time" => Ok(GeneratedField::StartTime),
8771                            "endTime" | "end_time" => Ok(GeneratedField::EndTime),
8772                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
8773                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
8774                            _ => Ok(GeneratedField::__SkipField__),
8775                        }
8776                    }
8777                }
8778                deserializer.deserialize_identifier(GeneratedVisitor)
8779            }
8780        }
8781        struct GeneratedVisitor;
8782        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8783            type Value = QueryProjectUsageRequest;
8784            fn expecting(
8785                &self,
8786                formatter: &mut std::fmt::Formatter<'_>,
8787            ) -> std::fmt::Result {
8788                formatter
8789                    .write_str(
8790                        "struct origincloud.billing.v1beta1.QueryProjectUsageRequest",
8791                    )
8792            }
8793            fn visit_map<V>(
8794                self,
8795                mut map_: V,
8796            ) -> std::result::Result<QueryProjectUsageRequest, V::Error>
8797            where
8798                V: serde::de::MapAccess<'de>,
8799            {
8800                let mut project__ = None;
8801                let mut start_time__ = None;
8802                let mut end_time__ = None;
8803                let mut page_size__ = None;
8804                let mut page_token__ = None;
8805                while let Some(k) = map_.next_key()? {
8806                    match k {
8807                        GeneratedField::Project => {
8808                            if project__.is_some() {
8809                                return Err(serde::de::Error::duplicate_field("project"));
8810                            }
8811                            project__ = Some(map_.next_value()?);
8812                        }
8813                        GeneratedField::StartTime => {
8814                            if start_time__.is_some() {
8815                                return Err(serde::de::Error::duplicate_field("startTime"));
8816                            }
8817                            start_time__ = map_.next_value()?;
8818                        }
8819                        GeneratedField::EndTime => {
8820                            if end_time__.is_some() {
8821                                return Err(serde::de::Error::duplicate_field("endTime"));
8822                            }
8823                            end_time__ = map_.next_value()?;
8824                        }
8825                        GeneratedField::PageSize => {
8826                            if page_size__.is_some() {
8827                                return Err(serde::de::Error::duplicate_field("pageSize"));
8828                            }
8829                            page_size__ = Some(
8830                                map_
8831                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
8832                                    .0,
8833                            );
8834                        }
8835                        GeneratedField::PageToken => {
8836                            if page_token__.is_some() {
8837                                return Err(serde::de::Error::duplicate_field("pageToken"));
8838                            }
8839                            page_token__ = Some(map_.next_value()?);
8840                        }
8841                        GeneratedField::__SkipField__ => {
8842                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8843                        }
8844                    }
8845                }
8846                Ok(QueryProjectUsageRequest {
8847                    project: project__.unwrap_or_default(),
8848                    start_time: start_time__,
8849                    end_time: end_time__,
8850                    page_size: page_size__.unwrap_or_default(),
8851                    page_token: page_token__.unwrap_or_default(),
8852                })
8853            }
8854        }
8855        deserializer
8856            .deserialize_struct(
8857                "origincloud.billing.v1beta1.QueryProjectUsageRequest",
8858                FIELDS,
8859                GeneratedVisitor,
8860            )
8861    }
8862}
8863impl serde::Serialize for QueryProjectUsageResponse {
8864    #[allow(deprecated)]
8865    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8866    where
8867        S: serde::Serializer,
8868    {
8869        use serde::ser::SerializeStruct;
8870        let mut len = 0;
8871        if !self.usage_records.is_empty() {
8872            len += 1;
8873        }
8874        if !self.next_page_token.is_empty() {
8875            len += 1;
8876        }
8877        let mut struct_ser = serializer
8878            .serialize_struct(
8879                "origincloud.billing.v1beta1.QueryProjectUsageResponse",
8880                len,
8881            )?;
8882        if !self.usage_records.is_empty() {
8883            struct_ser.serialize_field("usageRecords", &self.usage_records)?;
8884        }
8885        if !self.next_page_token.is_empty() {
8886            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
8887        }
8888        struct_ser.end()
8889    }
8890}
8891impl<'de> serde::Deserialize<'de> for QueryProjectUsageResponse {
8892    #[allow(deprecated)]
8893    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8894    where
8895        D: serde::Deserializer<'de>,
8896    {
8897        const FIELDS: &[&str] = &[
8898            "usage_records",
8899            "usageRecords",
8900            "next_page_token",
8901            "nextPageToken",
8902        ];
8903        #[allow(clippy::enum_variant_names)]
8904        enum GeneratedField {
8905            UsageRecords,
8906            NextPageToken,
8907            __SkipField__,
8908        }
8909        impl<'de> serde::Deserialize<'de> for GeneratedField {
8910            fn deserialize<D>(
8911                deserializer: D,
8912            ) -> std::result::Result<GeneratedField, D::Error>
8913            where
8914                D: serde::Deserializer<'de>,
8915            {
8916                struct GeneratedVisitor;
8917                impl serde::de::Visitor<'_> for GeneratedVisitor {
8918                    type Value = GeneratedField;
8919                    fn expecting(
8920                        &self,
8921                        formatter: &mut std::fmt::Formatter<'_>,
8922                    ) -> std::fmt::Result {
8923                        write!(formatter, "expected one of: {:?}", & FIELDS)
8924                    }
8925                    #[allow(unused_variables)]
8926                    fn visit_str<E>(
8927                        self,
8928                        value: &str,
8929                    ) -> std::result::Result<GeneratedField, E>
8930                    where
8931                        E: serde::de::Error,
8932                    {
8933                        match value {
8934                            "usageRecords" | "usage_records" => {
8935                                Ok(GeneratedField::UsageRecords)
8936                            }
8937                            "nextPageToken" | "next_page_token" => {
8938                                Ok(GeneratedField::NextPageToken)
8939                            }
8940                            _ => Ok(GeneratedField::__SkipField__),
8941                        }
8942                    }
8943                }
8944                deserializer.deserialize_identifier(GeneratedVisitor)
8945            }
8946        }
8947        struct GeneratedVisitor;
8948        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8949            type Value = QueryProjectUsageResponse;
8950            fn expecting(
8951                &self,
8952                formatter: &mut std::fmt::Formatter<'_>,
8953            ) -> std::fmt::Result {
8954                formatter
8955                    .write_str(
8956                        "struct origincloud.billing.v1beta1.QueryProjectUsageResponse",
8957                    )
8958            }
8959            fn visit_map<V>(
8960                self,
8961                mut map_: V,
8962            ) -> std::result::Result<QueryProjectUsageResponse, V::Error>
8963            where
8964                V: serde::de::MapAccess<'de>,
8965            {
8966                let mut usage_records__ = None;
8967                let mut next_page_token__ = None;
8968                while let Some(k) = map_.next_key()? {
8969                    match k {
8970                        GeneratedField::UsageRecords => {
8971                            if usage_records__.is_some() {
8972                                return Err(
8973                                    serde::de::Error::duplicate_field("usageRecords"),
8974                                );
8975                            }
8976                            usage_records__ = Some(map_.next_value()?);
8977                        }
8978                        GeneratedField::NextPageToken => {
8979                            if next_page_token__.is_some() {
8980                                return Err(
8981                                    serde::de::Error::duplicate_field("nextPageToken"),
8982                                );
8983                            }
8984                            next_page_token__ = Some(map_.next_value()?);
8985                        }
8986                        GeneratedField::__SkipField__ => {
8987                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8988                        }
8989                    }
8990                }
8991                Ok(QueryProjectUsageResponse {
8992                    usage_records: usage_records__.unwrap_or_default(),
8993                    next_page_token: next_page_token__.unwrap_or_default(),
8994                })
8995            }
8996        }
8997        deserializer
8998            .deserialize_struct(
8999                "origincloud.billing.v1beta1.QueryProjectUsageResponse",
9000                FIELDS,
9001                GeneratedVisitor,
9002            )
9003    }
9004}
9005impl serde::Serialize for ServiceCost {
9006    #[allow(deprecated)]
9007    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9008    where
9009        S: serde::Serializer,
9010    {
9011        use serde::ser::SerializeStruct;
9012        let mut len = 0;
9013        if !self.service.is_empty() {
9014            len += 1;
9015        }
9016        if !self.total.is_empty() {
9017            len += 1;
9018        }
9019        if !self.products.is_empty() {
9020            len += 1;
9021        }
9022        let mut struct_ser = serializer
9023            .serialize_struct("origincloud.billing.v1beta1.ServiceCost", len)?;
9024        if !self.service.is_empty() {
9025            struct_ser.serialize_field("service", &self.service)?;
9026        }
9027        if !self.total.is_empty() {
9028            struct_ser.serialize_field("total", &self.total)?;
9029        }
9030        if !self.products.is_empty() {
9031            struct_ser.serialize_field("products", &self.products)?;
9032        }
9033        struct_ser.end()
9034    }
9035}
9036impl<'de> serde::Deserialize<'de> for ServiceCost {
9037    #[allow(deprecated)]
9038    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9039    where
9040        D: serde::Deserializer<'de>,
9041    {
9042        const FIELDS: &[&str] = &["service", "total", "products"];
9043        #[allow(clippy::enum_variant_names)]
9044        enum GeneratedField {
9045            Service,
9046            Total,
9047            Products,
9048            __SkipField__,
9049        }
9050        impl<'de> serde::Deserialize<'de> for GeneratedField {
9051            fn deserialize<D>(
9052                deserializer: D,
9053            ) -> std::result::Result<GeneratedField, D::Error>
9054            where
9055                D: serde::Deserializer<'de>,
9056            {
9057                struct GeneratedVisitor;
9058                impl serde::de::Visitor<'_> for GeneratedVisitor {
9059                    type Value = GeneratedField;
9060                    fn expecting(
9061                        &self,
9062                        formatter: &mut std::fmt::Formatter<'_>,
9063                    ) -> std::fmt::Result {
9064                        write!(formatter, "expected one of: {:?}", & FIELDS)
9065                    }
9066                    #[allow(unused_variables)]
9067                    fn visit_str<E>(
9068                        self,
9069                        value: &str,
9070                    ) -> std::result::Result<GeneratedField, E>
9071                    where
9072                        E: serde::de::Error,
9073                    {
9074                        match value {
9075                            "service" => Ok(GeneratedField::Service),
9076                            "total" => Ok(GeneratedField::Total),
9077                            "products" => Ok(GeneratedField::Products),
9078                            _ => Ok(GeneratedField::__SkipField__),
9079                        }
9080                    }
9081                }
9082                deserializer.deserialize_identifier(GeneratedVisitor)
9083            }
9084        }
9085        struct GeneratedVisitor;
9086        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9087            type Value = ServiceCost;
9088            fn expecting(
9089                &self,
9090                formatter: &mut std::fmt::Formatter<'_>,
9091            ) -> std::fmt::Result {
9092                formatter.write_str("struct origincloud.billing.v1beta1.ServiceCost")
9093            }
9094            fn visit_map<V>(
9095                self,
9096                mut map_: V,
9097            ) -> std::result::Result<ServiceCost, V::Error>
9098            where
9099                V: serde::de::MapAccess<'de>,
9100            {
9101                let mut service__ = None;
9102                let mut total__ = None;
9103                let mut products__ = None;
9104                while let Some(k) = map_.next_key()? {
9105                    match k {
9106                        GeneratedField::Service => {
9107                            if service__.is_some() {
9108                                return Err(serde::de::Error::duplicate_field("service"));
9109                            }
9110                            service__ = Some(map_.next_value()?);
9111                        }
9112                        GeneratedField::Total => {
9113                            if total__.is_some() {
9114                                return Err(serde::de::Error::duplicate_field("total"));
9115                            }
9116                            total__ = Some(map_.next_value()?);
9117                        }
9118                        GeneratedField::Products => {
9119                            if products__.is_some() {
9120                                return Err(serde::de::Error::duplicate_field("products"));
9121                            }
9122                            products__ = Some(map_.next_value()?);
9123                        }
9124                        GeneratedField::__SkipField__ => {
9125                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9126                        }
9127                    }
9128                }
9129                Ok(ServiceCost {
9130                    service: service__.unwrap_or_default(),
9131                    total: total__.unwrap_or_default(),
9132                    products: products__.unwrap_or_default(),
9133                })
9134            }
9135        }
9136        deserializer
9137            .deserialize_struct(
9138                "origincloud.billing.v1beta1.ServiceCost",
9139                FIELDS,
9140                GeneratedVisitor,
9141            )
9142    }
9143}
9144impl serde::Serialize for SpendLimit {
9145    #[allow(deprecated)]
9146    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9147    where
9148        S: serde::Serializer,
9149    {
9150        use serde::ser::SerializeStruct;
9151        let mut len = 0;
9152        if !self.name.is_empty() {
9153            len += 1;
9154        }
9155        if self.limit.is_some() {
9156            len += 1;
9157        }
9158        if !self.alert_thresholds_percent.is_empty() {
9159            len += 1;
9160        }
9161        if !self.notification_emails.is_empty() {
9162            len += 1;
9163        }
9164        if self.update_time.is_some() {
9165            len += 1;
9166        }
9167        let mut struct_ser = serializer
9168            .serialize_struct("origincloud.billing.v1beta1.SpendLimit", len)?;
9169        if !self.name.is_empty() {
9170            struct_ser.serialize_field("name", &self.name)?;
9171        }
9172        if let Some(v) = self.limit.as_ref() {
9173            struct_ser.serialize_field("limit", v)?;
9174        }
9175        if !self.alert_thresholds_percent.is_empty() {
9176            struct_ser
9177                .serialize_field(
9178                    "alertThresholdsPercent",
9179                    &self.alert_thresholds_percent,
9180                )?;
9181        }
9182        if !self.notification_emails.is_empty() {
9183            struct_ser.serialize_field("notificationEmails", &self.notification_emails)?;
9184        }
9185        if let Some(v) = self.update_time.as_ref() {
9186            struct_ser.serialize_field("updateTime", v)?;
9187        }
9188        struct_ser.end()
9189    }
9190}
9191impl<'de> serde::Deserialize<'de> for SpendLimit {
9192    #[allow(deprecated)]
9193    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9194    where
9195        D: serde::Deserializer<'de>,
9196    {
9197        const FIELDS: &[&str] = &[
9198            "name",
9199            "limit",
9200            "alert_thresholds_percent",
9201            "alertThresholdsPercent",
9202            "notification_emails",
9203            "notificationEmails",
9204            "update_time",
9205            "updateTime",
9206        ];
9207        #[allow(clippy::enum_variant_names)]
9208        enum GeneratedField {
9209            Name,
9210            Limit,
9211            AlertThresholdsPercent,
9212            NotificationEmails,
9213            UpdateTime,
9214            __SkipField__,
9215        }
9216        impl<'de> serde::Deserialize<'de> for GeneratedField {
9217            fn deserialize<D>(
9218                deserializer: D,
9219            ) -> std::result::Result<GeneratedField, D::Error>
9220            where
9221                D: serde::Deserializer<'de>,
9222            {
9223                struct GeneratedVisitor;
9224                impl serde::de::Visitor<'_> for GeneratedVisitor {
9225                    type Value = GeneratedField;
9226                    fn expecting(
9227                        &self,
9228                        formatter: &mut std::fmt::Formatter<'_>,
9229                    ) -> std::fmt::Result {
9230                        write!(formatter, "expected one of: {:?}", & FIELDS)
9231                    }
9232                    #[allow(unused_variables)]
9233                    fn visit_str<E>(
9234                        self,
9235                        value: &str,
9236                    ) -> std::result::Result<GeneratedField, E>
9237                    where
9238                        E: serde::de::Error,
9239                    {
9240                        match value {
9241                            "name" => Ok(GeneratedField::Name),
9242                            "limit" => Ok(GeneratedField::Limit),
9243                            "alertThresholdsPercent" | "alert_thresholds_percent" => {
9244                                Ok(GeneratedField::AlertThresholdsPercent)
9245                            }
9246                            "notificationEmails" | "notification_emails" => {
9247                                Ok(GeneratedField::NotificationEmails)
9248                            }
9249                            "updateTime" | "update_time" => {
9250                                Ok(GeneratedField::UpdateTime)
9251                            }
9252                            _ => Ok(GeneratedField::__SkipField__),
9253                        }
9254                    }
9255                }
9256                deserializer.deserialize_identifier(GeneratedVisitor)
9257            }
9258        }
9259        struct GeneratedVisitor;
9260        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9261            type Value = SpendLimit;
9262            fn expecting(
9263                &self,
9264                formatter: &mut std::fmt::Formatter<'_>,
9265            ) -> std::fmt::Result {
9266                formatter.write_str("struct origincloud.billing.v1beta1.SpendLimit")
9267            }
9268            fn visit_map<V>(
9269                self,
9270                mut map_: V,
9271            ) -> std::result::Result<SpendLimit, V::Error>
9272            where
9273                V: serde::de::MapAccess<'de>,
9274            {
9275                let mut name__ = None;
9276                let mut limit__ = None;
9277                let mut alert_thresholds_percent__ = None;
9278                let mut notification_emails__ = None;
9279                let mut update_time__ = None;
9280                while let Some(k) = map_.next_key()? {
9281                    match k {
9282                        GeneratedField::Name => {
9283                            if name__.is_some() {
9284                                return Err(serde::de::Error::duplicate_field("name"));
9285                            }
9286                            name__ = Some(map_.next_value()?);
9287                        }
9288                        GeneratedField::Limit => {
9289                            if limit__.is_some() {
9290                                return Err(serde::de::Error::duplicate_field("limit"));
9291                            }
9292                            limit__ = map_.next_value()?;
9293                        }
9294                        GeneratedField::AlertThresholdsPercent => {
9295                            if alert_thresholds_percent__.is_some() {
9296                                return Err(
9297                                    serde::de::Error::duplicate_field("alertThresholdsPercent"),
9298                                );
9299                            }
9300                            alert_thresholds_percent__ = Some(
9301                                map_
9302                                    .next_value::<
9303                                        Vec<::pbjson::private::NumberDeserialize<_>>,
9304                                    >()?
9305                                    .into_iter()
9306                                    .map(|x| x.0)
9307                                    .collect(),
9308                            );
9309                        }
9310                        GeneratedField::NotificationEmails => {
9311                            if notification_emails__.is_some() {
9312                                return Err(
9313                                    serde::de::Error::duplicate_field("notificationEmails"),
9314                                );
9315                            }
9316                            notification_emails__ = Some(map_.next_value()?);
9317                        }
9318                        GeneratedField::UpdateTime => {
9319                            if update_time__.is_some() {
9320                                return Err(serde::de::Error::duplicate_field("updateTime"));
9321                            }
9322                            update_time__ = map_.next_value()?;
9323                        }
9324                        GeneratedField::__SkipField__ => {
9325                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9326                        }
9327                    }
9328                }
9329                Ok(SpendLimit {
9330                    name: name__.unwrap_or_default(),
9331                    limit: limit__,
9332                    alert_thresholds_percent: alert_thresholds_percent__
9333                        .unwrap_or_default(),
9334                    notification_emails: notification_emails__.unwrap_or_default(),
9335                    update_time: update_time__,
9336                })
9337            }
9338        }
9339        deserializer
9340            .deserialize_struct(
9341                "origincloud.billing.v1beta1.SpendLimit",
9342                FIELDS,
9343                GeneratedVisitor,
9344            )
9345    }
9346}
9347impl serde::Serialize for StartPaymentMethodSetupRequest {
9348    #[allow(deprecated)]
9349    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9350    where
9351        S: serde::Serializer,
9352    {
9353        use serde::ser::SerializeStruct;
9354        let mut len = 0;
9355        if !self.name.is_empty() {
9356            len += 1;
9357        }
9358        let mut struct_ser = serializer
9359            .serialize_struct(
9360                "origincloud.billing.v1beta1.StartPaymentMethodSetupRequest",
9361                len,
9362            )?;
9363        if !self.name.is_empty() {
9364            struct_ser.serialize_field("name", &self.name)?;
9365        }
9366        struct_ser.end()
9367    }
9368}
9369impl<'de> serde::Deserialize<'de> for StartPaymentMethodSetupRequest {
9370    #[allow(deprecated)]
9371    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9372    where
9373        D: serde::Deserializer<'de>,
9374    {
9375        const FIELDS: &[&str] = &["name"];
9376        #[allow(clippy::enum_variant_names)]
9377        enum GeneratedField {
9378            Name,
9379            __SkipField__,
9380        }
9381        impl<'de> serde::Deserialize<'de> for GeneratedField {
9382            fn deserialize<D>(
9383                deserializer: D,
9384            ) -> std::result::Result<GeneratedField, D::Error>
9385            where
9386                D: serde::Deserializer<'de>,
9387            {
9388                struct GeneratedVisitor;
9389                impl serde::de::Visitor<'_> for GeneratedVisitor {
9390                    type Value = GeneratedField;
9391                    fn expecting(
9392                        &self,
9393                        formatter: &mut std::fmt::Formatter<'_>,
9394                    ) -> std::fmt::Result {
9395                        write!(formatter, "expected one of: {:?}", & FIELDS)
9396                    }
9397                    #[allow(unused_variables)]
9398                    fn visit_str<E>(
9399                        self,
9400                        value: &str,
9401                    ) -> std::result::Result<GeneratedField, E>
9402                    where
9403                        E: serde::de::Error,
9404                    {
9405                        match value {
9406                            "name" => Ok(GeneratedField::Name),
9407                            _ => Ok(GeneratedField::__SkipField__),
9408                        }
9409                    }
9410                }
9411                deserializer.deserialize_identifier(GeneratedVisitor)
9412            }
9413        }
9414        struct GeneratedVisitor;
9415        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9416            type Value = StartPaymentMethodSetupRequest;
9417            fn expecting(
9418                &self,
9419                formatter: &mut std::fmt::Formatter<'_>,
9420            ) -> std::fmt::Result {
9421                formatter
9422                    .write_str(
9423                        "struct origincloud.billing.v1beta1.StartPaymentMethodSetupRequest",
9424                    )
9425            }
9426            fn visit_map<V>(
9427                self,
9428                mut map_: V,
9429            ) -> std::result::Result<StartPaymentMethodSetupRequest, V::Error>
9430            where
9431                V: serde::de::MapAccess<'de>,
9432            {
9433                let mut name__ = None;
9434                while let Some(k) = map_.next_key()? {
9435                    match k {
9436                        GeneratedField::Name => {
9437                            if name__.is_some() {
9438                                return Err(serde::de::Error::duplicate_field("name"));
9439                            }
9440                            name__ = Some(map_.next_value()?);
9441                        }
9442                        GeneratedField::__SkipField__ => {
9443                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9444                        }
9445                    }
9446                }
9447                Ok(StartPaymentMethodSetupRequest {
9448                    name: name__.unwrap_or_default(),
9449                })
9450            }
9451        }
9452        deserializer
9453            .deserialize_struct(
9454                "origincloud.billing.v1beta1.StartPaymentMethodSetupRequest",
9455                FIELDS,
9456                GeneratedVisitor,
9457            )
9458    }
9459}
9460impl serde::Serialize for StartPaymentMethodSetupResponse {
9461    #[allow(deprecated)]
9462    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9463    where
9464        S: serde::Serializer,
9465    {
9466        use serde::ser::SerializeStruct;
9467        let mut len = 0;
9468        if !self.redirect_uri.is_empty() {
9469            len += 1;
9470        }
9471        let mut struct_ser = serializer
9472            .serialize_struct(
9473                "origincloud.billing.v1beta1.StartPaymentMethodSetupResponse",
9474                len,
9475            )?;
9476        if !self.redirect_uri.is_empty() {
9477            struct_ser.serialize_field("redirectUri", &self.redirect_uri)?;
9478        }
9479        struct_ser.end()
9480    }
9481}
9482impl<'de> serde::Deserialize<'de> for StartPaymentMethodSetupResponse {
9483    #[allow(deprecated)]
9484    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9485    where
9486        D: serde::Deserializer<'de>,
9487    {
9488        const FIELDS: &[&str] = &["redirect_uri", "redirectUri"];
9489        #[allow(clippy::enum_variant_names)]
9490        enum GeneratedField {
9491            RedirectUri,
9492            __SkipField__,
9493        }
9494        impl<'de> serde::Deserialize<'de> for GeneratedField {
9495            fn deserialize<D>(
9496                deserializer: D,
9497            ) -> std::result::Result<GeneratedField, D::Error>
9498            where
9499                D: serde::Deserializer<'de>,
9500            {
9501                struct GeneratedVisitor;
9502                impl serde::de::Visitor<'_> for GeneratedVisitor {
9503                    type Value = GeneratedField;
9504                    fn expecting(
9505                        &self,
9506                        formatter: &mut std::fmt::Formatter<'_>,
9507                    ) -> std::fmt::Result {
9508                        write!(formatter, "expected one of: {:?}", & FIELDS)
9509                    }
9510                    #[allow(unused_variables)]
9511                    fn visit_str<E>(
9512                        self,
9513                        value: &str,
9514                    ) -> std::result::Result<GeneratedField, E>
9515                    where
9516                        E: serde::de::Error,
9517                    {
9518                        match value {
9519                            "redirectUri" | "redirect_uri" => {
9520                                Ok(GeneratedField::RedirectUri)
9521                            }
9522                            _ => Ok(GeneratedField::__SkipField__),
9523                        }
9524                    }
9525                }
9526                deserializer.deserialize_identifier(GeneratedVisitor)
9527            }
9528        }
9529        struct GeneratedVisitor;
9530        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9531            type Value = StartPaymentMethodSetupResponse;
9532            fn expecting(
9533                &self,
9534                formatter: &mut std::fmt::Formatter<'_>,
9535            ) -> std::fmt::Result {
9536                formatter
9537                    .write_str(
9538                        "struct origincloud.billing.v1beta1.StartPaymentMethodSetupResponse",
9539                    )
9540            }
9541            fn visit_map<V>(
9542                self,
9543                mut map_: V,
9544            ) -> std::result::Result<StartPaymentMethodSetupResponse, V::Error>
9545            where
9546                V: serde::de::MapAccess<'de>,
9547            {
9548                let mut redirect_uri__ = None;
9549                while let Some(k) = map_.next_key()? {
9550                    match k {
9551                        GeneratedField::RedirectUri => {
9552                            if redirect_uri__.is_some() {
9553                                return Err(
9554                                    serde::de::Error::duplicate_field("redirectUri"),
9555                                );
9556                            }
9557                            redirect_uri__ = Some(map_.next_value()?);
9558                        }
9559                        GeneratedField::__SkipField__ => {
9560                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9561                        }
9562                    }
9563                }
9564                Ok(StartPaymentMethodSetupResponse {
9565                    redirect_uri: redirect_uri__.unwrap_or_default(),
9566                })
9567            }
9568        }
9569        deserializer
9570            .deserialize_struct(
9571                "origincloud.billing.v1beta1.StartPaymentMethodSetupResponse",
9572                FIELDS,
9573                GeneratedVisitor,
9574            )
9575    }
9576}
9577impl serde::Serialize for UpdateBillingAccountRequest {
9578    #[allow(deprecated)]
9579    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9580    where
9581        S: serde::Serializer,
9582    {
9583        use serde::ser::SerializeStruct;
9584        let mut len = 0;
9585        if self.billing_account.is_some() {
9586            len += 1;
9587        }
9588        if self.update_mask.is_some() {
9589            len += 1;
9590        }
9591        let mut struct_ser = serializer
9592            .serialize_struct(
9593                "origincloud.billing.v1beta1.UpdateBillingAccountRequest",
9594                len,
9595            )?;
9596        if let Some(v) = self.billing_account.as_ref() {
9597            struct_ser.serialize_field("billingAccount", v)?;
9598        }
9599        if let Some(v) = self.update_mask.as_ref() {
9600            struct_ser.serialize_field("updateMask", v)?;
9601        }
9602        struct_ser.end()
9603    }
9604}
9605impl<'de> serde::Deserialize<'de> for UpdateBillingAccountRequest {
9606    #[allow(deprecated)]
9607    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9608    where
9609        D: serde::Deserializer<'de>,
9610    {
9611        const FIELDS: &[&str] = &[
9612            "billing_account",
9613            "billingAccount",
9614            "update_mask",
9615            "updateMask",
9616        ];
9617        #[allow(clippy::enum_variant_names)]
9618        enum GeneratedField {
9619            BillingAccount,
9620            UpdateMask,
9621            __SkipField__,
9622        }
9623        impl<'de> serde::Deserialize<'de> for GeneratedField {
9624            fn deserialize<D>(
9625                deserializer: D,
9626            ) -> std::result::Result<GeneratedField, D::Error>
9627            where
9628                D: serde::Deserializer<'de>,
9629            {
9630                struct GeneratedVisitor;
9631                impl serde::de::Visitor<'_> for GeneratedVisitor {
9632                    type Value = GeneratedField;
9633                    fn expecting(
9634                        &self,
9635                        formatter: &mut std::fmt::Formatter<'_>,
9636                    ) -> std::fmt::Result {
9637                        write!(formatter, "expected one of: {:?}", & FIELDS)
9638                    }
9639                    #[allow(unused_variables)]
9640                    fn visit_str<E>(
9641                        self,
9642                        value: &str,
9643                    ) -> std::result::Result<GeneratedField, E>
9644                    where
9645                        E: serde::de::Error,
9646                    {
9647                        match value {
9648                            "billingAccount" | "billing_account" => {
9649                                Ok(GeneratedField::BillingAccount)
9650                            }
9651                            "updateMask" | "update_mask" => {
9652                                Ok(GeneratedField::UpdateMask)
9653                            }
9654                            _ => Ok(GeneratedField::__SkipField__),
9655                        }
9656                    }
9657                }
9658                deserializer.deserialize_identifier(GeneratedVisitor)
9659            }
9660        }
9661        struct GeneratedVisitor;
9662        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9663            type Value = UpdateBillingAccountRequest;
9664            fn expecting(
9665                &self,
9666                formatter: &mut std::fmt::Formatter<'_>,
9667            ) -> std::fmt::Result {
9668                formatter
9669                    .write_str(
9670                        "struct origincloud.billing.v1beta1.UpdateBillingAccountRequest",
9671                    )
9672            }
9673            fn visit_map<V>(
9674                self,
9675                mut map_: V,
9676            ) -> std::result::Result<UpdateBillingAccountRequest, V::Error>
9677            where
9678                V: serde::de::MapAccess<'de>,
9679            {
9680                let mut billing_account__ = None;
9681                let mut update_mask__ = None;
9682                while let Some(k) = map_.next_key()? {
9683                    match k {
9684                        GeneratedField::BillingAccount => {
9685                            if billing_account__.is_some() {
9686                                return Err(
9687                                    serde::de::Error::duplicate_field("billingAccount"),
9688                                );
9689                            }
9690                            billing_account__ = map_.next_value()?;
9691                        }
9692                        GeneratedField::UpdateMask => {
9693                            if update_mask__.is_some() {
9694                                return Err(serde::de::Error::duplicate_field("updateMask"));
9695                            }
9696                            update_mask__ = map_.next_value()?;
9697                        }
9698                        GeneratedField::__SkipField__ => {
9699                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9700                        }
9701                    }
9702                }
9703                Ok(UpdateBillingAccountRequest {
9704                    billing_account: billing_account__,
9705                    update_mask: update_mask__,
9706                })
9707            }
9708        }
9709        deserializer
9710            .deserialize_struct(
9711                "origincloud.billing.v1beta1.UpdateBillingAccountRequest",
9712                FIELDS,
9713                GeneratedVisitor,
9714            )
9715    }
9716}
9717impl serde::Serialize for UpdateProjectBillingInfoRequest {
9718    #[allow(deprecated)]
9719    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9720    where
9721        S: serde::Serializer,
9722    {
9723        use serde::ser::SerializeStruct;
9724        let mut len = 0;
9725        if self.project_billing_info.is_some() {
9726            len += 1;
9727        }
9728        if self.update_mask.is_some() {
9729            len += 1;
9730        }
9731        let mut struct_ser = serializer
9732            .serialize_struct(
9733                "origincloud.billing.v1beta1.UpdateProjectBillingInfoRequest",
9734                len,
9735            )?;
9736        if let Some(v) = self.project_billing_info.as_ref() {
9737            struct_ser.serialize_field("projectBillingInfo", v)?;
9738        }
9739        if let Some(v) = self.update_mask.as_ref() {
9740            struct_ser.serialize_field("updateMask", v)?;
9741        }
9742        struct_ser.end()
9743    }
9744}
9745impl<'de> serde::Deserialize<'de> for UpdateProjectBillingInfoRequest {
9746    #[allow(deprecated)]
9747    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9748    where
9749        D: serde::Deserializer<'de>,
9750    {
9751        const FIELDS: &[&str] = &[
9752            "project_billing_info",
9753            "projectBillingInfo",
9754            "update_mask",
9755            "updateMask",
9756        ];
9757        #[allow(clippy::enum_variant_names)]
9758        enum GeneratedField {
9759            ProjectBillingInfo,
9760            UpdateMask,
9761            __SkipField__,
9762        }
9763        impl<'de> serde::Deserialize<'de> for GeneratedField {
9764            fn deserialize<D>(
9765                deserializer: D,
9766            ) -> std::result::Result<GeneratedField, D::Error>
9767            where
9768                D: serde::Deserializer<'de>,
9769            {
9770                struct GeneratedVisitor;
9771                impl serde::de::Visitor<'_> for GeneratedVisitor {
9772                    type Value = GeneratedField;
9773                    fn expecting(
9774                        &self,
9775                        formatter: &mut std::fmt::Formatter<'_>,
9776                    ) -> std::fmt::Result {
9777                        write!(formatter, "expected one of: {:?}", & FIELDS)
9778                    }
9779                    #[allow(unused_variables)]
9780                    fn visit_str<E>(
9781                        self,
9782                        value: &str,
9783                    ) -> std::result::Result<GeneratedField, E>
9784                    where
9785                        E: serde::de::Error,
9786                    {
9787                        match value {
9788                            "projectBillingInfo" | "project_billing_info" => {
9789                                Ok(GeneratedField::ProjectBillingInfo)
9790                            }
9791                            "updateMask" | "update_mask" => {
9792                                Ok(GeneratedField::UpdateMask)
9793                            }
9794                            _ => Ok(GeneratedField::__SkipField__),
9795                        }
9796                    }
9797                }
9798                deserializer.deserialize_identifier(GeneratedVisitor)
9799            }
9800        }
9801        struct GeneratedVisitor;
9802        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9803            type Value = UpdateProjectBillingInfoRequest;
9804            fn expecting(
9805                &self,
9806                formatter: &mut std::fmt::Formatter<'_>,
9807            ) -> std::fmt::Result {
9808                formatter
9809                    .write_str(
9810                        "struct origincloud.billing.v1beta1.UpdateProjectBillingInfoRequest",
9811                    )
9812            }
9813            fn visit_map<V>(
9814                self,
9815                mut map_: V,
9816            ) -> std::result::Result<UpdateProjectBillingInfoRequest, V::Error>
9817            where
9818                V: serde::de::MapAccess<'de>,
9819            {
9820                let mut project_billing_info__ = None;
9821                let mut update_mask__ = None;
9822                while let Some(k) = map_.next_key()? {
9823                    match k {
9824                        GeneratedField::ProjectBillingInfo => {
9825                            if project_billing_info__.is_some() {
9826                                return Err(
9827                                    serde::de::Error::duplicate_field("projectBillingInfo"),
9828                                );
9829                            }
9830                            project_billing_info__ = map_.next_value()?;
9831                        }
9832                        GeneratedField::UpdateMask => {
9833                            if update_mask__.is_some() {
9834                                return Err(serde::de::Error::duplicate_field("updateMask"));
9835                            }
9836                            update_mask__ = map_.next_value()?;
9837                        }
9838                        GeneratedField::__SkipField__ => {
9839                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9840                        }
9841                    }
9842                }
9843                Ok(UpdateProjectBillingInfoRequest {
9844                    project_billing_info: project_billing_info__,
9845                    update_mask: update_mask__,
9846                })
9847            }
9848        }
9849        deserializer
9850            .deserialize_struct(
9851                "origincloud.billing.v1beta1.UpdateProjectBillingInfoRequest",
9852                FIELDS,
9853                GeneratedVisitor,
9854            )
9855    }
9856}
9857impl serde::Serialize for UpdateSpendLimitRequest {
9858    #[allow(deprecated)]
9859    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9860    where
9861        S: serde::Serializer,
9862    {
9863        use serde::ser::SerializeStruct;
9864        let mut len = 0;
9865        if self.spend_limit.is_some() {
9866            len += 1;
9867        }
9868        if self.update_mask.is_some() {
9869            len += 1;
9870        }
9871        let mut struct_ser = serializer
9872            .serialize_struct(
9873                "origincloud.billing.v1beta1.UpdateSpendLimitRequest",
9874                len,
9875            )?;
9876        if let Some(v) = self.spend_limit.as_ref() {
9877            struct_ser.serialize_field("spendLimit", v)?;
9878        }
9879        if let Some(v) = self.update_mask.as_ref() {
9880            struct_ser.serialize_field("updateMask", v)?;
9881        }
9882        struct_ser.end()
9883    }
9884}
9885impl<'de> serde::Deserialize<'de> for UpdateSpendLimitRequest {
9886    #[allow(deprecated)]
9887    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9888    where
9889        D: serde::Deserializer<'de>,
9890    {
9891        const FIELDS: &[&str] = &[
9892            "spend_limit",
9893            "spendLimit",
9894            "update_mask",
9895            "updateMask",
9896        ];
9897        #[allow(clippy::enum_variant_names)]
9898        enum GeneratedField {
9899            SpendLimit,
9900            UpdateMask,
9901            __SkipField__,
9902        }
9903        impl<'de> serde::Deserialize<'de> for GeneratedField {
9904            fn deserialize<D>(
9905                deserializer: D,
9906            ) -> std::result::Result<GeneratedField, D::Error>
9907            where
9908                D: serde::Deserializer<'de>,
9909            {
9910                struct GeneratedVisitor;
9911                impl serde::de::Visitor<'_> for GeneratedVisitor {
9912                    type Value = GeneratedField;
9913                    fn expecting(
9914                        &self,
9915                        formatter: &mut std::fmt::Formatter<'_>,
9916                    ) -> std::fmt::Result {
9917                        write!(formatter, "expected one of: {:?}", & FIELDS)
9918                    }
9919                    #[allow(unused_variables)]
9920                    fn visit_str<E>(
9921                        self,
9922                        value: &str,
9923                    ) -> std::result::Result<GeneratedField, E>
9924                    where
9925                        E: serde::de::Error,
9926                    {
9927                        match value {
9928                            "spendLimit" | "spend_limit" => {
9929                                Ok(GeneratedField::SpendLimit)
9930                            }
9931                            "updateMask" | "update_mask" => {
9932                                Ok(GeneratedField::UpdateMask)
9933                            }
9934                            _ => Ok(GeneratedField::__SkipField__),
9935                        }
9936                    }
9937                }
9938                deserializer.deserialize_identifier(GeneratedVisitor)
9939            }
9940        }
9941        struct GeneratedVisitor;
9942        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9943            type Value = UpdateSpendLimitRequest;
9944            fn expecting(
9945                &self,
9946                formatter: &mut std::fmt::Formatter<'_>,
9947            ) -> std::fmt::Result {
9948                formatter
9949                    .write_str(
9950                        "struct origincloud.billing.v1beta1.UpdateSpendLimitRequest",
9951                    )
9952            }
9953            fn visit_map<V>(
9954                self,
9955                mut map_: V,
9956            ) -> std::result::Result<UpdateSpendLimitRequest, V::Error>
9957            where
9958                V: serde::de::MapAccess<'de>,
9959            {
9960                let mut spend_limit__ = None;
9961                let mut update_mask__ = None;
9962                while let Some(k) = map_.next_key()? {
9963                    match k {
9964                        GeneratedField::SpendLimit => {
9965                            if spend_limit__.is_some() {
9966                                return Err(serde::de::Error::duplicate_field("spendLimit"));
9967                            }
9968                            spend_limit__ = map_.next_value()?;
9969                        }
9970                        GeneratedField::UpdateMask => {
9971                            if update_mask__.is_some() {
9972                                return Err(serde::de::Error::duplicate_field("updateMask"));
9973                            }
9974                            update_mask__ = map_.next_value()?;
9975                        }
9976                        GeneratedField::__SkipField__ => {
9977                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9978                        }
9979                    }
9980                }
9981                Ok(UpdateSpendLimitRequest {
9982                    spend_limit: spend_limit__,
9983                    update_mask: update_mask__,
9984                })
9985            }
9986        }
9987        deserializer
9988            .deserialize_struct(
9989                "origincloud.billing.v1beta1.UpdateSpendLimitRequest",
9990                FIELDS,
9991                GeneratedVisitor,
9992            )
9993    }
9994}
9995impl serde::Serialize for UsageRecord {
9996    #[allow(deprecated)]
9997    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9998    where
9999        S: serde::Serializer,
10000    {
10001        use serde::ser::SerializeStruct;
10002        let mut len = 0;
10003        if !self.resource_kind.is_empty() {
10004            len += 1;
10005        }
10006        if !self.resource_id.is_empty() {
10007            len += 1;
10008        }
10009        if !self.metric.is_empty() {
10010            len += 1;
10011        }
10012        if !self.product_key.is_empty() {
10013            len += 1;
10014        }
10015        if !self.quantity.is_empty() {
10016            len += 1;
10017        }
10018        if self.start_time.is_some() {
10019            len += 1;
10020        }
10021        if self.end_time.is_some() {
10022            len += 1;
10023        }
10024        if !self.billing_account.is_empty() {
10025            len += 1;
10026        }
10027        let mut struct_ser = serializer
10028            .serialize_struct("origincloud.billing.v1beta1.UsageRecord", len)?;
10029        if !self.resource_kind.is_empty() {
10030            struct_ser.serialize_field("resourceKind", &self.resource_kind)?;
10031        }
10032        if !self.resource_id.is_empty() {
10033            struct_ser.serialize_field("resourceId", &self.resource_id)?;
10034        }
10035        if !self.metric.is_empty() {
10036            struct_ser.serialize_field("metric", &self.metric)?;
10037        }
10038        if !self.product_key.is_empty() {
10039            struct_ser.serialize_field("productKey", &self.product_key)?;
10040        }
10041        if !self.quantity.is_empty() {
10042            struct_ser.serialize_field("quantity", &self.quantity)?;
10043        }
10044        if let Some(v) = self.start_time.as_ref() {
10045            struct_ser.serialize_field("startTime", v)?;
10046        }
10047        if let Some(v) = self.end_time.as_ref() {
10048            struct_ser.serialize_field("endTime", v)?;
10049        }
10050        if !self.billing_account.is_empty() {
10051            struct_ser.serialize_field("billingAccount", &self.billing_account)?;
10052        }
10053        struct_ser.end()
10054    }
10055}
10056impl<'de> serde::Deserialize<'de> for UsageRecord {
10057    #[allow(deprecated)]
10058    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10059    where
10060        D: serde::Deserializer<'de>,
10061    {
10062        const FIELDS: &[&str] = &[
10063            "resource_kind",
10064            "resourceKind",
10065            "resource_id",
10066            "resourceId",
10067            "metric",
10068            "product_key",
10069            "productKey",
10070            "quantity",
10071            "start_time",
10072            "startTime",
10073            "end_time",
10074            "endTime",
10075            "billing_account",
10076            "billingAccount",
10077        ];
10078        #[allow(clippy::enum_variant_names)]
10079        enum GeneratedField {
10080            ResourceKind,
10081            ResourceId,
10082            Metric,
10083            ProductKey,
10084            Quantity,
10085            StartTime,
10086            EndTime,
10087            BillingAccount,
10088            __SkipField__,
10089        }
10090        impl<'de> serde::Deserialize<'de> for GeneratedField {
10091            fn deserialize<D>(
10092                deserializer: D,
10093            ) -> std::result::Result<GeneratedField, D::Error>
10094            where
10095                D: serde::Deserializer<'de>,
10096            {
10097                struct GeneratedVisitor;
10098                impl serde::de::Visitor<'_> for GeneratedVisitor {
10099                    type Value = GeneratedField;
10100                    fn expecting(
10101                        &self,
10102                        formatter: &mut std::fmt::Formatter<'_>,
10103                    ) -> std::fmt::Result {
10104                        write!(formatter, "expected one of: {:?}", & FIELDS)
10105                    }
10106                    #[allow(unused_variables)]
10107                    fn visit_str<E>(
10108                        self,
10109                        value: &str,
10110                    ) -> std::result::Result<GeneratedField, E>
10111                    where
10112                        E: serde::de::Error,
10113                    {
10114                        match value {
10115                            "resourceKind" | "resource_kind" => {
10116                                Ok(GeneratedField::ResourceKind)
10117                            }
10118                            "resourceId" | "resource_id" => {
10119                                Ok(GeneratedField::ResourceId)
10120                            }
10121                            "metric" => Ok(GeneratedField::Metric),
10122                            "productKey" | "product_key" => {
10123                                Ok(GeneratedField::ProductKey)
10124                            }
10125                            "quantity" => Ok(GeneratedField::Quantity),
10126                            "startTime" | "start_time" => Ok(GeneratedField::StartTime),
10127                            "endTime" | "end_time" => Ok(GeneratedField::EndTime),
10128                            "billingAccount" | "billing_account" => {
10129                                Ok(GeneratedField::BillingAccount)
10130                            }
10131                            _ => Ok(GeneratedField::__SkipField__),
10132                        }
10133                    }
10134                }
10135                deserializer.deserialize_identifier(GeneratedVisitor)
10136            }
10137        }
10138        struct GeneratedVisitor;
10139        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10140            type Value = UsageRecord;
10141            fn expecting(
10142                &self,
10143                formatter: &mut std::fmt::Formatter<'_>,
10144            ) -> std::fmt::Result {
10145                formatter.write_str("struct origincloud.billing.v1beta1.UsageRecord")
10146            }
10147            fn visit_map<V>(
10148                self,
10149                mut map_: V,
10150            ) -> std::result::Result<UsageRecord, V::Error>
10151            where
10152                V: serde::de::MapAccess<'de>,
10153            {
10154                let mut resource_kind__ = None;
10155                let mut resource_id__ = None;
10156                let mut metric__ = None;
10157                let mut product_key__ = None;
10158                let mut quantity__ = None;
10159                let mut start_time__ = None;
10160                let mut end_time__ = None;
10161                let mut billing_account__ = None;
10162                while let Some(k) = map_.next_key()? {
10163                    match k {
10164                        GeneratedField::ResourceKind => {
10165                            if resource_kind__.is_some() {
10166                                return Err(
10167                                    serde::de::Error::duplicate_field("resourceKind"),
10168                                );
10169                            }
10170                            resource_kind__ = Some(map_.next_value()?);
10171                        }
10172                        GeneratedField::ResourceId => {
10173                            if resource_id__.is_some() {
10174                                return Err(serde::de::Error::duplicate_field("resourceId"));
10175                            }
10176                            resource_id__ = Some(map_.next_value()?);
10177                        }
10178                        GeneratedField::Metric => {
10179                            if metric__.is_some() {
10180                                return Err(serde::de::Error::duplicate_field("metric"));
10181                            }
10182                            metric__ = Some(map_.next_value()?);
10183                        }
10184                        GeneratedField::ProductKey => {
10185                            if product_key__.is_some() {
10186                                return Err(serde::de::Error::duplicate_field("productKey"));
10187                            }
10188                            product_key__ = Some(map_.next_value()?);
10189                        }
10190                        GeneratedField::Quantity => {
10191                            if quantity__.is_some() {
10192                                return Err(serde::de::Error::duplicate_field("quantity"));
10193                            }
10194                            quantity__ = Some(map_.next_value()?);
10195                        }
10196                        GeneratedField::StartTime => {
10197                            if start_time__.is_some() {
10198                                return Err(serde::de::Error::duplicate_field("startTime"));
10199                            }
10200                            start_time__ = map_.next_value()?;
10201                        }
10202                        GeneratedField::EndTime => {
10203                            if end_time__.is_some() {
10204                                return Err(serde::de::Error::duplicate_field("endTime"));
10205                            }
10206                            end_time__ = map_.next_value()?;
10207                        }
10208                        GeneratedField::BillingAccount => {
10209                            if billing_account__.is_some() {
10210                                return Err(
10211                                    serde::de::Error::duplicate_field("billingAccount"),
10212                                );
10213                            }
10214                            billing_account__ = Some(map_.next_value()?);
10215                        }
10216                        GeneratedField::__SkipField__ => {
10217                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10218                        }
10219                    }
10220                }
10221                Ok(UsageRecord {
10222                    resource_kind: resource_kind__.unwrap_or_default(),
10223                    resource_id: resource_id__.unwrap_or_default(),
10224                    metric: metric__.unwrap_or_default(),
10225                    product_key: product_key__.unwrap_or_default(),
10226                    quantity: quantity__.unwrap_or_default(),
10227                    start_time: start_time__,
10228                    end_time: end_time__,
10229                    billing_account: billing_account__.unwrap_or_default(),
10230                })
10231            }
10232        }
10233        deserializer
10234            .deserialize_struct(
10235                "origincloud.billing.v1beta1.UsageRecord",
10236                FIELDS,
10237                GeneratedVisitor,
10238            )
10239    }
10240}
10241/// Calls `BillingAccountService`.
10242///
10243/// Billing accounts, which project each one pays for, and how they are paid.
10244#[derive(Clone, Debug)]
10245pub struct BillingAccountClient {
10246    service: ::origincloud_core::Service,
10247}
10248impl BillingAccountClient {
10249    /// Returns a client of `BillingAccountService` that sends its calls through `client`.
10250    pub fn new(client: &::origincloud_core::Client) -> Self {
10251        Self {
10252            service: client.service("billing", false),
10253        }
10254    }
10255    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
10256    pub fn service(&self) -> &::origincloud_core::Service {
10257        &self.service
10258    }
10259    /// Returns a billing account. Needs `admin.billing_account.get` on the
10260    /// organization.
10261    pub async fn get_billing_account(
10262        &self,
10263        request: GetBillingAccountRequest,
10264    ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
10265        let p0 = ::origincloud_core::path_value(
10266            "name",
10267            &request.name,
10268            "organizations/*/billingAccounts/*",
10269        )?;
10270        let query = ::origincloud_core::query(&request, &["name"])?;
10271        let call = ::origincloud_core::Request::new(
10272                ::origincloud_core::Method::GET,
10273                format!("/v1beta1/{p0}"),
10274            )
10275            .with_query(query)
10276            .idempotent();
10277        self.service.call(call).await
10278    }
10279    /// Lists an organization's billing accounts, oldest first. Needs
10280    /// `admin.billing_account.list` on the organization.
10281    pub async fn list_billing_accounts(
10282        &self,
10283        request: ListBillingAccountsRequest,
10284    ) -> ::core::result::Result<ListBillingAccountsResponse, ::origincloud_core::Error> {
10285        let p0 = ::origincloud_core::path_value(
10286            "parent",
10287            &request.parent,
10288            "organizations/*",
10289        )?;
10290        let query = ::origincloud_core::query(&request, &["parent"])?;
10291        let call = ::origincloud_core::Request::new(
10292                ::origincloud_core::Method::GET,
10293                format!("/v1beta1/{p0}/billingAccounts"),
10294            )
10295            .with_query(query)
10296            .idempotent();
10297        self.service.call(call).await
10298    }
10299    /// Returns everything [`list_billing_accounts`](Self::list_billing_accounts) 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.
10300    pub fn all_billing_accounts(
10301        &self,
10302        request: ListBillingAccountsRequest,
10303    ) -> ::origincloud_core::Pages<BillingAccount> {
10304        let client = self.clone();
10305        ::origincloud_core::Pages::new(
10306            request,
10307            move |request: ListBillingAccountsRequest| {
10308                let client = client.clone();
10309                async move {
10310                    let page = client.list_billing_accounts(request).await?;
10311                    Ok((page.billing_accounts, page.next_page_token))
10312                }
10313            },
10314            |request: &mut ListBillingAccountsRequest, token: ::std::string::String| {
10315                request.page_token = token;
10316            },
10317        )
10318    }
10319    /// Creates a billing account with its profile: `display_name`,
10320    /// `billing_address`, `invoice_email` and `contact_person` are required,
10321    /// and `vat_id` too for a billing address outside Germany. The account
10322    /// has no payment method yet: until one is verified, the projects linked
10323    /// to it can't create billable resources. Creating it grants nobody a
10324    /// role: whoever can create billing accounts can use it. Needs
10325    /// `admin.billing_account.create` on the organization.
10326    pub async fn create_billing_account(
10327        &self,
10328        mut request: CreateBillingAccountRequest,
10329    ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
10330        if request.request_id.is_empty() {
10331            request.request_id = ::origincloud_core::new_request_id();
10332        }
10333        let p0 = ::origincloud_core::path_value(
10334            "parent",
10335            &request.parent,
10336            "organizations/*",
10337        )?;
10338        let body = ::origincloud_core::json_body(
10339            request
10340                .billing_account
10341                .as_ref()
10342                .unwrap_or(&::core::default::Default::default()),
10343        )?;
10344        let query = ::origincloud_core::query(&request, &["parent", "billingAccount"])?;
10345        let call = ::origincloud_core::Request::new(
10346                ::origincloud_core::Method::POST,
10347                format!("/v1beta1/{p0}/billingAccounts"),
10348            )
10349            .with_body(body)
10350            .with_query(query)
10351            .idempotent();
10352        self.service.call(call).await
10353    }
10354    /// Changes a billing account's `display_name` or its profile. The profile
10355    /// fields named in `update_mask` are replaced and the others kept; once
10356    /// the update is applied, the account must have a whole profile
10357    /// (`billing_address`, `invoice_email`, `contact_person`, and `vat_id`
10358    /// for a billing address outside Germany), or the update is refused. Needs
10359    /// `admin.billing_account.update` on the organization.
10360    pub async fn update_billing_account(
10361        &self,
10362        request: UpdateBillingAccountRequest,
10363    ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
10364        let p0 = ::origincloud_core::path_value(
10365            "billingAccount.name",
10366            request.billing_account.as_ref().map_or("", |m| m.name.as_str()),
10367            "organizations/*/billingAccounts/*",
10368        )?;
10369        let body = ::origincloud_core::json_body(
10370            request
10371                .billing_account
10372                .as_ref()
10373                .unwrap_or(&::core::default::Default::default()),
10374        )?;
10375        let query = ::origincloud_core::query(
10376            &request,
10377            &["billingAccount.name", "billingAccount"],
10378        )?;
10379        let call = ::origincloud_core::Request::new(
10380                ::origincloud_core::Method::PATCH,
10381                format!("/v1beta1/{p0}"),
10382            )
10383            .with_body(body)
10384            .with_query(query);
10385        self.service.call(call).await
10386    }
10387    /// Deletes a billing account. Refused as a `CONFLICT` for the
10388    /// organization's default billing account, while a project is linked to
10389    /// the account (link it to another account first), and while the account
10390    /// has a spend limit (remove it first). Needs
10391    /// `admin.billing_account.delete` on the organization.
10392    pub async fn delete_billing_account(
10393        &self,
10394        request: DeleteBillingAccountRequest,
10395    ) -> ::core::result::Result<
10396        ::origincloud_core::protobuf::Empty,
10397        ::origincloud_core::Error,
10398    > {
10399        let p0 = ::origincloud_core::path_value(
10400            "name",
10401            &request.name,
10402            "organizations/*/billingAccounts/*",
10403        )?;
10404        let query = ::origincloud_core::query(&request, &["name"])?;
10405        let call = ::origincloud_core::Request::new(
10406                ::origincloud_core::Method::DELETE,
10407                format!("/v1beta1/{p0}"),
10408            )
10409            .with_query(query);
10410        self.service.call(call).await
10411    }
10412    /// Starts adding a payment method to a billing account, and returns the
10413    /// payment provider's page to open in a browser: the payment details are
10414    /// entered there and never pass through this API. Once that page is done,
10415    /// call ConfirmPaymentMethodSetup. Starting again replaces a setup that
10416    /// wasn't confirmed. Refused as `INVALID_ARGUMENT` for an account whose
10417    /// `payment_method.state` is `payment_method::State::NotRequired`. Needs
10418    /// `admin.billing_account.update` on the organization.
10419    pub async fn start_payment_method_setup(
10420        &self,
10421        request: StartPaymentMethodSetupRequest,
10422    ) -> ::core::result::Result<
10423        StartPaymentMethodSetupResponse,
10424        ::origincloud_core::Error,
10425    > {
10426        let p0 = ::origincloud_core::path_value(
10427            "name",
10428            &request.name,
10429            "organizations/*/billingAccounts/*",
10430        )?;
10431        let body = ::origincloud_core::json_body(&request)?;
10432        let call = ::origincloud_core::Request::new(
10433                ::origincloud_core::Method::POST,
10434                format!("/v1beta1/{p0}:startPaymentMethodSetup"),
10435            )
10436            .with_body(body);
10437        self.service.call(call).await
10438    }
10439    /// Completes the setup StartPaymentMethodSetup started, once its page is
10440    /// done: the payment provider is asked whether it finished, and only a
10441    /// finished setup is recorded. The account's `payment_method` is then
10442    /// `payment_method::State::Verified`, replacing any earlier one, and its projects can create
10443    /// billable resources. An unfinished or abandoned setup is refused as
10444    /// `INVALID_ARGUMENT` and changes nothing: finish the page, or start
10445    /// again. So is an account with no setup started, which includes a
10446    /// repeat of a confirmation that succeeded: read the account to see
10447    /// whether it did. Needs `admin.billing_account.update` on the
10448    /// organization.
10449    pub async fn confirm_payment_method_setup(
10450        &self,
10451        request: ConfirmPaymentMethodSetupRequest,
10452    ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
10453        let p0 = ::origincloud_core::path_value(
10454            "name",
10455            &request.name,
10456            "organizations/*/billingAccounts/*",
10457        )?;
10458        let body = ::origincloud_core::json_body(&request)?;
10459        let call = ::origincloud_core::Request::new(
10460                ::origincloud_core::Method::POST,
10461                format!("/v1beta1/{p0}:confirmPaymentMethodSetup"),
10462            )
10463            .with_body(body);
10464        self.service.call(call).await
10465    }
10466    /// Returns which billing account pays for a project. Needs
10467    /// `admin.project.get` on the project.
10468    pub async fn get_project_billing_info(
10469        &self,
10470        request: GetProjectBillingInfoRequest,
10471    ) -> ::core::result::Result<ProjectBillingInfo, ::origincloud_core::Error> {
10472        let p0 = ::origincloud_core::path_value(
10473            "name",
10474            &request.name,
10475            "projects/*/billingInfo",
10476        )?;
10477        let query = ::origincloud_core::query(&request, &["name"])?;
10478        let call = ::origincloud_core::Request::new(
10479                ::origincloud_core::Method::GET,
10480                format!("/v1beta1/{p0}"),
10481            )
10482            .with_query(query)
10483            .idempotent();
10484        self.service.call(call).await
10485    }
10486    /// Links a project to another billing account of its organization, which
10487    /// pays for its usage from then on; what it used before stays charged to
10488    /// the account it was linked to then. A project is always linked to one
10489    /// account, so there is nothing to unlink. Needs `admin.project.attach`
10490    /// on the project, which is separate from access to billing accounts.
10491    pub async fn update_project_billing_info(
10492        &self,
10493        request: UpdateProjectBillingInfoRequest,
10494    ) -> ::core::result::Result<ProjectBillingInfo, ::origincloud_core::Error> {
10495        let p0 = ::origincloud_core::path_value(
10496            "projectBillingInfo.name",
10497            request.project_billing_info.as_ref().map_or("", |m| m.name.as_str()),
10498            "projects/*/billingInfo",
10499        )?;
10500        let body = ::origincloud_core::json_body(
10501            request
10502                .project_billing_info
10503                .as_ref()
10504                .unwrap_or(&::core::default::Default::default()),
10505        )?;
10506        let query = ::origincloud_core::query(
10507            &request,
10508            &["projectBillingInfo.name", "projectBillingInfo"],
10509        )?;
10510        let call = ::origincloud_core::Request::new(
10511                ::origincloud_core::Method::PATCH,
10512                format!("/v1beta1/{p0}"),
10513            )
10514            .with_body(body)
10515            .with_query(query);
10516        self.service.call(call).await
10517    }
10518    /// Lists the projects a billing account pays for, oldest first. Needs
10519    /// `admin.billing_account.get` on the organization.
10520    pub async fn list_project_billing_info(
10521        &self,
10522        request: ListProjectBillingInfoRequest,
10523    ) -> ::core::result::Result<
10524        ListProjectBillingInfoResponse,
10525        ::origincloud_core::Error,
10526    > {
10527        let p0 = ::origincloud_core::path_value(
10528            "name",
10529            &request.name,
10530            "organizations/*/billingAccounts/*",
10531        )?;
10532        let query = ::origincloud_core::query(&request, &["name"])?;
10533        let call = ::origincloud_core::Request::new(
10534                ::origincloud_core::Method::GET,
10535                format!("/v1beta1/{p0}/projects"),
10536            )
10537            .with_query(query)
10538            .idempotent();
10539        self.service.call(call).await
10540    }
10541    /// Returns everything [`list_project_billing_info`](Self::list_project_billing_info) 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.
10542    pub fn all_project_billing_infos(
10543        &self,
10544        request: ListProjectBillingInfoRequest,
10545    ) -> ::origincloud_core::Pages<ProjectBillingInfo> {
10546        let client = self.clone();
10547        ::origincloud_core::Pages::new(
10548            request,
10549            move |request: ListProjectBillingInfoRequest| {
10550                let client = client.clone();
10551                async move {
10552                    let page = client.list_project_billing_info(request).await?;
10553                    Ok((page.project_billing_infos, page.next_page_token))
10554                }
10555            },
10556            |request: &mut ListProjectBillingInfoRequest, token: ::std::string::String| {
10557                request.page_token = token;
10558            },
10559        )
10560    }
10561    /// Returns a country a billing address may be in.
10562    pub async fn get_billing_country(
10563        &self,
10564        request: GetBillingCountryRequest,
10565    ) -> ::core::result::Result<BillingCountry, ::origincloud_core::Error> {
10566        let p0 = ::origincloud_core::path_value(
10567            "name",
10568            &request.name,
10569            "billingCountries/*",
10570        )?;
10571        let query = ::origincloud_core::query(&request, &["name"])?;
10572        let call = ::origincloud_core::Request::new(
10573                ::origincloud_core::Method::GET,
10574                format!("/v1beta1/{p0}"),
10575            )
10576            .with_query(query)
10577            .idempotent();
10578        self.service.call(call).await
10579    }
10580    /// Lists the countries a billing address may be in, in the order a form
10581    /// shows them, and whether each needs a VAT id.
10582    pub async fn list_billing_countries(
10583        &self,
10584        request: ListBillingCountriesRequest,
10585    ) -> ::core::result::Result<
10586        ListBillingCountriesResponse,
10587        ::origincloud_core::Error,
10588    > {
10589        let query = ::origincloud_core::query(&request, &[])?;
10590        let call = ::origincloud_core::Request::new(
10591                ::origincloud_core::Method::GET,
10592                ::std::string::String::from("/v1beta1/billingCountries"),
10593            )
10594            .with_query(query)
10595            .idempotent();
10596        self.service.call(call).await
10597    }
10598    /// Returns everything [`list_billing_countries`](Self::list_billing_countries) 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.
10599    pub fn all_billing_countries(
10600        &self,
10601        request: ListBillingCountriesRequest,
10602    ) -> ::origincloud_core::Pages<BillingCountry> {
10603        let client = self.clone();
10604        ::origincloud_core::Pages::new(
10605            request,
10606            move |request: ListBillingCountriesRequest| {
10607                let client = client.clone();
10608                async move {
10609                    let page = client.list_billing_countries(request).await?;
10610                    Ok((page.billing_countries, page.next_page_token))
10611                }
10612            },
10613            |request: &mut ListBillingCountriesRequest, token: ::std::string::String| {
10614                request.page_token = token;
10615            },
10616        )
10617    }
10618}
10619/// Calls `CostService`.
10620///
10621/// Usage and cost: what a project, an organization or a billing account used
10622/// in a period, and what it costs, as read-only reports.
10623///
10624/// Usage is metered per resource and priced when it is recorded, at the
10625/// price list's rate then, so a later price change never changes a past
10626/// cost. A running resource's usage is recorded at least hourly; the last
10627/// hour can still be missing from a report.
10628#[derive(Clone, Debug)]
10629pub struct CostClient {
10630    service: ::origincloud_core::Service,
10631}
10632impl CostClient {
10633    /// Returns a client of `CostService` that sends its calls through `client`.
10634    pub fn new(client: &::origincloud_core::Client) -> Self {
10635        Self {
10636            service: client.service("billing", false),
10637        }
10638    }
10639    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
10640    pub fn service(&self) -> &::origincloud_core::Service {
10641        &self.service
10642    }
10643    /// Returns a project's cost in a period, by service and product, in hourly
10644    /// or daily buckets. Needs `admin.usage.list` on the organization.
10645    pub async fn query_project_cost(
10646        &self,
10647        request: QueryProjectCostRequest,
10648    ) -> ::core::result::Result<CostReport, ::origincloud_core::Error> {
10649        let p0 = ::origincloud_core::path_value(
10650            "project",
10651            &request.project,
10652            "projects/*",
10653        )?;
10654        let query = ::origincloud_core::query(&request, &["project"])?;
10655        let call = ::origincloud_core::Request::new(
10656                ::origincloud_core::Method::GET,
10657                format!("/v1beta1/{p0}:queryCost"),
10658            )
10659            .with_query(query)
10660            .idempotent();
10661        self.service.call(call).await
10662    }
10663    /// Returns an organization's cost in a period: every project's together,
10664    /// by service and product, and each project's on its own. Needs
10665    /// `admin.usage.list` on the organization, which reads every project's
10666    /// cost in it.
10667    pub async fn query_organization_cost(
10668        &self,
10669        request: QueryOrganizationCostRequest,
10670    ) -> ::core::result::Result<OrganizationCostReport, ::origincloud_core::Error> {
10671        let p0 = ::origincloud_core::path_value(
10672            "organization",
10673            &request.organization,
10674            "organizations/*",
10675        )?;
10676        let query = ::origincloud_core::query(&request, &["organization"])?;
10677        let call = ::origincloud_core::Request::new(
10678                ::origincloud_core::Method::GET,
10679                format!("/v1beta1/{p0}:queryCost"),
10680            )
10681            .with_query(query)
10682            .idempotent();
10683        self.service.call(call).await
10684    }
10685    /// Returns what was charged to a billing account in a period, by service
10686    /// and product. A project's cost is charged to the account it was linked
10687    /// to when the usage was recorded, so moving a project moves only its
10688    /// later cost. Its spend limit compares the calendar month's total with
10689    /// `limit`. Needs `admin.spend_limit.get` on the organization.
10690    pub async fn query_billing_account_cost(
10691        &self,
10692        request: QueryBillingAccountCostRequest,
10693    ) -> ::core::result::Result<CostReport, ::origincloud_core::Error> {
10694        let p0 = ::origincloud_core::path_value(
10695            "billingAccount",
10696            &request.billing_account,
10697            "organizations/*/billingAccounts/*",
10698        )?;
10699        let query = ::origincloud_core::query(&request, &["billingAccount"])?;
10700        let call = ::origincloud_core::Request::new(
10701                ::origincloud_core::Method::GET,
10702                format!("/v1beta1/{p0}:queryCost"),
10703            )
10704            .with_query(query)
10705            .idempotent();
10706        self.service.call(call).await
10707    }
10708    /// Lists a project's metered usage records that overlap a period, the
10709    /// input its cost is priced from, oldest first. Needs `admin.usage.list`
10710    /// on the organization.
10711    pub async fn query_project_usage(
10712        &self,
10713        request: QueryProjectUsageRequest,
10714    ) -> ::core::result::Result<QueryProjectUsageResponse, ::origincloud_core::Error> {
10715        let p0 = ::origincloud_core::path_value(
10716            "project",
10717            &request.project,
10718            "projects/*",
10719        )?;
10720        let query = ::origincloud_core::query(&request, &["project"])?;
10721        let call = ::origincloud_core::Request::new(
10722                ::origincloud_core::Method::GET,
10723                format!("/v1beta1/{p0}:queryUsage"),
10724            )
10725            .with_query(query)
10726            .idempotent();
10727        self.service.call(call).await
10728    }
10729    /// Returns everything [`query_project_usage`](Self::query_project_usage) 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.
10730    pub fn all_usage_records(
10731        &self,
10732        request: QueryProjectUsageRequest,
10733    ) -> ::origincloud_core::Pages<UsageRecord> {
10734        let client = self.clone();
10735        ::origincloud_core::Pages::new(
10736            request,
10737            move |request: QueryProjectUsageRequest| {
10738                let client = client.clone();
10739                async move {
10740                    let page = client.query_project_usage(request).await?;
10741                    Ok((page.usage_records, page.next_page_token))
10742                }
10743            },
10744            |request: &mut QueryProjectUsageRequest, token: ::std::string::String| {
10745                request.page_token = token;
10746            },
10747        )
10748    }
10749}
10750/// Calls `LegalAcceptanceService`.
10751///
10752/// A billing account's acceptances of the legal documents customers accept:
10753/// the Terms of Service, the Data Processing Agreement, the Service Level
10754/// Agreement and the Acceptable Use Policy. The billing account is the legal
10755/// entity that accepts. An acceptance is a record that never changes, and it
10756/// is kept after the billing account and its organization are deleted.
10757#[derive(Clone, Debug)]
10758pub struct LegalAcceptanceClient {
10759    service: ::origincloud_core::Service,
10760}
10761impl LegalAcceptanceClient {
10762    /// Returns a client of `LegalAcceptanceService` that sends its calls through `client`.
10763    pub fn new(client: &::origincloud_core::Client) -> Self {
10764        Self {
10765            service: client.service("billing", false),
10766        }
10767    }
10768    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
10769    pub fn service(&self) -> &::origincloud_core::Service {
10770        &self.service
10771    }
10772    /// Lists a billing account's acceptances, the latest first. Needs
10773    /// `admin.billing_account.get` on the organization.
10774    pub async fn list_legal_acceptances(
10775        &self,
10776        request: ListLegalAcceptancesRequest,
10777    ) -> ::core::result::Result<
10778        ListLegalAcceptancesResponse,
10779        ::origincloud_core::Error,
10780    > {
10781        let p0 = ::origincloud_core::path_value(
10782            "parent",
10783            &request.parent,
10784            "organizations/*/billingAccounts/*",
10785        )?;
10786        let query = ::origincloud_core::query(&request, &["parent"])?;
10787        let call = ::origincloud_core::Request::new(
10788                ::origincloud_core::Method::GET,
10789                format!("/v1beta1/{p0}/legalAcceptances"),
10790            )
10791            .with_query(query)
10792            .idempotent();
10793        self.service.call(call).await
10794    }
10795    /// Returns everything [`list_legal_acceptances`](Self::list_legal_acceptances) 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.
10796    pub fn all_legal_acceptances(
10797        &self,
10798        request: ListLegalAcceptancesRequest,
10799    ) -> ::origincloud_core::Pages<LegalAcceptance> {
10800        let client = self.clone();
10801        ::origincloud_core::Pages::new(
10802            request,
10803            move |request: ListLegalAcceptancesRequest| {
10804                let client = client.clone();
10805                async move {
10806                    let page = client.list_legal_acceptances(request).await?;
10807                    Ok((page.legal_acceptances, page.next_page_token))
10808                }
10809            },
10810            |request: &mut ListLegalAcceptancesRequest, token: ::std::string::String| {
10811                request.page_token = token;
10812            },
10813        )
10814    }
10815    /// Returns one of a billing account's acceptances. Needs
10816    /// `admin.billing_account.get` on the organization.
10817    pub async fn get_legal_acceptance(
10818        &self,
10819        request: GetLegalAcceptanceRequest,
10820    ) -> ::core::result::Result<LegalAcceptance, ::origincloud_core::Error> {
10821        let p0 = ::origincloud_core::path_value(
10822            "name",
10823            &request.name,
10824            "organizations/*/billingAccounts/*/legalAcceptances/*",
10825        )?;
10826        let query = ::origincloud_core::query(&request, &["name"])?;
10827        let call = ::origincloud_core::Request::new(
10828                ::origincloud_core::Method::GET,
10829                format!("/v1beta1/{p0}"),
10830            )
10831            .with_query(query)
10832            .idempotent();
10833        self.service.call(call).await
10834    }
10835    /// Accepts versions of legal documents for a billing account, all of them
10836    /// or none. Each version is named with the `sha256` of the text the caller
10837    /// showed, and must be the version in force or one published to take effect
10838    /// later. A version the account accepted before is returned as it was then.
10839    /// `acts_as_business` must be true: the services are offered to businesses
10840    /// only. Needs `admin.billing_account.update` on the organization.
10841    pub async fn accept_legal_documents(
10842        &self,
10843        request: AcceptLegalDocumentsRequest,
10844    ) -> ::core::result::Result<
10845        ListLegalAcceptancesResponse,
10846        ::origincloud_core::Error,
10847    > {
10848        let p0 = ::origincloud_core::path_value(
10849            "name",
10850            &request.name,
10851            "organizations/*/billingAccounts/*",
10852        )?;
10853        let body = ::origincloud_core::json_body(&request)?;
10854        let call = ::origincloud_core::Request::new(
10855                ::origincloud_core::Method::POST,
10856                format!("/v1beta1/{p0}:acceptLegalDocuments"),
10857            )
10858            .with_body(body)
10859            .idempotent();
10860        self.service.call(call).await
10861    }
10862    /// Returns the legal document versions a billing account has yet to
10863    /// accept. A version is `blocking` once it is in force: until the account
10864    /// accepts it, creating or growing billable resources charged to the
10865    /// account is refused. Running resources are never affected. Needs
10866    /// `admin.billing_account.get` on the organization.
10867    pub async fn query_legal_requirements(
10868        &self,
10869        request: QueryLegalRequirementsRequest,
10870    ) -> ::core::result::Result<
10871        QueryLegalRequirementsResponse,
10872        ::origincloud_core::Error,
10873    > {
10874        let p0 = ::origincloud_core::path_value(
10875            "name",
10876            &request.name,
10877            "organizations/*/billingAccounts/*",
10878        )?;
10879        let query = ::origincloud_core::query(&request, &["name"])?;
10880        let call = ::origincloud_core::Request::new(
10881                ::origincloud_core::Method::GET,
10882                format!("/v1beta1/{p0}:queryLegalRequirements"),
10883            )
10884            .with_query(query)
10885            .idempotent();
10886        self.service.call(call).await
10887    }
10888}
10889/// Calls `LegalDocumentService`.
10890///
10891/// The legal documents Origin Cloud publishes: the Terms of Service, the Data
10892/// Processing Agreement, the Service Level Agreement and the Acceptable Use
10893/// Policy a customer accepts, and the documents published beside them. Every
10894/// version stays readable under its fixed name once it is published, and none
10895/// is ever changed: a correction is a new version.
10896///
10897/// Every method of this service is answered without an access token.
10898#[derive(Clone, Debug)]
10899pub struct LegalDocumentClient {
10900    service: ::origincloud_core::Service,
10901}
10902impl LegalDocumentClient {
10903    /// Returns a client of `LegalDocumentService` that sends its calls through `client`.
10904    pub fn new(client: &::origincloud_core::Client) -> Self {
10905        Self {
10906            service: client.service("billing", false),
10907        }
10908    }
10909    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
10910    pub fn service(&self) -> &::origincloud_core::Service {
10911        &self.service
10912    }
10913    /// Lists the published legal documents, in a fixed order: `terms`, `dpa`,
10914    /// `sla`, `aup`, `subprocessors`, `toms`, `privacy`, `switching`,
10915    /// `shared-responsibility`. A document with no published version yet is
10916    /// left out.
10917    pub async fn list_legal_documents(
10918        &self,
10919        request: ListLegalDocumentsRequest,
10920    ) -> ::core::result::Result<ListLegalDocumentsResponse, ::origincloud_core::Error> {
10921        let query = ::origincloud_core::query(&request, &[])?;
10922        let call = ::origincloud_core::Request::new(
10923                ::origincloud_core::Method::GET,
10924                ::std::string::String::from("/v1beta1/legalDocuments"),
10925            )
10926            .with_query(query)
10927            .idempotent()
10928            .unauthenticated();
10929        self.service.call(call).await
10930    }
10931    /// Returns everything [`list_legal_documents`](Self::list_legal_documents) 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.
10932    pub fn all_legal_documents(
10933        &self,
10934        request: ListLegalDocumentsRequest,
10935    ) -> ::origincloud_core::Pages<LegalDocument> {
10936        let client = self.clone();
10937        ::origincloud_core::Pages::new(
10938            request,
10939            move |request: ListLegalDocumentsRequest| {
10940                let client = client.clone();
10941                async move {
10942                    let page = client.list_legal_documents(request).await?;
10943                    Ok((page.legal_documents, page.next_page_token))
10944                }
10945            },
10946            |request: &mut ListLegalDocumentsRequest, token: ::std::string::String| {
10947                request.page_token = token;
10948            },
10949        )
10950    }
10951    /// Returns a legal document, with the version in force now and the latest
10952    /// one published. Fails with `NOT_FOUND` for a document with no published
10953    /// version.
10954    pub async fn get_legal_document(
10955        &self,
10956        request: GetLegalDocumentRequest,
10957    ) -> ::core::result::Result<LegalDocument, ::origincloud_core::Error> {
10958        let p0 = ::origincloud_core::path_value(
10959            "name",
10960            &request.name,
10961            "legalDocuments/*",
10962        )?;
10963        let query = ::origincloud_core::query(&request, &["name"])?;
10964        let call = ::origincloud_core::Request::new(
10965                ::origincloud_core::Method::GET,
10966                format!("/v1beta1/{p0}"),
10967            )
10968            .with_query(query)
10969            .idempotent()
10970            .unauthenticated();
10971        self.service.call(call).await
10972    }
10973    /// Lists a legal document's published versions, the latest first.
10974    pub async fn list_legal_document_versions(
10975        &self,
10976        request: ListLegalDocumentVersionsRequest,
10977    ) -> ::core::result::Result<
10978        ListLegalDocumentVersionsResponse,
10979        ::origincloud_core::Error,
10980    > {
10981        let p0 = ::origincloud_core::path_value(
10982            "parent",
10983            &request.parent,
10984            "legalDocuments/*",
10985        )?;
10986        let query = ::origincloud_core::query(&request, &["parent"])?;
10987        let call = ::origincloud_core::Request::new(
10988                ::origincloud_core::Method::GET,
10989                format!("/v1beta1/{p0}/versions"),
10990            )
10991            .with_query(query)
10992            .idempotent()
10993            .unauthenticated();
10994        self.service.call(call).await
10995    }
10996    /// Returns everything [`list_legal_document_versions`](Self::list_legal_document_versions) 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.
10997    pub fn all_legal_document_versions(
10998        &self,
10999        request: ListLegalDocumentVersionsRequest,
11000    ) -> ::origincloud_core::Pages<LegalDocumentVersion> {
11001        let client = self.clone();
11002        ::origincloud_core::Pages::new(
11003            request,
11004            move |request: ListLegalDocumentVersionsRequest| {
11005                let client = client.clone();
11006                async move {
11007                    let page = client.list_legal_document_versions(request).await?;
11008                    Ok((page.legal_document_versions, page.next_page_token))
11009                }
11010            },
11011            |
11012                request: &mut ListLegalDocumentVersionsRequest,
11013                token: ::std::string::String|
11014            request.page_token = token,
11015        )
11016    }
11017    /// Returns one published version of a legal document, its text included.
11018    pub async fn get_legal_document_version(
11019        &self,
11020        request: GetLegalDocumentVersionRequest,
11021    ) -> ::core::result::Result<LegalDocumentVersion, ::origincloud_core::Error> {
11022        let p0 = ::origincloud_core::path_value(
11023            "name",
11024            &request.name,
11025            "legalDocuments/*/versions/*",
11026        )?;
11027        let query = ::origincloud_core::query(&request, &["name"])?;
11028        let call = ::origincloud_core::Request::new(
11029                ::origincloud_core::Method::GET,
11030                format!("/v1beta1/{p0}"),
11031            )
11032            .with_query(query)
11033            .idempotent()
11034            .unauthenticated();
11035        self.service.call(call).await
11036    }
11037    /// Returns a published version as a PDF (`application/pdf`), the file
11038    /// itself rather than JSON. Every page's footer names the document, the
11039    /// version, the date it takes effect and its `sha256`.
11040    ///
11041    /// It answers with the file itself, not JSON: an [`HttpBody`](origincloud_core::HttpBody) with the file's bytes and media type.
11042    pub async fn download_legal_document_version(
11043        &self,
11044        request: DownloadLegalDocumentVersionRequest,
11045    ) -> ::core::result::Result<
11046        ::origincloud_core::HttpBody,
11047        ::origincloud_core::Error,
11048    > {
11049        let p0 = ::origincloud_core::path_value(
11050            "name",
11051            &request.name,
11052            "legalDocuments/*/versions/*",
11053        )?;
11054        let query = ::origincloud_core::query(&request, &["name"])?;
11055        let call = ::origincloud_core::Request::new(
11056                ::origincloud_core::Method::GET,
11057                format!("/v1beta1/{p0}:download"),
11058            )
11059            .with_query(query)
11060            .idempotent()
11061            .unauthenticated();
11062        self.service.call_http_body(call).await
11063    }
11064}
11065/// Calls `PriceListService`.
11066///
11067/// The public price list: the list price of every billable product, for
11068/// anyone to read, websites included. It needs no access token.
11069///
11070/// Unlike the rest of this API, its path has been `/v1/pricing` since before
11071/// the API was published, and its fields are written in snake case, as
11072/// websites read them.
11073#[derive(Clone, Debug)]
11074pub struct PriceListClient {
11075    service: ::origincloud_core::Service,
11076}
11077impl PriceListClient {
11078    /// Returns a client of `PriceListService` that sends its calls through `client`.
11079    pub fn new(client: &::origincloud_core::Client) -> Self {
11080        Self {
11081            service: client.service("billing", false),
11082        }
11083    }
11084    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
11085    pub fn service(&self) -> &::origincloud_core::Service {
11086        &self.service
11087    }
11088    /// Returns the prices in effect now. The answer carries an `ETag`; a
11089    /// request that sends it back in `If-None-Match` is answered
11090    /// `304 Not Modified`, without a body, while the list is unchanged.
11091    pub async fn get_price_list(
11092        &self,
11093        request: GetPriceListRequest,
11094    ) -> ::core::result::Result<PriceList, ::origincloud_core::Error> {
11095        let query = ::origincloud_core::query(&request, &[])?;
11096        let call = ::origincloud_core::Request::new(
11097                ::origincloud_core::Method::GET,
11098                ::std::string::String::from("/v1/pricing"),
11099            )
11100            .with_query(query)
11101            .idempotent();
11102        self.service.call(call).await
11103    }
11104}
11105/// Calls `SpendLimitService`.
11106///
11107/// Spend limits: an amount per calendar month for a billing account, and the
11108/// shares of it at which an alert is emailed. A spend limit only alerts: it
11109/// never stops or refuses anything.
11110///
11111/// Access to spend limits is granted apart from access to billing accounts:
11112/// an organization's owner holds it by default.
11113#[derive(Clone, Debug)]
11114pub struct SpendLimitClient {
11115    service: ::origincloud_core::Service,
11116}
11117impl SpendLimitClient {
11118    /// Returns a client of `SpendLimitService` that sends its calls through `client`.
11119    pub fn new(client: &::origincloud_core::Client) -> Self {
11120        Self {
11121            service: client.service("billing", false),
11122        }
11123    }
11124    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
11125    pub fn service(&self) -> &::origincloud_core::Service {
11126        &self.service
11127    }
11128    /// Returns a billing account's spend limit; one that has none has no
11129    /// `limit`. Needs `admin.spend_limit.get` on the organization.
11130    pub async fn get_spend_limit(
11131        &self,
11132        request: GetSpendLimitRequest,
11133    ) -> ::core::result::Result<SpendLimit, ::origincloud_core::Error> {
11134        let p0 = ::origincloud_core::path_value(
11135            "name",
11136            &request.name,
11137            "organizations/*/billingAccounts/*/spendLimit",
11138        )?;
11139        let query = ::origincloud_core::query(&request, &["name"])?;
11140        let call = ::origincloud_core::Request::new(
11141                ::origincloud_core::Method::GET,
11142                format!("/v1beta1/{p0}"),
11143            )
11144            .with_query(query)
11145            .idempotent();
11146        self.service.call(call).await
11147    }
11148    /// Sets or removes a billing account's spend limit. The fields named in
11149    /// `update_mask` are replaced and the others kept. A spend limit left
11150    /// without a `limit` is removed, with its thresholds and recipients. Needs
11151    /// `admin.spend_limit.update` on the organization.
11152    pub async fn update_spend_limit(
11153        &self,
11154        request: UpdateSpendLimitRequest,
11155    ) -> ::core::result::Result<SpendLimit, ::origincloud_core::Error> {
11156        let p0 = ::origincloud_core::path_value(
11157            "spendLimit.name",
11158            request.spend_limit.as_ref().map_or("", |m| m.name.as_str()),
11159            "organizations/*/billingAccounts/*/spendLimit",
11160        )?;
11161        let body = ::origincloud_core::json_body(
11162            request.spend_limit.as_ref().unwrap_or(&::core::default::Default::default()),
11163        )?;
11164        let query = ::origincloud_core::query(
11165            &request,
11166            &["spendLimit.name", "spendLimit"],
11167        )?;
11168        let call = ::origincloud_core::Request::new(
11169                ::origincloud_core::Method::PATCH,
11170                format!("/v1beta1/{p0}"),
11171            )
11172            .with_body(body)
11173            .with_query(query);
11174        self.service.call(call).await
11175    }
11176}