1#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10pub struct BillingAccount {
11 #[prost(string, tag = "1")]
13 pub name: ::prost::alloc::string::String,
14 #[prost(string, tag = "2")]
17 pub urn: ::prost::alloc::string::String,
18 #[prost(string, tag = "3")]
22 pub display_name: ::prost::alloc::string::String,
23 #[prost(bool, tag = "4")]
27 pub default_account: bool,
28 #[prost(message, optional, tag = "5")]
32 pub billing_address: ::core::option::Option<BillingAddress>,
33 #[prost(string, tag = "6")]
36 pub invoice_email: ::prost::alloc::string::String,
37 #[prost(string, tag = "7")]
40 pub vat_id: ::prost::alloc::string::String,
41 #[prost(string, tag = "8")]
44 pub contact_person: ::prost::alloc::string::String,
45 #[prost(message, optional, tag = "9")]
47 pub payment_method: ::core::option::Option<PaymentMethod>,
48 #[prost(message, optional, tag = "10")]
50 pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
51 #[prost(string, tag = "11")]
54 pub creator: ::prost::alloc::string::String,
55}
56#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
58pub struct BillingAddress {
59 #[prost(string, tag = "1")]
61 pub street: ::prost::alloc::string::String,
62 #[prost(string, tag = "2")]
64 pub city: ::prost::alloc::string::String,
65 #[prost(string, tag = "3")]
67 pub postal_code: ::prost::alloc::string::String,
68 #[prost(string, tag = "4")]
71 pub region_code: ::prost::alloc::string::String,
72}
73#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
77pub struct PaymentMethod {
78 #[prost(enumeration = "payment_method::State", tag = "1")]
80 pub state: i32,
81 #[prost(string, tag = "2")]
84 pub card_brand: ::prost::alloc::string::String,
85 #[prost(string, tag = "3")]
88 pub card_last4: ::prost::alloc::string::String,
89}
90pub mod payment_method {
92 #[derive(
94 Clone,
95 Copy,
96 Debug,
97 PartialEq,
98 Eq,
99 Hash,
100 PartialOrd,
101 Ord,
102 ::prost::Enumeration
103 )]
104 #[repr(i32)]
105 pub enum State {
106 Unspecified = 0,
108 Missing = 1,
112 Verified = 2,
114 NotRequired = 3,
117 }
118 impl State {
119 pub fn as_str_name(&self) -> &'static str {
124 match self {
125 Self::Unspecified => "STATE_UNSPECIFIED",
126 Self::Missing => "MISSING",
127 Self::Verified => "VERIFIED",
128 Self::NotRequired => "NOT_REQUIRED",
129 }
130 }
131 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
133 match value {
134 "STATE_UNSPECIFIED" => Some(Self::Unspecified),
135 "MISSING" => Some(Self::Missing),
136 "VERIFIED" => Some(Self::Verified),
137 "NOT_REQUIRED" => Some(Self::NotRequired),
138 _ => None,
139 }
140 }
141 }
142}
143#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
145pub struct ProjectBillingInfo {
146 #[prost(string, tag = "1")]
148 pub name: ::prost::alloc::string::String,
149 #[prost(string, tag = "3")]
152 pub billing_account: ::prost::alloc::string::String,
153}
154#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
156pub struct BillingCountry {
157 #[prost(string, tag = "1")]
159 pub name: ::prost::alloc::string::String,
160 #[prost(string, tag = "2")]
163 pub region_code: ::prost::alloc::string::String,
164 #[prost(string, tag = "3")]
166 pub display_name: ::prost::alloc::string::String,
167 #[prost(bool, tag = "4")]
171 pub vat_id_required: bool,
172}
173#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
175pub struct GetBillingAccountRequest {
176 #[prost(string, tag = "1")]
178 pub name: ::prost::alloc::string::String,
179}
180#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
182pub struct ListBillingAccountsRequest {
183 #[prost(string, tag = "1")]
186 pub parent: ::prost::alloc::string::String,
187 #[prost(int32, tag = "2")]
190 pub page_size: i32,
191 #[prost(string, tag = "3")]
193 pub page_token: ::prost::alloc::string::String,
194}
195#[derive(Clone, PartialEq, ::prost::Message)]
197pub struct ListBillingAccountsResponse {
198 #[prost(message, repeated, tag = "1")]
200 pub billing_accounts: ::prost::alloc::vec::Vec<BillingAccount>,
201 #[prost(string, tag = "2")]
203 pub next_page_token: ::prost::alloc::string::String,
204}
205#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
207pub struct CreateBillingAccountRequest {
208 #[prost(string, tag = "1")]
211 pub parent: ::prost::alloc::string::String,
212 #[prost(message, optional, tag = "2")]
214 pub billing_account: ::core::option::Option<BillingAccount>,
215 #[prost(string, tag = "3")]
218 pub request_id: ::prost::alloc::string::String,
219}
220#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
222pub struct UpdateBillingAccountRequest {
223 #[prost(message, optional, tag = "1")]
225 pub billing_account: ::core::option::Option<BillingAccount>,
226 #[prost(message, optional, tag = "2")]
230 pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
231}
232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
234pub struct DeleteBillingAccountRequest {
235 #[prost(string, tag = "1")]
237 pub name: ::prost::alloc::string::String,
238}
239#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
241pub struct StartPaymentMethodSetupRequest {
242 #[prost(string, tag = "1")]
244 pub name: ::prost::alloc::string::String,
245}
246#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
248pub struct StartPaymentMethodSetupResponse {
249 #[prost(string, tag = "1")]
252 pub redirect_uri: ::prost::alloc::string::String,
253}
254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
256pub struct ConfirmPaymentMethodSetupRequest {
257 #[prost(string, tag = "1")]
259 pub name: ::prost::alloc::string::String,
260}
261#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
263pub struct GetProjectBillingInfoRequest {
264 #[prost(string, tag = "1")]
266 pub name: ::prost::alloc::string::String,
267}
268#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
270pub struct UpdateProjectBillingInfoRequest {
271 #[prost(message, optional, tag = "1")]
273 pub project_billing_info: ::core::option::Option<ProjectBillingInfo>,
274 #[prost(message, optional, tag = "2")]
276 pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
277}
278#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
280pub struct ListProjectBillingInfoRequest {
281 #[prost(string, tag = "1")]
283 pub name: ::prost::alloc::string::String,
284 #[prost(int32, tag = "2")]
287 pub page_size: i32,
288 #[prost(string, tag = "3")]
290 pub page_token: ::prost::alloc::string::String,
291}
292#[derive(Clone, PartialEq, ::prost::Message)]
294pub struct ListProjectBillingInfoResponse {
295 #[prost(message, repeated, tag = "1")]
297 pub project_billing_infos: ::prost::alloc::vec::Vec<ProjectBillingInfo>,
298 #[prost(string, tag = "2")]
300 pub next_page_token: ::prost::alloc::string::String,
301}
302#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
304pub struct GetBillingCountryRequest {
305 #[prost(string, tag = "1")]
308 pub name: ::prost::alloc::string::String,
309}
310#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
312pub struct ListBillingCountriesRequest {
313 #[prost(int32, tag = "1")]
316 pub page_size: i32,
317 #[prost(string, tag = "2")]
319 pub page_token: ::prost::alloc::string::String,
320}
321#[derive(Clone, PartialEq, ::prost::Message)]
323pub struct ListBillingCountriesResponse {
324 #[prost(message, repeated, tag = "1")]
326 pub billing_countries: ::prost::alloc::vec::Vec<BillingCountry>,
327 #[prost(string, tag = "2")]
329 pub next_page_token: ::prost::alloc::string::String,
330}
331#[derive(Clone, PartialEq, ::prost::Message)]
334pub struct CostReport {
335 #[prost(string, tag = "1")]
337 pub total: ::prost::alloc::string::String,
338 #[prost(message, repeated, tag = "2")]
341 pub services: ::prost::alloc::vec::Vec<ServiceCost>,
342}
343#[derive(Clone, PartialEq, ::prost::Message)]
345pub struct ServiceCost {
346 #[prost(string, tag = "1")]
349 pub service: ::prost::alloc::string::String,
350 #[prost(string, tag = "2")]
352 pub total: ::prost::alloc::string::String,
353 #[prost(message, repeated, tag = "3")]
356 pub products: ::prost::alloc::vec::Vec<ProductCost>,
357}
358#[derive(Clone, PartialEq, ::prost::Message)]
360pub struct ProductCost {
361 #[prost(string, tag = "1")]
363 pub product_key: ::prost::alloc::string::String,
364 #[prost(string, tag = "2")]
366 pub total: ::prost::alloc::string::String,
367 #[prost(message, repeated, tag = "3")]
369 pub buckets: ::prost::alloc::vec::Vec<CostBucket>,
370}
371#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
373pub struct CostBucket {
374 #[prost(message, optional, tag = "1")]
376 pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
377 #[prost(string, tag = "2")]
379 pub amount: ::prost::alloc::string::String,
380}
381#[derive(Clone, PartialEq, ::prost::Message)]
384pub struct OrganizationCostReport {
385 #[prost(string, tag = "1")]
387 pub total: ::prost::alloc::string::String,
388 #[prost(message, repeated, tag = "2")]
390 pub services: ::prost::alloc::vec::Vec<ServiceCost>,
391 #[prost(message, repeated, tag = "3")]
394 pub projects: ::prost::alloc::vec::Vec<ProjectCost>,
395}
396#[derive(Clone, PartialEq, ::prost::Message)]
398pub struct ProjectCost {
399 #[prost(string, tag = "1")]
401 pub project: ::prost::alloc::string::String,
402 #[prost(string, tag = "2")]
404 pub total: ::prost::alloc::string::String,
405 #[prost(message, repeated, tag = "3")]
407 pub buckets: ::prost::alloc::vec::Vec<CostBucket>,
408}
409#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
412pub struct UsageRecord {
413 #[prost(string, tag = "1")]
415 pub resource_kind: ::prost::alloc::string::String,
416 #[prost(string, tag = "2")]
418 pub resource_id: ::prost::alloc::string::String,
419 #[prost(string, tag = "3")]
421 pub metric: ::prost::alloc::string::String,
422 #[prost(string, tag = "4")]
425 pub product_key: ::prost::alloc::string::String,
426 #[prost(string, tag = "5")]
428 pub quantity: ::prost::alloc::string::String,
429 #[prost(message, optional, tag = "6")]
431 pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
432 #[prost(message, optional, tag = "7")]
434 pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
435 #[prost(string, tag = "8")]
438 pub billing_account: ::prost::alloc::string::String,
439}
440#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
442pub struct QueryProjectCostRequest {
443 #[prost(string, tag = "1")]
445 pub project: ::prost::alloc::string::String,
446 #[prost(message, optional, tag = "2")]
448 pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
449 #[prost(message, optional, tag = "3")]
451 pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
452 #[prost(enumeration = "Granularity", tag = "4")]
454 pub granularity: i32,
455}
456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
458pub struct QueryOrganizationCostRequest {
459 #[prost(string, tag = "1")]
461 pub organization: ::prost::alloc::string::String,
462 #[prost(message, optional, tag = "2")]
464 pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
465 #[prost(message, optional, tag = "3")]
467 pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
468 #[prost(enumeration = "Granularity", tag = "4")]
470 pub granularity: i32,
471}
472#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
474pub struct QueryBillingAccountCostRequest {
475 #[prost(string, tag = "1")]
477 pub billing_account: ::prost::alloc::string::String,
478 #[prost(message, optional, tag = "2")]
480 pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
481 #[prost(message, optional, tag = "3")]
483 pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
484 #[prost(enumeration = "Granularity", tag = "4")]
486 pub granularity: i32,
487}
488#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
490pub struct QueryProjectUsageRequest {
491 #[prost(string, tag = "1")]
493 pub project: ::prost::alloc::string::String,
494 #[prost(message, optional, tag = "2")]
496 pub start_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
497 #[prost(message, optional, tag = "3")]
500 pub end_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
501 #[prost(int32, tag = "4")]
504 pub page_size: i32,
505 #[prost(string, tag = "5")]
507 pub page_token: ::prost::alloc::string::String,
508}
509#[derive(Clone, PartialEq, ::prost::Message)]
511pub struct QueryProjectUsageResponse {
512 #[prost(message, repeated, tag = "1")]
514 pub usage_records: ::prost::alloc::vec::Vec<UsageRecord>,
515 #[prost(string, tag = "2")]
517 pub next_page_token: ::prost::alloc::string::String,
518}
519#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
521#[repr(i32)]
522pub enum Granularity {
523 Unspecified = 0,
525 Hourly = 1,
527 Daily = 2,
529}
530impl Granularity {
531 pub fn as_str_name(&self) -> &'static str {
536 match self {
537 Self::Unspecified => "GRANULARITY_UNSPECIFIED",
538 Self::Hourly => "HOURLY",
539 Self::Daily => "DAILY",
540 }
541 }
542 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
544 match value {
545 "GRANULARITY_UNSPECIFIED" => Some(Self::Unspecified),
546 "HOURLY" => Some(Self::Hourly),
547 "DAILY" => Some(Self::Daily),
548 _ => None,
549 }
550 }
551}
552#[derive(Clone, PartialEq, ::prost::Message)]
555pub struct PriceList {
556 #[prost(string, tag = "1")]
558 pub currency: ::prost::alloc::string::String,
559 #[prost(bool, tag = "2")]
561 pub amounts_exclude_vat: bool,
562 #[prost(message, optional, tag = "3")]
565 pub last_changed: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
566 #[prost(message, repeated, tag = "4")]
573 pub families: ::prost::alloc::vec::Vec<PriceFamily>,
574}
575#[derive(Clone, PartialEq, ::prost::Message)]
577pub struct PriceFamily {
578 #[prost(string, tag = "1")]
580 pub family: ::prost::alloc::string::String,
581 #[prost(message, repeated, tag = "2")]
584 pub prices: ::prost::alloc::vec::Vec<Price>,
585}
586#[derive(Clone, PartialEq, ::prost::Message)]
588pub struct Price {
589 #[prost(string, tag = "1")]
592 pub product_key: ::prost::alloc::string::String,
593 #[prost(btree_map = "string, string", tag = "2")]
596 pub dimensions: ::prost::alloc::collections::BTreeMap<
597 ::prost::alloc::string::String,
598 ::prost::alloc::string::String,
599 >,
600 #[prost(string, tag = "3")]
603 pub unit_type: ::prost::alloc::string::String,
604 #[prost(uint32, tag = "4")]
607 pub unit_count: u32,
608 #[prost(string, tag = "5")]
610 pub amount: ::prost::alloc::string::String,
611 #[prost(message, optional, tag = "6")]
613 pub valid_from: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
614 #[prost(message, optional, tag = "7")]
616 pub valid_until: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
617}
618#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
620pub struct GetPriceListRequest {}
621#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
625pub struct SpendLimit {
626 #[prost(string, tag = "1")]
629 pub name: ::prost::alloc::string::String,
630 #[prost(string, optional, tag = "2")]
633 pub limit: ::core::option::Option<::prost::alloc::string::String>,
634 #[prost(int32, repeated, packed = "false", tag = "3")]
638 pub alert_thresholds_percent: ::prost::alloc::vec::Vec<i32>,
639 #[prost(string, repeated, tag = "4")]
642 pub notification_emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
643 #[prost(message, optional, tag = "5")]
645 pub update_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
646}
647#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
649pub struct GetSpendLimitRequest {
650 #[prost(string, tag = "1")]
652 pub name: ::prost::alloc::string::String,
653}
654#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
656pub struct UpdateSpendLimitRequest {
657 #[prost(message, optional, tag = "1")]
659 pub spend_limit: ::core::option::Option<SpendLimit>,
660 #[prost(message, optional, tag = "2")]
663 pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
664}
665impl serde::Serialize for BillingAccount {
666 #[allow(deprecated)]
667 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
668 where
669 S: serde::Serializer,
670 {
671 use serde::ser::SerializeStruct;
672 let mut len = 0;
673 if !self.name.is_empty() {
674 len += 1;
675 }
676 if !self.urn.is_empty() {
677 len += 1;
678 }
679 if !self.display_name.is_empty() {
680 len += 1;
681 }
682 if self.default_account {
683 len += 1;
684 }
685 if self.billing_address.is_some() {
686 len += 1;
687 }
688 if !self.invoice_email.is_empty() {
689 len += 1;
690 }
691 if !self.vat_id.is_empty() {
692 len += 1;
693 }
694 if !self.contact_person.is_empty() {
695 len += 1;
696 }
697 if self.payment_method.is_some() {
698 len += 1;
699 }
700 if self.create_time.is_some() {
701 len += 1;
702 }
703 if !self.creator.is_empty() {
704 len += 1;
705 }
706 let mut struct_ser = serializer
707 .serialize_struct("origincloud.billing.v1beta1.BillingAccount", len)?;
708 if !self.name.is_empty() {
709 struct_ser.serialize_field("name", &self.name)?;
710 }
711 if !self.urn.is_empty() {
712 struct_ser.serialize_field("urn", &self.urn)?;
713 }
714 if !self.display_name.is_empty() {
715 struct_ser.serialize_field("displayName", &self.display_name)?;
716 }
717 if self.default_account {
718 struct_ser.serialize_field("defaultAccount", &self.default_account)?;
719 }
720 if let Some(v) = self.billing_address.as_ref() {
721 struct_ser.serialize_field("billingAddress", v)?;
722 }
723 if !self.invoice_email.is_empty() {
724 struct_ser.serialize_field("invoiceEmail", &self.invoice_email)?;
725 }
726 if !self.vat_id.is_empty() {
727 struct_ser.serialize_field("vatId", &self.vat_id)?;
728 }
729 if !self.contact_person.is_empty() {
730 struct_ser.serialize_field("contactPerson", &self.contact_person)?;
731 }
732 if let Some(v) = self.payment_method.as_ref() {
733 struct_ser.serialize_field("paymentMethod", v)?;
734 }
735 if let Some(v) = self.create_time.as_ref() {
736 struct_ser.serialize_field("createTime", v)?;
737 }
738 if !self.creator.is_empty() {
739 struct_ser.serialize_field("creator", &self.creator)?;
740 }
741 struct_ser.end()
742 }
743}
744impl<'de> serde::Deserialize<'de> for BillingAccount {
745 #[allow(deprecated)]
746 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
747 where
748 D: serde::Deserializer<'de>,
749 {
750 const FIELDS: &[&str] = &[
751 "name",
752 "urn",
753 "display_name",
754 "displayName",
755 "default_account",
756 "defaultAccount",
757 "billing_address",
758 "billingAddress",
759 "invoice_email",
760 "invoiceEmail",
761 "vat_id",
762 "vatId",
763 "contact_person",
764 "contactPerson",
765 "payment_method",
766 "paymentMethod",
767 "create_time",
768 "createTime",
769 "creator",
770 ];
771 #[allow(clippy::enum_variant_names)]
772 enum GeneratedField {
773 Name,
774 Urn,
775 DisplayName,
776 DefaultAccount,
777 BillingAddress,
778 InvoiceEmail,
779 VatId,
780 ContactPerson,
781 PaymentMethod,
782 CreateTime,
783 Creator,
784 __SkipField__,
785 }
786 impl<'de> serde::Deserialize<'de> for GeneratedField {
787 fn deserialize<D>(
788 deserializer: D,
789 ) -> std::result::Result<GeneratedField, D::Error>
790 where
791 D: serde::Deserializer<'de>,
792 {
793 struct GeneratedVisitor;
794 impl serde::de::Visitor<'_> for GeneratedVisitor {
795 type Value = GeneratedField;
796 fn expecting(
797 &self,
798 formatter: &mut std::fmt::Formatter<'_>,
799 ) -> std::fmt::Result {
800 write!(formatter, "expected one of: {:?}", & FIELDS)
801 }
802 #[allow(unused_variables)]
803 fn visit_str<E>(
804 self,
805 value: &str,
806 ) -> std::result::Result<GeneratedField, E>
807 where
808 E: serde::de::Error,
809 {
810 match value {
811 "name" => Ok(GeneratedField::Name),
812 "urn" => Ok(GeneratedField::Urn),
813 "displayName" | "display_name" => {
814 Ok(GeneratedField::DisplayName)
815 }
816 "defaultAccount" | "default_account" => {
817 Ok(GeneratedField::DefaultAccount)
818 }
819 "billingAddress" | "billing_address" => {
820 Ok(GeneratedField::BillingAddress)
821 }
822 "invoiceEmail" | "invoice_email" => {
823 Ok(GeneratedField::InvoiceEmail)
824 }
825 "vatId" | "vat_id" => Ok(GeneratedField::VatId),
826 "contactPerson" | "contact_person" => {
827 Ok(GeneratedField::ContactPerson)
828 }
829 "paymentMethod" | "payment_method" => {
830 Ok(GeneratedField::PaymentMethod)
831 }
832 "createTime" | "create_time" => {
833 Ok(GeneratedField::CreateTime)
834 }
835 "creator" => Ok(GeneratedField::Creator),
836 _ => Ok(GeneratedField::__SkipField__),
837 }
838 }
839 }
840 deserializer.deserialize_identifier(GeneratedVisitor)
841 }
842 }
843 struct GeneratedVisitor;
844 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
845 type Value = BillingAccount;
846 fn expecting(
847 &self,
848 formatter: &mut std::fmt::Formatter<'_>,
849 ) -> std::fmt::Result {
850 formatter.write_str("struct origincloud.billing.v1beta1.BillingAccount")
851 }
852 fn visit_map<V>(
853 self,
854 mut map_: V,
855 ) -> std::result::Result<BillingAccount, V::Error>
856 where
857 V: serde::de::MapAccess<'de>,
858 {
859 let mut name__ = None;
860 let mut urn__ = None;
861 let mut display_name__ = None;
862 let mut default_account__ = None;
863 let mut billing_address__ = None;
864 let mut invoice_email__ = None;
865 let mut vat_id__ = None;
866 let mut contact_person__ = None;
867 let mut payment_method__ = None;
868 let mut create_time__ = None;
869 let mut creator__ = None;
870 while let Some(k) = map_.next_key()? {
871 match k {
872 GeneratedField::Name => {
873 if name__.is_some() {
874 return Err(serde::de::Error::duplicate_field("name"));
875 }
876 name__ = Some(map_.next_value()?);
877 }
878 GeneratedField::Urn => {
879 if urn__.is_some() {
880 return Err(serde::de::Error::duplicate_field("urn"));
881 }
882 urn__ = Some(map_.next_value()?);
883 }
884 GeneratedField::DisplayName => {
885 if display_name__.is_some() {
886 return Err(
887 serde::de::Error::duplicate_field("displayName"),
888 );
889 }
890 display_name__ = Some(map_.next_value()?);
891 }
892 GeneratedField::DefaultAccount => {
893 if default_account__.is_some() {
894 return Err(
895 serde::de::Error::duplicate_field("defaultAccount"),
896 );
897 }
898 default_account__ = Some(map_.next_value()?);
899 }
900 GeneratedField::BillingAddress => {
901 if billing_address__.is_some() {
902 return Err(
903 serde::de::Error::duplicate_field("billingAddress"),
904 );
905 }
906 billing_address__ = map_.next_value()?;
907 }
908 GeneratedField::InvoiceEmail => {
909 if invoice_email__.is_some() {
910 return Err(
911 serde::de::Error::duplicate_field("invoiceEmail"),
912 );
913 }
914 invoice_email__ = Some(map_.next_value()?);
915 }
916 GeneratedField::VatId => {
917 if vat_id__.is_some() {
918 return Err(serde::de::Error::duplicate_field("vatId"));
919 }
920 vat_id__ = Some(map_.next_value()?);
921 }
922 GeneratedField::ContactPerson => {
923 if contact_person__.is_some() {
924 return Err(
925 serde::de::Error::duplicate_field("contactPerson"),
926 );
927 }
928 contact_person__ = Some(map_.next_value()?);
929 }
930 GeneratedField::PaymentMethod => {
931 if payment_method__.is_some() {
932 return Err(
933 serde::de::Error::duplicate_field("paymentMethod"),
934 );
935 }
936 payment_method__ = map_.next_value()?;
937 }
938 GeneratedField::CreateTime => {
939 if create_time__.is_some() {
940 return Err(serde::de::Error::duplicate_field("createTime"));
941 }
942 create_time__ = map_.next_value()?;
943 }
944 GeneratedField::Creator => {
945 if creator__.is_some() {
946 return Err(serde::de::Error::duplicate_field("creator"));
947 }
948 creator__ = Some(map_.next_value()?);
949 }
950 GeneratedField::__SkipField__ => {
951 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
952 }
953 }
954 }
955 Ok(BillingAccount {
956 name: name__.unwrap_or_default(),
957 urn: urn__.unwrap_or_default(),
958 display_name: display_name__.unwrap_or_default(),
959 default_account: default_account__.unwrap_or_default(),
960 billing_address: billing_address__,
961 invoice_email: invoice_email__.unwrap_or_default(),
962 vat_id: vat_id__.unwrap_or_default(),
963 contact_person: contact_person__.unwrap_or_default(),
964 payment_method: payment_method__,
965 create_time: create_time__,
966 creator: creator__.unwrap_or_default(),
967 })
968 }
969 }
970 deserializer
971 .deserialize_struct(
972 "origincloud.billing.v1beta1.BillingAccount",
973 FIELDS,
974 GeneratedVisitor,
975 )
976 }
977}
978impl serde::Serialize for BillingAddress {
979 #[allow(deprecated)]
980 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
981 where
982 S: serde::Serializer,
983 {
984 use serde::ser::SerializeStruct;
985 let mut len = 0;
986 if !self.street.is_empty() {
987 len += 1;
988 }
989 if !self.city.is_empty() {
990 len += 1;
991 }
992 if !self.postal_code.is_empty() {
993 len += 1;
994 }
995 if !self.region_code.is_empty() {
996 len += 1;
997 }
998 let mut struct_ser = serializer
999 .serialize_struct("origincloud.billing.v1beta1.BillingAddress", len)?;
1000 if !self.street.is_empty() {
1001 struct_ser.serialize_field("street", &self.street)?;
1002 }
1003 if !self.city.is_empty() {
1004 struct_ser.serialize_field("city", &self.city)?;
1005 }
1006 if !self.postal_code.is_empty() {
1007 struct_ser.serialize_field("postalCode", &self.postal_code)?;
1008 }
1009 if !self.region_code.is_empty() {
1010 struct_ser.serialize_field("regionCode", &self.region_code)?;
1011 }
1012 struct_ser.end()
1013 }
1014}
1015impl<'de> serde::Deserialize<'de> for BillingAddress {
1016 #[allow(deprecated)]
1017 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1018 where
1019 D: serde::Deserializer<'de>,
1020 {
1021 const FIELDS: &[&str] = &[
1022 "street",
1023 "city",
1024 "postal_code",
1025 "postalCode",
1026 "region_code",
1027 "regionCode",
1028 ];
1029 #[allow(clippy::enum_variant_names)]
1030 enum GeneratedField {
1031 Street,
1032 City,
1033 PostalCode,
1034 RegionCode,
1035 __SkipField__,
1036 }
1037 impl<'de> serde::Deserialize<'de> for GeneratedField {
1038 fn deserialize<D>(
1039 deserializer: D,
1040 ) -> std::result::Result<GeneratedField, D::Error>
1041 where
1042 D: serde::Deserializer<'de>,
1043 {
1044 struct GeneratedVisitor;
1045 impl serde::de::Visitor<'_> for GeneratedVisitor {
1046 type Value = GeneratedField;
1047 fn expecting(
1048 &self,
1049 formatter: &mut std::fmt::Formatter<'_>,
1050 ) -> std::fmt::Result {
1051 write!(formatter, "expected one of: {:?}", & FIELDS)
1052 }
1053 #[allow(unused_variables)]
1054 fn visit_str<E>(
1055 self,
1056 value: &str,
1057 ) -> std::result::Result<GeneratedField, E>
1058 where
1059 E: serde::de::Error,
1060 {
1061 match value {
1062 "street" => Ok(GeneratedField::Street),
1063 "city" => Ok(GeneratedField::City),
1064 "postalCode" | "postal_code" => {
1065 Ok(GeneratedField::PostalCode)
1066 }
1067 "regionCode" | "region_code" => {
1068 Ok(GeneratedField::RegionCode)
1069 }
1070 _ => Ok(GeneratedField::__SkipField__),
1071 }
1072 }
1073 }
1074 deserializer.deserialize_identifier(GeneratedVisitor)
1075 }
1076 }
1077 struct GeneratedVisitor;
1078 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1079 type Value = BillingAddress;
1080 fn expecting(
1081 &self,
1082 formatter: &mut std::fmt::Formatter<'_>,
1083 ) -> std::fmt::Result {
1084 formatter.write_str("struct origincloud.billing.v1beta1.BillingAddress")
1085 }
1086 fn visit_map<V>(
1087 self,
1088 mut map_: V,
1089 ) -> std::result::Result<BillingAddress, V::Error>
1090 where
1091 V: serde::de::MapAccess<'de>,
1092 {
1093 let mut street__ = None;
1094 let mut city__ = None;
1095 let mut postal_code__ = None;
1096 let mut region_code__ = None;
1097 while let Some(k) = map_.next_key()? {
1098 match k {
1099 GeneratedField::Street => {
1100 if street__.is_some() {
1101 return Err(serde::de::Error::duplicate_field("street"));
1102 }
1103 street__ = Some(map_.next_value()?);
1104 }
1105 GeneratedField::City => {
1106 if city__.is_some() {
1107 return Err(serde::de::Error::duplicate_field("city"));
1108 }
1109 city__ = Some(map_.next_value()?);
1110 }
1111 GeneratedField::PostalCode => {
1112 if postal_code__.is_some() {
1113 return Err(serde::de::Error::duplicate_field("postalCode"));
1114 }
1115 postal_code__ = Some(map_.next_value()?);
1116 }
1117 GeneratedField::RegionCode => {
1118 if region_code__.is_some() {
1119 return Err(serde::de::Error::duplicate_field("regionCode"));
1120 }
1121 region_code__ = Some(map_.next_value()?);
1122 }
1123 GeneratedField::__SkipField__ => {
1124 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1125 }
1126 }
1127 }
1128 Ok(BillingAddress {
1129 street: street__.unwrap_or_default(),
1130 city: city__.unwrap_or_default(),
1131 postal_code: postal_code__.unwrap_or_default(),
1132 region_code: region_code__.unwrap_or_default(),
1133 })
1134 }
1135 }
1136 deserializer
1137 .deserialize_struct(
1138 "origincloud.billing.v1beta1.BillingAddress",
1139 FIELDS,
1140 GeneratedVisitor,
1141 )
1142 }
1143}
1144impl serde::Serialize for BillingCountry {
1145 #[allow(deprecated)]
1146 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1147 where
1148 S: serde::Serializer,
1149 {
1150 use serde::ser::SerializeStruct;
1151 let mut len = 0;
1152 if !self.name.is_empty() {
1153 len += 1;
1154 }
1155 if !self.region_code.is_empty() {
1156 len += 1;
1157 }
1158 if !self.display_name.is_empty() {
1159 len += 1;
1160 }
1161 if self.vat_id_required {
1162 len += 1;
1163 }
1164 let mut struct_ser = serializer
1165 .serialize_struct("origincloud.billing.v1beta1.BillingCountry", len)?;
1166 if !self.name.is_empty() {
1167 struct_ser.serialize_field("name", &self.name)?;
1168 }
1169 if !self.region_code.is_empty() {
1170 struct_ser.serialize_field("regionCode", &self.region_code)?;
1171 }
1172 if !self.display_name.is_empty() {
1173 struct_ser.serialize_field("displayName", &self.display_name)?;
1174 }
1175 if self.vat_id_required {
1176 struct_ser.serialize_field("vatIdRequired", &self.vat_id_required)?;
1177 }
1178 struct_ser.end()
1179 }
1180}
1181impl<'de> serde::Deserialize<'de> for BillingCountry {
1182 #[allow(deprecated)]
1183 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1184 where
1185 D: serde::Deserializer<'de>,
1186 {
1187 const FIELDS: &[&str] = &[
1188 "name",
1189 "region_code",
1190 "regionCode",
1191 "display_name",
1192 "displayName",
1193 "vat_id_required",
1194 "vatIdRequired",
1195 ];
1196 #[allow(clippy::enum_variant_names)]
1197 enum GeneratedField {
1198 Name,
1199 RegionCode,
1200 DisplayName,
1201 VatIdRequired,
1202 __SkipField__,
1203 }
1204 impl<'de> serde::Deserialize<'de> for GeneratedField {
1205 fn deserialize<D>(
1206 deserializer: D,
1207 ) -> std::result::Result<GeneratedField, D::Error>
1208 where
1209 D: serde::Deserializer<'de>,
1210 {
1211 struct GeneratedVisitor;
1212 impl serde::de::Visitor<'_> for GeneratedVisitor {
1213 type Value = GeneratedField;
1214 fn expecting(
1215 &self,
1216 formatter: &mut std::fmt::Formatter<'_>,
1217 ) -> std::fmt::Result {
1218 write!(formatter, "expected one of: {:?}", & FIELDS)
1219 }
1220 #[allow(unused_variables)]
1221 fn visit_str<E>(
1222 self,
1223 value: &str,
1224 ) -> std::result::Result<GeneratedField, E>
1225 where
1226 E: serde::de::Error,
1227 {
1228 match value {
1229 "name" => Ok(GeneratedField::Name),
1230 "regionCode" | "region_code" => {
1231 Ok(GeneratedField::RegionCode)
1232 }
1233 "displayName" | "display_name" => {
1234 Ok(GeneratedField::DisplayName)
1235 }
1236 "vatIdRequired" | "vat_id_required" => {
1237 Ok(GeneratedField::VatIdRequired)
1238 }
1239 _ => Ok(GeneratedField::__SkipField__),
1240 }
1241 }
1242 }
1243 deserializer.deserialize_identifier(GeneratedVisitor)
1244 }
1245 }
1246 struct GeneratedVisitor;
1247 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1248 type Value = BillingCountry;
1249 fn expecting(
1250 &self,
1251 formatter: &mut std::fmt::Formatter<'_>,
1252 ) -> std::fmt::Result {
1253 formatter.write_str("struct origincloud.billing.v1beta1.BillingCountry")
1254 }
1255 fn visit_map<V>(
1256 self,
1257 mut map_: V,
1258 ) -> std::result::Result<BillingCountry, V::Error>
1259 where
1260 V: serde::de::MapAccess<'de>,
1261 {
1262 let mut name__ = None;
1263 let mut region_code__ = None;
1264 let mut display_name__ = None;
1265 let mut vat_id_required__ = None;
1266 while let Some(k) = map_.next_key()? {
1267 match k {
1268 GeneratedField::Name => {
1269 if name__.is_some() {
1270 return Err(serde::de::Error::duplicate_field("name"));
1271 }
1272 name__ = Some(map_.next_value()?);
1273 }
1274 GeneratedField::RegionCode => {
1275 if region_code__.is_some() {
1276 return Err(serde::de::Error::duplicate_field("regionCode"));
1277 }
1278 region_code__ = Some(map_.next_value()?);
1279 }
1280 GeneratedField::DisplayName => {
1281 if display_name__.is_some() {
1282 return Err(
1283 serde::de::Error::duplicate_field("displayName"),
1284 );
1285 }
1286 display_name__ = Some(map_.next_value()?);
1287 }
1288 GeneratedField::VatIdRequired => {
1289 if vat_id_required__.is_some() {
1290 return Err(
1291 serde::de::Error::duplicate_field("vatIdRequired"),
1292 );
1293 }
1294 vat_id_required__ = Some(map_.next_value()?);
1295 }
1296 GeneratedField::__SkipField__ => {
1297 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1298 }
1299 }
1300 }
1301 Ok(BillingCountry {
1302 name: name__.unwrap_or_default(),
1303 region_code: region_code__.unwrap_or_default(),
1304 display_name: display_name__.unwrap_or_default(),
1305 vat_id_required: vat_id_required__.unwrap_or_default(),
1306 })
1307 }
1308 }
1309 deserializer
1310 .deserialize_struct(
1311 "origincloud.billing.v1beta1.BillingCountry",
1312 FIELDS,
1313 GeneratedVisitor,
1314 )
1315 }
1316}
1317impl serde::Serialize for ConfirmPaymentMethodSetupRequest {
1318 #[allow(deprecated)]
1319 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1320 where
1321 S: serde::Serializer,
1322 {
1323 use serde::ser::SerializeStruct;
1324 let mut len = 0;
1325 if !self.name.is_empty() {
1326 len += 1;
1327 }
1328 let mut struct_ser = serializer
1329 .serialize_struct(
1330 "origincloud.billing.v1beta1.ConfirmPaymentMethodSetupRequest",
1331 len,
1332 )?;
1333 if !self.name.is_empty() {
1334 struct_ser.serialize_field("name", &self.name)?;
1335 }
1336 struct_ser.end()
1337 }
1338}
1339impl<'de> serde::Deserialize<'de> for ConfirmPaymentMethodSetupRequest {
1340 #[allow(deprecated)]
1341 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1342 where
1343 D: serde::Deserializer<'de>,
1344 {
1345 const FIELDS: &[&str] = &["name"];
1346 #[allow(clippy::enum_variant_names)]
1347 enum GeneratedField {
1348 Name,
1349 __SkipField__,
1350 }
1351 impl<'de> serde::Deserialize<'de> for GeneratedField {
1352 fn deserialize<D>(
1353 deserializer: D,
1354 ) -> std::result::Result<GeneratedField, D::Error>
1355 where
1356 D: serde::Deserializer<'de>,
1357 {
1358 struct GeneratedVisitor;
1359 impl serde::de::Visitor<'_> for GeneratedVisitor {
1360 type Value = GeneratedField;
1361 fn expecting(
1362 &self,
1363 formatter: &mut std::fmt::Formatter<'_>,
1364 ) -> std::fmt::Result {
1365 write!(formatter, "expected one of: {:?}", & FIELDS)
1366 }
1367 #[allow(unused_variables)]
1368 fn visit_str<E>(
1369 self,
1370 value: &str,
1371 ) -> std::result::Result<GeneratedField, E>
1372 where
1373 E: serde::de::Error,
1374 {
1375 match value {
1376 "name" => Ok(GeneratedField::Name),
1377 _ => Ok(GeneratedField::__SkipField__),
1378 }
1379 }
1380 }
1381 deserializer.deserialize_identifier(GeneratedVisitor)
1382 }
1383 }
1384 struct GeneratedVisitor;
1385 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1386 type Value = ConfirmPaymentMethodSetupRequest;
1387 fn expecting(
1388 &self,
1389 formatter: &mut std::fmt::Formatter<'_>,
1390 ) -> std::fmt::Result {
1391 formatter
1392 .write_str(
1393 "struct origincloud.billing.v1beta1.ConfirmPaymentMethodSetupRequest",
1394 )
1395 }
1396 fn visit_map<V>(
1397 self,
1398 mut map_: V,
1399 ) -> std::result::Result<ConfirmPaymentMethodSetupRequest, V::Error>
1400 where
1401 V: serde::de::MapAccess<'de>,
1402 {
1403 let mut name__ = None;
1404 while let Some(k) = map_.next_key()? {
1405 match k {
1406 GeneratedField::Name => {
1407 if name__.is_some() {
1408 return Err(serde::de::Error::duplicate_field("name"));
1409 }
1410 name__ = Some(map_.next_value()?);
1411 }
1412 GeneratedField::__SkipField__ => {
1413 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1414 }
1415 }
1416 }
1417 Ok(ConfirmPaymentMethodSetupRequest {
1418 name: name__.unwrap_or_default(),
1419 })
1420 }
1421 }
1422 deserializer
1423 .deserialize_struct(
1424 "origincloud.billing.v1beta1.ConfirmPaymentMethodSetupRequest",
1425 FIELDS,
1426 GeneratedVisitor,
1427 )
1428 }
1429}
1430impl serde::Serialize for CostBucket {
1431 #[allow(deprecated)]
1432 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1433 where
1434 S: serde::Serializer,
1435 {
1436 use serde::ser::SerializeStruct;
1437 let mut len = 0;
1438 if self.start_time.is_some() {
1439 len += 1;
1440 }
1441 if !self.amount.is_empty() {
1442 len += 1;
1443 }
1444 let mut struct_ser = serializer
1445 .serialize_struct("origincloud.billing.v1beta1.CostBucket", len)?;
1446 if let Some(v) = self.start_time.as_ref() {
1447 struct_ser.serialize_field("startTime", v)?;
1448 }
1449 if !self.amount.is_empty() {
1450 struct_ser.serialize_field("amount", &self.amount)?;
1451 }
1452 struct_ser.end()
1453 }
1454}
1455impl<'de> serde::Deserialize<'de> for CostBucket {
1456 #[allow(deprecated)]
1457 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1458 where
1459 D: serde::Deserializer<'de>,
1460 {
1461 const FIELDS: &[&str] = &["start_time", "startTime", "amount"];
1462 #[allow(clippy::enum_variant_names)]
1463 enum GeneratedField {
1464 StartTime,
1465 Amount,
1466 __SkipField__,
1467 }
1468 impl<'de> serde::Deserialize<'de> for GeneratedField {
1469 fn deserialize<D>(
1470 deserializer: D,
1471 ) -> std::result::Result<GeneratedField, D::Error>
1472 where
1473 D: serde::Deserializer<'de>,
1474 {
1475 struct GeneratedVisitor;
1476 impl serde::de::Visitor<'_> for GeneratedVisitor {
1477 type Value = GeneratedField;
1478 fn expecting(
1479 &self,
1480 formatter: &mut std::fmt::Formatter<'_>,
1481 ) -> std::fmt::Result {
1482 write!(formatter, "expected one of: {:?}", & FIELDS)
1483 }
1484 #[allow(unused_variables)]
1485 fn visit_str<E>(
1486 self,
1487 value: &str,
1488 ) -> std::result::Result<GeneratedField, E>
1489 where
1490 E: serde::de::Error,
1491 {
1492 match value {
1493 "startTime" | "start_time" => Ok(GeneratedField::StartTime),
1494 "amount" => Ok(GeneratedField::Amount),
1495 _ => Ok(GeneratedField::__SkipField__),
1496 }
1497 }
1498 }
1499 deserializer.deserialize_identifier(GeneratedVisitor)
1500 }
1501 }
1502 struct GeneratedVisitor;
1503 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1504 type Value = CostBucket;
1505 fn expecting(
1506 &self,
1507 formatter: &mut std::fmt::Formatter<'_>,
1508 ) -> std::fmt::Result {
1509 formatter.write_str("struct origincloud.billing.v1beta1.CostBucket")
1510 }
1511 fn visit_map<V>(
1512 self,
1513 mut map_: V,
1514 ) -> std::result::Result<CostBucket, V::Error>
1515 where
1516 V: serde::de::MapAccess<'de>,
1517 {
1518 let mut start_time__ = None;
1519 let mut amount__ = None;
1520 while let Some(k) = map_.next_key()? {
1521 match k {
1522 GeneratedField::StartTime => {
1523 if start_time__.is_some() {
1524 return Err(serde::de::Error::duplicate_field("startTime"));
1525 }
1526 start_time__ = map_.next_value()?;
1527 }
1528 GeneratedField::Amount => {
1529 if amount__.is_some() {
1530 return Err(serde::de::Error::duplicate_field("amount"));
1531 }
1532 amount__ = Some(map_.next_value()?);
1533 }
1534 GeneratedField::__SkipField__ => {
1535 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1536 }
1537 }
1538 }
1539 Ok(CostBucket {
1540 start_time: start_time__,
1541 amount: amount__.unwrap_or_default(),
1542 })
1543 }
1544 }
1545 deserializer
1546 .deserialize_struct(
1547 "origincloud.billing.v1beta1.CostBucket",
1548 FIELDS,
1549 GeneratedVisitor,
1550 )
1551 }
1552}
1553impl serde::Serialize for CostReport {
1554 #[allow(deprecated)]
1555 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1556 where
1557 S: serde::Serializer,
1558 {
1559 use serde::ser::SerializeStruct;
1560 let mut len = 0;
1561 if !self.total.is_empty() {
1562 len += 1;
1563 }
1564 if !self.services.is_empty() {
1565 len += 1;
1566 }
1567 let mut struct_ser = serializer
1568 .serialize_struct("origincloud.billing.v1beta1.CostReport", len)?;
1569 if !self.total.is_empty() {
1570 struct_ser.serialize_field("total", &self.total)?;
1571 }
1572 if !self.services.is_empty() {
1573 struct_ser.serialize_field("services", &self.services)?;
1574 }
1575 struct_ser.end()
1576 }
1577}
1578impl<'de> serde::Deserialize<'de> for CostReport {
1579 #[allow(deprecated)]
1580 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1581 where
1582 D: serde::Deserializer<'de>,
1583 {
1584 const FIELDS: &[&str] = &["total", "services"];
1585 #[allow(clippy::enum_variant_names)]
1586 enum GeneratedField {
1587 Total,
1588 Services,
1589 __SkipField__,
1590 }
1591 impl<'de> serde::Deserialize<'de> for GeneratedField {
1592 fn deserialize<D>(
1593 deserializer: D,
1594 ) -> std::result::Result<GeneratedField, D::Error>
1595 where
1596 D: serde::Deserializer<'de>,
1597 {
1598 struct GeneratedVisitor;
1599 impl serde::de::Visitor<'_> for GeneratedVisitor {
1600 type Value = GeneratedField;
1601 fn expecting(
1602 &self,
1603 formatter: &mut std::fmt::Formatter<'_>,
1604 ) -> std::fmt::Result {
1605 write!(formatter, "expected one of: {:?}", & FIELDS)
1606 }
1607 #[allow(unused_variables)]
1608 fn visit_str<E>(
1609 self,
1610 value: &str,
1611 ) -> std::result::Result<GeneratedField, E>
1612 where
1613 E: serde::de::Error,
1614 {
1615 match value {
1616 "total" => Ok(GeneratedField::Total),
1617 "services" => Ok(GeneratedField::Services),
1618 _ => Ok(GeneratedField::__SkipField__),
1619 }
1620 }
1621 }
1622 deserializer.deserialize_identifier(GeneratedVisitor)
1623 }
1624 }
1625 struct GeneratedVisitor;
1626 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1627 type Value = CostReport;
1628 fn expecting(
1629 &self,
1630 formatter: &mut std::fmt::Formatter<'_>,
1631 ) -> std::fmt::Result {
1632 formatter.write_str("struct origincloud.billing.v1beta1.CostReport")
1633 }
1634 fn visit_map<V>(
1635 self,
1636 mut map_: V,
1637 ) -> std::result::Result<CostReport, V::Error>
1638 where
1639 V: serde::de::MapAccess<'de>,
1640 {
1641 let mut total__ = None;
1642 let mut services__ = None;
1643 while let Some(k) = map_.next_key()? {
1644 match k {
1645 GeneratedField::Total => {
1646 if total__.is_some() {
1647 return Err(serde::de::Error::duplicate_field("total"));
1648 }
1649 total__ = Some(map_.next_value()?);
1650 }
1651 GeneratedField::Services => {
1652 if services__.is_some() {
1653 return Err(serde::de::Error::duplicate_field("services"));
1654 }
1655 services__ = Some(map_.next_value()?);
1656 }
1657 GeneratedField::__SkipField__ => {
1658 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1659 }
1660 }
1661 }
1662 Ok(CostReport {
1663 total: total__.unwrap_or_default(),
1664 services: services__.unwrap_or_default(),
1665 })
1666 }
1667 }
1668 deserializer
1669 .deserialize_struct(
1670 "origincloud.billing.v1beta1.CostReport",
1671 FIELDS,
1672 GeneratedVisitor,
1673 )
1674 }
1675}
1676impl serde::Serialize for CreateBillingAccountRequest {
1677 #[allow(deprecated)]
1678 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1679 where
1680 S: serde::Serializer,
1681 {
1682 use serde::ser::SerializeStruct;
1683 let mut len = 0;
1684 if !self.parent.is_empty() {
1685 len += 1;
1686 }
1687 if self.billing_account.is_some() {
1688 len += 1;
1689 }
1690 if !self.request_id.is_empty() {
1691 len += 1;
1692 }
1693 let mut struct_ser = serializer
1694 .serialize_struct(
1695 "origincloud.billing.v1beta1.CreateBillingAccountRequest",
1696 len,
1697 )?;
1698 if !self.parent.is_empty() {
1699 struct_ser.serialize_field("parent", &self.parent)?;
1700 }
1701 if let Some(v) = self.billing_account.as_ref() {
1702 struct_ser.serialize_field("billingAccount", v)?;
1703 }
1704 if !self.request_id.is_empty() {
1705 struct_ser.serialize_field("requestId", &self.request_id)?;
1706 }
1707 struct_ser.end()
1708 }
1709}
1710impl<'de> serde::Deserialize<'de> for CreateBillingAccountRequest {
1711 #[allow(deprecated)]
1712 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1713 where
1714 D: serde::Deserializer<'de>,
1715 {
1716 const FIELDS: &[&str] = &[
1717 "parent",
1718 "billing_account",
1719 "billingAccount",
1720 "request_id",
1721 "requestId",
1722 ];
1723 #[allow(clippy::enum_variant_names)]
1724 enum GeneratedField {
1725 Parent,
1726 BillingAccount,
1727 RequestId,
1728 __SkipField__,
1729 }
1730 impl<'de> serde::Deserialize<'de> for GeneratedField {
1731 fn deserialize<D>(
1732 deserializer: D,
1733 ) -> std::result::Result<GeneratedField, D::Error>
1734 where
1735 D: serde::Deserializer<'de>,
1736 {
1737 struct GeneratedVisitor;
1738 impl serde::de::Visitor<'_> for GeneratedVisitor {
1739 type Value = GeneratedField;
1740 fn expecting(
1741 &self,
1742 formatter: &mut std::fmt::Formatter<'_>,
1743 ) -> std::fmt::Result {
1744 write!(formatter, "expected one of: {:?}", & FIELDS)
1745 }
1746 #[allow(unused_variables)]
1747 fn visit_str<E>(
1748 self,
1749 value: &str,
1750 ) -> std::result::Result<GeneratedField, E>
1751 where
1752 E: serde::de::Error,
1753 {
1754 match value {
1755 "parent" => Ok(GeneratedField::Parent),
1756 "billingAccount" | "billing_account" => {
1757 Ok(GeneratedField::BillingAccount)
1758 }
1759 "requestId" | "request_id" => Ok(GeneratedField::RequestId),
1760 _ => Ok(GeneratedField::__SkipField__),
1761 }
1762 }
1763 }
1764 deserializer.deserialize_identifier(GeneratedVisitor)
1765 }
1766 }
1767 struct GeneratedVisitor;
1768 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1769 type Value = CreateBillingAccountRequest;
1770 fn expecting(
1771 &self,
1772 formatter: &mut std::fmt::Formatter<'_>,
1773 ) -> std::fmt::Result {
1774 formatter
1775 .write_str(
1776 "struct origincloud.billing.v1beta1.CreateBillingAccountRequest",
1777 )
1778 }
1779 fn visit_map<V>(
1780 self,
1781 mut map_: V,
1782 ) -> std::result::Result<CreateBillingAccountRequest, V::Error>
1783 where
1784 V: serde::de::MapAccess<'de>,
1785 {
1786 let mut parent__ = None;
1787 let mut billing_account__ = None;
1788 let mut request_id__ = None;
1789 while let Some(k) = map_.next_key()? {
1790 match k {
1791 GeneratedField::Parent => {
1792 if parent__.is_some() {
1793 return Err(serde::de::Error::duplicate_field("parent"));
1794 }
1795 parent__ = Some(map_.next_value()?);
1796 }
1797 GeneratedField::BillingAccount => {
1798 if billing_account__.is_some() {
1799 return Err(
1800 serde::de::Error::duplicate_field("billingAccount"),
1801 );
1802 }
1803 billing_account__ = map_.next_value()?;
1804 }
1805 GeneratedField::RequestId => {
1806 if request_id__.is_some() {
1807 return Err(serde::de::Error::duplicate_field("requestId"));
1808 }
1809 request_id__ = Some(map_.next_value()?);
1810 }
1811 GeneratedField::__SkipField__ => {
1812 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1813 }
1814 }
1815 }
1816 Ok(CreateBillingAccountRequest {
1817 parent: parent__.unwrap_or_default(),
1818 billing_account: billing_account__,
1819 request_id: request_id__.unwrap_or_default(),
1820 })
1821 }
1822 }
1823 deserializer
1824 .deserialize_struct(
1825 "origincloud.billing.v1beta1.CreateBillingAccountRequest",
1826 FIELDS,
1827 GeneratedVisitor,
1828 )
1829 }
1830}
1831impl serde::Serialize for DeleteBillingAccountRequest {
1832 #[allow(deprecated)]
1833 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1834 where
1835 S: serde::Serializer,
1836 {
1837 use serde::ser::SerializeStruct;
1838 let mut len = 0;
1839 if !self.name.is_empty() {
1840 len += 1;
1841 }
1842 let mut struct_ser = serializer
1843 .serialize_struct(
1844 "origincloud.billing.v1beta1.DeleteBillingAccountRequest",
1845 len,
1846 )?;
1847 if !self.name.is_empty() {
1848 struct_ser.serialize_field("name", &self.name)?;
1849 }
1850 struct_ser.end()
1851 }
1852}
1853impl<'de> serde::Deserialize<'de> for DeleteBillingAccountRequest {
1854 #[allow(deprecated)]
1855 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1856 where
1857 D: serde::Deserializer<'de>,
1858 {
1859 const FIELDS: &[&str] = &["name"];
1860 #[allow(clippy::enum_variant_names)]
1861 enum GeneratedField {
1862 Name,
1863 __SkipField__,
1864 }
1865 impl<'de> serde::Deserialize<'de> for GeneratedField {
1866 fn deserialize<D>(
1867 deserializer: D,
1868 ) -> std::result::Result<GeneratedField, D::Error>
1869 where
1870 D: serde::Deserializer<'de>,
1871 {
1872 struct GeneratedVisitor;
1873 impl serde::de::Visitor<'_> for GeneratedVisitor {
1874 type Value = GeneratedField;
1875 fn expecting(
1876 &self,
1877 formatter: &mut std::fmt::Formatter<'_>,
1878 ) -> std::fmt::Result {
1879 write!(formatter, "expected one of: {:?}", & FIELDS)
1880 }
1881 #[allow(unused_variables)]
1882 fn visit_str<E>(
1883 self,
1884 value: &str,
1885 ) -> std::result::Result<GeneratedField, E>
1886 where
1887 E: serde::de::Error,
1888 {
1889 match value {
1890 "name" => Ok(GeneratedField::Name),
1891 _ => Ok(GeneratedField::__SkipField__),
1892 }
1893 }
1894 }
1895 deserializer.deserialize_identifier(GeneratedVisitor)
1896 }
1897 }
1898 struct GeneratedVisitor;
1899 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1900 type Value = DeleteBillingAccountRequest;
1901 fn expecting(
1902 &self,
1903 formatter: &mut std::fmt::Formatter<'_>,
1904 ) -> std::fmt::Result {
1905 formatter
1906 .write_str(
1907 "struct origincloud.billing.v1beta1.DeleteBillingAccountRequest",
1908 )
1909 }
1910 fn visit_map<V>(
1911 self,
1912 mut map_: V,
1913 ) -> std::result::Result<DeleteBillingAccountRequest, V::Error>
1914 where
1915 V: serde::de::MapAccess<'de>,
1916 {
1917 let mut name__ = None;
1918 while let Some(k) = map_.next_key()? {
1919 match k {
1920 GeneratedField::Name => {
1921 if name__.is_some() {
1922 return Err(serde::de::Error::duplicate_field("name"));
1923 }
1924 name__ = Some(map_.next_value()?);
1925 }
1926 GeneratedField::__SkipField__ => {
1927 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1928 }
1929 }
1930 }
1931 Ok(DeleteBillingAccountRequest {
1932 name: name__.unwrap_or_default(),
1933 })
1934 }
1935 }
1936 deserializer
1937 .deserialize_struct(
1938 "origincloud.billing.v1beta1.DeleteBillingAccountRequest",
1939 FIELDS,
1940 GeneratedVisitor,
1941 )
1942 }
1943}
1944impl serde::Serialize for GetBillingAccountRequest {
1945 #[allow(deprecated)]
1946 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1947 where
1948 S: serde::Serializer,
1949 {
1950 use serde::ser::SerializeStruct;
1951 let mut len = 0;
1952 if !self.name.is_empty() {
1953 len += 1;
1954 }
1955 let mut struct_ser = serializer
1956 .serialize_struct(
1957 "origincloud.billing.v1beta1.GetBillingAccountRequest",
1958 len,
1959 )?;
1960 if !self.name.is_empty() {
1961 struct_ser.serialize_field("name", &self.name)?;
1962 }
1963 struct_ser.end()
1964 }
1965}
1966impl<'de> serde::Deserialize<'de> for GetBillingAccountRequest {
1967 #[allow(deprecated)]
1968 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1969 where
1970 D: serde::Deserializer<'de>,
1971 {
1972 const FIELDS: &[&str] = &["name"];
1973 #[allow(clippy::enum_variant_names)]
1974 enum GeneratedField {
1975 Name,
1976 __SkipField__,
1977 }
1978 impl<'de> serde::Deserialize<'de> for GeneratedField {
1979 fn deserialize<D>(
1980 deserializer: D,
1981 ) -> std::result::Result<GeneratedField, D::Error>
1982 where
1983 D: serde::Deserializer<'de>,
1984 {
1985 struct GeneratedVisitor;
1986 impl serde::de::Visitor<'_> for GeneratedVisitor {
1987 type Value = GeneratedField;
1988 fn expecting(
1989 &self,
1990 formatter: &mut std::fmt::Formatter<'_>,
1991 ) -> std::fmt::Result {
1992 write!(formatter, "expected one of: {:?}", & FIELDS)
1993 }
1994 #[allow(unused_variables)]
1995 fn visit_str<E>(
1996 self,
1997 value: &str,
1998 ) -> std::result::Result<GeneratedField, E>
1999 where
2000 E: serde::de::Error,
2001 {
2002 match value {
2003 "name" => Ok(GeneratedField::Name),
2004 _ => Ok(GeneratedField::__SkipField__),
2005 }
2006 }
2007 }
2008 deserializer.deserialize_identifier(GeneratedVisitor)
2009 }
2010 }
2011 struct GeneratedVisitor;
2012 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2013 type Value = GetBillingAccountRequest;
2014 fn expecting(
2015 &self,
2016 formatter: &mut std::fmt::Formatter<'_>,
2017 ) -> std::fmt::Result {
2018 formatter
2019 .write_str(
2020 "struct origincloud.billing.v1beta1.GetBillingAccountRequest",
2021 )
2022 }
2023 fn visit_map<V>(
2024 self,
2025 mut map_: V,
2026 ) -> std::result::Result<GetBillingAccountRequest, V::Error>
2027 where
2028 V: serde::de::MapAccess<'de>,
2029 {
2030 let mut name__ = None;
2031 while let Some(k) = map_.next_key()? {
2032 match k {
2033 GeneratedField::Name => {
2034 if name__.is_some() {
2035 return Err(serde::de::Error::duplicate_field("name"));
2036 }
2037 name__ = Some(map_.next_value()?);
2038 }
2039 GeneratedField::__SkipField__ => {
2040 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2041 }
2042 }
2043 }
2044 Ok(GetBillingAccountRequest {
2045 name: name__.unwrap_or_default(),
2046 })
2047 }
2048 }
2049 deserializer
2050 .deserialize_struct(
2051 "origincloud.billing.v1beta1.GetBillingAccountRequest",
2052 FIELDS,
2053 GeneratedVisitor,
2054 )
2055 }
2056}
2057impl serde::Serialize for GetBillingCountryRequest {
2058 #[allow(deprecated)]
2059 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2060 where
2061 S: serde::Serializer,
2062 {
2063 use serde::ser::SerializeStruct;
2064 let mut len = 0;
2065 if !self.name.is_empty() {
2066 len += 1;
2067 }
2068 let mut struct_ser = serializer
2069 .serialize_struct(
2070 "origincloud.billing.v1beta1.GetBillingCountryRequest",
2071 len,
2072 )?;
2073 if !self.name.is_empty() {
2074 struct_ser.serialize_field("name", &self.name)?;
2075 }
2076 struct_ser.end()
2077 }
2078}
2079impl<'de> serde::Deserialize<'de> for GetBillingCountryRequest {
2080 #[allow(deprecated)]
2081 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2082 where
2083 D: serde::Deserializer<'de>,
2084 {
2085 const FIELDS: &[&str] = &["name"];
2086 #[allow(clippy::enum_variant_names)]
2087 enum GeneratedField {
2088 Name,
2089 __SkipField__,
2090 }
2091 impl<'de> serde::Deserialize<'de> for GeneratedField {
2092 fn deserialize<D>(
2093 deserializer: D,
2094 ) -> std::result::Result<GeneratedField, D::Error>
2095 where
2096 D: serde::Deserializer<'de>,
2097 {
2098 struct GeneratedVisitor;
2099 impl serde::de::Visitor<'_> for GeneratedVisitor {
2100 type Value = GeneratedField;
2101 fn expecting(
2102 &self,
2103 formatter: &mut std::fmt::Formatter<'_>,
2104 ) -> std::fmt::Result {
2105 write!(formatter, "expected one of: {:?}", & FIELDS)
2106 }
2107 #[allow(unused_variables)]
2108 fn visit_str<E>(
2109 self,
2110 value: &str,
2111 ) -> std::result::Result<GeneratedField, E>
2112 where
2113 E: serde::de::Error,
2114 {
2115 match value {
2116 "name" => Ok(GeneratedField::Name),
2117 _ => Ok(GeneratedField::__SkipField__),
2118 }
2119 }
2120 }
2121 deserializer.deserialize_identifier(GeneratedVisitor)
2122 }
2123 }
2124 struct GeneratedVisitor;
2125 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2126 type Value = GetBillingCountryRequest;
2127 fn expecting(
2128 &self,
2129 formatter: &mut std::fmt::Formatter<'_>,
2130 ) -> std::fmt::Result {
2131 formatter
2132 .write_str(
2133 "struct origincloud.billing.v1beta1.GetBillingCountryRequest",
2134 )
2135 }
2136 fn visit_map<V>(
2137 self,
2138 mut map_: V,
2139 ) -> std::result::Result<GetBillingCountryRequest, V::Error>
2140 where
2141 V: serde::de::MapAccess<'de>,
2142 {
2143 let mut name__ = None;
2144 while let Some(k) = map_.next_key()? {
2145 match k {
2146 GeneratedField::Name => {
2147 if name__.is_some() {
2148 return Err(serde::de::Error::duplicate_field("name"));
2149 }
2150 name__ = Some(map_.next_value()?);
2151 }
2152 GeneratedField::__SkipField__ => {
2153 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2154 }
2155 }
2156 }
2157 Ok(GetBillingCountryRequest {
2158 name: name__.unwrap_or_default(),
2159 })
2160 }
2161 }
2162 deserializer
2163 .deserialize_struct(
2164 "origincloud.billing.v1beta1.GetBillingCountryRequest",
2165 FIELDS,
2166 GeneratedVisitor,
2167 )
2168 }
2169}
2170impl serde::Serialize for GetPriceListRequest {
2171 #[allow(deprecated)]
2172 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2173 where
2174 S: serde::Serializer,
2175 {
2176 use serde::ser::SerializeStruct;
2177 let len = 0;
2178 let struct_ser = serializer
2179 .serialize_struct("origincloud.billing.v1beta1.GetPriceListRequest", len)?;
2180 struct_ser.end()
2181 }
2182}
2183impl<'de> serde::Deserialize<'de> for GetPriceListRequest {
2184 #[allow(deprecated)]
2185 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2186 where
2187 D: serde::Deserializer<'de>,
2188 {
2189 const FIELDS: &[&str] = &[];
2190 #[allow(clippy::enum_variant_names)]
2191 enum GeneratedField {
2192 __SkipField__,
2193 }
2194 impl<'de> serde::Deserialize<'de> for GeneratedField {
2195 fn deserialize<D>(
2196 deserializer: D,
2197 ) -> std::result::Result<GeneratedField, D::Error>
2198 where
2199 D: serde::Deserializer<'de>,
2200 {
2201 struct GeneratedVisitor;
2202 impl serde::de::Visitor<'_> for GeneratedVisitor {
2203 type Value = GeneratedField;
2204 fn expecting(
2205 &self,
2206 formatter: &mut std::fmt::Formatter<'_>,
2207 ) -> std::fmt::Result {
2208 write!(formatter, "expected one of: {:?}", & FIELDS)
2209 }
2210 #[allow(unused_variables)]
2211 fn visit_str<E>(
2212 self,
2213 value: &str,
2214 ) -> std::result::Result<GeneratedField, E>
2215 where
2216 E: serde::de::Error,
2217 {
2218 Ok(GeneratedField::__SkipField__)
2219 }
2220 }
2221 deserializer.deserialize_identifier(GeneratedVisitor)
2222 }
2223 }
2224 struct GeneratedVisitor;
2225 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2226 type Value = GetPriceListRequest;
2227 fn expecting(
2228 &self,
2229 formatter: &mut std::fmt::Formatter<'_>,
2230 ) -> std::fmt::Result {
2231 formatter
2232 .write_str("struct origincloud.billing.v1beta1.GetPriceListRequest")
2233 }
2234 fn visit_map<V>(
2235 self,
2236 mut map_: V,
2237 ) -> std::result::Result<GetPriceListRequest, V::Error>
2238 where
2239 V: serde::de::MapAccess<'de>,
2240 {
2241 while map_.next_key::<GeneratedField>()?.is_some() {
2242 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2243 }
2244 Ok(GetPriceListRequest {})
2245 }
2246 }
2247 deserializer
2248 .deserialize_struct(
2249 "origincloud.billing.v1beta1.GetPriceListRequest",
2250 FIELDS,
2251 GeneratedVisitor,
2252 )
2253 }
2254}
2255impl serde::Serialize for GetProjectBillingInfoRequest {
2256 #[allow(deprecated)]
2257 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2258 where
2259 S: serde::Serializer,
2260 {
2261 use serde::ser::SerializeStruct;
2262 let mut len = 0;
2263 if !self.name.is_empty() {
2264 len += 1;
2265 }
2266 let mut struct_ser = serializer
2267 .serialize_struct(
2268 "origincloud.billing.v1beta1.GetProjectBillingInfoRequest",
2269 len,
2270 )?;
2271 if !self.name.is_empty() {
2272 struct_ser.serialize_field("name", &self.name)?;
2273 }
2274 struct_ser.end()
2275 }
2276}
2277impl<'de> serde::Deserialize<'de> for GetProjectBillingInfoRequest {
2278 #[allow(deprecated)]
2279 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2280 where
2281 D: serde::Deserializer<'de>,
2282 {
2283 const FIELDS: &[&str] = &["name"];
2284 #[allow(clippy::enum_variant_names)]
2285 enum GeneratedField {
2286 Name,
2287 __SkipField__,
2288 }
2289 impl<'de> serde::Deserialize<'de> for GeneratedField {
2290 fn deserialize<D>(
2291 deserializer: D,
2292 ) -> std::result::Result<GeneratedField, D::Error>
2293 where
2294 D: serde::Deserializer<'de>,
2295 {
2296 struct GeneratedVisitor;
2297 impl serde::de::Visitor<'_> for GeneratedVisitor {
2298 type Value = GeneratedField;
2299 fn expecting(
2300 &self,
2301 formatter: &mut std::fmt::Formatter<'_>,
2302 ) -> std::fmt::Result {
2303 write!(formatter, "expected one of: {:?}", & FIELDS)
2304 }
2305 #[allow(unused_variables)]
2306 fn visit_str<E>(
2307 self,
2308 value: &str,
2309 ) -> std::result::Result<GeneratedField, E>
2310 where
2311 E: serde::de::Error,
2312 {
2313 match value {
2314 "name" => Ok(GeneratedField::Name),
2315 _ => Ok(GeneratedField::__SkipField__),
2316 }
2317 }
2318 }
2319 deserializer.deserialize_identifier(GeneratedVisitor)
2320 }
2321 }
2322 struct GeneratedVisitor;
2323 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2324 type Value = GetProjectBillingInfoRequest;
2325 fn expecting(
2326 &self,
2327 formatter: &mut std::fmt::Formatter<'_>,
2328 ) -> std::fmt::Result {
2329 formatter
2330 .write_str(
2331 "struct origincloud.billing.v1beta1.GetProjectBillingInfoRequest",
2332 )
2333 }
2334 fn visit_map<V>(
2335 self,
2336 mut map_: V,
2337 ) -> std::result::Result<GetProjectBillingInfoRequest, V::Error>
2338 where
2339 V: serde::de::MapAccess<'de>,
2340 {
2341 let mut name__ = None;
2342 while let Some(k) = map_.next_key()? {
2343 match k {
2344 GeneratedField::Name => {
2345 if name__.is_some() {
2346 return Err(serde::de::Error::duplicate_field("name"));
2347 }
2348 name__ = Some(map_.next_value()?);
2349 }
2350 GeneratedField::__SkipField__ => {
2351 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2352 }
2353 }
2354 }
2355 Ok(GetProjectBillingInfoRequest {
2356 name: name__.unwrap_or_default(),
2357 })
2358 }
2359 }
2360 deserializer
2361 .deserialize_struct(
2362 "origincloud.billing.v1beta1.GetProjectBillingInfoRequest",
2363 FIELDS,
2364 GeneratedVisitor,
2365 )
2366 }
2367}
2368impl serde::Serialize for GetSpendLimitRequest {
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("origincloud.billing.v1beta1.GetSpendLimitRequest", len)?;
2381 if !self.name.is_empty() {
2382 struct_ser.serialize_field("name", &self.name)?;
2383 }
2384 struct_ser.end()
2385 }
2386}
2387impl<'de> serde::Deserialize<'de> for GetSpendLimitRequest {
2388 #[allow(deprecated)]
2389 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2390 where
2391 D: serde::Deserializer<'de>,
2392 {
2393 const FIELDS: &[&str] = &["name"];
2394 #[allow(clippy::enum_variant_names)]
2395 enum GeneratedField {
2396 Name,
2397 __SkipField__,
2398 }
2399 impl<'de> serde::Deserialize<'de> for GeneratedField {
2400 fn deserialize<D>(
2401 deserializer: D,
2402 ) -> std::result::Result<GeneratedField, D::Error>
2403 where
2404 D: serde::Deserializer<'de>,
2405 {
2406 struct GeneratedVisitor;
2407 impl serde::de::Visitor<'_> for GeneratedVisitor {
2408 type Value = GeneratedField;
2409 fn expecting(
2410 &self,
2411 formatter: &mut std::fmt::Formatter<'_>,
2412 ) -> std::fmt::Result {
2413 write!(formatter, "expected one of: {:?}", & FIELDS)
2414 }
2415 #[allow(unused_variables)]
2416 fn visit_str<E>(
2417 self,
2418 value: &str,
2419 ) -> std::result::Result<GeneratedField, E>
2420 where
2421 E: serde::de::Error,
2422 {
2423 match value {
2424 "name" => Ok(GeneratedField::Name),
2425 _ => Ok(GeneratedField::__SkipField__),
2426 }
2427 }
2428 }
2429 deserializer.deserialize_identifier(GeneratedVisitor)
2430 }
2431 }
2432 struct GeneratedVisitor;
2433 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2434 type Value = GetSpendLimitRequest;
2435 fn expecting(
2436 &self,
2437 formatter: &mut std::fmt::Formatter<'_>,
2438 ) -> std::fmt::Result {
2439 formatter
2440 .write_str("struct origincloud.billing.v1beta1.GetSpendLimitRequest")
2441 }
2442 fn visit_map<V>(
2443 self,
2444 mut map_: V,
2445 ) -> std::result::Result<GetSpendLimitRequest, V::Error>
2446 where
2447 V: serde::de::MapAccess<'de>,
2448 {
2449 let mut name__ = None;
2450 while let Some(k) = map_.next_key()? {
2451 match k {
2452 GeneratedField::Name => {
2453 if name__.is_some() {
2454 return Err(serde::de::Error::duplicate_field("name"));
2455 }
2456 name__ = Some(map_.next_value()?);
2457 }
2458 GeneratedField::__SkipField__ => {
2459 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2460 }
2461 }
2462 }
2463 Ok(GetSpendLimitRequest {
2464 name: name__.unwrap_or_default(),
2465 })
2466 }
2467 }
2468 deserializer
2469 .deserialize_struct(
2470 "origincloud.billing.v1beta1.GetSpendLimitRequest",
2471 FIELDS,
2472 GeneratedVisitor,
2473 )
2474 }
2475}
2476impl serde::Serialize for Granularity {
2477 #[allow(deprecated)]
2478 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2479 where
2480 S: serde::Serializer,
2481 {
2482 let variant = match self {
2483 Self::Unspecified => "GRANULARITY_UNSPECIFIED",
2484 Self::Hourly => "HOURLY",
2485 Self::Daily => "DAILY",
2486 };
2487 serializer.serialize_str(variant)
2488 }
2489}
2490impl<'de> serde::Deserialize<'de> for Granularity {
2491 #[allow(deprecated)]
2492 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2493 where
2494 D: serde::Deserializer<'de>,
2495 {
2496 const FIELDS: &[&str] = &["GRANULARITY_UNSPECIFIED", "HOURLY", "DAILY"];
2497 struct GeneratedVisitor;
2498 impl serde::de::Visitor<'_> for GeneratedVisitor {
2499 type Value = Granularity;
2500 fn expecting(
2501 &self,
2502 formatter: &mut std::fmt::Formatter<'_>,
2503 ) -> std::fmt::Result {
2504 write!(formatter, "expected one of: {:?}", & FIELDS)
2505 }
2506 fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2507 where
2508 E: serde::de::Error,
2509 {
2510 i32::try_from(v)
2511 .ok()
2512 .and_then(|x| {
2513 x.try_into().ok().or_else(|| Some(Granularity::default()))
2514 })
2515 .ok_or_else(|| {
2516 serde::de::Error::invalid_value(
2517 serde::de::Unexpected::Signed(v),
2518 &self,
2519 )
2520 })
2521 }
2522 fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2523 where
2524 E: serde::de::Error,
2525 {
2526 i32::try_from(v)
2527 .ok()
2528 .and_then(|x| {
2529 x.try_into().ok().or_else(|| Some(Granularity::default()))
2530 })
2531 .ok_or_else(|| {
2532 serde::de::Error::invalid_value(
2533 serde::de::Unexpected::Unsigned(v),
2534 &self,
2535 )
2536 })
2537 }
2538 fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2539 where
2540 E: serde::de::Error,
2541 {
2542 match value {
2543 "GRANULARITY_UNSPECIFIED" => Ok(Granularity::Unspecified),
2544 "HOURLY" => Ok(Granularity::Hourly),
2545 "DAILY" => Ok(Granularity::Daily),
2546 _ => Ok(Granularity::default()),
2547 }
2548 }
2549 }
2550 deserializer.deserialize_any(GeneratedVisitor)
2551 }
2552}
2553impl serde::Serialize for ListBillingAccountsRequest {
2554 #[allow(deprecated)]
2555 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2556 where
2557 S: serde::Serializer,
2558 {
2559 use serde::ser::SerializeStruct;
2560 let mut len = 0;
2561 if !self.parent.is_empty() {
2562 len += 1;
2563 }
2564 if self.page_size != 0 {
2565 len += 1;
2566 }
2567 if !self.page_token.is_empty() {
2568 len += 1;
2569 }
2570 let mut struct_ser = serializer
2571 .serialize_struct(
2572 "origincloud.billing.v1beta1.ListBillingAccountsRequest",
2573 len,
2574 )?;
2575 if !self.parent.is_empty() {
2576 struct_ser.serialize_field("parent", &self.parent)?;
2577 }
2578 if self.page_size != 0 {
2579 struct_ser.serialize_field("pageSize", &self.page_size)?;
2580 }
2581 if !self.page_token.is_empty() {
2582 struct_ser.serialize_field("pageToken", &self.page_token)?;
2583 }
2584 struct_ser.end()
2585 }
2586}
2587impl<'de> serde::Deserialize<'de> for ListBillingAccountsRequest {
2588 #[allow(deprecated)]
2589 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2590 where
2591 D: serde::Deserializer<'de>,
2592 {
2593 const FIELDS: &[&str] = &[
2594 "parent",
2595 "page_size",
2596 "pageSize",
2597 "page_token",
2598 "pageToken",
2599 ];
2600 #[allow(clippy::enum_variant_names)]
2601 enum GeneratedField {
2602 Parent,
2603 PageSize,
2604 PageToken,
2605 __SkipField__,
2606 }
2607 impl<'de> serde::Deserialize<'de> for GeneratedField {
2608 fn deserialize<D>(
2609 deserializer: D,
2610 ) -> std::result::Result<GeneratedField, D::Error>
2611 where
2612 D: serde::Deserializer<'de>,
2613 {
2614 struct GeneratedVisitor;
2615 impl serde::de::Visitor<'_> for GeneratedVisitor {
2616 type Value = GeneratedField;
2617 fn expecting(
2618 &self,
2619 formatter: &mut std::fmt::Formatter<'_>,
2620 ) -> std::fmt::Result {
2621 write!(formatter, "expected one of: {:?}", & FIELDS)
2622 }
2623 #[allow(unused_variables)]
2624 fn visit_str<E>(
2625 self,
2626 value: &str,
2627 ) -> std::result::Result<GeneratedField, E>
2628 where
2629 E: serde::de::Error,
2630 {
2631 match value {
2632 "parent" => Ok(GeneratedField::Parent),
2633 "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
2634 "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
2635 _ => Ok(GeneratedField::__SkipField__),
2636 }
2637 }
2638 }
2639 deserializer.deserialize_identifier(GeneratedVisitor)
2640 }
2641 }
2642 struct GeneratedVisitor;
2643 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2644 type Value = ListBillingAccountsRequest;
2645 fn expecting(
2646 &self,
2647 formatter: &mut std::fmt::Formatter<'_>,
2648 ) -> std::fmt::Result {
2649 formatter
2650 .write_str(
2651 "struct origincloud.billing.v1beta1.ListBillingAccountsRequest",
2652 )
2653 }
2654 fn visit_map<V>(
2655 self,
2656 mut map_: V,
2657 ) -> std::result::Result<ListBillingAccountsRequest, V::Error>
2658 where
2659 V: serde::de::MapAccess<'de>,
2660 {
2661 let mut parent__ = None;
2662 let mut page_size__ = None;
2663 let mut page_token__ = None;
2664 while let Some(k) = map_.next_key()? {
2665 match k {
2666 GeneratedField::Parent => {
2667 if parent__.is_some() {
2668 return Err(serde::de::Error::duplicate_field("parent"));
2669 }
2670 parent__ = Some(map_.next_value()?);
2671 }
2672 GeneratedField::PageSize => {
2673 if page_size__.is_some() {
2674 return Err(serde::de::Error::duplicate_field("pageSize"));
2675 }
2676 page_size__ = Some(
2677 map_
2678 .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2679 .0,
2680 );
2681 }
2682 GeneratedField::PageToken => {
2683 if page_token__.is_some() {
2684 return Err(serde::de::Error::duplicate_field("pageToken"));
2685 }
2686 page_token__ = Some(map_.next_value()?);
2687 }
2688 GeneratedField::__SkipField__ => {
2689 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2690 }
2691 }
2692 }
2693 Ok(ListBillingAccountsRequest {
2694 parent: parent__.unwrap_or_default(),
2695 page_size: page_size__.unwrap_or_default(),
2696 page_token: page_token__.unwrap_or_default(),
2697 })
2698 }
2699 }
2700 deserializer
2701 .deserialize_struct(
2702 "origincloud.billing.v1beta1.ListBillingAccountsRequest",
2703 FIELDS,
2704 GeneratedVisitor,
2705 )
2706 }
2707}
2708impl serde::Serialize for ListBillingAccountsResponse {
2709 #[allow(deprecated)]
2710 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2711 where
2712 S: serde::Serializer,
2713 {
2714 use serde::ser::SerializeStruct;
2715 let mut len = 0;
2716 if !self.billing_accounts.is_empty() {
2717 len += 1;
2718 }
2719 if !self.next_page_token.is_empty() {
2720 len += 1;
2721 }
2722 let mut struct_ser = serializer
2723 .serialize_struct(
2724 "origincloud.billing.v1beta1.ListBillingAccountsResponse",
2725 len,
2726 )?;
2727 if !self.billing_accounts.is_empty() {
2728 struct_ser.serialize_field("billingAccounts", &self.billing_accounts)?;
2729 }
2730 if !self.next_page_token.is_empty() {
2731 struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
2732 }
2733 struct_ser.end()
2734 }
2735}
2736impl<'de> serde::Deserialize<'de> for ListBillingAccountsResponse {
2737 #[allow(deprecated)]
2738 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2739 where
2740 D: serde::Deserializer<'de>,
2741 {
2742 const FIELDS: &[&str] = &[
2743 "billing_accounts",
2744 "billingAccounts",
2745 "next_page_token",
2746 "nextPageToken",
2747 ];
2748 #[allow(clippy::enum_variant_names)]
2749 enum GeneratedField {
2750 BillingAccounts,
2751 NextPageToken,
2752 __SkipField__,
2753 }
2754 impl<'de> serde::Deserialize<'de> for GeneratedField {
2755 fn deserialize<D>(
2756 deserializer: D,
2757 ) -> std::result::Result<GeneratedField, D::Error>
2758 where
2759 D: serde::Deserializer<'de>,
2760 {
2761 struct GeneratedVisitor;
2762 impl serde::de::Visitor<'_> for GeneratedVisitor {
2763 type Value = GeneratedField;
2764 fn expecting(
2765 &self,
2766 formatter: &mut std::fmt::Formatter<'_>,
2767 ) -> std::fmt::Result {
2768 write!(formatter, "expected one of: {:?}", & FIELDS)
2769 }
2770 #[allow(unused_variables)]
2771 fn visit_str<E>(
2772 self,
2773 value: &str,
2774 ) -> std::result::Result<GeneratedField, E>
2775 where
2776 E: serde::de::Error,
2777 {
2778 match value {
2779 "billingAccounts" | "billing_accounts" => {
2780 Ok(GeneratedField::BillingAccounts)
2781 }
2782 "nextPageToken" | "next_page_token" => {
2783 Ok(GeneratedField::NextPageToken)
2784 }
2785 _ => Ok(GeneratedField::__SkipField__),
2786 }
2787 }
2788 }
2789 deserializer.deserialize_identifier(GeneratedVisitor)
2790 }
2791 }
2792 struct GeneratedVisitor;
2793 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2794 type Value = ListBillingAccountsResponse;
2795 fn expecting(
2796 &self,
2797 formatter: &mut std::fmt::Formatter<'_>,
2798 ) -> std::fmt::Result {
2799 formatter
2800 .write_str(
2801 "struct origincloud.billing.v1beta1.ListBillingAccountsResponse",
2802 )
2803 }
2804 fn visit_map<V>(
2805 self,
2806 mut map_: V,
2807 ) -> std::result::Result<ListBillingAccountsResponse, V::Error>
2808 where
2809 V: serde::de::MapAccess<'de>,
2810 {
2811 let mut billing_accounts__ = None;
2812 let mut next_page_token__ = None;
2813 while let Some(k) = map_.next_key()? {
2814 match k {
2815 GeneratedField::BillingAccounts => {
2816 if billing_accounts__.is_some() {
2817 return Err(
2818 serde::de::Error::duplicate_field("billingAccounts"),
2819 );
2820 }
2821 billing_accounts__ = Some(map_.next_value()?);
2822 }
2823 GeneratedField::NextPageToken => {
2824 if next_page_token__.is_some() {
2825 return Err(
2826 serde::de::Error::duplicate_field("nextPageToken"),
2827 );
2828 }
2829 next_page_token__ = Some(map_.next_value()?);
2830 }
2831 GeneratedField::__SkipField__ => {
2832 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2833 }
2834 }
2835 }
2836 Ok(ListBillingAccountsResponse {
2837 billing_accounts: billing_accounts__.unwrap_or_default(),
2838 next_page_token: next_page_token__.unwrap_or_default(),
2839 })
2840 }
2841 }
2842 deserializer
2843 .deserialize_struct(
2844 "origincloud.billing.v1beta1.ListBillingAccountsResponse",
2845 FIELDS,
2846 GeneratedVisitor,
2847 )
2848 }
2849}
2850impl serde::Serialize for ListBillingCountriesRequest {
2851 #[allow(deprecated)]
2852 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2853 where
2854 S: serde::Serializer,
2855 {
2856 use serde::ser::SerializeStruct;
2857 let mut len = 0;
2858 if self.page_size != 0 {
2859 len += 1;
2860 }
2861 if !self.page_token.is_empty() {
2862 len += 1;
2863 }
2864 let mut struct_ser = serializer
2865 .serialize_struct(
2866 "origincloud.billing.v1beta1.ListBillingCountriesRequest",
2867 len,
2868 )?;
2869 if self.page_size != 0 {
2870 struct_ser.serialize_field("pageSize", &self.page_size)?;
2871 }
2872 if !self.page_token.is_empty() {
2873 struct_ser.serialize_field("pageToken", &self.page_token)?;
2874 }
2875 struct_ser.end()
2876 }
2877}
2878impl<'de> serde::Deserialize<'de> for ListBillingCountriesRequest {
2879 #[allow(deprecated)]
2880 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2881 where
2882 D: serde::Deserializer<'de>,
2883 {
2884 const FIELDS: &[&str] = &["page_size", "pageSize", "page_token", "pageToken"];
2885 #[allow(clippy::enum_variant_names)]
2886 enum GeneratedField {
2887 PageSize,
2888 PageToken,
2889 __SkipField__,
2890 }
2891 impl<'de> serde::Deserialize<'de> for GeneratedField {
2892 fn deserialize<D>(
2893 deserializer: D,
2894 ) -> std::result::Result<GeneratedField, D::Error>
2895 where
2896 D: serde::Deserializer<'de>,
2897 {
2898 struct GeneratedVisitor;
2899 impl serde::de::Visitor<'_> for GeneratedVisitor {
2900 type Value = GeneratedField;
2901 fn expecting(
2902 &self,
2903 formatter: &mut std::fmt::Formatter<'_>,
2904 ) -> std::fmt::Result {
2905 write!(formatter, "expected one of: {:?}", & FIELDS)
2906 }
2907 #[allow(unused_variables)]
2908 fn visit_str<E>(
2909 self,
2910 value: &str,
2911 ) -> std::result::Result<GeneratedField, E>
2912 where
2913 E: serde::de::Error,
2914 {
2915 match value {
2916 "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
2917 "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
2918 _ => Ok(GeneratedField::__SkipField__),
2919 }
2920 }
2921 }
2922 deserializer.deserialize_identifier(GeneratedVisitor)
2923 }
2924 }
2925 struct GeneratedVisitor;
2926 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2927 type Value = ListBillingCountriesRequest;
2928 fn expecting(
2929 &self,
2930 formatter: &mut std::fmt::Formatter<'_>,
2931 ) -> std::fmt::Result {
2932 formatter
2933 .write_str(
2934 "struct origincloud.billing.v1beta1.ListBillingCountriesRequest",
2935 )
2936 }
2937 fn visit_map<V>(
2938 self,
2939 mut map_: V,
2940 ) -> std::result::Result<ListBillingCountriesRequest, V::Error>
2941 where
2942 V: serde::de::MapAccess<'de>,
2943 {
2944 let mut page_size__ = None;
2945 let mut page_token__ = None;
2946 while let Some(k) = map_.next_key()? {
2947 match k {
2948 GeneratedField::PageSize => {
2949 if page_size__.is_some() {
2950 return Err(serde::de::Error::duplicate_field("pageSize"));
2951 }
2952 page_size__ = Some(
2953 map_
2954 .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2955 .0,
2956 );
2957 }
2958 GeneratedField::PageToken => {
2959 if page_token__.is_some() {
2960 return Err(serde::de::Error::duplicate_field("pageToken"));
2961 }
2962 page_token__ = Some(map_.next_value()?);
2963 }
2964 GeneratedField::__SkipField__ => {
2965 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2966 }
2967 }
2968 }
2969 Ok(ListBillingCountriesRequest {
2970 page_size: page_size__.unwrap_or_default(),
2971 page_token: page_token__.unwrap_or_default(),
2972 })
2973 }
2974 }
2975 deserializer
2976 .deserialize_struct(
2977 "origincloud.billing.v1beta1.ListBillingCountriesRequest",
2978 FIELDS,
2979 GeneratedVisitor,
2980 )
2981 }
2982}
2983impl serde::Serialize for ListBillingCountriesResponse {
2984 #[allow(deprecated)]
2985 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2986 where
2987 S: serde::Serializer,
2988 {
2989 use serde::ser::SerializeStruct;
2990 let mut len = 0;
2991 if !self.billing_countries.is_empty() {
2992 len += 1;
2993 }
2994 if !self.next_page_token.is_empty() {
2995 len += 1;
2996 }
2997 let mut struct_ser = serializer
2998 .serialize_struct(
2999 "origincloud.billing.v1beta1.ListBillingCountriesResponse",
3000 len,
3001 )?;
3002 if !self.billing_countries.is_empty() {
3003 struct_ser.serialize_field("billingCountries", &self.billing_countries)?;
3004 }
3005 if !self.next_page_token.is_empty() {
3006 struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
3007 }
3008 struct_ser.end()
3009 }
3010}
3011impl<'de> serde::Deserialize<'de> for ListBillingCountriesResponse {
3012 #[allow(deprecated)]
3013 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3014 where
3015 D: serde::Deserializer<'de>,
3016 {
3017 const FIELDS: &[&str] = &[
3018 "billing_countries",
3019 "billingCountries",
3020 "next_page_token",
3021 "nextPageToken",
3022 ];
3023 #[allow(clippy::enum_variant_names)]
3024 enum GeneratedField {
3025 BillingCountries,
3026 NextPageToken,
3027 __SkipField__,
3028 }
3029 impl<'de> serde::Deserialize<'de> for GeneratedField {
3030 fn deserialize<D>(
3031 deserializer: D,
3032 ) -> std::result::Result<GeneratedField, D::Error>
3033 where
3034 D: serde::Deserializer<'de>,
3035 {
3036 struct GeneratedVisitor;
3037 impl serde::de::Visitor<'_> for GeneratedVisitor {
3038 type Value = GeneratedField;
3039 fn expecting(
3040 &self,
3041 formatter: &mut std::fmt::Formatter<'_>,
3042 ) -> std::fmt::Result {
3043 write!(formatter, "expected one of: {:?}", & FIELDS)
3044 }
3045 #[allow(unused_variables)]
3046 fn visit_str<E>(
3047 self,
3048 value: &str,
3049 ) -> std::result::Result<GeneratedField, E>
3050 where
3051 E: serde::de::Error,
3052 {
3053 match value {
3054 "billingCountries" | "billing_countries" => {
3055 Ok(GeneratedField::BillingCountries)
3056 }
3057 "nextPageToken" | "next_page_token" => {
3058 Ok(GeneratedField::NextPageToken)
3059 }
3060 _ => Ok(GeneratedField::__SkipField__),
3061 }
3062 }
3063 }
3064 deserializer.deserialize_identifier(GeneratedVisitor)
3065 }
3066 }
3067 struct GeneratedVisitor;
3068 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3069 type Value = ListBillingCountriesResponse;
3070 fn expecting(
3071 &self,
3072 formatter: &mut std::fmt::Formatter<'_>,
3073 ) -> std::fmt::Result {
3074 formatter
3075 .write_str(
3076 "struct origincloud.billing.v1beta1.ListBillingCountriesResponse",
3077 )
3078 }
3079 fn visit_map<V>(
3080 self,
3081 mut map_: V,
3082 ) -> std::result::Result<ListBillingCountriesResponse, V::Error>
3083 where
3084 V: serde::de::MapAccess<'de>,
3085 {
3086 let mut billing_countries__ = None;
3087 let mut next_page_token__ = None;
3088 while let Some(k) = map_.next_key()? {
3089 match k {
3090 GeneratedField::BillingCountries => {
3091 if billing_countries__.is_some() {
3092 return Err(
3093 serde::de::Error::duplicate_field("billingCountries"),
3094 );
3095 }
3096 billing_countries__ = Some(map_.next_value()?);
3097 }
3098 GeneratedField::NextPageToken => {
3099 if next_page_token__.is_some() {
3100 return Err(
3101 serde::de::Error::duplicate_field("nextPageToken"),
3102 );
3103 }
3104 next_page_token__ = Some(map_.next_value()?);
3105 }
3106 GeneratedField::__SkipField__ => {
3107 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3108 }
3109 }
3110 }
3111 Ok(ListBillingCountriesResponse {
3112 billing_countries: billing_countries__.unwrap_or_default(),
3113 next_page_token: next_page_token__.unwrap_or_default(),
3114 })
3115 }
3116 }
3117 deserializer
3118 .deserialize_struct(
3119 "origincloud.billing.v1beta1.ListBillingCountriesResponse",
3120 FIELDS,
3121 GeneratedVisitor,
3122 )
3123 }
3124}
3125impl serde::Serialize for ListProjectBillingInfoRequest {
3126 #[allow(deprecated)]
3127 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3128 where
3129 S: serde::Serializer,
3130 {
3131 use serde::ser::SerializeStruct;
3132 let mut len = 0;
3133 if !self.name.is_empty() {
3134 len += 1;
3135 }
3136 if self.page_size != 0 {
3137 len += 1;
3138 }
3139 if !self.page_token.is_empty() {
3140 len += 1;
3141 }
3142 let mut struct_ser = serializer
3143 .serialize_struct(
3144 "origincloud.billing.v1beta1.ListProjectBillingInfoRequest",
3145 len,
3146 )?;
3147 if !self.name.is_empty() {
3148 struct_ser.serialize_field("name", &self.name)?;
3149 }
3150 if self.page_size != 0 {
3151 struct_ser.serialize_field("pageSize", &self.page_size)?;
3152 }
3153 if !self.page_token.is_empty() {
3154 struct_ser.serialize_field("pageToken", &self.page_token)?;
3155 }
3156 struct_ser.end()
3157 }
3158}
3159impl<'de> serde::Deserialize<'de> for ListProjectBillingInfoRequest {
3160 #[allow(deprecated)]
3161 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3162 where
3163 D: serde::Deserializer<'de>,
3164 {
3165 const FIELDS: &[&str] = &[
3166 "name",
3167 "page_size",
3168 "pageSize",
3169 "page_token",
3170 "pageToken",
3171 ];
3172 #[allow(clippy::enum_variant_names)]
3173 enum GeneratedField {
3174 Name,
3175 PageSize,
3176 PageToken,
3177 __SkipField__,
3178 }
3179 impl<'de> serde::Deserialize<'de> for GeneratedField {
3180 fn deserialize<D>(
3181 deserializer: D,
3182 ) -> std::result::Result<GeneratedField, D::Error>
3183 where
3184 D: serde::Deserializer<'de>,
3185 {
3186 struct GeneratedVisitor;
3187 impl serde::de::Visitor<'_> for GeneratedVisitor {
3188 type Value = GeneratedField;
3189 fn expecting(
3190 &self,
3191 formatter: &mut std::fmt::Formatter<'_>,
3192 ) -> std::fmt::Result {
3193 write!(formatter, "expected one of: {:?}", & FIELDS)
3194 }
3195 #[allow(unused_variables)]
3196 fn visit_str<E>(
3197 self,
3198 value: &str,
3199 ) -> std::result::Result<GeneratedField, E>
3200 where
3201 E: serde::de::Error,
3202 {
3203 match value {
3204 "name" => Ok(GeneratedField::Name),
3205 "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
3206 "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
3207 _ => Ok(GeneratedField::__SkipField__),
3208 }
3209 }
3210 }
3211 deserializer.deserialize_identifier(GeneratedVisitor)
3212 }
3213 }
3214 struct GeneratedVisitor;
3215 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3216 type Value = ListProjectBillingInfoRequest;
3217 fn expecting(
3218 &self,
3219 formatter: &mut std::fmt::Formatter<'_>,
3220 ) -> std::fmt::Result {
3221 formatter
3222 .write_str(
3223 "struct origincloud.billing.v1beta1.ListProjectBillingInfoRequest",
3224 )
3225 }
3226 fn visit_map<V>(
3227 self,
3228 mut map_: V,
3229 ) -> std::result::Result<ListProjectBillingInfoRequest, V::Error>
3230 where
3231 V: serde::de::MapAccess<'de>,
3232 {
3233 let mut name__ = None;
3234 let mut page_size__ = None;
3235 let mut page_token__ = None;
3236 while let Some(k) = map_.next_key()? {
3237 match k {
3238 GeneratedField::Name => {
3239 if name__.is_some() {
3240 return Err(serde::de::Error::duplicate_field("name"));
3241 }
3242 name__ = Some(map_.next_value()?);
3243 }
3244 GeneratedField::PageSize => {
3245 if page_size__.is_some() {
3246 return Err(serde::de::Error::duplicate_field("pageSize"));
3247 }
3248 page_size__ = Some(
3249 map_
3250 .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3251 .0,
3252 );
3253 }
3254 GeneratedField::PageToken => {
3255 if page_token__.is_some() {
3256 return Err(serde::de::Error::duplicate_field("pageToken"));
3257 }
3258 page_token__ = Some(map_.next_value()?);
3259 }
3260 GeneratedField::__SkipField__ => {
3261 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3262 }
3263 }
3264 }
3265 Ok(ListProjectBillingInfoRequest {
3266 name: name__.unwrap_or_default(),
3267 page_size: page_size__.unwrap_or_default(),
3268 page_token: page_token__.unwrap_or_default(),
3269 })
3270 }
3271 }
3272 deserializer
3273 .deserialize_struct(
3274 "origincloud.billing.v1beta1.ListProjectBillingInfoRequest",
3275 FIELDS,
3276 GeneratedVisitor,
3277 )
3278 }
3279}
3280impl serde::Serialize for ListProjectBillingInfoResponse {
3281 #[allow(deprecated)]
3282 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3283 where
3284 S: serde::Serializer,
3285 {
3286 use serde::ser::SerializeStruct;
3287 let mut len = 0;
3288 if !self.project_billing_infos.is_empty() {
3289 len += 1;
3290 }
3291 if !self.next_page_token.is_empty() {
3292 len += 1;
3293 }
3294 let mut struct_ser = serializer
3295 .serialize_struct(
3296 "origincloud.billing.v1beta1.ListProjectBillingInfoResponse",
3297 len,
3298 )?;
3299 if !self.project_billing_infos.is_empty() {
3300 struct_ser
3301 .serialize_field("projectBillingInfos", &self.project_billing_infos)?;
3302 }
3303 if !self.next_page_token.is_empty() {
3304 struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
3305 }
3306 struct_ser.end()
3307 }
3308}
3309impl<'de> serde::Deserialize<'de> for ListProjectBillingInfoResponse {
3310 #[allow(deprecated)]
3311 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3312 where
3313 D: serde::Deserializer<'de>,
3314 {
3315 const FIELDS: &[&str] = &[
3316 "project_billing_infos",
3317 "projectBillingInfos",
3318 "next_page_token",
3319 "nextPageToken",
3320 ];
3321 #[allow(clippy::enum_variant_names)]
3322 enum GeneratedField {
3323 ProjectBillingInfos,
3324 NextPageToken,
3325 __SkipField__,
3326 }
3327 impl<'de> serde::Deserialize<'de> for GeneratedField {
3328 fn deserialize<D>(
3329 deserializer: D,
3330 ) -> std::result::Result<GeneratedField, D::Error>
3331 where
3332 D: serde::Deserializer<'de>,
3333 {
3334 struct GeneratedVisitor;
3335 impl serde::de::Visitor<'_> for GeneratedVisitor {
3336 type Value = GeneratedField;
3337 fn expecting(
3338 &self,
3339 formatter: &mut std::fmt::Formatter<'_>,
3340 ) -> std::fmt::Result {
3341 write!(formatter, "expected one of: {:?}", & FIELDS)
3342 }
3343 #[allow(unused_variables)]
3344 fn visit_str<E>(
3345 self,
3346 value: &str,
3347 ) -> std::result::Result<GeneratedField, E>
3348 where
3349 E: serde::de::Error,
3350 {
3351 match value {
3352 "projectBillingInfos" | "project_billing_infos" => {
3353 Ok(GeneratedField::ProjectBillingInfos)
3354 }
3355 "nextPageToken" | "next_page_token" => {
3356 Ok(GeneratedField::NextPageToken)
3357 }
3358 _ => Ok(GeneratedField::__SkipField__),
3359 }
3360 }
3361 }
3362 deserializer.deserialize_identifier(GeneratedVisitor)
3363 }
3364 }
3365 struct GeneratedVisitor;
3366 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3367 type Value = ListProjectBillingInfoResponse;
3368 fn expecting(
3369 &self,
3370 formatter: &mut std::fmt::Formatter<'_>,
3371 ) -> std::fmt::Result {
3372 formatter
3373 .write_str(
3374 "struct origincloud.billing.v1beta1.ListProjectBillingInfoResponse",
3375 )
3376 }
3377 fn visit_map<V>(
3378 self,
3379 mut map_: V,
3380 ) -> std::result::Result<ListProjectBillingInfoResponse, V::Error>
3381 where
3382 V: serde::de::MapAccess<'de>,
3383 {
3384 let mut project_billing_infos__ = None;
3385 let mut next_page_token__ = None;
3386 while let Some(k) = map_.next_key()? {
3387 match k {
3388 GeneratedField::ProjectBillingInfos => {
3389 if project_billing_infos__.is_some() {
3390 return Err(
3391 serde::de::Error::duplicate_field("projectBillingInfos"),
3392 );
3393 }
3394 project_billing_infos__ = Some(map_.next_value()?);
3395 }
3396 GeneratedField::NextPageToken => {
3397 if next_page_token__.is_some() {
3398 return Err(
3399 serde::de::Error::duplicate_field("nextPageToken"),
3400 );
3401 }
3402 next_page_token__ = Some(map_.next_value()?);
3403 }
3404 GeneratedField::__SkipField__ => {
3405 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3406 }
3407 }
3408 }
3409 Ok(ListProjectBillingInfoResponse {
3410 project_billing_infos: project_billing_infos__.unwrap_or_default(),
3411 next_page_token: next_page_token__.unwrap_or_default(),
3412 })
3413 }
3414 }
3415 deserializer
3416 .deserialize_struct(
3417 "origincloud.billing.v1beta1.ListProjectBillingInfoResponse",
3418 FIELDS,
3419 GeneratedVisitor,
3420 )
3421 }
3422}
3423impl serde::Serialize for OrganizationCostReport {
3424 #[allow(deprecated)]
3425 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3426 where
3427 S: serde::Serializer,
3428 {
3429 use serde::ser::SerializeStruct;
3430 let mut len = 0;
3431 if !self.total.is_empty() {
3432 len += 1;
3433 }
3434 if !self.services.is_empty() {
3435 len += 1;
3436 }
3437 if !self.projects.is_empty() {
3438 len += 1;
3439 }
3440 let mut struct_ser = serializer
3441 .serialize_struct(
3442 "origincloud.billing.v1beta1.OrganizationCostReport",
3443 len,
3444 )?;
3445 if !self.total.is_empty() {
3446 struct_ser.serialize_field("total", &self.total)?;
3447 }
3448 if !self.services.is_empty() {
3449 struct_ser.serialize_field("services", &self.services)?;
3450 }
3451 if !self.projects.is_empty() {
3452 struct_ser.serialize_field("projects", &self.projects)?;
3453 }
3454 struct_ser.end()
3455 }
3456}
3457impl<'de> serde::Deserialize<'de> for OrganizationCostReport {
3458 #[allow(deprecated)]
3459 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3460 where
3461 D: serde::Deserializer<'de>,
3462 {
3463 const FIELDS: &[&str] = &["total", "services", "projects"];
3464 #[allow(clippy::enum_variant_names)]
3465 enum GeneratedField {
3466 Total,
3467 Services,
3468 Projects,
3469 __SkipField__,
3470 }
3471 impl<'de> serde::Deserialize<'de> for GeneratedField {
3472 fn deserialize<D>(
3473 deserializer: D,
3474 ) -> std::result::Result<GeneratedField, D::Error>
3475 where
3476 D: serde::Deserializer<'de>,
3477 {
3478 struct GeneratedVisitor;
3479 impl serde::de::Visitor<'_> for GeneratedVisitor {
3480 type Value = GeneratedField;
3481 fn expecting(
3482 &self,
3483 formatter: &mut std::fmt::Formatter<'_>,
3484 ) -> std::fmt::Result {
3485 write!(formatter, "expected one of: {:?}", & FIELDS)
3486 }
3487 #[allow(unused_variables)]
3488 fn visit_str<E>(
3489 self,
3490 value: &str,
3491 ) -> std::result::Result<GeneratedField, E>
3492 where
3493 E: serde::de::Error,
3494 {
3495 match value {
3496 "total" => Ok(GeneratedField::Total),
3497 "services" => Ok(GeneratedField::Services),
3498 "projects" => Ok(GeneratedField::Projects),
3499 _ => Ok(GeneratedField::__SkipField__),
3500 }
3501 }
3502 }
3503 deserializer.deserialize_identifier(GeneratedVisitor)
3504 }
3505 }
3506 struct GeneratedVisitor;
3507 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3508 type Value = OrganizationCostReport;
3509 fn expecting(
3510 &self,
3511 formatter: &mut std::fmt::Formatter<'_>,
3512 ) -> std::fmt::Result {
3513 formatter
3514 .write_str(
3515 "struct origincloud.billing.v1beta1.OrganizationCostReport",
3516 )
3517 }
3518 fn visit_map<V>(
3519 self,
3520 mut map_: V,
3521 ) -> std::result::Result<OrganizationCostReport, V::Error>
3522 where
3523 V: serde::de::MapAccess<'de>,
3524 {
3525 let mut total__ = None;
3526 let mut services__ = None;
3527 let mut projects__ = None;
3528 while let Some(k) = map_.next_key()? {
3529 match k {
3530 GeneratedField::Total => {
3531 if total__.is_some() {
3532 return Err(serde::de::Error::duplicate_field("total"));
3533 }
3534 total__ = Some(map_.next_value()?);
3535 }
3536 GeneratedField::Services => {
3537 if services__.is_some() {
3538 return Err(serde::de::Error::duplicate_field("services"));
3539 }
3540 services__ = Some(map_.next_value()?);
3541 }
3542 GeneratedField::Projects => {
3543 if projects__.is_some() {
3544 return Err(serde::de::Error::duplicate_field("projects"));
3545 }
3546 projects__ = Some(map_.next_value()?);
3547 }
3548 GeneratedField::__SkipField__ => {
3549 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3550 }
3551 }
3552 }
3553 Ok(OrganizationCostReport {
3554 total: total__.unwrap_or_default(),
3555 services: services__.unwrap_or_default(),
3556 projects: projects__.unwrap_or_default(),
3557 })
3558 }
3559 }
3560 deserializer
3561 .deserialize_struct(
3562 "origincloud.billing.v1beta1.OrganizationCostReport",
3563 FIELDS,
3564 GeneratedVisitor,
3565 )
3566 }
3567}
3568impl serde::Serialize for PaymentMethod {
3569 #[allow(deprecated)]
3570 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3571 where
3572 S: serde::Serializer,
3573 {
3574 use serde::ser::SerializeStruct;
3575 let mut len = 0;
3576 if self.state != 0 {
3577 len += 1;
3578 }
3579 if !self.card_brand.is_empty() {
3580 len += 1;
3581 }
3582 if !self.card_last4.is_empty() {
3583 len += 1;
3584 }
3585 let mut struct_ser = serializer
3586 .serialize_struct("origincloud.billing.v1beta1.PaymentMethod", len)?;
3587 if self.state != 0 {
3588 let v = payment_method::State::try_from(self.state)
3589 .map_err(|_| serde::ser::Error::custom(
3590 format!("Invalid variant {}", self.state),
3591 ))?;
3592 struct_ser.serialize_field("state", &v)?;
3593 }
3594 if !self.card_brand.is_empty() {
3595 struct_ser.serialize_field("cardBrand", &self.card_brand)?;
3596 }
3597 if !self.card_last4.is_empty() {
3598 struct_ser.serialize_field("cardLast4", &self.card_last4)?;
3599 }
3600 struct_ser.end()
3601 }
3602}
3603impl<'de> serde::Deserialize<'de> for PaymentMethod {
3604 #[allow(deprecated)]
3605 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3606 where
3607 D: serde::Deserializer<'de>,
3608 {
3609 const FIELDS: &[&str] = &[
3610 "state",
3611 "card_brand",
3612 "cardBrand",
3613 "card_last4",
3614 "cardLast4",
3615 ];
3616 #[allow(clippy::enum_variant_names)]
3617 enum GeneratedField {
3618 State,
3619 CardBrand,
3620 CardLast4,
3621 __SkipField__,
3622 }
3623 impl<'de> serde::Deserialize<'de> for GeneratedField {
3624 fn deserialize<D>(
3625 deserializer: D,
3626 ) -> std::result::Result<GeneratedField, D::Error>
3627 where
3628 D: serde::Deserializer<'de>,
3629 {
3630 struct GeneratedVisitor;
3631 impl serde::de::Visitor<'_> for GeneratedVisitor {
3632 type Value = GeneratedField;
3633 fn expecting(
3634 &self,
3635 formatter: &mut std::fmt::Formatter<'_>,
3636 ) -> std::fmt::Result {
3637 write!(formatter, "expected one of: {:?}", & FIELDS)
3638 }
3639 #[allow(unused_variables)]
3640 fn visit_str<E>(
3641 self,
3642 value: &str,
3643 ) -> std::result::Result<GeneratedField, E>
3644 where
3645 E: serde::de::Error,
3646 {
3647 match value {
3648 "state" => Ok(GeneratedField::State),
3649 "cardBrand" | "card_brand" => Ok(GeneratedField::CardBrand),
3650 "cardLast4" | "card_last4" => Ok(GeneratedField::CardLast4),
3651 _ => Ok(GeneratedField::__SkipField__),
3652 }
3653 }
3654 }
3655 deserializer.deserialize_identifier(GeneratedVisitor)
3656 }
3657 }
3658 struct GeneratedVisitor;
3659 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3660 type Value = PaymentMethod;
3661 fn expecting(
3662 &self,
3663 formatter: &mut std::fmt::Formatter<'_>,
3664 ) -> std::fmt::Result {
3665 formatter.write_str("struct origincloud.billing.v1beta1.PaymentMethod")
3666 }
3667 fn visit_map<V>(
3668 self,
3669 mut map_: V,
3670 ) -> std::result::Result<PaymentMethod, V::Error>
3671 where
3672 V: serde::de::MapAccess<'de>,
3673 {
3674 let mut state__ = None;
3675 let mut card_brand__ = None;
3676 let mut card_last4__ = None;
3677 while let Some(k) = map_.next_key()? {
3678 match k {
3679 GeneratedField::State => {
3680 if state__.is_some() {
3681 return Err(serde::de::Error::duplicate_field("state"));
3682 }
3683 state__ = Some(
3684 map_.next_value::<payment_method::State>()? as i32,
3685 );
3686 }
3687 GeneratedField::CardBrand => {
3688 if card_brand__.is_some() {
3689 return Err(serde::de::Error::duplicate_field("cardBrand"));
3690 }
3691 card_brand__ = Some(map_.next_value()?);
3692 }
3693 GeneratedField::CardLast4 => {
3694 if card_last4__.is_some() {
3695 return Err(serde::de::Error::duplicate_field("cardLast4"));
3696 }
3697 card_last4__ = Some(map_.next_value()?);
3698 }
3699 GeneratedField::__SkipField__ => {
3700 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3701 }
3702 }
3703 }
3704 Ok(PaymentMethod {
3705 state: state__.unwrap_or_default(),
3706 card_brand: card_brand__.unwrap_or_default(),
3707 card_last4: card_last4__.unwrap_or_default(),
3708 })
3709 }
3710 }
3711 deserializer
3712 .deserialize_struct(
3713 "origincloud.billing.v1beta1.PaymentMethod",
3714 FIELDS,
3715 GeneratedVisitor,
3716 )
3717 }
3718}
3719impl serde::Serialize for payment_method::State {
3720 #[allow(deprecated)]
3721 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3722 where
3723 S: serde::Serializer,
3724 {
3725 let variant = match self {
3726 Self::Unspecified => "STATE_UNSPECIFIED",
3727 Self::Missing => "MISSING",
3728 Self::Verified => "VERIFIED",
3729 Self::NotRequired => "NOT_REQUIRED",
3730 };
3731 serializer.serialize_str(variant)
3732 }
3733}
3734impl<'de> serde::Deserialize<'de> for payment_method::State {
3735 #[allow(deprecated)]
3736 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3737 where
3738 D: serde::Deserializer<'de>,
3739 {
3740 const FIELDS: &[&str] = &[
3741 "STATE_UNSPECIFIED",
3742 "MISSING",
3743 "VERIFIED",
3744 "NOT_REQUIRED",
3745 ];
3746 struct GeneratedVisitor;
3747 impl serde::de::Visitor<'_> for GeneratedVisitor {
3748 type Value = payment_method::State;
3749 fn expecting(
3750 &self,
3751 formatter: &mut std::fmt::Formatter<'_>,
3752 ) -> std::fmt::Result {
3753 write!(formatter, "expected one of: {:?}", & FIELDS)
3754 }
3755 fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
3756 where
3757 E: serde::de::Error,
3758 {
3759 i32::try_from(v)
3760 .ok()
3761 .and_then(|x| {
3762 x
3763 .try_into()
3764 .ok()
3765 .or_else(|| Some(payment_method::State::default()))
3766 })
3767 .ok_or_else(|| {
3768 serde::de::Error::invalid_value(
3769 serde::de::Unexpected::Signed(v),
3770 &self,
3771 )
3772 })
3773 }
3774 fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
3775 where
3776 E: serde::de::Error,
3777 {
3778 i32::try_from(v)
3779 .ok()
3780 .and_then(|x| {
3781 x
3782 .try_into()
3783 .ok()
3784 .or_else(|| Some(payment_method::State::default()))
3785 })
3786 .ok_or_else(|| {
3787 serde::de::Error::invalid_value(
3788 serde::de::Unexpected::Unsigned(v),
3789 &self,
3790 )
3791 })
3792 }
3793 fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3794 where
3795 E: serde::de::Error,
3796 {
3797 match value {
3798 "STATE_UNSPECIFIED" => Ok(payment_method::State::Unspecified),
3799 "MISSING" => Ok(payment_method::State::Missing),
3800 "VERIFIED" => Ok(payment_method::State::Verified),
3801 "NOT_REQUIRED" => Ok(payment_method::State::NotRequired),
3802 _ => Ok(payment_method::State::default()),
3803 }
3804 }
3805 }
3806 deserializer.deserialize_any(GeneratedVisitor)
3807 }
3808}
3809impl serde::Serialize for Price {
3810 #[allow(deprecated)]
3811 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3812 where
3813 S: serde::Serializer,
3814 {
3815 use serde::ser::SerializeStruct;
3816 let mut len = 0;
3817 if !self.product_key.is_empty() {
3818 len += 1;
3819 }
3820 if !self.dimensions.is_empty() {
3821 len += 1;
3822 }
3823 if !self.unit_type.is_empty() {
3824 len += 1;
3825 }
3826 if self.unit_count != 0 {
3827 len += 1;
3828 }
3829 if !self.amount.is_empty() {
3830 len += 1;
3831 }
3832 if self.valid_from.is_some() {
3833 len += 1;
3834 }
3835 if self.valid_until.is_some() {
3836 len += 1;
3837 }
3838 let mut struct_ser = serializer
3839 .serialize_struct("origincloud.billing.v1beta1.Price", len)?;
3840 if !self.product_key.is_empty() {
3841 struct_ser.serialize_field("product_key", &self.product_key)?;
3842 }
3843 if !self.dimensions.is_empty() {
3844 struct_ser.serialize_field("dimensions", &self.dimensions)?;
3845 }
3846 if !self.unit_type.is_empty() {
3847 struct_ser.serialize_field("unit_type", &self.unit_type)?;
3848 }
3849 if self.unit_count != 0 {
3850 struct_ser.serialize_field("unit_count", &self.unit_count)?;
3851 }
3852 if !self.amount.is_empty() {
3853 struct_ser.serialize_field("amount", &self.amount)?;
3854 }
3855 if let Some(v) = self.valid_from.as_ref() {
3856 struct_ser.serialize_field("valid_from", v)?;
3857 }
3858 if let Some(v) = self.valid_until.as_ref() {
3859 struct_ser.serialize_field("valid_until", v)?;
3860 }
3861 struct_ser.end()
3862 }
3863}
3864impl<'de> serde::Deserialize<'de> for Price {
3865 #[allow(deprecated)]
3866 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3867 where
3868 D: serde::Deserializer<'de>,
3869 {
3870 const FIELDS: &[&str] = &[
3871 "product_key",
3872 "dimensions",
3873 "unit_type",
3874 "unit_count",
3875 "amount",
3876 "valid_from",
3877 "valid_until",
3878 ];
3879 #[allow(clippy::enum_variant_names)]
3880 enum GeneratedField {
3881 ProductKey,
3882 Dimensions,
3883 UnitType,
3884 UnitCount,
3885 Amount,
3886 ValidFrom,
3887 ValidUntil,
3888 __SkipField__,
3889 }
3890 impl<'de> serde::Deserialize<'de> for GeneratedField {
3891 fn deserialize<D>(
3892 deserializer: D,
3893 ) -> std::result::Result<GeneratedField, D::Error>
3894 where
3895 D: serde::Deserializer<'de>,
3896 {
3897 struct GeneratedVisitor;
3898 impl serde::de::Visitor<'_> for GeneratedVisitor {
3899 type Value = GeneratedField;
3900 fn expecting(
3901 &self,
3902 formatter: &mut std::fmt::Formatter<'_>,
3903 ) -> std::fmt::Result {
3904 write!(formatter, "expected one of: {:?}", & FIELDS)
3905 }
3906 #[allow(unused_variables)]
3907 fn visit_str<E>(
3908 self,
3909 value: &str,
3910 ) -> std::result::Result<GeneratedField, E>
3911 where
3912 E: serde::de::Error,
3913 {
3914 match value {
3915 "product_key" => Ok(GeneratedField::ProductKey),
3916 "dimensions" => Ok(GeneratedField::Dimensions),
3917 "unit_type" => Ok(GeneratedField::UnitType),
3918 "unit_count" => Ok(GeneratedField::UnitCount),
3919 "amount" => Ok(GeneratedField::Amount),
3920 "valid_from" => Ok(GeneratedField::ValidFrom),
3921 "valid_until" => Ok(GeneratedField::ValidUntil),
3922 _ => Ok(GeneratedField::__SkipField__),
3923 }
3924 }
3925 }
3926 deserializer.deserialize_identifier(GeneratedVisitor)
3927 }
3928 }
3929 struct GeneratedVisitor;
3930 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3931 type Value = Price;
3932 fn expecting(
3933 &self,
3934 formatter: &mut std::fmt::Formatter<'_>,
3935 ) -> std::fmt::Result {
3936 formatter.write_str("struct origincloud.billing.v1beta1.Price")
3937 }
3938 fn visit_map<V>(self, mut map_: V) -> std::result::Result<Price, V::Error>
3939 where
3940 V: serde::de::MapAccess<'de>,
3941 {
3942 let mut product_key__ = None;
3943 let mut dimensions__ = None;
3944 let mut unit_type__ = None;
3945 let mut unit_count__ = None;
3946 let mut amount__ = None;
3947 let mut valid_from__ = None;
3948 let mut valid_until__ = None;
3949 while let Some(k) = map_.next_key()? {
3950 match k {
3951 GeneratedField::ProductKey => {
3952 if product_key__.is_some() {
3953 return Err(
3954 serde::de::Error::duplicate_field("product_key"),
3955 );
3956 }
3957 product_key__ = Some(map_.next_value()?);
3958 }
3959 GeneratedField::Dimensions => {
3960 if dimensions__.is_some() {
3961 return Err(serde::de::Error::duplicate_field("dimensions"));
3962 }
3963 dimensions__ = Some(
3964 map_.next_value::<std::collections::BTreeMap<_, _>>()?,
3965 );
3966 }
3967 GeneratedField::UnitType => {
3968 if unit_type__.is_some() {
3969 return Err(serde::de::Error::duplicate_field("unit_type"));
3970 }
3971 unit_type__ = Some(map_.next_value()?);
3972 }
3973 GeneratedField::UnitCount => {
3974 if unit_count__.is_some() {
3975 return Err(serde::de::Error::duplicate_field("unit_count"));
3976 }
3977 unit_count__ = Some(
3978 map_
3979 .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3980 .0,
3981 );
3982 }
3983 GeneratedField::Amount => {
3984 if amount__.is_some() {
3985 return Err(serde::de::Error::duplicate_field("amount"));
3986 }
3987 amount__ = Some(map_.next_value()?);
3988 }
3989 GeneratedField::ValidFrom => {
3990 if valid_from__.is_some() {
3991 return Err(serde::de::Error::duplicate_field("valid_from"));
3992 }
3993 valid_from__ = map_.next_value()?;
3994 }
3995 GeneratedField::ValidUntil => {
3996 if valid_until__.is_some() {
3997 return Err(
3998 serde::de::Error::duplicate_field("valid_until"),
3999 );
4000 }
4001 valid_until__ = map_.next_value()?;
4002 }
4003 GeneratedField::__SkipField__ => {
4004 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4005 }
4006 }
4007 }
4008 Ok(Price {
4009 product_key: product_key__.unwrap_or_default(),
4010 dimensions: dimensions__.unwrap_or_default(),
4011 unit_type: unit_type__.unwrap_or_default(),
4012 unit_count: unit_count__.unwrap_or_default(),
4013 amount: amount__.unwrap_or_default(),
4014 valid_from: valid_from__,
4015 valid_until: valid_until__,
4016 })
4017 }
4018 }
4019 deserializer
4020 .deserialize_struct(
4021 "origincloud.billing.v1beta1.Price",
4022 FIELDS,
4023 GeneratedVisitor,
4024 )
4025 }
4026}
4027impl serde::Serialize for PriceFamily {
4028 #[allow(deprecated)]
4029 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4030 where
4031 S: serde::Serializer,
4032 {
4033 use serde::ser::SerializeStruct;
4034 let mut len = 0;
4035 if !self.family.is_empty() {
4036 len += 1;
4037 }
4038 if !self.prices.is_empty() {
4039 len += 1;
4040 }
4041 let mut struct_ser = serializer
4042 .serialize_struct("origincloud.billing.v1beta1.PriceFamily", len)?;
4043 if !self.family.is_empty() {
4044 struct_ser.serialize_field("family", &self.family)?;
4045 }
4046 if !self.prices.is_empty() {
4047 struct_ser.serialize_field("prices", &self.prices)?;
4048 }
4049 struct_ser.end()
4050 }
4051}
4052impl<'de> serde::Deserialize<'de> for PriceFamily {
4053 #[allow(deprecated)]
4054 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4055 where
4056 D: serde::Deserializer<'de>,
4057 {
4058 const FIELDS: &[&str] = &["family", "prices"];
4059 #[allow(clippy::enum_variant_names)]
4060 enum GeneratedField {
4061 Family,
4062 Prices,
4063 __SkipField__,
4064 }
4065 impl<'de> serde::Deserialize<'de> for GeneratedField {
4066 fn deserialize<D>(
4067 deserializer: D,
4068 ) -> std::result::Result<GeneratedField, D::Error>
4069 where
4070 D: serde::Deserializer<'de>,
4071 {
4072 struct GeneratedVisitor;
4073 impl serde::de::Visitor<'_> for GeneratedVisitor {
4074 type Value = GeneratedField;
4075 fn expecting(
4076 &self,
4077 formatter: &mut std::fmt::Formatter<'_>,
4078 ) -> std::fmt::Result {
4079 write!(formatter, "expected one of: {:?}", & FIELDS)
4080 }
4081 #[allow(unused_variables)]
4082 fn visit_str<E>(
4083 self,
4084 value: &str,
4085 ) -> std::result::Result<GeneratedField, E>
4086 where
4087 E: serde::de::Error,
4088 {
4089 match value {
4090 "family" => Ok(GeneratedField::Family),
4091 "prices" => Ok(GeneratedField::Prices),
4092 _ => Ok(GeneratedField::__SkipField__),
4093 }
4094 }
4095 }
4096 deserializer.deserialize_identifier(GeneratedVisitor)
4097 }
4098 }
4099 struct GeneratedVisitor;
4100 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4101 type Value = PriceFamily;
4102 fn expecting(
4103 &self,
4104 formatter: &mut std::fmt::Formatter<'_>,
4105 ) -> std::fmt::Result {
4106 formatter.write_str("struct origincloud.billing.v1beta1.PriceFamily")
4107 }
4108 fn visit_map<V>(
4109 self,
4110 mut map_: V,
4111 ) -> std::result::Result<PriceFamily, V::Error>
4112 where
4113 V: serde::de::MapAccess<'de>,
4114 {
4115 let mut family__ = None;
4116 let mut prices__ = None;
4117 while let Some(k) = map_.next_key()? {
4118 match k {
4119 GeneratedField::Family => {
4120 if family__.is_some() {
4121 return Err(serde::de::Error::duplicate_field("family"));
4122 }
4123 family__ = Some(map_.next_value()?);
4124 }
4125 GeneratedField::Prices => {
4126 if prices__.is_some() {
4127 return Err(serde::de::Error::duplicate_field("prices"));
4128 }
4129 prices__ = Some(map_.next_value()?);
4130 }
4131 GeneratedField::__SkipField__ => {
4132 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4133 }
4134 }
4135 }
4136 Ok(PriceFamily {
4137 family: family__.unwrap_or_default(),
4138 prices: prices__.unwrap_or_default(),
4139 })
4140 }
4141 }
4142 deserializer
4143 .deserialize_struct(
4144 "origincloud.billing.v1beta1.PriceFamily",
4145 FIELDS,
4146 GeneratedVisitor,
4147 )
4148 }
4149}
4150impl serde::Serialize for PriceList {
4151 #[allow(deprecated)]
4152 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4153 where
4154 S: serde::Serializer,
4155 {
4156 use serde::ser::SerializeStruct;
4157 let mut len = 0;
4158 if !self.currency.is_empty() {
4159 len += 1;
4160 }
4161 if self.amounts_exclude_vat {
4162 len += 1;
4163 }
4164 if self.last_changed.is_some() {
4165 len += 1;
4166 }
4167 if !self.families.is_empty() {
4168 len += 1;
4169 }
4170 let mut struct_ser = serializer
4171 .serialize_struct("origincloud.billing.v1beta1.PriceList", len)?;
4172 if !self.currency.is_empty() {
4173 struct_ser.serialize_field("currency", &self.currency)?;
4174 }
4175 if self.amounts_exclude_vat {
4176 struct_ser
4177 .serialize_field("amounts_exclude_vat", &self.amounts_exclude_vat)?;
4178 }
4179 if let Some(v) = self.last_changed.as_ref() {
4180 struct_ser.serialize_field("last_changed", v)?;
4181 }
4182 if !self.families.is_empty() {
4183 struct_ser.serialize_field("families", &self.families)?;
4184 }
4185 struct_ser.end()
4186 }
4187}
4188impl<'de> serde::Deserialize<'de> for PriceList {
4189 #[allow(deprecated)]
4190 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4191 where
4192 D: serde::Deserializer<'de>,
4193 {
4194 const FIELDS: &[&str] = &[
4195 "currency",
4196 "amounts_exclude_vat",
4197 "last_changed",
4198 "families",
4199 ];
4200 #[allow(clippy::enum_variant_names)]
4201 enum GeneratedField {
4202 Currency,
4203 AmountsExcludeVat,
4204 LastChanged,
4205 Families,
4206 __SkipField__,
4207 }
4208 impl<'de> serde::Deserialize<'de> for GeneratedField {
4209 fn deserialize<D>(
4210 deserializer: D,
4211 ) -> std::result::Result<GeneratedField, D::Error>
4212 where
4213 D: serde::Deserializer<'de>,
4214 {
4215 struct GeneratedVisitor;
4216 impl serde::de::Visitor<'_> for GeneratedVisitor {
4217 type Value = GeneratedField;
4218 fn expecting(
4219 &self,
4220 formatter: &mut std::fmt::Formatter<'_>,
4221 ) -> std::fmt::Result {
4222 write!(formatter, "expected one of: {:?}", & FIELDS)
4223 }
4224 #[allow(unused_variables)]
4225 fn visit_str<E>(
4226 self,
4227 value: &str,
4228 ) -> std::result::Result<GeneratedField, E>
4229 where
4230 E: serde::de::Error,
4231 {
4232 match value {
4233 "currency" => Ok(GeneratedField::Currency),
4234 "amounts_exclude_vat" => {
4235 Ok(GeneratedField::AmountsExcludeVat)
4236 }
4237 "last_changed" => Ok(GeneratedField::LastChanged),
4238 "families" => Ok(GeneratedField::Families),
4239 _ => Ok(GeneratedField::__SkipField__),
4240 }
4241 }
4242 }
4243 deserializer.deserialize_identifier(GeneratedVisitor)
4244 }
4245 }
4246 struct GeneratedVisitor;
4247 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4248 type Value = PriceList;
4249 fn expecting(
4250 &self,
4251 formatter: &mut std::fmt::Formatter<'_>,
4252 ) -> std::fmt::Result {
4253 formatter.write_str("struct origincloud.billing.v1beta1.PriceList")
4254 }
4255 fn visit_map<V>(
4256 self,
4257 mut map_: V,
4258 ) -> std::result::Result<PriceList, V::Error>
4259 where
4260 V: serde::de::MapAccess<'de>,
4261 {
4262 let mut currency__ = None;
4263 let mut amounts_exclude_vat__ = None;
4264 let mut last_changed__ = None;
4265 let mut families__ = None;
4266 while let Some(k) = map_.next_key()? {
4267 match k {
4268 GeneratedField::Currency => {
4269 if currency__.is_some() {
4270 return Err(serde::de::Error::duplicate_field("currency"));
4271 }
4272 currency__ = Some(map_.next_value()?);
4273 }
4274 GeneratedField::AmountsExcludeVat => {
4275 if amounts_exclude_vat__.is_some() {
4276 return Err(
4277 serde::de::Error::duplicate_field("amounts_exclude_vat"),
4278 );
4279 }
4280 amounts_exclude_vat__ = Some(map_.next_value()?);
4281 }
4282 GeneratedField::LastChanged => {
4283 if last_changed__.is_some() {
4284 return Err(
4285 serde::de::Error::duplicate_field("last_changed"),
4286 );
4287 }
4288 last_changed__ = map_.next_value()?;
4289 }
4290 GeneratedField::Families => {
4291 if families__.is_some() {
4292 return Err(serde::de::Error::duplicate_field("families"));
4293 }
4294 families__ = Some(map_.next_value()?);
4295 }
4296 GeneratedField::__SkipField__ => {
4297 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4298 }
4299 }
4300 }
4301 Ok(PriceList {
4302 currency: currency__.unwrap_or_default(),
4303 amounts_exclude_vat: amounts_exclude_vat__.unwrap_or_default(),
4304 last_changed: last_changed__,
4305 families: families__.unwrap_or_default(),
4306 })
4307 }
4308 }
4309 deserializer
4310 .deserialize_struct(
4311 "origincloud.billing.v1beta1.PriceList",
4312 FIELDS,
4313 GeneratedVisitor,
4314 )
4315 }
4316}
4317impl serde::Serialize for ProductCost {
4318 #[allow(deprecated)]
4319 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4320 where
4321 S: serde::Serializer,
4322 {
4323 use serde::ser::SerializeStruct;
4324 let mut len = 0;
4325 if !self.product_key.is_empty() {
4326 len += 1;
4327 }
4328 if !self.total.is_empty() {
4329 len += 1;
4330 }
4331 if !self.buckets.is_empty() {
4332 len += 1;
4333 }
4334 let mut struct_ser = serializer
4335 .serialize_struct("origincloud.billing.v1beta1.ProductCost", len)?;
4336 if !self.product_key.is_empty() {
4337 struct_ser.serialize_field("productKey", &self.product_key)?;
4338 }
4339 if !self.total.is_empty() {
4340 struct_ser.serialize_field("total", &self.total)?;
4341 }
4342 if !self.buckets.is_empty() {
4343 struct_ser.serialize_field("buckets", &self.buckets)?;
4344 }
4345 struct_ser.end()
4346 }
4347}
4348impl<'de> serde::Deserialize<'de> for ProductCost {
4349 #[allow(deprecated)]
4350 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4351 where
4352 D: serde::Deserializer<'de>,
4353 {
4354 const FIELDS: &[&str] = &["product_key", "productKey", "total", "buckets"];
4355 #[allow(clippy::enum_variant_names)]
4356 enum GeneratedField {
4357 ProductKey,
4358 Total,
4359 Buckets,
4360 __SkipField__,
4361 }
4362 impl<'de> serde::Deserialize<'de> for GeneratedField {
4363 fn deserialize<D>(
4364 deserializer: D,
4365 ) -> std::result::Result<GeneratedField, D::Error>
4366 where
4367 D: serde::Deserializer<'de>,
4368 {
4369 struct GeneratedVisitor;
4370 impl serde::de::Visitor<'_> for GeneratedVisitor {
4371 type Value = GeneratedField;
4372 fn expecting(
4373 &self,
4374 formatter: &mut std::fmt::Formatter<'_>,
4375 ) -> std::fmt::Result {
4376 write!(formatter, "expected one of: {:?}", & FIELDS)
4377 }
4378 #[allow(unused_variables)]
4379 fn visit_str<E>(
4380 self,
4381 value: &str,
4382 ) -> std::result::Result<GeneratedField, E>
4383 where
4384 E: serde::de::Error,
4385 {
4386 match value {
4387 "productKey" | "product_key" => {
4388 Ok(GeneratedField::ProductKey)
4389 }
4390 "total" => Ok(GeneratedField::Total),
4391 "buckets" => Ok(GeneratedField::Buckets),
4392 _ => Ok(GeneratedField::__SkipField__),
4393 }
4394 }
4395 }
4396 deserializer.deserialize_identifier(GeneratedVisitor)
4397 }
4398 }
4399 struct GeneratedVisitor;
4400 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4401 type Value = ProductCost;
4402 fn expecting(
4403 &self,
4404 formatter: &mut std::fmt::Formatter<'_>,
4405 ) -> std::fmt::Result {
4406 formatter.write_str("struct origincloud.billing.v1beta1.ProductCost")
4407 }
4408 fn visit_map<V>(
4409 self,
4410 mut map_: V,
4411 ) -> std::result::Result<ProductCost, V::Error>
4412 where
4413 V: serde::de::MapAccess<'de>,
4414 {
4415 let mut product_key__ = None;
4416 let mut total__ = None;
4417 let mut buckets__ = None;
4418 while let Some(k) = map_.next_key()? {
4419 match k {
4420 GeneratedField::ProductKey => {
4421 if product_key__.is_some() {
4422 return Err(serde::de::Error::duplicate_field("productKey"));
4423 }
4424 product_key__ = Some(map_.next_value()?);
4425 }
4426 GeneratedField::Total => {
4427 if total__.is_some() {
4428 return Err(serde::de::Error::duplicate_field("total"));
4429 }
4430 total__ = Some(map_.next_value()?);
4431 }
4432 GeneratedField::Buckets => {
4433 if buckets__.is_some() {
4434 return Err(serde::de::Error::duplicate_field("buckets"));
4435 }
4436 buckets__ = Some(map_.next_value()?);
4437 }
4438 GeneratedField::__SkipField__ => {
4439 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4440 }
4441 }
4442 }
4443 Ok(ProductCost {
4444 product_key: product_key__.unwrap_or_default(),
4445 total: total__.unwrap_or_default(),
4446 buckets: buckets__.unwrap_or_default(),
4447 })
4448 }
4449 }
4450 deserializer
4451 .deserialize_struct(
4452 "origincloud.billing.v1beta1.ProductCost",
4453 FIELDS,
4454 GeneratedVisitor,
4455 )
4456 }
4457}
4458impl serde::Serialize for ProjectBillingInfo {
4459 #[allow(deprecated)]
4460 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4461 where
4462 S: serde::Serializer,
4463 {
4464 use serde::ser::SerializeStruct;
4465 let mut len = 0;
4466 if !self.name.is_empty() {
4467 len += 1;
4468 }
4469 if !self.billing_account.is_empty() {
4470 len += 1;
4471 }
4472 let mut struct_ser = serializer
4473 .serialize_struct("origincloud.billing.v1beta1.ProjectBillingInfo", len)?;
4474 if !self.name.is_empty() {
4475 struct_ser.serialize_field("name", &self.name)?;
4476 }
4477 if !self.billing_account.is_empty() {
4478 struct_ser.serialize_field("billingAccount", &self.billing_account)?;
4479 }
4480 struct_ser.end()
4481 }
4482}
4483impl<'de> serde::Deserialize<'de> for ProjectBillingInfo {
4484 #[allow(deprecated)]
4485 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4486 where
4487 D: serde::Deserializer<'de>,
4488 {
4489 const FIELDS: &[&str] = &["name", "billing_account", "billingAccount"];
4490 #[allow(clippy::enum_variant_names)]
4491 enum GeneratedField {
4492 Name,
4493 BillingAccount,
4494 __SkipField__,
4495 }
4496 impl<'de> serde::Deserialize<'de> for GeneratedField {
4497 fn deserialize<D>(
4498 deserializer: D,
4499 ) -> std::result::Result<GeneratedField, D::Error>
4500 where
4501 D: serde::Deserializer<'de>,
4502 {
4503 struct GeneratedVisitor;
4504 impl serde::de::Visitor<'_> for GeneratedVisitor {
4505 type Value = GeneratedField;
4506 fn expecting(
4507 &self,
4508 formatter: &mut std::fmt::Formatter<'_>,
4509 ) -> std::fmt::Result {
4510 write!(formatter, "expected one of: {:?}", & FIELDS)
4511 }
4512 #[allow(unused_variables)]
4513 fn visit_str<E>(
4514 self,
4515 value: &str,
4516 ) -> std::result::Result<GeneratedField, E>
4517 where
4518 E: serde::de::Error,
4519 {
4520 match value {
4521 "name" => Ok(GeneratedField::Name),
4522 "billingAccount" | "billing_account" => {
4523 Ok(GeneratedField::BillingAccount)
4524 }
4525 _ => Ok(GeneratedField::__SkipField__),
4526 }
4527 }
4528 }
4529 deserializer.deserialize_identifier(GeneratedVisitor)
4530 }
4531 }
4532 struct GeneratedVisitor;
4533 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4534 type Value = ProjectBillingInfo;
4535 fn expecting(
4536 &self,
4537 formatter: &mut std::fmt::Formatter<'_>,
4538 ) -> std::fmt::Result {
4539 formatter
4540 .write_str("struct origincloud.billing.v1beta1.ProjectBillingInfo")
4541 }
4542 fn visit_map<V>(
4543 self,
4544 mut map_: V,
4545 ) -> std::result::Result<ProjectBillingInfo, V::Error>
4546 where
4547 V: serde::de::MapAccess<'de>,
4548 {
4549 let mut name__ = None;
4550 let mut billing_account__ = None;
4551 while let Some(k) = map_.next_key()? {
4552 match k {
4553 GeneratedField::Name => {
4554 if name__.is_some() {
4555 return Err(serde::de::Error::duplicate_field("name"));
4556 }
4557 name__ = Some(map_.next_value()?);
4558 }
4559 GeneratedField::BillingAccount => {
4560 if billing_account__.is_some() {
4561 return Err(
4562 serde::de::Error::duplicate_field("billingAccount"),
4563 );
4564 }
4565 billing_account__ = Some(map_.next_value()?);
4566 }
4567 GeneratedField::__SkipField__ => {
4568 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4569 }
4570 }
4571 }
4572 Ok(ProjectBillingInfo {
4573 name: name__.unwrap_or_default(),
4574 billing_account: billing_account__.unwrap_or_default(),
4575 })
4576 }
4577 }
4578 deserializer
4579 .deserialize_struct(
4580 "origincloud.billing.v1beta1.ProjectBillingInfo",
4581 FIELDS,
4582 GeneratedVisitor,
4583 )
4584 }
4585}
4586impl serde::Serialize for ProjectCost {
4587 #[allow(deprecated)]
4588 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4589 where
4590 S: serde::Serializer,
4591 {
4592 use serde::ser::SerializeStruct;
4593 let mut len = 0;
4594 if !self.project.is_empty() {
4595 len += 1;
4596 }
4597 if !self.total.is_empty() {
4598 len += 1;
4599 }
4600 if !self.buckets.is_empty() {
4601 len += 1;
4602 }
4603 let mut struct_ser = serializer
4604 .serialize_struct("origincloud.billing.v1beta1.ProjectCost", len)?;
4605 if !self.project.is_empty() {
4606 struct_ser.serialize_field("project", &self.project)?;
4607 }
4608 if !self.total.is_empty() {
4609 struct_ser.serialize_field("total", &self.total)?;
4610 }
4611 if !self.buckets.is_empty() {
4612 struct_ser.serialize_field("buckets", &self.buckets)?;
4613 }
4614 struct_ser.end()
4615 }
4616}
4617impl<'de> serde::Deserialize<'de> for ProjectCost {
4618 #[allow(deprecated)]
4619 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4620 where
4621 D: serde::Deserializer<'de>,
4622 {
4623 const FIELDS: &[&str] = &["project", "total", "buckets"];
4624 #[allow(clippy::enum_variant_names)]
4625 enum GeneratedField {
4626 Project,
4627 Total,
4628 Buckets,
4629 __SkipField__,
4630 }
4631 impl<'de> serde::Deserialize<'de> for GeneratedField {
4632 fn deserialize<D>(
4633 deserializer: D,
4634 ) -> std::result::Result<GeneratedField, D::Error>
4635 where
4636 D: serde::Deserializer<'de>,
4637 {
4638 struct GeneratedVisitor;
4639 impl serde::de::Visitor<'_> for GeneratedVisitor {
4640 type Value = GeneratedField;
4641 fn expecting(
4642 &self,
4643 formatter: &mut std::fmt::Formatter<'_>,
4644 ) -> std::fmt::Result {
4645 write!(formatter, "expected one of: {:?}", & FIELDS)
4646 }
4647 #[allow(unused_variables)]
4648 fn visit_str<E>(
4649 self,
4650 value: &str,
4651 ) -> std::result::Result<GeneratedField, E>
4652 where
4653 E: serde::de::Error,
4654 {
4655 match value {
4656 "project" => Ok(GeneratedField::Project),
4657 "total" => Ok(GeneratedField::Total),
4658 "buckets" => Ok(GeneratedField::Buckets),
4659 _ => Ok(GeneratedField::__SkipField__),
4660 }
4661 }
4662 }
4663 deserializer.deserialize_identifier(GeneratedVisitor)
4664 }
4665 }
4666 struct GeneratedVisitor;
4667 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4668 type Value = ProjectCost;
4669 fn expecting(
4670 &self,
4671 formatter: &mut std::fmt::Formatter<'_>,
4672 ) -> std::fmt::Result {
4673 formatter.write_str("struct origincloud.billing.v1beta1.ProjectCost")
4674 }
4675 fn visit_map<V>(
4676 self,
4677 mut map_: V,
4678 ) -> std::result::Result<ProjectCost, V::Error>
4679 where
4680 V: serde::de::MapAccess<'de>,
4681 {
4682 let mut project__ = None;
4683 let mut total__ = None;
4684 let mut buckets__ = None;
4685 while let Some(k) = map_.next_key()? {
4686 match k {
4687 GeneratedField::Project => {
4688 if project__.is_some() {
4689 return Err(serde::de::Error::duplicate_field("project"));
4690 }
4691 project__ = Some(map_.next_value()?);
4692 }
4693 GeneratedField::Total => {
4694 if total__.is_some() {
4695 return Err(serde::de::Error::duplicate_field("total"));
4696 }
4697 total__ = Some(map_.next_value()?);
4698 }
4699 GeneratedField::Buckets => {
4700 if buckets__.is_some() {
4701 return Err(serde::de::Error::duplicate_field("buckets"));
4702 }
4703 buckets__ = Some(map_.next_value()?);
4704 }
4705 GeneratedField::__SkipField__ => {
4706 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4707 }
4708 }
4709 }
4710 Ok(ProjectCost {
4711 project: project__.unwrap_or_default(),
4712 total: total__.unwrap_or_default(),
4713 buckets: buckets__.unwrap_or_default(),
4714 })
4715 }
4716 }
4717 deserializer
4718 .deserialize_struct(
4719 "origincloud.billing.v1beta1.ProjectCost",
4720 FIELDS,
4721 GeneratedVisitor,
4722 )
4723 }
4724}
4725impl serde::Serialize for QueryBillingAccountCostRequest {
4726 #[allow(deprecated)]
4727 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4728 where
4729 S: serde::Serializer,
4730 {
4731 use serde::ser::SerializeStruct;
4732 let mut len = 0;
4733 if !self.billing_account.is_empty() {
4734 len += 1;
4735 }
4736 if self.start_time.is_some() {
4737 len += 1;
4738 }
4739 if self.end_time.is_some() {
4740 len += 1;
4741 }
4742 if self.granularity != 0 {
4743 len += 1;
4744 }
4745 let mut struct_ser = serializer
4746 .serialize_struct(
4747 "origincloud.billing.v1beta1.QueryBillingAccountCostRequest",
4748 len,
4749 )?;
4750 if !self.billing_account.is_empty() {
4751 struct_ser.serialize_field("billingAccount", &self.billing_account)?;
4752 }
4753 if let Some(v) = self.start_time.as_ref() {
4754 struct_ser.serialize_field("startTime", v)?;
4755 }
4756 if let Some(v) = self.end_time.as_ref() {
4757 struct_ser.serialize_field("endTime", v)?;
4758 }
4759 if self.granularity != 0 {
4760 let v = Granularity::try_from(self.granularity)
4761 .map_err(|_| serde::ser::Error::custom(
4762 format!("Invalid variant {}", self.granularity),
4763 ))?;
4764 struct_ser.serialize_field("granularity", &v)?;
4765 }
4766 struct_ser.end()
4767 }
4768}
4769impl<'de> serde::Deserialize<'de> for QueryBillingAccountCostRequest {
4770 #[allow(deprecated)]
4771 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4772 where
4773 D: serde::Deserializer<'de>,
4774 {
4775 const FIELDS: &[&str] = &[
4776 "billing_account",
4777 "billingAccount",
4778 "start_time",
4779 "startTime",
4780 "end_time",
4781 "endTime",
4782 "granularity",
4783 ];
4784 #[allow(clippy::enum_variant_names)]
4785 enum GeneratedField {
4786 BillingAccount,
4787 StartTime,
4788 EndTime,
4789 Granularity,
4790 __SkipField__,
4791 }
4792 impl<'de> serde::Deserialize<'de> for GeneratedField {
4793 fn deserialize<D>(
4794 deserializer: D,
4795 ) -> std::result::Result<GeneratedField, D::Error>
4796 where
4797 D: serde::Deserializer<'de>,
4798 {
4799 struct GeneratedVisitor;
4800 impl serde::de::Visitor<'_> for GeneratedVisitor {
4801 type Value = GeneratedField;
4802 fn expecting(
4803 &self,
4804 formatter: &mut std::fmt::Formatter<'_>,
4805 ) -> std::fmt::Result {
4806 write!(formatter, "expected one of: {:?}", & FIELDS)
4807 }
4808 #[allow(unused_variables)]
4809 fn visit_str<E>(
4810 self,
4811 value: &str,
4812 ) -> std::result::Result<GeneratedField, E>
4813 where
4814 E: serde::de::Error,
4815 {
4816 match value {
4817 "billingAccount" | "billing_account" => {
4818 Ok(GeneratedField::BillingAccount)
4819 }
4820 "startTime" | "start_time" => Ok(GeneratedField::StartTime),
4821 "endTime" | "end_time" => Ok(GeneratedField::EndTime),
4822 "granularity" => Ok(GeneratedField::Granularity),
4823 _ => Ok(GeneratedField::__SkipField__),
4824 }
4825 }
4826 }
4827 deserializer.deserialize_identifier(GeneratedVisitor)
4828 }
4829 }
4830 struct GeneratedVisitor;
4831 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4832 type Value = QueryBillingAccountCostRequest;
4833 fn expecting(
4834 &self,
4835 formatter: &mut std::fmt::Formatter<'_>,
4836 ) -> std::fmt::Result {
4837 formatter
4838 .write_str(
4839 "struct origincloud.billing.v1beta1.QueryBillingAccountCostRequest",
4840 )
4841 }
4842 fn visit_map<V>(
4843 self,
4844 mut map_: V,
4845 ) -> std::result::Result<QueryBillingAccountCostRequest, V::Error>
4846 where
4847 V: serde::de::MapAccess<'de>,
4848 {
4849 let mut billing_account__ = None;
4850 let mut start_time__ = None;
4851 let mut end_time__ = None;
4852 let mut granularity__ = None;
4853 while let Some(k) = map_.next_key()? {
4854 match k {
4855 GeneratedField::BillingAccount => {
4856 if billing_account__.is_some() {
4857 return Err(
4858 serde::de::Error::duplicate_field("billingAccount"),
4859 );
4860 }
4861 billing_account__ = Some(map_.next_value()?);
4862 }
4863 GeneratedField::StartTime => {
4864 if start_time__.is_some() {
4865 return Err(serde::de::Error::duplicate_field("startTime"));
4866 }
4867 start_time__ = map_.next_value()?;
4868 }
4869 GeneratedField::EndTime => {
4870 if end_time__.is_some() {
4871 return Err(serde::de::Error::duplicate_field("endTime"));
4872 }
4873 end_time__ = map_.next_value()?;
4874 }
4875 GeneratedField::Granularity => {
4876 if granularity__.is_some() {
4877 return Err(
4878 serde::de::Error::duplicate_field("granularity"),
4879 );
4880 }
4881 granularity__ = Some(
4882 map_.next_value::<Granularity>()? as i32,
4883 );
4884 }
4885 GeneratedField::__SkipField__ => {
4886 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4887 }
4888 }
4889 }
4890 Ok(QueryBillingAccountCostRequest {
4891 billing_account: billing_account__.unwrap_or_default(),
4892 start_time: start_time__,
4893 end_time: end_time__,
4894 granularity: granularity__.unwrap_or_default(),
4895 })
4896 }
4897 }
4898 deserializer
4899 .deserialize_struct(
4900 "origincloud.billing.v1beta1.QueryBillingAccountCostRequest",
4901 FIELDS,
4902 GeneratedVisitor,
4903 )
4904 }
4905}
4906impl serde::Serialize for QueryOrganizationCostRequest {
4907 #[allow(deprecated)]
4908 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4909 where
4910 S: serde::Serializer,
4911 {
4912 use serde::ser::SerializeStruct;
4913 let mut len = 0;
4914 if !self.organization.is_empty() {
4915 len += 1;
4916 }
4917 if self.start_time.is_some() {
4918 len += 1;
4919 }
4920 if self.end_time.is_some() {
4921 len += 1;
4922 }
4923 if self.granularity != 0 {
4924 len += 1;
4925 }
4926 let mut struct_ser = serializer
4927 .serialize_struct(
4928 "origincloud.billing.v1beta1.QueryOrganizationCostRequest",
4929 len,
4930 )?;
4931 if !self.organization.is_empty() {
4932 struct_ser.serialize_field("organization", &self.organization)?;
4933 }
4934 if let Some(v) = self.start_time.as_ref() {
4935 struct_ser.serialize_field("startTime", v)?;
4936 }
4937 if let Some(v) = self.end_time.as_ref() {
4938 struct_ser.serialize_field("endTime", v)?;
4939 }
4940 if self.granularity != 0 {
4941 let v = Granularity::try_from(self.granularity)
4942 .map_err(|_| serde::ser::Error::custom(
4943 format!("Invalid variant {}", self.granularity),
4944 ))?;
4945 struct_ser.serialize_field("granularity", &v)?;
4946 }
4947 struct_ser.end()
4948 }
4949}
4950impl<'de> serde::Deserialize<'de> for QueryOrganizationCostRequest {
4951 #[allow(deprecated)]
4952 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4953 where
4954 D: serde::Deserializer<'de>,
4955 {
4956 const FIELDS: &[&str] = &[
4957 "organization",
4958 "start_time",
4959 "startTime",
4960 "end_time",
4961 "endTime",
4962 "granularity",
4963 ];
4964 #[allow(clippy::enum_variant_names)]
4965 enum GeneratedField {
4966 Organization,
4967 StartTime,
4968 EndTime,
4969 Granularity,
4970 __SkipField__,
4971 }
4972 impl<'de> serde::Deserialize<'de> for GeneratedField {
4973 fn deserialize<D>(
4974 deserializer: D,
4975 ) -> std::result::Result<GeneratedField, D::Error>
4976 where
4977 D: serde::Deserializer<'de>,
4978 {
4979 struct GeneratedVisitor;
4980 impl serde::de::Visitor<'_> for GeneratedVisitor {
4981 type Value = GeneratedField;
4982 fn expecting(
4983 &self,
4984 formatter: &mut std::fmt::Formatter<'_>,
4985 ) -> std::fmt::Result {
4986 write!(formatter, "expected one of: {:?}", & FIELDS)
4987 }
4988 #[allow(unused_variables)]
4989 fn visit_str<E>(
4990 self,
4991 value: &str,
4992 ) -> std::result::Result<GeneratedField, E>
4993 where
4994 E: serde::de::Error,
4995 {
4996 match value {
4997 "organization" => Ok(GeneratedField::Organization),
4998 "startTime" | "start_time" => Ok(GeneratedField::StartTime),
4999 "endTime" | "end_time" => Ok(GeneratedField::EndTime),
5000 "granularity" => Ok(GeneratedField::Granularity),
5001 _ => Ok(GeneratedField::__SkipField__),
5002 }
5003 }
5004 }
5005 deserializer.deserialize_identifier(GeneratedVisitor)
5006 }
5007 }
5008 struct GeneratedVisitor;
5009 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5010 type Value = QueryOrganizationCostRequest;
5011 fn expecting(
5012 &self,
5013 formatter: &mut std::fmt::Formatter<'_>,
5014 ) -> std::fmt::Result {
5015 formatter
5016 .write_str(
5017 "struct origincloud.billing.v1beta1.QueryOrganizationCostRequest",
5018 )
5019 }
5020 fn visit_map<V>(
5021 self,
5022 mut map_: V,
5023 ) -> std::result::Result<QueryOrganizationCostRequest, V::Error>
5024 where
5025 V: serde::de::MapAccess<'de>,
5026 {
5027 let mut organization__ = None;
5028 let mut start_time__ = None;
5029 let mut end_time__ = None;
5030 let mut granularity__ = None;
5031 while let Some(k) = map_.next_key()? {
5032 match k {
5033 GeneratedField::Organization => {
5034 if organization__.is_some() {
5035 return Err(
5036 serde::de::Error::duplicate_field("organization"),
5037 );
5038 }
5039 organization__ = Some(map_.next_value()?);
5040 }
5041 GeneratedField::StartTime => {
5042 if start_time__.is_some() {
5043 return Err(serde::de::Error::duplicate_field("startTime"));
5044 }
5045 start_time__ = map_.next_value()?;
5046 }
5047 GeneratedField::EndTime => {
5048 if end_time__.is_some() {
5049 return Err(serde::de::Error::duplicate_field("endTime"));
5050 }
5051 end_time__ = map_.next_value()?;
5052 }
5053 GeneratedField::Granularity => {
5054 if granularity__.is_some() {
5055 return Err(
5056 serde::de::Error::duplicate_field("granularity"),
5057 );
5058 }
5059 granularity__ = Some(
5060 map_.next_value::<Granularity>()? as i32,
5061 );
5062 }
5063 GeneratedField::__SkipField__ => {
5064 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5065 }
5066 }
5067 }
5068 Ok(QueryOrganizationCostRequest {
5069 organization: organization__.unwrap_or_default(),
5070 start_time: start_time__,
5071 end_time: end_time__,
5072 granularity: granularity__.unwrap_or_default(),
5073 })
5074 }
5075 }
5076 deserializer
5077 .deserialize_struct(
5078 "origincloud.billing.v1beta1.QueryOrganizationCostRequest",
5079 FIELDS,
5080 GeneratedVisitor,
5081 )
5082 }
5083}
5084impl serde::Serialize for QueryProjectCostRequest {
5085 #[allow(deprecated)]
5086 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5087 where
5088 S: serde::Serializer,
5089 {
5090 use serde::ser::SerializeStruct;
5091 let mut len = 0;
5092 if !self.project.is_empty() {
5093 len += 1;
5094 }
5095 if self.start_time.is_some() {
5096 len += 1;
5097 }
5098 if self.end_time.is_some() {
5099 len += 1;
5100 }
5101 if self.granularity != 0 {
5102 len += 1;
5103 }
5104 let mut struct_ser = serializer
5105 .serialize_struct(
5106 "origincloud.billing.v1beta1.QueryProjectCostRequest",
5107 len,
5108 )?;
5109 if !self.project.is_empty() {
5110 struct_ser.serialize_field("project", &self.project)?;
5111 }
5112 if let Some(v) = self.start_time.as_ref() {
5113 struct_ser.serialize_field("startTime", v)?;
5114 }
5115 if let Some(v) = self.end_time.as_ref() {
5116 struct_ser.serialize_field("endTime", v)?;
5117 }
5118 if self.granularity != 0 {
5119 let v = Granularity::try_from(self.granularity)
5120 .map_err(|_| serde::ser::Error::custom(
5121 format!("Invalid variant {}", self.granularity),
5122 ))?;
5123 struct_ser.serialize_field("granularity", &v)?;
5124 }
5125 struct_ser.end()
5126 }
5127}
5128impl<'de> serde::Deserialize<'de> for QueryProjectCostRequest {
5129 #[allow(deprecated)]
5130 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5131 where
5132 D: serde::Deserializer<'de>,
5133 {
5134 const FIELDS: &[&str] = &[
5135 "project",
5136 "start_time",
5137 "startTime",
5138 "end_time",
5139 "endTime",
5140 "granularity",
5141 ];
5142 #[allow(clippy::enum_variant_names)]
5143 enum GeneratedField {
5144 Project,
5145 StartTime,
5146 EndTime,
5147 Granularity,
5148 __SkipField__,
5149 }
5150 impl<'de> serde::Deserialize<'de> for GeneratedField {
5151 fn deserialize<D>(
5152 deserializer: D,
5153 ) -> std::result::Result<GeneratedField, D::Error>
5154 where
5155 D: serde::Deserializer<'de>,
5156 {
5157 struct GeneratedVisitor;
5158 impl serde::de::Visitor<'_> for GeneratedVisitor {
5159 type Value = GeneratedField;
5160 fn expecting(
5161 &self,
5162 formatter: &mut std::fmt::Formatter<'_>,
5163 ) -> std::fmt::Result {
5164 write!(formatter, "expected one of: {:?}", & FIELDS)
5165 }
5166 #[allow(unused_variables)]
5167 fn visit_str<E>(
5168 self,
5169 value: &str,
5170 ) -> std::result::Result<GeneratedField, E>
5171 where
5172 E: serde::de::Error,
5173 {
5174 match value {
5175 "project" => Ok(GeneratedField::Project),
5176 "startTime" | "start_time" => Ok(GeneratedField::StartTime),
5177 "endTime" | "end_time" => Ok(GeneratedField::EndTime),
5178 "granularity" => Ok(GeneratedField::Granularity),
5179 _ => Ok(GeneratedField::__SkipField__),
5180 }
5181 }
5182 }
5183 deserializer.deserialize_identifier(GeneratedVisitor)
5184 }
5185 }
5186 struct GeneratedVisitor;
5187 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5188 type Value = QueryProjectCostRequest;
5189 fn expecting(
5190 &self,
5191 formatter: &mut std::fmt::Formatter<'_>,
5192 ) -> std::fmt::Result {
5193 formatter
5194 .write_str(
5195 "struct origincloud.billing.v1beta1.QueryProjectCostRequest",
5196 )
5197 }
5198 fn visit_map<V>(
5199 self,
5200 mut map_: V,
5201 ) -> std::result::Result<QueryProjectCostRequest, V::Error>
5202 where
5203 V: serde::de::MapAccess<'de>,
5204 {
5205 let mut project__ = None;
5206 let mut start_time__ = None;
5207 let mut end_time__ = None;
5208 let mut granularity__ = None;
5209 while let Some(k) = map_.next_key()? {
5210 match k {
5211 GeneratedField::Project => {
5212 if project__.is_some() {
5213 return Err(serde::de::Error::duplicate_field("project"));
5214 }
5215 project__ = Some(map_.next_value()?);
5216 }
5217 GeneratedField::StartTime => {
5218 if start_time__.is_some() {
5219 return Err(serde::de::Error::duplicate_field("startTime"));
5220 }
5221 start_time__ = map_.next_value()?;
5222 }
5223 GeneratedField::EndTime => {
5224 if end_time__.is_some() {
5225 return Err(serde::de::Error::duplicate_field("endTime"));
5226 }
5227 end_time__ = map_.next_value()?;
5228 }
5229 GeneratedField::Granularity => {
5230 if granularity__.is_some() {
5231 return Err(
5232 serde::de::Error::duplicate_field("granularity"),
5233 );
5234 }
5235 granularity__ = Some(
5236 map_.next_value::<Granularity>()? as i32,
5237 );
5238 }
5239 GeneratedField::__SkipField__ => {
5240 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5241 }
5242 }
5243 }
5244 Ok(QueryProjectCostRequest {
5245 project: project__.unwrap_or_default(),
5246 start_time: start_time__,
5247 end_time: end_time__,
5248 granularity: granularity__.unwrap_or_default(),
5249 })
5250 }
5251 }
5252 deserializer
5253 .deserialize_struct(
5254 "origincloud.billing.v1beta1.QueryProjectCostRequest",
5255 FIELDS,
5256 GeneratedVisitor,
5257 )
5258 }
5259}
5260impl serde::Serialize for QueryProjectUsageRequest {
5261 #[allow(deprecated)]
5262 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5263 where
5264 S: serde::Serializer,
5265 {
5266 use serde::ser::SerializeStruct;
5267 let mut len = 0;
5268 if !self.project.is_empty() {
5269 len += 1;
5270 }
5271 if self.start_time.is_some() {
5272 len += 1;
5273 }
5274 if self.end_time.is_some() {
5275 len += 1;
5276 }
5277 if self.page_size != 0 {
5278 len += 1;
5279 }
5280 if !self.page_token.is_empty() {
5281 len += 1;
5282 }
5283 let mut struct_ser = serializer
5284 .serialize_struct(
5285 "origincloud.billing.v1beta1.QueryProjectUsageRequest",
5286 len,
5287 )?;
5288 if !self.project.is_empty() {
5289 struct_ser.serialize_field("project", &self.project)?;
5290 }
5291 if let Some(v) = self.start_time.as_ref() {
5292 struct_ser.serialize_field("startTime", v)?;
5293 }
5294 if let Some(v) = self.end_time.as_ref() {
5295 struct_ser.serialize_field("endTime", v)?;
5296 }
5297 if self.page_size != 0 {
5298 struct_ser.serialize_field("pageSize", &self.page_size)?;
5299 }
5300 if !self.page_token.is_empty() {
5301 struct_ser.serialize_field("pageToken", &self.page_token)?;
5302 }
5303 struct_ser.end()
5304 }
5305}
5306impl<'de> serde::Deserialize<'de> for QueryProjectUsageRequest {
5307 #[allow(deprecated)]
5308 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5309 where
5310 D: serde::Deserializer<'de>,
5311 {
5312 const FIELDS: &[&str] = &[
5313 "project",
5314 "start_time",
5315 "startTime",
5316 "end_time",
5317 "endTime",
5318 "page_size",
5319 "pageSize",
5320 "page_token",
5321 "pageToken",
5322 ];
5323 #[allow(clippy::enum_variant_names)]
5324 enum GeneratedField {
5325 Project,
5326 StartTime,
5327 EndTime,
5328 PageSize,
5329 PageToken,
5330 __SkipField__,
5331 }
5332 impl<'de> serde::Deserialize<'de> for GeneratedField {
5333 fn deserialize<D>(
5334 deserializer: D,
5335 ) -> std::result::Result<GeneratedField, D::Error>
5336 where
5337 D: serde::Deserializer<'de>,
5338 {
5339 struct GeneratedVisitor;
5340 impl serde::de::Visitor<'_> for GeneratedVisitor {
5341 type Value = GeneratedField;
5342 fn expecting(
5343 &self,
5344 formatter: &mut std::fmt::Formatter<'_>,
5345 ) -> std::fmt::Result {
5346 write!(formatter, "expected one of: {:?}", & FIELDS)
5347 }
5348 #[allow(unused_variables)]
5349 fn visit_str<E>(
5350 self,
5351 value: &str,
5352 ) -> std::result::Result<GeneratedField, E>
5353 where
5354 E: serde::de::Error,
5355 {
5356 match value {
5357 "project" => Ok(GeneratedField::Project),
5358 "startTime" | "start_time" => Ok(GeneratedField::StartTime),
5359 "endTime" | "end_time" => Ok(GeneratedField::EndTime),
5360 "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
5361 "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
5362 _ => Ok(GeneratedField::__SkipField__),
5363 }
5364 }
5365 }
5366 deserializer.deserialize_identifier(GeneratedVisitor)
5367 }
5368 }
5369 struct GeneratedVisitor;
5370 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5371 type Value = QueryProjectUsageRequest;
5372 fn expecting(
5373 &self,
5374 formatter: &mut std::fmt::Formatter<'_>,
5375 ) -> std::fmt::Result {
5376 formatter
5377 .write_str(
5378 "struct origincloud.billing.v1beta1.QueryProjectUsageRequest",
5379 )
5380 }
5381 fn visit_map<V>(
5382 self,
5383 mut map_: V,
5384 ) -> std::result::Result<QueryProjectUsageRequest, V::Error>
5385 where
5386 V: serde::de::MapAccess<'de>,
5387 {
5388 let mut project__ = None;
5389 let mut start_time__ = None;
5390 let mut end_time__ = None;
5391 let mut page_size__ = None;
5392 let mut page_token__ = None;
5393 while let Some(k) = map_.next_key()? {
5394 match k {
5395 GeneratedField::Project => {
5396 if project__.is_some() {
5397 return Err(serde::de::Error::duplicate_field("project"));
5398 }
5399 project__ = Some(map_.next_value()?);
5400 }
5401 GeneratedField::StartTime => {
5402 if start_time__.is_some() {
5403 return Err(serde::de::Error::duplicate_field("startTime"));
5404 }
5405 start_time__ = map_.next_value()?;
5406 }
5407 GeneratedField::EndTime => {
5408 if end_time__.is_some() {
5409 return Err(serde::de::Error::duplicate_field("endTime"));
5410 }
5411 end_time__ = map_.next_value()?;
5412 }
5413 GeneratedField::PageSize => {
5414 if page_size__.is_some() {
5415 return Err(serde::de::Error::duplicate_field("pageSize"));
5416 }
5417 page_size__ = Some(
5418 map_
5419 .next_value::<::pbjson::private::NumberDeserialize<_>>()?
5420 .0,
5421 );
5422 }
5423 GeneratedField::PageToken => {
5424 if page_token__.is_some() {
5425 return Err(serde::de::Error::duplicate_field("pageToken"));
5426 }
5427 page_token__ = Some(map_.next_value()?);
5428 }
5429 GeneratedField::__SkipField__ => {
5430 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5431 }
5432 }
5433 }
5434 Ok(QueryProjectUsageRequest {
5435 project: project__.unwrap_or_default(),
5436 start_time: start_time__,
5437 end_time: end_time__,
5438 page_size: page_size__.unwrap_or_default(),
5439 page_token: page_token__.unwrap_or_default(),
5440 })
5441 }
5442 }
5443 deserializer
5444 .deserialize_struct(
5445 "origincloud.billing.v1beta1.QueryProjectUsageRequest",
5446 FIELDS,
5447 GeneratedVisitor,
5448 )
5449 }
5450}
5451impl serde::Serialize for QueryProjectUsageResponse {
5452 #[allow(deprecated)]
5453 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5454 where
5455 S: serde::Serializer,
5456 {
5457 use serde::ser::SerializeStruct;
5458 let mut len = 0;
5459 if !self.usage_records.is_empty() {
5460 len += 1;
5461 }
5462 if !self.next_page_token.is_empty() {
5463 len += 1;
5464 }
5465 let mut struct_ser = serializer
5466 .serialize_struct(
5467 "origincloud.billing.v1beta1.QueryProjectUsageResponse",
5468 len,
5469 )?;
5470 if !self.usage_records.is_empty() {
5471 struct_ser.serialize_field("usageRecords", &self.usage_records)?;
5472 }
5473 if !self.next_page_token.is_empty() {
5474 struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
5475 }
5476 struct_ser.end()
5477 }
5478}
5479impl<'de> serde::Deserialize<'de> for QueryProjectUsageResponse {
5480 #[allow(deprecated)]
5481 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5482 where
5483 D: serde::Deserializer<'de>,
5484 {
5485 const FIELDS: &[&str] = &[
5486 "usage_records",
5487 "usageRecords",
5488 "next_page_token",
5489 "nextPageToken",
5490 ];
5491 #[allow(clippy::enum_variant_names)]
5492 enum GeneratedField {
5493 UsageRecords,
5494 NextPageToken,
5495 __SkipField__,
5496 }
5497 impl<'de> serde::Deserialize<'de> for GeneratedField {
5498 fn deserialize<D>(
5499 deserializer: D,
5500 ) -> std::result::Result<GeneratedField, D::Error>
5501 where
5502 D: serde::Deserializer<'de>,
5503 {
5504 struct GeneratedVisitor;
5505 impl serde::de::Visitor<'_> for GeneratedVisitor {
5506 type Value = GeneratedField;
5507 fn expecting(
5508 &self,
5509 formatter: &mut std::fmt::Formatter<'_>,
5510 ) -> std::fmt::Result {
5511 write!(formatter, "expected one of: {:?}", & FIELDS)
5512 }
5513 #[allow(unused_variables)]
5514 fn visit_str<E>(
5515 self,
5516 value: &str,
5517 ) -> std::result::Result<GeneratedField, E>
5518 where
5519 E: serde::de::Error,
5520 {
5521 match value {
5522 "usageRecords" | "usage_records" => {
5523 Ok(GeneratedField::UsageRecords)
5524 }
5525 "nextPageToken" | "next_page_token" => {
5526 Ok(GeneratedField::NextPageToken)
5527 }
5528 _ => Ok(GeneratedField::__SkipField__),
5529 }
5530 }
5531 }
5532 deserializer.deserialize_identifier(GeneratedVisitor)
5533 }
5534 }
5535 struct GeneratedVisitor;
5536 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5537 type Value = QueryProjectUsageResponse;
5538 fn expecting(
5539 &self,
5540 formatter: &mut std::fmt::Formatter<'_>,
5541 ) -> std::fmt::Result {
5542 formatter
5543 .write_str(
5544 "struct origincloud.billing.v1beta1.QueryProjectUsageResponse",
5545 )
5546 }
5547 fn visit_map<V>(
5548 self,
5549 mut map_: V,
5550 ) -> std::result::Result<QueryProjectUsageResponse, V::Error>
5551 where
5552 V: serde::de::MapAccess<'de>,
5553 {
5554 let mut usage_records__ = None;
5555 let mut next_page_token__ = None;
5556 while let Some(k) = map_.next_key()? {
5557 match k {
5558 GeneratedField::UsageRecords => {
5559 if usage_records__.is_some() {
5560 return Err(
5561 serde::de::Error::duplicate_field("usageRecords"),
5562 );
5563 }
5564 usage_records__ = Some(map_.next_value()?);
5565 }
5566 GeneratedField::NextPageToken => {
5567 if next_page_token__.is_some() {
5568 return Err(
5569 serde::de::Error::duplicate_field("nextPageToken"),
5570 );
5571 }
5572 next_page_token__ = Some(map_.next_value()?);
5573 }
5574 GeneratedField::__SkipField__ => {
5575 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5576 }
5577 }
5578 }
5579 Ok(QueryProjectUsageResponse {
5580 usage_records: usage_records__.unwrap_or_default(),
5581 next_page_token: next_page_token__.unwrap_or_default(),
5582 })
5583 }
5584 }
5585 deserializer
5586 .deserialize_struct(
5587 "origincloud.billing.v1beta1.QueryProjectUsageResponse",
5588 FIELDS,
5589 GeneratedVisitor,
5590 )
5591 }
5592}
5593impl serde::Serialize for ServiceCost {
5594 #[allow(deprecated)]
5595 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5596 where
5597 S: serde::Serializer,
5598 {
5599 use serde::ser::SerializeStruct;
5600 let mut len = 0;
5601 if !self.service.is_empty() {
5602 len += 1;
5603 }
5604 if !self.total.is_empty() {
5605 len += 1;
5606 }
5607 if !self.products.is_empty() {
5608 len += 1;
5609 }
5610 let mut struct_ser = serializer
5611 .serialize_struct("origincloud.billing.v1beta1.ServiceCost", len)?;
5612 if !self.service.is_empty() {
5613 struct_ser.serialize_field("service", &self.service)?;
5614 }
5615 if !self.total.is_empty() {
5616 struct_ser.serialize_field("total", &self.total)?;
5617 }
5618 if !self.products.is_empty() {
5619 struct_ser.serialize_field("products", &self.products)?;
5620 }
5621 struct_ser.end()
5622 }
5623}
5624impl<'de> serde::Deserialize<'de> for ServiceCost {
5625 #[allow(deprecated)]
5626 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5627 where
5628 D: serde::Deserializer<'de>,
5629 {
5630 const FIELDS: &[&str] = &["service", "total", "products"];
5631 #[allow(clippy::enum_variant_names)]
5632 enum GeneratedField {
5633 Service,
5634 Total,
5635 Products,
5636 __SkipField__,
5637 }
5638 impl<'de> serde::Deserialize<'de> for GeneratedField {
5639 fn deserialize<D>(
5640 deserializer: D,
5641 ) -> std::result::Result<GeneratedField, D::Error>
5642 where
5643 D: serde::Deserializer<'de>,
5644 {
5645 struct GeneratedVisitor;
5646 impl serde::de::Visitor<'_> for GeneratedVisitor {
5647 type Value = GeneratedField;
5648 fn expecting(
5649 &self,
5650 formatter: &mut std::fmt::Formatter<'_>,
5651 ) -> std::fmt::Result {
5652 write!(formatter, "expected one of: {:?}", & FIELDS)
5653 }
5654 #[allow(unused_variables)]
5655 fn visit_str<E>(
5656 self,
5657 value: &str,
5658 ) -> std::result::Result<GeneratedField, E>
5659 where
5660 E: serde::de::Error,
5661 {
5662 match value {
5663 "service" => Ok(GeneratedField::Service),
5664 "total" => Ok(GeneratedField::Total),
5665 "products" => Ok(GeneratedField::Products),
5666 _ => Ok(GeneratedField::__SkipField__),
5667 }
5668 }
5669 }
5670 deserializer.deserialize_identifier(GeneratedVisitor)
5671 }
5672 }
5673 struct GeneratedVisitor;
5674 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5675 type Value = ServiceCost;
5676 fn expecting(
5677 &self,
5678 formatter: &mut std::fmt::Formatter<'_>,
5679 ) -> std::fmt::Result {
5680 formatter.write_str("struct origincloud.billing.v1beta1.ServiceCost")
5681 }
5682 fn visit_map<V>(
5683 self,
5684 mut map_: V,
5685 ) -> std::result::Result<ServiceCost, V::Error>
5686 where
5687 V: serde::de::MapAccess<'de>,
5688 {
5689 let mut service__ = None;
5690 let mut total__ = None;
5691 let mut products__ = None;
5692 while let Some(k) = map_.next_key()? {
5693 match k {
5694 GeneratedField::Service => {
5695 if service__.is_some() {
5696 return Err(serde::de::Error::duplicate_field("service"));
5697 }
5698 service__ = Some(map_.next_value()?);
5699 }
5700 GeneratedField::Total => {
5701 if total__.is_some() {
5702 return Err(serde::de::Error::duplicate_field("total"));
5703 }
5704 total__ = Some(map_.next_value()?);
5705 }
5706 GeneratedField::Products => {
5707 if products__.is_some() {
5708 return Err(serde::de::Error::duplicate_field("products"));
5709 }
5710 products__ = Some(map_.next_value()?);
5711 }
5712 GeneratedField::__SkipField__ => {
5713 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5714 }
5715 }
5716 }
5717 Ok(ServiceCost {
5718 service: service__.unwrap_or_default(),
5719 total: total__.unwrap_or_default(),
5720 products: products__.unwrap_or_default(),
5721 })
5722 }
5723 }
5724 deserializer
5725 .deserialize_struct(
5726 "origincloud.billing.v1beta1.ServiceCost",
5727 FIELDS,
5728 GeneratedVisitor,
5729 )
5730 }
5731}
5732impl serde::Serialize for SpendLimit {
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.name.is_empty() {
5741 len += 1;
5742 }
5743 if self.limit.is_some() {
5744 len += 1;
5745 }
5746 if !self.alert_thresholds_percent.is_empty() {
5747 len += 1;
5748 }
5749 if !self.notification_emails.is_empty() {
5750 len += 1;
5751 }
5752 if self.update_time.is_some() {
5753 len += 1;
5754 }
5755 let mut struct_ser = serializer
5756 .serialize_struct("origincloud.billing.v1beta1.SpendLimit", len)?;
5757 if !self.name.is_empty() {
5758 struct_ser.serialize_field("name", &self.name)?;
5759 }
5760 if let Some(v) = self.limit.as_ref() {
5761 struct_ser.serialize_field("limit", v)?;
5762 }
5763 if !self.alert_thresholds_percent.is_empty() {
5764 struct_ser
5765 .serialize_field(
5766 "alertThresholdsPercent",
5767 &self.alert_thresholds_percent,
5768 )?;
5769 }
5770 if !self.notification_emails.is_empty() {
5771 struct_ser.serialize_field("notificationEmails", &self.notification_emails)?;
5772 }
5773 if let Some(v) = self.update_time.as_ref() {
5774 struct_ser.serialize_field("updateTime", v)?;
5775 }
5776 struct_ser.end()
5777 }
5778}
5779impl<'de> serde::Deserialize<'de> for SpendLimit {
5780 #[allow(deprecated)]
5781 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5782 where
5783 D: serde::Deserializer<'de>,
5784 {
5785 const FIELDS: &[&str] = &[
5786 "name",
5787 "limit",
5788 "alert_thresholds_percent",
5789 "alertThresholdsPercent",
5790 "notification_emails",
5791 "notificationEmails",
5792 "update_time",
5793 "updateTime",
5794 ];
5795 #[allow(clippy::enum_variant_names)]
5796 enum GeneratedField {
5797 Name,
5798 Limit,
5799 AlertThresholdsPercent,
5800 NotificationEmails,
5801 UpdateTime,
5802 __SkipField__,
5803 }
5804 impl<'de> serde::Deserialize<'de> for GeneratedField {
5805 fn deserialize<D>(
5806 deserializer: D,
5807 ) -> std::result::Result<GeneratedField, D::Error>
5808 where
5809 D: serde::Deserializer<'de>,
5810 {
5811 struct GeneratedVisitor;
5812 impl serde::de::Visitor<'_> for GeneratedVisitor {
5813 type Value = GeneratedField;
5814 fn expecting(
5815 &self,
5816 formatter: &mut std::fmt::Formatter<'_>,
5817 ) -> std::fmt::Result {
5818 write!(formatter, "expected one of: {:?}", & FIELDS)
5819 }
5820 #[allow(unused_variables)]
5821 fn visit_str<E>(
5822 self,
5823 value: &str,
5824 ) -> std::result::Result<GeneratedField, E>
5825 where
5826 E: serde::de::Error,
5827 {
5828 match value {
5829 "name" => Ok(GeneratedField::Name),
5830 "limit" => Ok(GeneratedField::Limit),
5831 "alertThresholdsPercent" | "alert_thresholds_percent" => {
5832 Ok(GeneratedField::AlertThresholdsPercent)
5833 }
5834 "notificationEmails" | "notification_emails" => {
5835 Ok(GeneratedField::NotificationEmails)
5836 }
5837 "updateTime" | "update_time" => {
5838 Ok(GeneratedField::UpdateTime)
5839 }
5840 _ => Ok(GeneratedField::__SkipField__),
5841 }
5842 }
5843 }
5844 deserializer.deserialize_identifier(GeneratedVisitor)
5845 }
5846 }
5847 struct GeneratedVisitor;
5848 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5849 type Value = SpendLimit;
5850 fn expecting(
5851 &self,
5852 formatter: &mut std::fmt::Formatter<'_>,
5853 ) -> std::fmt::Result {
5854 formatter.write_str("struct origincloud.billing.v1beta1.SpendLimit")
5855 }
5856 fn visit_map<V>(
5857 self,
5858 mut map_: V,
5859 ) -> std::result::Result<SpendLimit, V::Error>
5860 where
5861 V: serde::de::MapAccess<'de>,
5862 {
5863 let mut name__ = None;
5864 let mut limit__ = None;
5865 let mut alert_thresholds_percent__ = None;
5866 let mut notification_emails__ = None;
5867 let mut update_time__ = None;
5868 while let Some(k) = map_.next_key()? {
5869 match k {
5870 GeneratedField::Name => {
5871 if name__.is_some() {
5872 return Err(serde::de::Error::duplicate_field("name"));
5873 }
5874 name__ = Some(map_.next_value()?);
5875 }
5876 GeneratedField::Limit => {
5877 if limit__.is_some() {
5878 return Err(serde::de::Error::duplicate_field("limit"));
5879 }
5880 limit__ = map_.next_value()?;
5881 }
5882 GeneratedField::AlertThresholdsPercent => {
5883 if alert_thresholds_percent__.is_some() {
5884 return Err(
5885 serde::de::Error::duplicate_field("alertThresholdsPercent"),
5886 );
5887 }
5888 alert_thresholds_percent__ = Some(
5889 map_
5890 .next_value::<
5891 Vec<::pbjson::private::NumberDeserialize<_>>,
5892 >()?
5893 .into_iter()
5894 .map(|x| x.0)
5895 .collect(),
5896 );
5897 }
5898 GeneratedField::NotificationEmails => {
5899 if notification_emails__.is_some() {
5900 return Err(
5901 serde::de::Error::duplicate_field("notificationEmails"),
5902 );
5903 }
5904 notification_emails__ = Some(map_.next_value()?);
5905 }
5906 GeneratedField::UpdateTime => {
5907 if update_time__.is_some() {
5908 return Err(serde::de::Error::duplicate_field("updateTime"));
5909 }
5910 update_time__ = map_.next_value()?;
5911 }
5912 GeneratedField::__SkipField__ => {
5913 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5914 }
5915 }
5916 }
5917 Ok(SpendLimit {
5918 name: name__.unwrap_or_default(),
5919 limit: limit__,
5920 alert_thresholds_percent: alert_thresholds_percent__
5921 .unwrap_or_default(),
5922 notification_emails: notification_emails__.unwrap_or_default(),
5923 update_time: update_time__,
5924 })
5925 }
5926 }
5927 deserializer
5928 .deserialize_struct(
5929 "origincloud.billing.v1beta1.SpendLimit",
5930 FIELDS,
5931 GeneratedVisitor,
5932 )
5933 }
5934}
5935impl serde::Serialize for StartPaymentMethodSetupRequest {
5936 #[allow(deprecated)]
5937 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5938 where
5939 S: serde::Serializer,
5940 {
5941 use serde::ser::SerializeStruct;
5942 let mut len = 0;
5943 if !self.name.is_empty() {
5944 len += 1;
5945 }
5946 let mut struct_ser = serializer
5947 .serialize_struct(
5948 "origincloud.billing.v1beta1.StartPaymentMethodSetupRequest",
5949 len,
5950 )?;
5951 if !self.name.is_empty() {
5952 struct_ser.serialize_field("name", &self.name)?;
5953 }
5954 struct_ser.end()
5955 }
5956}
5957impl<'de> serde::Deserialize<'de> for StartPaymentMethodSetupRequest {
5958 #[allow(deprecated)]
5959 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5960 where
5961 D: serde::Deserializer<'de>,
5962 {
5963 const FIELDS: &[&str] = &["name"];
5964 #[allow(clippy::enum_variant_names)]
5965 enum GeneratedField {
5966 Name,
5967 __SkipField__,
5968 }
5969 impl<'de> serde::Deserialize<'de> for GeneratedField {
5970 fn deserialize<D>(
5971 deserializer: D,
5972 ) -> std::result::Result<GeneratedField, D::Error>
5973 where
5974 D: serde::Deserializer<'de>,
5975 {
5976 struct GeneratedVisitor;
5977 impl serde::de::Visitor<'_> for GeneratedVisitor {
5978 type Value = GeneratedField;
5979 fn expecting(
5980 &self,
5981 formatter: &mut std::fmt::Formatter<'_>,
5982 ) -> std::fmt::Result {
5983 write!(formatter, "expected one of: {:?}", & FIELDS)
5984 }
5985 #[allow(unused_variables)]
5986 fn visit_str<E>(
5987 self,
5988 value: &str,
5989 ) -> std::result::Result<GeneratedField, E>
5990 where
5991 E: serde::de::Error,
5992 {
5993 match value {
5994 "name" => Ok(GeneratedField::Name),
5995 _ => Ok(GeneratedField::__SkipField__),
5996 }
5997 }
5998 }
5999 deserializer.deserialize_identifier(GeneratedVisitor)
6000 }
6001 }
6002 struct GeneratedVisitor;
6003 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6004 type Value = StartPaymentMethodSetupRequest;
6005 fn expecting(
6006 &self,
6007 formatter: &mut std::fmt::Formatter<'_>,
6008 ) -> std::fmt::Result {
6009 formatter
6010 .write_str(
6011 "struct origincloud.billing.v1beta1.StartPaymentMethodSetupRequest",
6012 )
6013 }
6014 fn visit_map<V>(
6015 self,
6016 mut map_: V,
6017 ) -> std::result::Result<StartPaymentMethodSetupRequest, V::Error>
6018 where
6019 V: serde::de::MapAccess<'de>,
6020 {
6021 let mut name__ = None;
6022 while let Some(k) = map_.next_key()? {
6023 match k {
6024 GeneratedField::Name => {
6025 if name__.is_some() {
6026 return Err(serde::de::Error::duplicate_field("name"));
6027 }
6028 name__ = Some(map_.next_value()?);
6029 }
6030 GeneratedField::__SkipField__ => {
6031 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6032 }
6033 }
6034 }
6035 Ok(StartPaymentMethodSetupRequest {
6036 name: name__.unwrap_or_default(),
6037 })
6038 }
6039 }
6040 deserializer
6041 .deserialize_struct(
6042 "origincloud.billing.v1beta1.StartPaymentMethodSetupRequest",
6043 FIELDS,
6044 GeneratedVisitor,
6045 )
6046 }
6047}
6048impl serde::Serialize for StartPaymentMethodSetupResponse {
6049 #[allow(deprecated)]
6050 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6051 where
6052 S: serde::Serializer,
6053 {
6054 use serde::ser::SerializeStruct;
6055 let mut len = 0;
6056 if !self.redirect_uri.is_empty() {
6057 len += 1;
6058 }
6059 let mut struct_ser = serializer
6060 .serialize_struct(
6061 "origincloud.billing.v1beta1.StartPaymentMethodSetupResponse",
6062 len,
6063 )?;
6064 if !self.redirect_uri.is_empty() {
6065 struct_ser.serialize_field("redirectUri", &self.redirect_uri)?;
6066 }
6067 struct_ser.end()
6068 }
6069}
6070impl<'de> serde::Deserialize<'de> for StartPaymentMethodSetupResponse {
6071 #[allow(deprecated)]
6072 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6073 where
6074 D: serde::Deserializer<'de>,
6075 {
6076 const FIELDS: &[&str] = &["redirect_uri", "redirectUri"];
6077 #[allow(clippy::enum_variant_names)]
6078 enum GeneratedField {
6079 RedirectUri,
6080 __SkipField__,
6081 }
6082 impl<'de> serde::Deserialize<'de> for GeneratedField {
6083 fn deserialize<D>(
6084 deserializer: D,
6085 ) -> std::result::Result<GeneratedField, D::Error>
6086 where
6087 D: serde::Deserializer<'de>,
6088 {
6089 struct GeneratedVisitor;
6090 impl serde::de::Visitor<'_> for GeneratedVisitor {
6091 type Value = GeneratedField;
6092 fn expecting(
6093 &self,
6094 formatter: &mut std::fmt::Formatter<'_>,
6095 ) -> std::fmt::Result {
6096 write!(formatter, "expected one of: {:?}", & FIELDS)
6097 }
6098 #[allow(unused_variables)]
6099 fn visit_str<E>(
6100 self,
6101 value: &str,
6102 ) -> std::result::Result<GeneratedField, E>
6103 where
6104 E: serde::de::Error,
6105 {
6106 match value {
6107 "redirectUri" | "redirect_uri" => {
6108 Ok(GeneratedField::RedirectUri)
6109 }
6110 _ => Ok(GeneratedField::__SkipField__),
6111 }
6112 }
6113 }
6114 deserializer.deserialize_identifier(GeneratedVisitor)
6115 }
6116 }
6117 struct GeneratedVisitor;
6118 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6119 type Value = StartPaymentMethodSetupResponse;
6120 fn expecting(
6121 &self,
6122 formatter: &mut std::fmt::Formatter<'_>,
6123 ) -> std::fmt::Result {
6124 formatter
6125 .write_str(
6126 "struct origincloud.billing.v1beta1.StartPaymentMethodSetupResponse",
6127 )
6128 }
6129 fn visit_map<V>(
6130 self,
6131 mut map_: V,
6132 ) -> std::result::Result<StartPaymentMethodSetupResponse, V::Error>
6133 where
6134 V: serde::de::MapAccess<'de>,
6135 {
6136 let mut redirect_uri__ = None;
6137 while let Some(k) = map_.next_key()? {
6138 match k {
6139 GeneratedField::RedirectUri => {
6140 if redirect_uri__.is_some() {
6141 return Err(
6142 serde::de::Error::duplicate_field("redirectUri"),
6143 );
6144 }
6145 redirect_uri__ = Some(map_.next_value()?);
6146 }
6147 GeneratedField::__SkipField__ => {
6148 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6149 }
6150 }
6151 }
6152 Ok(StartPaymentMethodSetupResponse {
6153 redirect_uri: redirect_uri__.unwrap_or_default(),
6154 })
6155 }
6156 }
6157 deserializer
6158 .deserialize_struct(
6159 "origincloud.billing.v1beta1.StartPaymentMethodSetupResponse",
6160 FIELDS,
6161 GeneratedVisitor,
6162 )
6163 }
6164}
6165impl serde::Serialize for UpdateBillingAccountRequest {
6166 #[allow(deprecated)]
6167 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6168 where
6169 S: serde::Serializer,
6170 {
6171 use serde::ser::SerializeStruct;
6172 let mut len = 0;
6173 if self.billing_account.is_some() {
6174 len += 1;
6175 }
6176 if self.update_mask.is_some() {
6177 len += 1;
6178 }
6179 let mut struct_ser = serializer
6180 .serialize_struct(
6181 "origincloud.billing.v1beta1.UpdateBillingAccountRequest",
6182 len,
6183 )?;
6184 if let Some(v) = self.billing_account.as_ref() {
6185 struct_ser.serialize_field("billingAccount", v)?;
6186 }
6187 if let Some(v) = self.update_mask.as_ref() {
6188 struct_ser.serialize_field("updateMask", v)?;
6189 }
6190 struct_ser.end()
6191 }
6192}
6193impl<'de> serde::Deserialize<'de> for UpdateBillingAccountRequest {
6194 #[allow(deprecated)]
6195 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6196 where
6197 D: serde::Deserializer<'de>,
6198 {
6199 const FIELDS: &[&str] = &[
6200 "billing_account",
6201 "billingAccount",
6202 "update_mask",
6203 "updateMask",
6204 ];
6205 #[allow(clippy::enum_variant_names)]
6206 enum GeneratedField {
6207 BillingAccount,
6208 UpdateMask,
6209 __SkipField__,
6210 }
6211 impl<'de> serde::Deserialize<'de> for GeneratedField {
6212 fn deserialize<D>(
6213 deserializer: D,
6214 ) -> std::result::Result<GeneratedField, D::Error>
6215 where
6216 D: serde::Deserializer<'de>,
6217 {
6218 struct GeneratedVisitor;
6219 impl serde::de::Visitor<'_> for GeneratedVisitor {
6220 type Value = GeneratedField;
6221 fn expecting(
6222 &self,
6223 formatter: &mut std::fmt::Formatter<'_>,
6224 ) -> std::fmt::Result {
6225 write!(formatter, "expected one of: {:?}", & FIELDS)
6226 }
6227 #[allow(unused_variables)]
6228 fn visit_str<E>(
6229 self,
6230 value: &str,
6231 ) -> std::result::Result<GeneratedField, E>
6232 where
6233 E: serde::de::Error,
6234 {
6235 match value {
6236 "billingAccount" | "billing_account" => {
6237 Ok(GeneratedField::BillingAccount)
6238 }
6239 "updateMask" | "update_mask" => {
6240 Ok(GeneratedField::UpdateMask)
6241 }
6242 _ => Ok(GeneratedField::__SkipField__),
6243 }
6244 }
6245 }
6246 deserializer.deserialize_identifier(GeneratedVisitor)
6247 }
6248 }
6249 struct GeneratedVisitor;
6250 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6251 type Value = UpdateBillingAccountRequest;
6252 fn expecting(
6253 &self,
6254 formatter: &mut std::fmt::Formatter<'_>,
6255 ) -> std::fmt::Result {
6256 formatter
6257 .write_str(
6258 "struct origincloud.billing.v1beta1.UpdateBillingAccountRequest",
6259 )
6260 }
6261 fn visit_map<V>(
6262 self,
6263 mut map_: V,
6264 ) -> std::result::Result<UpdateBillingAccountRequest, V::Error>
6265 where
6266 V: serde::de::MapAccess<'de>,
6267 {
6268 let mut billing_account__ = None;
6269 let mut update_mask__ = None;
6270 while let Some(k) = map_.next_key()? {
6271 match k {
6272 GeneratedField::BillingAccount => {
6273 if billing_account__.is_some() {
6274 return Err(
6275 serde::de::Error::duplicate_field("billingAccount"),
6276 );
6277 }
6278 billing_account__ = map_.next_value()?;
6279 }
6280 GeneratedField::UpdateMask => {
6281 if update_mask__.is_some() {
6282 return Err(serde::de::Error::duplicate_field("updateMask"));
6283 }
6284 update_mask__ = map_.next_value()?;
6285 }
6286 GeneratedField::__SkipField__ => {
6287 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6288 }
6289 }
6290 }
6291 Ok(UpdateBillingAccountRequest {
6292 billing_account: billing_account__,
6293 update_mask: update_mask__,
6294 })
6295 }
6296 }
6297 deserializer
6298 .deserialize_struct(
6299 "origincloud.billing.v1beta1.UpdateBillingAccountRequest",
6300 FIELDS,
6301 GeneratedVisitor,
6302 )
6303 }
6304}
6305impl serde::Serialize for UpdateProjectBillingInfoRequest {
6306 #[allow(deprecated)]
6307 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6308 where
6309 S: serde::Serializer,
6310 {
6311 use serde::ser::SerializeStruct;
6312 let mut len = 0;
6313 if self.project_billing_info.is_some() {
6314 len += 1;
6315 }
6316 if self.update_mask.is_some() {
6317 len += 1;
6318 }
6319 let mut struct_ser = serializer
6320 .serialize_struct(
6321 "origincloud.billing.v1beta1.UpdateProjectBillingInfoRequest",
6322 len,
6323 )?;
6324 if let Some(v) = self.project_billing_info.as_ref() {
6325 struct_ser.serialize_field("projectBillingInfo", v)?;
6326 }
6327 if let Some(v) = self.update_mask.as_ref() {
6328 struct_ser.serialize_field("updateMask", v)?;
6329 }
6330 struct_ser.end()
6331 }
6332}
6333impl<'de> serde::Deserialize<'de> for UpdateProjectBillingInfoRequest {
6334 #[allow(deprecated)]
6335 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6336 where
6337 D: serde::Deserializer<'de>,
6338 {
6339 const FIELDS: &[&str] = &[
6340 "project_billing_info",
6341 "projectBillingInfo",
6342 "update_mask",
6343 "updateMask",
6344 ];
6345 #[allow(clippy::enum_variant_names)]
6346 enum GeneratedField {
6347 ProjectBillingInfo,
6348 UpdateMask,
6349 __SkipField__,
6350 }
6351 impl<'de> serde::Deserialize<'de> for GeneratedField {
6352 fn deserialize<D>(
6353 deserializer: D,
6354 ) -> std::result::Result<GeneratedField, D::Error>
6355 where
6356 D: serde::Deserializer<'de>,
6357 {
6358 struct GeneratedVisitor;
6359 impl serde::de::Visitor<'_> for GeneratedVisitor {
6360 type Value = GeneratedField;
6361 fn expecting(
6362 &self,
6363 formatter: &mut std::fmt::Formatter<'_>,
6364 ) -> std::fmt::Result {
6365 write!(formatter, "expected one of: {:?}", & FIELDS)
6366 }
6367 #[allow(unused_variables)]
6368 fn visit_str<E>(
6369 self,
6370 value: &str,
6371 ) -> std::result::Result<GeneratedField, E>
6372 where
6373 E: serde::de::Error,
6374 {
6375 match value {
6376 "projectBillingInfo" | "project_billing_info" => {
6377 Ok(GeneratedField::ProjectBillingInfo)
6378 }
6379 "updateMask" | "update_mask" => {
6380 Ok(GeneratedField::UpdateMask)
6381 }
6382 _ => Ok(GeneratedField::__SkipField__),
6383 }
6384 }
6385 }
6386 deserializer.deserialize_identifier(GeneratedVisitor)
6387 }
6388 }
6389 struct GeneratedVisitor;
6390 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6391 type Value = UpdateProjectBillingInfoRequest;
6392 fn expecting(
6393 &self,
6394 formatter: &mut std::fmt::Formatter<'_>,
6395 ) -> std::fmt::Result {
6396 formatter
6397 .write_str(
6398 "struct origincloud.billing.v1beta1.UpdateProjectBillingInfoRequest",
6399 )
6400 }
6401 fn visit_map<V>(
6402 self,
6403 mut map_: V,
6404 ) -> std::result::Result<UpdateProjectBillingInfoRequest, V::Error>
6405 where
6406 V: serde::de::MapAccess<'de>,
6407 {
6408 let mut project_billing_info__ = None;
6409 let mut update_mask__ = None;
6410 while let Some(k) = map_.next_key()? {
6411 match k {
6412 GeneratedField::ProjectBillingInfo => {
6413 if project_billing_info__.is_some() {
6414 return Err(
6415 serde::de::Error::duplicate_field("projectBillingInfo"),
6416 );
6417 }
6418 project_billing_info__ = map_.next_value()?;
6419 }
6420 GeneratedField::UpdateMask => {
6421 if update_mask__.is_some() {
6422 return Err(serde::de::Error::duplicate_field("updateMask"));
6423 }
6424 update_mask__ = map_.next_value()?;
6425 }
6426 GeneratedField::__SkipField__ => {
6427 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6428 }
6429 }
6430 }
6431 Ok(UpdateProjectBillingInfoRequest {
6432 project_billing_info: project_billing_info__,
6433 update_mask: update_mask__,
6434 })
6435 }
6436 }
6437 deserializer
6438 .deserialize_struct(
6439 "origincloud.billing.v1beta1.UpdateProjectBillingInfoRequest",
6440 FIELDS,
6441 GeneratedVisitor,
6442 )
6443 }
6444}
6445impl serde::Serialize for UpdateSpendLimitRequest {
6446 #[allow(deprecated)]
6447 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6448 where
6449 S: serde::Serializer,
6450 {
6451 use serde::ser::SerializeStruct;
6452 let mut len = 0;
6453 if self.spend_limit.is_some() {
6454 len += 1;
6455 }
6456 if self.update_mask.is_some() {
6457 len += 1;
6458 }
6459 let mut struct_ser = serializer
6460 .serialize_struct(
6461 "origincloud.billing.v1beta1.UpdateSpendLimitRequest",
6462 len,
6463 )?;
6464 if let Some(v) = self.spend_limit.as_ref() {
6465 struct_ser.serialize_field("spendLimit", v)?;
6466 }
6467 if let Some(v) = self.update_mask.as_ref() {
6468 struct_ser.serialize_field("updateMask", v)?;
6469 }
6470 struct_ser.end()
6471 }
6472}
6473impl<'de> serde::Deserialize<'de> for UpdateSpendLimitRequest {
6474 #[allow(deprecated)]
6475 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6476 where
6477 D: serde::Deserializer<'de>,
6478 {
6479 const FIELDS: &[&str] = &[
6480 "spend_limit",
6481 "spendLimit",
6482 "update_mask",
6483 "updateMask",
6484 ];
6485 #[allow(clippy::enum_variant_names)]
6486 enum GeneratedField {
6487 SpendLimit,
6488 UpdateMask,
6489 __SkipField__,
6490 }
6491 impl<'de> serde::Deserialize<'de> for GeneratedField {
6492 fn deserialize<D>(
6493 deserializer: D,
6494 ) -> std::result::Result<GeneratedField, D::Error>
6495 where
6496 D: serde::Deserializer<'de>,
6497 {
6498 struct GeneratedVisitor;
6499 impl serde::de::Visitor<'_> for GeneratedVisitor {
6500 type Value = GeneratedField;
6501 fn expecting(
6502 &self,
6503 formatter: &mut std::fmt::Formatter<'_>,
6504 ) -> std::fmt::Result {
6505 write!(formatter, "expected one of: {:?}", & FIELDS)
6506 }
6507 #[allow(unused_variables)]
6508 fn visit_str<E>(
6509 self,
6510 value: &str,
6511 ) -> std::result::Result<GeneratedField, E>
6512 where
6513 E: serde::de::Error,
6514 {
6515 match value {
6516 "spendLimit" | "spend_limit" => {
6517 Ok(GeneratedField::SpendLimit)
6518 }
6519 "updateMask" | "update_mask" => {
6520 Ok(GeneratedField::UpdateMask)
6521 }
6522 _ => Ok(GeneratedField::__SkipField__),
6523 }
6524 }
6525 }
6526 deserializer.deserialize_identifier(GeneratedVisitor)
6527 }
6528 }
6529 struct GeneratedVisitor;
6530 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6531 type Value = UpdateSpendLimitRequest;
6532 fn expecting(
6533 &self,
6534 formatter: &mut std::fmt::Formatter<'_>,
6535 ) -> std::fmt::Result {
6536 formatter
6537 .write_str(
6538 "struct origincloud.billing.v1beta1.UpdateSpendLimitRequest",
6539 )
6540 }
6541 fn visit_map<V>(
6542 self,
6543 mut map_: V,
6544 ) -> std::result::Result<UpdateSpendLimitRequest, V::Error>
6545 where
6546 V: serde::de::MapAccess<'de>,
6547 {
6548 let mut spend_limit__ = None;
6549 let mut update_mask__ = None;
6550 while let Some(k) = map_.next_key()? {
6551 match k {
6552 GeneratedField::SpendLimit => {
6553 if spend_limit__.is_some() {
6554 return Err(serde::de::Error::duplicate_field("spendLimit"));
6555 }
6556 spend_limit__ = map_.next_value()?;
6557 }
6558 GeneratedField::UpdateMask => {
6559 if update_mask__.is_some() {
6560 return Err(serde::de::Error::duplicate_field("updateMask"));
6561 }
6562 update_mask__ = map_.next_value()?;
6563 }
6564 GeneratedField::__SkipField__ => {
6565 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6566 }
6567 }
6568 }
6569 Ok(UpdateSpendLimitRequest {
6570 spend_limit: spend_limit__,
6571 update_mask: update_mask__,
6572 })
6573 }
6574 }
6575 deserializer
6576 .deserialize_struct(
6577 "origincloud.billing.v1beta1.UpdateSpendLimitRequest",
6578 FIELDS,
6579 GeneratedVisitor,
6580 )
6581 }
6582}
6583impl serde::Serialize for UsageRecord {
6584 #[allow(deprecated)]
6585 fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6586 where
6587 S: serde::Serializer,
6588 {
6589 use serde::ser::SerializeStruct;
6590 let mut len = 0;
6591 if !self.resource_kind.is_empty() {
6592 len += 1;
6593 }
6594 if !self.resource_id.is_empty() {
6595 len += 1;
6596 }
6597 if !self.metric.is_empty() {
6598 len += 1;
6599 }
6600 if !self.product_key.is_empty() {
6601 len += 1;
6602 }
6603 if !self.quantity.is_empty() {
6604 len += 1;
6605 }
6606 if self.start_time.is_some() {
6607 len += 1;
6608 }
6609 if self.end_time.is_some() {
6610 len += 1;
6611 }
6612 if !self.billing_account.is_empty() {
6613 len += 1;
6614 }
6615 let mut struct_ser = serializer
6616 .serialize_struct("origincloud.billing.v1beta1.UsageRecord", len)?;
6617 if !self.resource_kind.is_empty() {
6618 struct_ser.serialize_field("resourceKind", &self.resource_kind)?;
6619 }
6620 if !self.resource_id.is_empty() {
6621 struct_ser.serialize_field("resourceId", &self.resource_id)?;
6622 }
6623 if !self.metric.is_empty() {
6624 struct_ser.serialize_field("metric", &self.metric)?;
6625 }
6626 if !self.product_key.is_empty() {
6627 struct_ser.serialize_field("productKey", &self.product_key)?;
6628 }
6629 if !self.quantity.is_empty() {
6630 struct_ser.serialize_field("quantity", &self.quantity)?;
6631 }
6632 if let Some(v) = self.start_time.as_ref() {
6633 struct_ser.serialize_field("startTime", v)?;
6634 }
6635 if let Some(v) = self.end_time.as_ref() {
6636 struct_ser.serialize_field("endTime", v)?;
6637 }
6638 if !self.billing_account.is_empty() {
6639 struct_ser.serialize_field("billingAccount", &self.billing_account)?;
6640 }
6641 struct_ser.end()
6642 }
6643}
6644impl<'de> serde::Deserialize<'de> for UsageRecord {
6645 #[allow(deprecated)]
6646 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6647 where
6648 D: serde::Deserializer<'de>,
6649 {
6650 const FIELDS: &[&str] = &[
6651 "resource_kind",
6652 "resourceKind",
6653 "resource_id",
6654 "resourceId",
6655 "metric",
6656 "product_key",
6657 "productKey",
6658 "quantity",
6659 "start_time",
6660 "startTime",
6661 "end_time",
6662 "endTime",
6663 "billing_account",
6664 "billingAccount",
6665 ];
6666 #[allow(clippy::enum_variant_names)]
6667 enum GeneratedField {
6668 ResourceKind,
6669 ResourceId,
6670 Metric,
6671 ProductKey,
6672 Quantity,
6673 StartTime,
6674 EndTime,
6675 BillingAccount,
6676 __SkipField__,
6677 }
6678 impl<'de> serde::Deserialize<'de> for GeneratedField {
6679 fn deserialize<D>(
6680 deserializer: D,
6681 ) -> std::result::Result<GeneratedField, D::Error>
6682 where
6683 D: serde::Deserializer<'de>,
6684 {
6685 struct GeneratedVisitor;
6686 impl serde::de::Visitor<'_> for GeneratedVisitor {
6687 type Value = GeneratedField;
6688 fn expecting(
6689 &self,
6690 formatter: &mut std::fmt::Formatter<'_>,
6691 ) -> std::fmt::Result {
6692 write!(formatter, "expected one of: {:?}", & FIELDS)
6693 }
6694 #[allow(unused_variables)]
6695 fn visit_str<E>(
6696 self,
6697 value: &str,
6698 ) -> std::result::Result<GeneratedField, E>
6699 where
6700 E: serde::de::Error,
6701 {
6702 match value {
6703 "resourceKind" | "resource_kind" => {
6704 Ok(GeneratedField::ResourceKind)
6705 }
6706 "resourceId" | "resource_id" => {
6707 Ok(GeneratedField::ResourceId)
6708 }
6709 "metric" => Ok(GeneratedField::Metric),
6710 "productKey" | "product_key" => {
6711 Ok(GeneratedField::ProductKey)
6712 }
6713 "quantity" => Ok(GeneratedField::Quantity),
6714 "startTime" | "start_time" => Ok(GeneratedField::StartTime),
6715 "endTime" | "end_time" => Ok(GeneratedField::EndTime),
6716 "billingAccount" | "billing_account" => {
6717 Ok(GeneratedField::BillingAccount)
6718 }
6719 _ => Ok(GeneratedField::__SkipField__),
6720 }
6721 }
6722 }
6723 deserializer.deserialize_identifier(GeneratedVisitor)
6724 }
6725 }
6726 struct GeneratedVisitor;
6727 impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6728 type Value = UsageRecord;
6729 fn expecting(
6730 &self,
6731 formatter: &mut std::fmt::Formatter<'_>,
6732 ) -> std::fmt::Result {
6733 formatter.write_str("struct origincloud.billing.v1beta1.UsageRecord")
6734 }
6735 fn visit_map<V>(
6736 self,
6737 mut map_: V,
6738 ) -> std::result::Result<UsageRecord, V::Error>
6739 where
6740 V: serde::de::MapAccess<'de>,
6741 {
6742 let mut resource_kind__ = None;
6743 let mut resource_id__ = None;
6744 let mut metric__ = None;
6745 let mut product_key__ = None;
6746 let mut quantity__ = None;
6747 let mut start_time__ = None;
6748 let mut end_time__ = None;
6749 let mut billing_account__ = None;
6750 while let Some(k) = map_.next_key()? {
6751 match k {
6752 GeneratedField::ResourceKind => {
6753 if resource_kind__.is_some() {
6754 return Err(
6755 serde::de::Error::duplicate_field("resourceKind"),
6756 );
6757 }
6758 resource_kind__ = Some(map_.next_value()?);
6759 }
6760 GeneratedField::ResourceId => {
6761 if resource_id__.is_some() {
6762 return Err(serde::de::Error::duplicate_field("resourceId"));
6763 }
6764 resource_id__ = Some(map_.next_value()?);
6765 }
6766 GeneratedField::Metric => {
6767 if metric__.is_some() {
6768 return Err(serde::de::Error::duplicate_field("metric"));
6769 }
6770 metric__ = Some(map_.next_value()?);
6771 }
6772 GeneratedField::ProductKey => {
6773 if product_key__.is_some() {
6774 return Err(serde::de::Error::duplicate_field("productKey"));
6775 }
6776 product_key__ = Some(map_.next_value()?);
6777 }
6778 GeneratedField::Quantity => {
6779 if quantity__.is_some() {
6780 return Err(serde::de::Error::duplicate_field("quantity"));
6781 }
6782 quantity__ = Some(map_.next_value()?);
6783 }
6784 GeneratedField::StartTime => {
6785 if start_time__.is_some() {
6786 return Err(serde::de::Error::duplicate_field("startTime"));
6787 }
6788 start_time__ = map_.next_value()?;
6789 }
6790 GeneratedField::EndTime => {
6791 if end_time__.is_some() {
6792 return Err(serde::de::Error::duplicate_field("endTime"));
6793 }
6794 end_time__ = map_.next_value()?;
6795 }
6796 GeneratedField::BillingAccount => {
6797 if billing_account__.is_some() {
6798 return Err(
6799 serde::de::Error::duplicate_field("billingAccount"),
6800 );
6801 }
6802 billing_account__ = Some(map_.next_value()?);
6803 }
6804 GeneratedField::__SkipField__ => {
6805 let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6806 }
6807 }
6808 }
6809 Ok(UsageRecord {
6810 resource_kind: resource_kind__.unwrap_or_default(),
6811 resource_id: resource_id__.unwrap_or_default(),
6812 metric: metric__.unwrap_or_default(),
6813 product_key: product_key__.unwrap_or_default(),
6814 quantity: quantity__.unwrap_or_default(),
6815 start_time: start_time__,
6816 end_time: end_time__,
6817 billing_account: billing_account__.unwrap_or_default(),
6818 })
6819 }
6820 }
6821 deserializer
6822 .deserialize_struct(
6823 "origincloud.billing.v1beta1.UsageRecord",
6824 FIELDS,
6825 GeneratedVisitor,
6826 )
6827 }
6828}
6829#[derive(Clone, Debug)]
6833pub struct BillingAccountClient {
6834 service: ::origincloud_core::Service,
6835}
6836impl BillingAccountClient {
6837 pub fn new(client: &::origincloud_core::Client) -> Self {
6839 Self {
6840 service: client.service("billing", false),
6841 }
6842 }
6843 pub fn service(&self) -> &::origincloud_core::Service {
6845 &self.service
6846 }
6847 pub async fn get_billing_account(
6850 &self,
6851 request: GetBillingAccountRequest,
6852 ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
6853 let p0 = ::origincloud_core::path_value(
6854 "name",
6855 &request.name,
6856 "organizations/*/billingAccounts/*",
6857 )?;
6858 let query = ::origincloud_core::query(&request, &["name"])?;
6859 let call = ::origincloud_core::Request::new(
6860 ::origincloud_core::Method::GET,
6861 format!("/v1beta1/{p0}"),
6862 )
6863 .with_query(query)
6864 .idempotent();
6865 self.service.call(call).await
6866 }
6867 pub async fn list_billing_accounts(
6870 &self,
6871 request: ListBillingAccountsRequest,
6872 ) -> ::core::result::Result<ListBillingAccountsResponse, ::origincloud_core::Error> {
6873 let p0 = ::origincloud_core::path_value(
6874 "parent",
6875 &request.parent,
6876 "organizations/*",
6877 )?;
6878 let query = ::origincloud_core::query(&request, &["parent"])?;
6879 let call = ::origincloud_core::Request::new(
6880 ::origincloud_core::Method::GET,
6881 format!("/v1beta1/{p0}/billingAccounts"),
6882 )
6883 .with_query(query)
6884 .idempotent();
6885 self.service.call(call).await
6886 }
6887 pub fn all_billing_accounts(
6889 &self,
6890 request: ListBillingAccountsRequest,
6891 ) -> ::origincloud_core::Pages<BillingAccount> {
6892 let client = self.clone();
6893 ::origincloud_core::Pages::new(
6894 request,
6895 move |request: ListBillingAccountsRequest| {
6896 let client = client.clone();
6897 async move {
6898 let page = client.list_billing_accounts(request).await?;
6899 Ok((page.billing_accounts, page.next_page_token))
6900 }
6901 },
6902 |request: &mut ListBillingAccountsRequest, token: ::std::string::String| {
6903 request.page_token = token;
6904 },
6905 )
6906 }
6907 pub async fn create_billing_account(
6915 &self,
6916 mut request: CreateBillingAccountRequest,
6917 ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
6918 if request.request_id.is_empty() {
6919 request.request_id = ::origincloud_core::new_request_id();
6920 }
6921 let p0 = ::origincloud_core::path_value(
6922 "parent",
6923 &request.parent,
6924 "organizations/*",
6925 )?;
6926 let body = ::origincloud_core::json_body(
6927 request
6928 .billing_account
6929 .as_ref()
6930 .unwrap_or(&::core::default::Default::default()),
6931 )?;
6932 let query = ::origincloud_core::query(&request, &["parent", "billingAccount"])?;
6933 let call = ::origincloud_core::Request::new(
6934 ::origincloud_core::Method::POST,
6935 format!("/v1beta1/{p0}/billingAccounts"),
6936 )
6937 .with_body(body)
6938 .with_query(query)
6939 .idempotent();
6940 self.service.call(call).await
6941 }
6942 pub async fn update_billing_account(
6949 &self,
6950 request: UpdateBillingAccountRequest,
6951 ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
6952 let p0 = ::origincloud_core::path_value(
6953 "billingAccount.name",
6954 request.billing_account.as_ref().map_or("", |m| m.name.as_str()),
6955 "organizations/*/billingAccounts/*",
6956 )?;
6957 let body = ::origincloud_core::json_body(
6958 request
6959 .billing_account
6960 .as_ref()
6961 .unwrap_or(&::core::default::Default::default()),
6962 )?;
6963 let query = ::origincloud_core::query(
6964 &request,
6965 &["billingAccount.name", "billingAccount"],
6966 )?;
6967 let call = ::origincloud_core::Request::new(
6968 ::origincloud_core::Method::PATCH,
6969 format!("/v1beta1/{p0}"),
6970 )
6971 .with_body(body)
6972 .with_query(query);
6973 self.service.call(call).await
6974 }
6975 pub async fn delete_billing_account(
6981 &self,
6982 request: DeleteBillingAccountRequest,
6983 ) -> ::core::result::Result<
6984 ::origincloud_core::protobuf::Empty,
6985 ::origincloud_core::Error,
6986 > {
6987 let p0 = ::origincloud_core::path_value(
6988 "name",
6989 &request.name,
6990 "organizations/*/billingAccounts/*",
6991 )?;
6992 let query = ::origincloud_core::query(&request, &["name"])?;
6993 let call = ::origincloud_core::Request::new(
6994 ::origincloud_core::Method::DELETE,
6995 format!("/v1beta1/{p0}"),
6996 )
6997 .with_query(query);
6998 self.service.call(call).await
6999 }
7000 pub async fn start_payment_method_setup(
7008 &self,
7009 request: StartPaymentMethodSetupRequest,
7010 ) -> ::core::result::Result<
7011 StartPaymentMethodSetupResponse,
7012 ::origincloud_core::Error,
7013 > {
7014 let p0 = ::origincloud_core::path_value(
7015 "name",
7016 &request.name,
7017 "organizations/*/billingAccounts/*",
7018 )?;
7019 let body = ::origincloud_core::json_body(&request)?;
7020 let call = ::origincloud_core::Request::new(
7021 ::origincloud_core::Method::POST,
7022 format!("/v1beta1/{p0}:startPaymentMethodSetup"),
7023 )
7024 .with_body(body);
7025 self.service.call(call).await
7026 }
7027 pub async fn confirm_payment_method_setup(
7038 &self,
7039 request: ConfirmPaymentMethodSetupRequest,
7040 ) -> ::core::result::Result<BillingAccount, ::origincloud_core::Error> {
7041 let p0 = ::origincloud_core::path_value(
7042 "name",
7043 &request.name,
7044 "organizations/*/billingAccounts/*",
7045 )?;
7046 let body = ::origincloud_core::json_body(&request)?;
7047 let call = ::origincloud_core::Request::new(
7048 ::origincloud_core::Method::POST,
7049 format!("/v1beta1/{p0}:confirmPaymentMethodSetup"),
7050 )
7051 .with_body(body);
7052 self.service.call(call).await
7053 }
7054 pub async fn get_project_billing_info(
7057 &self,
7058 request: GetProjectBillingInfoRequest,
7059 ) -> ::core::result::Result<ProjectBillingInfo, ::origincloud_core::Error> {
7060 let p0 = ::origincloud_core::path_value(
7061 "name",
7062 &request.name,
7063 "projects/*/billingInfo",
7064 )?;
7065 let query = ::origincloud_core::query(&request, &["name"])?;
7066 let call = ::origincloud_core::Request::new(
7067 ::origincloud_core::Method::GET,
7068 format!("/v1beta1/{p0}"),
7069 )
7070 .with_query(query)
7071 .idempotent();
7072 self.service.call(call).await
7073 }
7074 pub async fn update_project_billing_info(
7080 &self,
7081 request: UpdateProjectBillingInfoRequest,
7082 ) -> ::core::result::Result<ProjectBillingInfo, ::origincloud_core::Error> {
7083 let p0 = ::origincloud_core::path_value(
7084 "projectBillingInfo.name",
7085 request.project_billing_info.as_ref().map_or("", |m| m.name.as_str()),
7086 "projects/*/billingInfo",
7087 )?;
7088 let body = ::origincloud_core::json_body(
7089 request
7090 .project_billing_info
7091 .as_ref()
7092 .unwrap_or(&::core::default::Default::default()),
7093 )?;
7094 let query = ::origincloud_core::query(
7095 &request,
7096 &["projectBillingInfo.name", "projectBillingInfo"],
7097 )?;
7098 let call = ::origincloud_core::Request::new(
7099 ::origincloud_core::Method::PATCH,
7100 format!("/v1beta1/{p0}"),
7101 )
7102 .with_body(body)
7103 .with_query(query);
7104 self.service.call(call).await
7105 }
7106 pub async fn list_project_billing_info(
7109 &self,
7110 request: ListProjectBillingInfoRequest,
7111 ) -> ::core::result::Result<
7112 ListProjectBillingInfoResponse,
7113 ::origincloud_core::Error,
7114 > {
7115 let p0 = ::origincloud_core::path_value(
7116 "name",
7117 &request.name,
7118 "organizations/*/billingAccounts/*",
7119 )?;
7120 let query = ::origincloud_core::query(&request, &["name"])?;
7121 let call = ::origincloud_core::Request::new(
7122 ::origincloud_core::Method::GET,
7123 format!("/v1beta1/{p0}/projects"),
7124 )
7125 .with_query(query)
7126 .idempotent();
7127 self.service.call(call).await
7128 }
7129 pub fn all_project_billing_infos(
7131 &self,
7132 request: ListProjectBillingInfoRequest,
7133 ) -> ::origincloud_core::Pages<ProjectBillingInfo> {
7134 let client = self.clone();
7135 ::origincloud_core::Pages::new(
7136 request,
7137 move |request: ListProjectBillingInfoRequest| {
7138 let client = client.clone();
7139 async move {
7140 let page = client.list_project_billing_info(request).await?;
7141 Ok((page.project_billing_infos, page.next_page_token))
7142 }
7143 },
7144 |request: &mut ListProjectBillingInfoRequest, token: ::std::string::String| {
7145 request.page_token = token;
7146 },
7147 )
7148 }
7149 pub async fn get_billing_country(
7151 &self,
7152 request: GetBillingCountryRequest,
7153 ) -> ::core::result::Result<BillingCountry, ::origincloud_core::Error> {
7154 let p0 = ::origincloud_core::path_value(
7155 "name",
7156 &request.name,
7157 "billingCountries/*",
7158 )?;
7159 let query = ::origincloud_core::query(&request, &["name"])?;
7160 let call = ::origincloud_core::Request::new(
7161 ::origincloud_core::Method::GET,
7162 format!("/v1beta1/{p0}"),
7163 )
7164 .with_query(query)
7165 .idempotent();
7166 self.service.call(call).await
7167 }
7168 pub async fn list_billing_countries(
7171 &self,
7172 request: ListBillingCountriesRequest,
7173 ) -> ::core::result::Result<
7174 ListBillingCountriesResponse,
7175 ::origincloud_core::Error,
7176 > {
7177 let query = ::origincloud_core::query(&request, &[])?;
7178 let call = ::origincloud_core::Request::new(
7179 ::origincloud_core::Method::GET,
7180 ::std::string::String::from("/v1beta1/billingCountries"),
7181 )
7182 .with_query(query)
7183 .idempotent();
7184 self.service.call(call).await
7185 }
7186 pub fn all_billing_countries(
7188 &self,
7189 request: ListBillingCountriesRequest,
7190 ) -> ::origincloud_core::Pages<BillingCountry> {
7191 let client = self.clone();
7192 ::origincloud_core::Pages::new(
7193 request,
7194 move |request: ListBillingCountriesRequest| {
7195 let client = client.clone();
7196 async move {
7197 let page = client.list_billing_countries(request).await?;
7198 Ok((page.billing_countries, page.next_page_token))
7199 }
7200 },
7201 |request: &mut ListBillingCountriesRequest, token: ::std::string::String| {
7202 request.page_token = token;
7203 },
7204 )
7205 }
7206}
7207#[derive(Clone, Debug)]
7217pub struct CostClient {
7218 service: ::origincloud_core::Service,
7219}
7220impl CostClient {
7221 pub fn new(client: &::origincloud_core::Client) -> Self {
7223 Self {
7224 service: client.service("billing", false),
7225 }
7226 }
7227 pub fn service(&self) -> &::origincloud_core::Service {
7229 &self.service
7230 }
7231 pub async fn query_project_cost(
7234 &self,
7235 request: QueryProjectCostRequest,
7236 ) -> ::core::result::Result<CostReport, ::origincloud_core::Error> {
7237 let p0 = ::origincloud_core::path_value(
7238 "project",
7239 &request.project,
7240 "projects/*",
7241 )?;
7242 let query = ::origincloud_core::query(&request, &["project"])?;
7243 let call = ::origincloud_core::Request::new(
7244 ::origincloud_core::Method::GET,
7245 format!("/v1beta1/{p0}:queryCost"),
7246 )
7247 .with_query(query)
7248 .idempotent();
7249 self.service.call(call).await
7250 }
7251 pub async fn query_organization_cost(
7256 &self,
7257 request: QueryOrganizationCostRequest,
7258 ) -> ::core::result::Result<OrganizationCostReport, ::origincloud_core::Error> {
7259 let p0 = ::origincloud_core::path_value(
7260 "organization",
7261 &request.organization,
7262 "organizations/*",
7263 )?;
7264 let query = ::origincloud_core::query(&request, &["organization"])?;
7265 let call = ::origincloud_core::Request::new(
7266 ::origincloud_core::Method::GET,
7267 format!("/v1beta1/{p0}:queryCost"),
7268 )
7269 .with_query(query)
7270 .idempotent();
7271 self.service.call(call).await
7272 }
7273 pub async fn query_billing_account_cost(
7279 &self,
7280 request: QueryBillingAccountCostRequest,
7281 ) -> ::core::result::Result<CostReport, ::origincloud_core::Error> {
7282 let p0 = ::origincloud_core::path_value(
7283 "billingAccount",
7284 &request.billing_account,
7285 "organizations/*/billingAccounts/*",
7286 )?;
7287 let query = ::origincloud_core::query(&request, &["billingAccount"])?;
7288 let call = ::origincloud_core::Request::new(
7289 ::origincloud_core::Method::GET,
7290 format!("/v1beta1/{p0}:queryCost"),
7291 )
7292 .with_query(query)
7293 .idempotent();
7294 self.service.call(call).await
7295 }
7296 pub async fn query_project_usage(
7300 &self,
7301 request: QueryProjectUsageRequest,
7302 ) -> ::core::result::Result<QueryProjectUsageResponse, ::origincloud_core::Error> {
7303 let p0 = ::origincloud_core::path_value(
7304 "project",
7305 &request.project,
7306 "projects/*",
7307 )?;
7308 let query = ::origincloud_core::query(&request, &["project"])?;
7309 let call = ::origincloud_core::Request::new(
7310 ::origincloud_core::Method::GET,
7311 format!("/v1beta1/{p0}:queryUsage"),
7312 )
7313 .with_query(query)
7314 .idempotent();
7315 self.service.call(call).await
7316 }
7317 pub fn all_usage_records(
7319 &self,
7320 request: QueryProjectUsageRequest,
7321 ) -> ::origincloud_core::Pages<UsageRecord> {
7322 let client = self.clone();
7323 ::origincloud_core::Pages::new(
7324 request,
7325 move |request: QueryProjectUsageRequest| {
7326 let client = client.clone();
7327 async move {
7328 let page = client.query_project_usage(request).await?;
7329 Ok((page.usage_records, page.next_page_token))
7330 }
7331 },
7332 |request: &mut QueryProjectUsageRequest, token: ::std::string::String| {
7333 request.page_token = token;
7334 },
7335 )
7336 }
7337}
7338#[derive(Clone, Debug)]
7347pub struct PriceListClient {
7348 service: ::origincloud_core::Service,
7349}
7350impl PriceListClient {
7351 pub fn new(client: &::origincloud_core::Client) -> Self {
7353 Self {
7354 service: client.service("billing", false),
7355 }
7356 }
7357 pub fn service(&self) -> &::origincloud_core::Service {
7359 &self.service
7360 }
7361 pub async fn get_price_list(
7365 &self,
7366 request: GetPriceListRequest,
7367 ) -> ::core::result::Result<PriceList, ::origincloud_core::Error> {
7368 let query = ::origincloud_core::query(&request, &[])?;
7369 let call = ::origincloud_core::Request::new(
7370 ::origincloud_core::Method::GET,
7371 ::std::string::String::from("/v1/pricing"),
7372 )
7373 .with_query(query)
7374 .idempotent();
7375 self.service.call(call).await
7376 }
7377}
7378#[derive(Clone, Debug)]
7387pub struct SpendLimitClient {
7388 service: ::origincloud_core::Service,
7389}
7390impl SpendLimitClient {
7391 pub fn new(client: &::origincloud_core::Client) -> Self {
7393 Self {
7394 service: client.service("billing", false),
7395 }
7396 }
7397 pub fn service(&self) -> &::origincloud_core::Service {
7399 &self.service
7400 }
7401 pub async fn get_spend_limit(
7404 &self,
7405 request: GetSpendLimitRequest,
7406 ) -> ::core::result::Result<SpendLimit, ::origincloud_core::Error> {
7407 let p0 = ::origincloud_core::path_value(
7408 "name",
7409 &request.name,
7410 "organizations/*/billingAccounts/*/spendLimit",
7411 )?;
7412 let query = ::origincloud_core::query(&request, &["name"])?;
7413 let call = ::origincloud_core::Request::new(
7414 ::origincloud_core::Method::GET,
7415 format!("/v1beta1/{p0}"),
7416 )
7417 .with_query(query)
7418 .idempotent();
7419 self.service.call(call).await
7420 }
7421 pub async fn update_spend_limit(
7426 &self,
7427 request: UpdateSpendLimitRequest,
7428 ) -> ::core::result::Result<SpendLimit, ::origincloud_core::Error> {
7429 let p0 = ::origincloud_core::path_value(
7430 "spendLimit.name",
7431 request.spend_limit.as_ref().map_or("", |m| m.name.as_str()),
7432 "organizations/*/billingAccounts/*/spendLimit",
7433 )?;
7434 let body = ::origincloud_core::json_body(
7435 request.spend_limit.as_ref().unwrap_or(&::core::default::Default::default()),
7436 )?;
7437 let query = ::origincloud_core::query(
7438 &request,
7439 &["spendLimit.name", "spendLimit"],
7440 )?;
7441 let call = ::origincloud_core::Request::new(
7442 ::origincloud_core::Method::PATCH,
7443 format!("/v1beta1/{p0}"),
7444 )
7445 .with_body(body)
7446 .with_query(query);
7447 self.service.call(call).await
7448 }
7449}