Skip to main content

origincloud_resourcemanager/generated/
origincloud.resourcemanager.v1beta1.rs

1// Code generated by origincloud-sdk-generator. DO NOT EDIT.
2// source: origincloud/resourcemanager/v1beta1/quota.proto
3// source: origincloud/resourcemanager/v1beta1/organization.proto
4// source: origincloud/resourcemanager/v1beta1/project.proto
5
6/// An organization's quota: the most of each kind of resource its projects
7/// may hold together, and how much of it they use. Creating a resource past a
8/// limit is refused.
9#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10pub struct OrganizationQuota {
11    /// The quota's resource name, `organizations/{organization}/quota`.
12    #[prost(string, tag = "1")]
13    pub name: ::prost::alloc::string::String,
14    /// The most instances that aren't terminated.
15    #[prost(int64, tag = "2")]
16    pub max_instances: i64,
17    /// The most vCPUs, summed over the instances that aren't terminated.
18    #[prost(int64, tag = "3")]
19    pub max_vcpu: i64,
20    /// The most GiB of volumes that aren't deleted.
21    #[prost(int64, tag = "4")]
22    pub max_volume_gib: i64,
23    /// The most VPCs.
24    #[prost(int64, tag = "5")]
25    pub max_vpcs: i64,
26    /// The most floating IPs.
27    #[prost(int64, tag = "6")]
28    pub max_public_ips: i64,
29    /// How much of each limit the organization's projects use together.
30    #[prost(message, optional, tag = "7")]
31    pub usage: ::core::option::Option<QuotaUsage>,
32}
33/// A project's quota: the budgets its owners set for it, and how much of each
34/// the project uses. A project without a budget for a kind of resource is
35/// bounded by its organization's quota alone; with one, by both. Budgets are
36/// not reservations: several projects' budgets may add up to more than the
37/// organization's limit.
38#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
39pub struct ProjectQuota {
40    /// The quota's resource name, `projects/{project}/quota`.
41    #[prost(string, tag = "1")]
42    pub name: ::prost::alloc::string::String,
43    /// The most instances that aren't terminated; unset means no budget. Each
44    /// budget is zero or more, and no more than the organization's limit for
45    /// the same kind.
46    #[prost(int64, optional, tag = "2")]
47    pub max_instances: ::core::option::Option<i64>,
48    /// The most vCPUs, summed over the instances that aren't terminated; unset
49    /// means no budget.
50    #[prost(int64, optional, tag = "3")]
51    pub max_vcpu: ::core::option::Option<i64>,
52    /// The most GiB of volumes that aren't deleted; unset means no budget.
53    #[prost(int64, optional, tag = "4")]
54    pub max_volume_gib: ::core::option::Option<i64>,
55    /// The most VPCs; unset means no budget.
56    #[prost(int64, optional, tag = "5")]
57    pub max_vpcs: ::core::option::Option<i64>,
58    /// The most floating IPs; unset means no budget.
59    #[prost(int64, optional, tag = "6")]
60    pub max_public_ips: ::core::option::Option<i64>,
61    /// How much of each budget the project uses.
62    #[prost(message, optional, tag = "7")]
63    pub usage: ::core::option::Option<QuotaUsage>,
64}
65/// How many of each kind of resource are held. Counted continuously, so a
66/// resource just created or deleted can take up to half a minute to show;
67/// a limit is enforced on the exact count.
68#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
69pub struct QuotaUsage {
70    /// Instances that aren't terminated.
71    #[prost(int64, tag = "1")]
72    pub instances: i64,
73    /// vCPUs of the instances that aren't terminated.
74    #[prost(int64, tag = "2")]
75    pub vcpu: i64,
76    /// GiB of volumes that aren't deleted.
77    #[prost(int64, tag = "3")]
78    pub volume_gib: i64,
79    /// VPCs.
80    #[prost(int64, tag = "4")]
81    pub vpcs: i64,
82    /// Floating IPs.
83    #[prost(int64, tag = "5")]
84    pub public_ips: i64,
85}
86/// An organization: the account its projects, members and billing belong to.
87#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
88pub struct Organization {
89    /// The organization's resource name, `organizations/{organization}`.
90    #[prost(string, tag = "1")]
91    pub name: ::prost::alloc::string::String,
92    /// The organization's URN, the identifier access policies and the audit
93    /// log use.
94    #[prost(string, tag = "2")]
95    pub urn: ::prost::alloc::string::String,
96    /// The name the console shows, typically the company's name. Not empty.
97    #[prost(string, tag = "3")]
98    pub display_name: ::prost::alloc::string::String,
99    /// Whether the organization may create resources. Decided by the
100    /// platform, never by the organization's members.
101    #[prost(enumeration = "organization::State", tag = "4")]
102    pub state: i32,
103    /// When the organization was created.
104    #[prost(message, optional, tag = "5")]
105    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
106    /// The principal that created the organization, such as `user:<id>` or
107    /// `service_account:<id>`.
108    #[prost(string, tag = "6")]
109    pub creator: ::prost::alloc::string::String,
110}
111/// Nested message and enum types in `Organization`.
112pub mod organization {
113    /// Whether the organization may create resources.
114    #[derive(
115        Clone,
116        Copy,
117        Debug,
118        PartialEq,
119        Eq,
120        Hash,
121        PartialOrd,
122        Ord,
123        ::prost::Enumeration
124    )]
125    #[repr(i32)]
126    pub enum State {
127        /// Not set.
128        Unspecified = 0,
129        /// Under review by the platform: it can't create projects or resources
130        /// until it is `organization::State::Active`.
131        PendingReview = 1,
132        /// Admitted: it can create projects and resources.
133        Active = 2,
134        /// Not admitted. Final.
135        Rejected = 3,
136    }
137    impl State {
138        /// String value of the enum field names used in the ProtoBuf definition.
139        ///
140        /// The values are not transformed in any way and thus are considered stable
141        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
142        pub fn as_str_name(&self) -> &'static str {
143            match self {
144                Self::Unspecified => "STATE_UNSPECIFIED",
145                Self::PendingReview => "PENDING_REVIEW",
146                Self::Active => "ACTIVE",
147                Self::Rejected => "REJECTED",
148            }
149        }
150        /// Creates an enum from field names used in the ProtoBuf definition.
151        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
152            match value {
153                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
154                "PENDING_REVIEW" => Some(Self::PendingReview),
155                "ACTIVE" => Some(Self::Active),
156                "REJECTED" => Some(Self::Rejected),
157                _ => None,
158            }
159        }
160    }
161}
162/// The request for GetOrganization.
163#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
164pub struct GetOrganizationRequest {
165    /// The organization to return.
166    #[prost(string, tag = "1")]
167    pub name: ::prost::alloc::string::String,
168}
169/// The request for ListOrganizations.
170#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
171pub struct ListOrganizationsRequest {
172    /// The most organizations to return; the server clamps it, and 0 means its
173    /// default.
174    #[prost(int32, tag = "1")]
175    pub page_size: i32,
176    /// A previous response's `next_page_token`, for the page after it.
177    #[prost(string, tag = "2")]
178    pub page_token: ::prost::alloc::string::String,
179}
180/// The response for ListOrganizations.
181#[derive(Clone, PartialEq, ::prost::Message)]
182pub struct ListOrganizationsResponse {
183    /// The organizations on this page.
184    #[prost(message, repeated, tag = "1")]
185    pub organizations: ::prost::alloc::vec::Vec<Organization>,
186    /// The token for the next page; empty on the last one.
187    #[prost(string, tag = "2")]
188    pub next_page_token: ::prost::alloc::string::String,
189}
190/// The request for CreateOrganization.
191#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
192pub struct CreateOrganizationRequest {
193    /// The organization to create: its `display_name`.
194    #[prost(message, optional, tag = "1")]
195    pub organization: ::core::option::Option<Organization>,
196    /// A UUID; a repeat with the same id returns the organization the first
197    /// request created instead of creating a second one.
198    #[prost(string, tag = "2")]
199    pub request_id: ::prost::alloc::string::String,
200}
201/// The request for UpdateOrganization.
202#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
203pub struct UpdateOrganizationRequest {
204    /// The organization, by its name, with the fields to change.
205    #[prost(message, optional, tag = "1")]
206    pub organization: ::core::option::Option<Organization>,
207    /// The fields to change: `display_name`. `*` is the same.
208    #[prost(message, optional, tag = "2")]
209    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
210}
211/// The request for DeleteOrganization.
212#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
213pub struct DeleteOrganizationRequest {
214    /// The organization to delete.
215    #[prost(string, tag = "1")]
216    pub name: ::prost::alloc::string::String,
217}
218/// The request for GetOrganizationQuota.
219#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
220pub struct GetOrganizationQuotaRequest {
221    /// The quota to return, `organizations/{organization}/quota`.
222    #[prost(string, tag = "1")]
223    pub name: ::prost::alloc::string::String,
224}
225/// A project: the namespace an organization's resources are created in.
226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
227pub struct Project {
228    /// The project's resource name, `projects/{project}`. The id, chosen when
229    /// the project is created, is unique across the platform and never used
230    /// again, not even after the project is deleted.
231    #[prost(string, tag = "1")]
232    pub name: ::prost::alloc::string::String,
233    /// The project's URN, the identifier access policies and the audit log
234    /// use.
235    #[prost(string, tag = "2")]
236    pub urn: ::prost::alloc::string::String,
237    /// The organization the project belongs to, `organizations/{organization}`.
238    #[prost(string, tag = "3")]
239    pub organization: ::prost::alloc::string::String,
240    /// The name the console shows. Not empty.
241    #[prost(string, tag = "4")]
242    pub display_name: ::prost::alloc::string::String,
243    /// When the project was created.
244    #[prost(message, optional, tag = "5")]
245    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
246    /// The principal that created the project, such as `user:<id>` or
247    /// `service_account:<id>`.
248    #[prost(string, tag = "6")]
249    pub creator: ::prost::alloc::string::String,
250}
251/// The request for GetProject.
252#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
253pub struct GetProjectRequest {
254    /// The project to return.
255    #[prost(string, tag = "1")]
256    pub name: ::prost::alloc::string::String,
257}
258/// The request for ListProjects.
259#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
260pub struct ListProjectsRequest {
261    /// The organization whose projects to list, `organizations/{organization}`.
262    #[prost(string, tag = "1")]
263    pub organization: ::prost::alloc::string::String,
264    /// The most projects to return; the server clamps it, and 0 means its
265    /// default.
266    #[prost(int32, tag = "2")]
267    pub page_size: i32,
268    /// A previous response's `next_page_token`, for the page after it.
269    #[prost(string, tag = "3")]
270    pub page_token: ::prost::alloc::string::String,
271}
272/// The response for ListProjects.
273#[derive(Clone, PartialEq, ::prost::Message)]
274pub struct ListProjectsResponse {
275    /// The projects on this page.
276    #[prost(message, repeated, tag = "1")]
277    pub projects: ::prost::alloc::vec::Vec<Project>,
278    /// The token for the next page; empty on the last one.
279    #[prost(string, tag = "2")]
280    pub next_page_token: ::prost::alloc::string::String,
281}
282/// The request for CreateProject.
283#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
284pub struct CreateProjectRequest {
285    /// The project to create: its `organization` and `display_name`.
286    #[prost(message, optional, tag = "1")]
287    pub project: ::core::option::Option<Project>,
288    /// The project's id, the last segment of its name: 6 to 16 lowercase
289    /// letters, digits and hyphens, starting with a letter and not ending with
290    /// a hyphen, such as `acme-prod`.
291    #[prost(string, tag = "3")]
292    pub project_id: ::prost::alloc::string::String,
293    /// A UUID; a repeat with the same id returns the project the first request
294    /// created instead of creating a second one.
295    #[prost(string, tag = "2")]
296    pub request_id: ::prost::alloc::string::String,
297}
298/// The request for UpdateProject.
299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
300pub struct UpdateProjectRequest {
301    /// The project, by its name, with the fields to change.
302    #[prost(message, optional, tag = "1")]
303    pub project: ::core::option::Option<Project>,
304    /// The fields to change: `display_name`. `*` is the same.
305    #[prost(message, optional, tag = "2")]
306    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
307}
308/// The request for DeleteProject.
309#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
310pub struct DeleteProjectRequest {
311    /// The project to delete.
312    #[prost(string, tag = "1")]
313    pub name: ::prost::alloc::string::String,
314}
315/// The request for GetProjectQuota.
316#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
317pub struct GetProjectQuotaRequest {
318    /// The quota to return, `projects/{project}/quota`.
319    #[prost(string, tag = "1")]
320    pub name: ::prost::alloc::string::String,
321}
322/// The request for UpdateProjectQuota.
323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
324pub struct UpdateProjectQuotaRequest {
325    /// The quota, by its name, with the budgets to set.
326    #[prost(message, optional, tag = "1")]
327    pub project_quota: ::core::option::Option<ProjectQuota>,
328    /// The budgets to set or remove, such as `max_vcpu`. `*` is every budget:
329    /// those given are set, the others removed.
330    #[prost(message, optional, tag = "2")]
331    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
332}
333impl serde::Serialize for CreateOrganizationRequest {
334    #[allow(deprecated)]
335    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
336    where
337        S: serde::Serializer,
338    {
339        use serde::ser::SerializeStruct;
340        let mut len = 0;
341        if self.organization.is_some() {
342            len += 1;
343        }
344        if !self.request_id.is_empty() {
345            len += 1;
346        }
347        let mut struct_ser = serializer
348            .serialize_struct(
349                "origincloud.resourcemanager.v1beta1.CreateOrganizationRequest",
350                len,
351            )?;
352        if let Some(v) = self.organization.as_ref() {
353            struct_ser.serialize_field("organization", v)?;
354        }
355        if !self.request_id.is_empty() {
356            struct_ser.serialize_field("requestId", &self.request_id)?;
357        }
358        struct_ser.end()
359    }
360}
361impl<'de> serde::Deserialize<'de> for CreateOrganizationRequest {
362    #[allow(deprecated)]
363    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
364    where
365        D: serde::Deserializer<'de>,
366    {
367        const FIELDS: &[&str] = &["organization", "request_id", "requestId"];
368        #[allow(clippy::enum_variant_names)]
369        enum GeneratedField {
370            Organization,
371            RequestId,
372            __SkipField__,
373        }
374        impl<'de> serde::Deserialize<'de> for GeneratedField {
375            fn deserialize<D>(
376                deserializer: D,
377            ) -> std::result::Result<GeneratedField, D::Error>
378            where
379                D: serde::Deserializer<'de>,
380            {
381                struct GeneratedVisitor;
382                impl serde::de::Visitor<'_> for GeneratedVisitor {
383                    type Value = GeneratedField;
384                    fn expecting(
385                        &self,
386                        formatter: &mut std::fmt::Formatter<'_>,
387                    ) -> std::fmt::Result {
388                        write!(formatter, "expected one of: {:?}", & FIELDS)
389                    }
390                    #[allow(unused_variables)]
391                    fn visit_str<E>(
392                        self,
393                        value: &str,
394                    ) -> std::result::Result<GeneratedField, E>
395                    where
396                        E: serde::de::Error,
397                    {
398                        match value {
399                            "organization" => Ok(GeneratedField::Organization),
400                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
401                            _ => Ok(GeneratedField::__SkipField__),
402                        }
403                    }
404                }
405                deserializer.deserialize_identifier(GeneratedVisitor)
406            }
407        }
408        struct GeneratedVisitor;
409        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
410            type Value = CreateOrganizationRequest;
411            fn expecting(
412                &self,
413                formatter: &mut std::fmt::Formatter<'_>,
414            ) -> std::fmt::Result {
415                formatter
416                    .write_str(
417                        "struct origincloud.resourcemanager.v1beta1.CreateOrganizationRequest",
418                    )
419            }
420            fn visit_map<V>(
421                self,
422                mut map_: V,
423            ) -> std::result::Result<CreateOrganizationRequest, V::Error>
424            where
425                V: serde::de::MapAccess<'de>,
426            {
427                let mut organization__ = None;
428                let mut request_id__ = None;
429                while let Some(k) = map_.next_key()? {
430                    match k {
431                        GeneratedField::Organization => {
432                            if organization__.is_some() {
433                                return Err(
434                                    serde::de::Error::duplicate_field("organization"),
435                                );
436                            }
437                            organization__ = map_.next_value()?;
438                        }
439                        GeneratedField::RequestId => {
440                            if request_id__.is_some() {
441                                return Err(serde::de::Error::duplicate_field("requestId"));
442                            }
443                            request_id__ = Some(map_.next_value()?);
444                        }
445                        GeneratedField::__SkipField__ => {
446                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
447                        }
448                    }
449                }
450                Ok(CreateOrganizationRequest {
451                    organization: organization__,
452                    request_id: request_id__.unwrap_or_default(),
453                })
454            }
455        }
456        deserializer
457            .deserialize_struct(
458                "origincloud.resourcemanager.v1beta1.CreateOrganizationRequest",
459                FIELDS,
460                GeneratedVisitor,
461            )
462    }
463}
464impl serde::Serialize for CreateProjectRequest {
465    #[allow(deprecated)]
466    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
467    where
468        S: serde::Serializer,
469    {
470        use serde::ser::SerializeStruct;
471        let mut len = 0;
472        if self.project.is_some() {
473            len += 1;
474        }
475        if !self.project_id.is_empty() {
476            len += 1;
477        }
478        if !self.request_id.is_empty() {
479            len += 1;
480        }
481        let mut struct_ser = serializer
482            .serialize_struct(
483                "origincloud.resourcemanager.v1beta1.CreateProjectRequest",
484                len,
485            )?;
486        if let Some(v) = self.project.as_ref() {
487            struct_ser.serialize_field("project", v)?;
488        }
489        if !self.project_id.is_empty() {
490            struct_ser.serialize_field("projectId", &self.project_id)?;
491        }
492        if !self.request_id.is_empty() {
493            struct_ser.serialize_field("requestId", &self.request_id)?;
494        }
495        struct_ser.end()
496    }
497}
498impl<'de> serde::Deserialize<'de> for CreateProjectRequest {
499    #[allow(deprecated)]
500    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
501    where
502        D: serde::Deserializer<'de>,
503    {
504        const FIELDS: &[&str] = &[
505            "project",
506            "project_id",
507            "projectId",
508            "request_id",
509            "requestId",
510        ];
511        #[allow(clippy::enum_variant_names)]
512        enum GeneratedField {
513            Project,
514            ProjectId,
515            RequestId,
516            __SkipField__,
517        }
518        impl<'de> serde::Deserialize<'de> for GeneratedField {
519            fn deserialize<D>(
520                deserializer: D,
521            ) -> std::result::Result<GeneratedField, D::Error>
522            where
523                D: serde::Deserializer<'de>,
524            {
525                struct GeneratedVisitor;
526                impl serde::de::Visitor<'_> for GeneratedVisitor {
527                    type Value = GeneratedField;
528                    fn expecting(
529                        &self,
530                        formatter: &mut std::fmt::Formatter<'_>,
531                    ) -> std::fmt::Result {
532                        write!(formatter, "expected one of: {:?}", & FIELDS)
533                    }
534                    #[allow(unused_variables)]
535                    fn visit_str<E>(
536                        self,
537                        value: &str,
538                    ) -> std::result::Result<GeneratedField, E>
539                    where
540                        E: serde::de::Error,
541                    {
542                        match value {
543                            "project" => Ok(GeneratedField::Project),
544                            "projectId" | "project_id" => Ok(GeneratedField::ProjectId),
545                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
546                            _ => Ok(GeneratedField::__SkipField__),
547                        }
548                    }
549                }
550                deserializer.deserialize_identifier(GeneratedVisitor)
551            }
552        }
553        struct GeneratedVisitor;
554        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
555            type Value = CreateProjectRequest;
556            fn expecting(
557                &self,
558                formatter: &mut std::fmt::Formatter<'_>,
559            ) -> std::fmt::Result {
560                formatter
561                    .write_str(
562                        "struct origincloud.resourcemanager.v1beta1.CreateProjectRequest",
563                    )
564            }
565            fn visit_map<V>(
566                self,
567                mut map_: V,
568            ) -> std::result::Result<CreateProjectRequest, V::Error>
569            where
570                V: serde::de::MapAccess<'de>,
571            {
572                let mut project__ = None;
573                let mut project_id__ = None;
574                let mut request_id__ = None;
575                while let Some(k) = map_.next_key()? {
576                    match k {
577                        GeneratedField::Project => {
578                            if project__.is_some() {
579                                return Err(serde::de::Error::duplicate_field("project"));
580                            }
581                            project__ = map_.next_value()?;
582                        }
583                        GeneratedField::ProjectId => {
584                            if project_id__.is_some() {
585                                return Err(serde::de::Error::duplicate_field("projectId"));
586                            }
587                            project_id__ = Some(map_.next_value()?);
588                        }
589                        GeneratedField::RequestId => {
590                            if request_id__.is_some() {
591                                return Err(serde::de::Error::duplicate_field("requestId"));
592                            }
593                            request_id__ = Some(map_.next_value()?);
594                        }
595                        GeneratedField::__SkipField__ => {
596                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
597                        }
598                    }
599                }
600                Ok(CreateProjectRequest {
601                    project: project__,
602                    project_id: project_id__.unwrap_or_default(),
603                    request_id: request_id__.unwrap_or_default(),
604                })
605            }
606        }
607        deserializer
608            .deserialize_struct(
609                "origincloud.resourcemanager.v1beta1.CreateProjectRequest",
610                FIELDS,
611                GeneratedVisitor,
612            )
613    }
614}
615impl serde::Serialize for DeleteOrganizationRequest {
616    #[allow(deprecated)]
617    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
618    where
619        S: serde::Serializer,
620    {
621        use serde::ser::SerializeStruct;
622        let mut len = 0;
623        if !self.name.is_empty() {
624            len += 1;
625        }
626        let mut struct_ser = serializer
627            .serialize_struct(
628                "origincloud.resourcemanager.v1beta1.DeleteOrganizationRequest",
629                len,
630            )?;
631        if !self.name.is_empty() {
632            struct_ser.serialize_field("name", &self.name)?;
633        }
634        struct_ser.end()
635    }
636}
637impl<'de> serde::Deserialize<'de> for DeleteOrganizationRequest {
638    #[allow(deprecated)]
639    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
640    where
641        D: serde::Deserializer<'de>,
642    {
643        const FIELDS: &[&str] = &["name"];
644        #[allow(clippy::enum_variant_names)]
645        enum GeneratedField {
646            Name,
647            __SkipField__,
648        }
649        impl<'de> serde::Deserialize<'de> for GeneratedField {
650            fn deserialize<D>(
651                deserializer: D,
652            ) -> std::result::Result<GeneratedField, D::Error>
653            where
654                D: serde::Deserializer<'de>,
655            {
656                struct GeneratedVisitor;
657                impl serde::de::Visitor<'_> for GeneratedVisitor {
658                    type Value = GeneratedField;
659                    fn expecting(
660                        &self,
661                        formatter: &mut std::fmt::Formatter<'_>,
662                    ) -> std::fmt::Result {
663                        write!(formatter, "expected one of: {:?}", & FIELDS)
664                    }
665                    #[allow(unused_variables)]
666                    fn visit_str<E>(
667                        self,
668                        value: &str,
669                    ) -> std::result::Result<GeneratedField, E>
670                    where
671                        E: serde::de::Error,
672                    {
673                        match value {
674                            "name" => Ok(GeneratedField::Name),
675                            _ => Ok(GeneratedField::__SkipField__),
676                        }
677                    }
678                }
679                deserializer.deserialize_identifier(GeneratedVisitor)
680            }
681        }
682        struct GeneratedVisitor;
683        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
684            type Value = DeleteOrganizationRequest;
685            fn expecting(
686                &self,
687                formatter: &mut std::fmt::Formatter<'_>,
688            ) -> std::fmt::Result {
689                formatter
690                    .write_str(
691                        "struct origincloud.resourcemanager.v1beta1.DeleteOrganizationRequest",
692                    )
693            }
694            fn visit_map<V>(
695                self,
696                mut map_: V,
697            ) -> std::result::Result<DeleteOrganizationRequest, V::Error>
698            where
699                V: serde::de::MapAccess<'de>,
700            {
701                let mut name__ = None;
702                while let Some(k) = map_.next_key()? {
703                    match k {
704                        GeneratedField::Name => {
705                            if name__.is_some() {
706                                return Err(serde::de::Error::duplicate_field("name"));
707                            }
708                            name__ = Some(map_.next_value()?);
709                        }
710                        GeneratedField::__SkipField__ => {
711                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
712                        }
713                    }
714                }
715                Ok(DeleteOrganizationRequest {
716                    name: name__.unwrap_or_default(),
717                })
718            }
719        }
720        deserializer
721            .deserialize_struct(
722                "origincloud.resourcemanager.v1beta1.DeleteOrganizationRequest",
723                FIELDS,
724                GeneratedVisitor,
725            )
726    }
727}
728impl serde::Serialize for DeleteProjectRequest {
729    #[allow(deprecated)]
730    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
731    where
732        S: serde::Serializer,
733    {
734        use serde::ser::SerializeStruct;
735        let mut len = 0;
736        if !self.name.is_empty() {
737            len += 1;
738        }
739        let mut struct_ser = serializer
740            .serialize_struct(
741                "origincloud.resourcemanager.v1beta1.DeleteProjectRequest",
742                len,
743            )?;
744        if !self.name.is_empty() {
745            struct_ser.serialize_field("name", &self.name)?;
746        }
747        struct_ser.end()
748    }
749}
750impl<'de> serde::Deserialize<'de> for DeleteProjectRequest {
751    #[allow(deprecated)]
752    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
753    where
754        D: serde::Deserializer<'de>,
755    {
756        const FIELDS: &[&str] = &["name"];
757        #[allow(clippy::enum_variant_names)]
758        enum GeneratedField {
759            Name,
760            __SkipField__,
761        }
762        impl<'de> serde::Deserialize<'de> for GeneratedField {
763            fn deserialize<D>(
764                deserializer: D,
765            ) -> std::result::Result<GeneratedField, D::Error>
766            where
767                D: serde::Deserializer<'de>,
768            {
769                struct GeneratedVisitor;
770                impl serde::de::Visitor<'_> for GeneratedVisitor {
771                    type Value = GeneratedField;
772                    fn expecting(
773                        &self,
774                        formatter: &mut std::fmt::Formatter<'_>,
775                    ) -> std::fmt::Result {
776                        write!(formatter, "expected one of: {:?}", & FIELDS)
777                    }
778                    #[allow(unused_variables)]
779                    fn visit_str<E>(
780                        self,
781                        value: &str,
782                    ) -> std::result::Result<GeneratedField, E>
783                    where
784                        E: serde::de::Error,
785                    {
786                        match value {
787                            "name" => Ok(GeneratedField::Name),
788                            _ => Ok(GeneratedField::__SkipField__),
789                        }
790                    }
791                }
792                deserializer.deserialize_identifier(GeneratedVisitor)
793            }
794        }
795        struct GeneratedVisitor;
796        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
797            type Value = DeleteProjectRequest;
798            fn expecting(
799                &self,
800                formatter: &mut std::fmt::Formatter<'_>,
801            ) -> std::fmt::Result {
802                formatter
803                    .write_str(
804                        "struct origincloud.resourcemanager.v1beta1.DeleteProjectRequest",
805                    )
806            }
807            fn visit_map<V>(
808                self,
809                mut map_: V,
810            ) -> std::result::Result<DeleteProjectRequest, V::Error>
811            where
812                V: serde::de::MapAccess<'de>,
813            {
814                let mut name__ = None;
815                while let Some(k) = map_.next_key()? {
816                    match k {
817                        GeneratedField::Name => {
818                            if name__.is_some() {
819                                return Err(serde::de::Error::duplicate_field("name"));
820                            }
821                            name__ = Some(map_.next_value()?);
822                        }
823                        GeneratedField::__SkipField__ => {
824                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
825                        }
826                    }
827                }
828                Ok(DeleteProjectRequest {
829                    name: name__.unwrap_or_default(),
830                })
831            }
832        }
833        deserializer
834            .deserialize_struct(
835                "origincloud.resourcemanager.v1beta1.DeleteProjectRequest",
836                FIELDS,
837                GeneratedVisitor,
838            )
839    }
840}
841impl serde::Serialize for GetOrganizationQuotaRequest {
842    #[allow(deprecated)]
843    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
844    where
845        S: serde::Serializer,
846    {
847        use serde::ser::SerializeStruct;
848        let mut len = 0;
849        if !self.name.is_empty() {
850            len += 1;
851        }
852        let mut struct_ser = serializer
853            .serialize_struct(
854                "origincloud.resourcemanager.v1beta1.GetOrganizationQuotaRequest",
855                len,
856            )?;
857        if !self.name.is_empty() {
858            struct_ser.serialize_field("name", &self.name)?;
859        }
860        struct_ser.end()
861    }
862}
863impl<'de> serde::Deserialize<'de> for GetOrganizationQuotaRequest {
864    #[allow(deprecated)]
865    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
866    where
867        D: serde::Deserializer<'de>,
868    {
869        const FIELDS: &[&str] = &["name"];
870        #[allow(clippy::enum_variant_names)]
871        enum GeneratedField {
872            Name,
873            __SkipField__,
874        }
875        impl<'de> serde::Deserialize<'de> for GeneratedField {
876            fn deserialize<D>(
877                deserializer: D,
878            ) -> std::result::Result<GeneratedField, D::Error>
879            where
880                D: serde::Deserializer<'de>,
881            {
882                struct GeneratedVisitor;
883                impl serde::de::Visitor<'_> for GeneratedVisitor {
884                    type Value = GeneratedField;
885                    fn expecting(
886                        &self,
887                        formatter: &mut std::fmt::Formatter<'_>,
888                    ) -> std::fmt::Result {
889                        write!(formatter, "expected one of: {:?}", & FIELDS)
890                    }
891                    #[allow(unused_variables)]
892                    fn visit_str<E>(
893                        self,
894                        value: &str,
895                    ) -> std::result::Result<GeneratedField, E>
896                    where
897                        E: serde::de::Error,
898                    {
899                        match value {
900                            "name" => Ok(GeneratedField::Name),
901                            _ => Ok(GeneratedField::__SkipField__),
902                        }
903                    }
904                }
905                deserializer.deserialize_identifier(GeneratedVisitor)
906            }
907        }
908        struct GeneratedVisitor;
909        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
910            type Value = GetOrganizationQuotaRequest;
911            fn expecting(
912                &self,
913                formatter: &mut std::fmt::Formatter<'_>,
914            ) -> std::fmt::Result {
915                formatter
916                    .write_str(
917                        "struct origincloud.resourcemanager.v1beta1.GetOrganizationQuotaRequest",
918                    )
919            }
920            fn visit_map<V>(
921                self,
922                mut map_: V,
923            ) -> std::result::Result<GetOrganizationQuotaRequest, V::Error>
924            where
925                V: serde::de::MapAccess<'de>,
926            {
927                let mut name__ = None;
928                while let Some(k) = map_.next_key()? {
929                    match k {
930                        GeneratedField::Name => {
931                            if name__.is_some() {
932                                return Err(serde::de::Error::duplicate_field("name"));
933                            }
934                            name__ = Some(map_.next_value()?);
935                        }
936                        GeneratedField::__SkipField__ => {
937                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
938                        }
939                    }
940                }
941                Ok(GetOrganizationQuotaRequest {
942                    name: name__.unwrap_or_default(),
943                })
944            }
945        }
946        deserializer
947            .deserialize_struct(
948                "origincloud.resourcemanager.v1beta1.GetOrganizationQuotaRequest",
949                FIELDS,
950                GeneratedVisitor,
951            )
952    }
953}
954impl serde::Serialize for GetOrganizationRequest {
955    #[allow(deprecated)]
956    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
957    where
958        S: serde::Serializer,
959    {
960        use serde::ser::SerializeStruct;
961        let mut len = 0;
962        if !self.name.is_empty() {
963            len += 1;
964        }
965        let mut struct_ser = serializer
966            .serialize_struct(
967                "origincloud.resourcemanager.v1beta1.GetOrganizationRequest",
968                len,
969            )?;
970        if !self.name.is_empty() {
971            struct_ser.serialize_field("name", &self.name)?;
972        }
973        struct_ser.end()
974    }
975}
976impl<'de> serde::Deserialize<'de> for GetOrganizationRequest {
977    #[allow(deprecated)]
978    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
979    where
980        D: serde::Deserializer<'de>,
981    {
982        const FIELDS: &[&str] = &["name"];
983        #[allow(clippy::enum_variant_names)]
984        enum GeneratedField {
985            Name,
986            __SkipField__,
987        }
988        impl<'de> serde::Deserialize<'de> for GeneratedField {
989            fn deserialize<D>(
990                deserializer: D,
991            ) -> std::result::Result<GeneratedField, D::Error>
992            where
993                D: serde::Deserializer<'de>,
994            {
995                struct GeneratedVisitor;
996                impl serde::de::Visitor<'_> for GeneratedVisitor {
997                    type Value = GeneratedField;
998                    fn expecting(
999                        &self,
1000                        formatter: &mut std::fmt::Formatter<'_>,
1001                    ) -> std::fmt::Result {
1002                        write!(formatter, "expected one of: {:?}", & FIELDS)
1003                    }
1004                    #[allow(unused_variables)]
1005                    fn visit_str<E>(
1006                        self,
1007                        value: &str,
1008                    ) -> std::result::Result<GeneratedField, E>
1009                    where
1010                        E: serde::de::Error,
1011                    {
1012                        match value {
1013                            "name" => Ok(GeneratedField::Name),
1014                            _ => Ok(GeneratedField::__SkipField__),
1015                        }
1016                    }
1017                }
1018                deserializer.deserialize_identifier(GeneratedVisitor)
1019            }
1020        }
1021        struct GeneratedVisitor;
1022        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1023            type Value = GetOrganizationRequest;
1024            fn expecting(
1025                &self,
1026                formatter: &mut std::fmt::Formatter<'_>,
1027            ) -> std::fmt::Result {
1028                formatter
1029                    .write_str(
1030                        "struct origincloud.resourcemanager.v1beta1.GetOrganizationRequest",
1031                    )
1032            }
1033            fn visit_map<V>(
1034                self,
1035                mut map_: V,
1036            ) -> std::result::Result<GetOrganizationRequest, V::Error>
1037            where
1038                V: serde::de::MapAccess<'de>,
1039            {
1040                let mut name__ = None;
1041                while let Some(k) = map_.next_key()? {
1042                    match k {
1043                        GeneratedField::Name => {
1044                            if name__.is_some() {
1045                                return Err(serde::de::Error::duplicate_field("name"));
1046                            }
1047                            name__ = Some(map_.next_value()?);
1048                        }
1049                        GeneratedField::__SkipField__ => {
1050                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1051                        }
1052                    }
1053                }
1054                Ok(GetOrganizationRequest {
1055                    name: name__.unwrap_or_default(),
1056                })
1057            }
1058        }
1059        deserializer
1060            .deserialize_struct(
1061                "origincloud.resourcemanager.v1beta1.GetOrganizationRequest",
1062                FIELDS,
1063                GeneratedVisitor,
1064            )
1065    }
1066}
1067impl serde::Serialize for GetProjectQuotaRequest {
1068    #[allow(deprecated)]
1069    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1070    where
1071        S: serde::Serializer,
1072    {
1073        use serde::ser::SerializeStruct;
1074        let mut len = 0;
1075        if !self.name.is_empty() {
1076            len += 1;
1077        }
1078        let mut struct_ser = serializer
1079            .serialize_struct(
1080                "origincloud.resourcemanager.v1beta1.GetProjectQuotaRequest",
1081                len,
1082            )?;
1083        if !self.name.is_empty() {
1084            struct_ser.serialize_field("name", &self.name)?;
1085        }
1086        struct_ser.end()
1087    }
1088}
1089impl<'de> serde::Deserialize<'de> for GetProjectQuotaRequest {
1090    #[allow(deprecated)]
1091    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1092    where
1093        D: serde::Deserializer<'de>,
1094    {
1095        const FIELDS: &[&str] = &["name"];
1096        #[allow(clippy::enum_variant_names)]
1097        enum GeneratedField {
1098            Name,
1099            __SkipField__,
1100        }
1101        impl<'de> serde::Deserialize<'de> for GeneratedField {
1102            fn deserialize<D>(
1103                deserializer: D,
1104            ) -> std::result::Result<GeneratedField, D::Error>
1105            where
1106                D: serde::Deserializer<'de>,
1107            {
1108                struct GeneratedVisitor;
1109                impl serde::de::Visitor<'_> for GeneratedVisitor {
1110                    type Value = GeneratedField;
1111                    fn expecting(
1112                        &self,
1113                        formatter: &mut std::fmt::Formatter<'_>,
1114                    ) -> std::fmt::Result {
1115                        write!(formatter, "expected one of: {:?}", & FIELDS)
1116                    }
1117                    #[allow(unused_variables)]
1118                    fn visit_str<E>(
1119                        self,
1120                        value: &str,
1121                    ) -> std::result::Result<GeneratedField, E>
1122                    where
1123                        E: serde::de::Error,
1124                    {
1125                        match value {
1126                            "name" => Ok(GeneratedField::Name),
1127                            _ => Ok(GeneratedField::__SkipField__),
1128                        }
1129                    }
1130                }
1131                deserializer.deserialize_identifier(GeneratedVisitor)
1132            }
1133        }
1134        struct GeneratedVisitor;
1135        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1136            type Value = GetProjectQuotaRequest;
1137            fn expecting(
1138                &self,
1139                formatter: &mut std::fmt::Formatter<'_>,
1140            ) -> std::fmt::Result {
1141                formatter
1142                    .write_str(
1143                        "struct origincloud.resourcemanager.v1beta1.GetProjectQuotaRequest",
1144                    )
1145            }
1146            fn visit_map<V>(
1147                self,
1148                mut map_: V,
1149            ) -> std::result::Result<GetProjectQuotaRequest, V::Error>
1150            where
1151                V: serde::de::MapAccess<'de>,
1152            {
1153                let mut name__ = None;
1154                while let Some(k) = map_.next_key()? {
1155                    match k {
1156                        GeneratedField::Name => {
1157                            if name__.is_some() {
1158                                return Err(serde::de::Error::duplicate_field("name"));
1159                            }
1160                            name__ = Some(map_.next_value()?);
1161                        }
1162                        GeneratedField::__SkipField__ => {
1163                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1164                        }
1165                    }
1166                }
1167                Ok(GetProjectQuotaRequest {
1168                    name: name__.unwrap_or_default(),
1169                })
1170            }
1171        }
1172        deserializer
1173            .deserialize_struct(
1174                "origincloud.resourcemanager.v1beta1.GetProjectQuotaRequest",
1175                FIELDS,
1176                GeneratedVisitor,
1177            )
1178    }
1179}
1180impl serde::Serialize for GetProjectRequest {
1181    #[allow(deprecated)]
1182    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1183    where
1184        S: serde::Serializer,
1185    {
1186        use serde::ser::SerializeStruct;
1187        let mut len = 0;
1188        if !self.name.is_empty() {
1189            len += 1;
1190        }
1191        let mut struct_ser = serializer
1192            .serialize_struct(
1193                "origincloud.resourcemanager.v1beta1.GetProjectRequest",
1194                len,
1195            )?;
1196        if !self.name.is_empty() {
1197            struct_ser.serialize_field("name", &self.name)?;
1198        }
1199        struct_ser.end()
1200    }
1201}
1202impl<'de> serde::Deserialize<'de> for GetProjectRequest {
1203    #[allow(deprecated)]
1204    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1205    where
1206        D: serde::Deserializer<'de>,
1207    {
1208        const FIELDS: &[&str] = &["name"];
1209        #[allow(clippy::enum_variant_names)]
1210        enum GeneratedField {
1211            Name,
1212            __SkipField__,
1213        }
1214        impl<'de> serde::Deserialize<'de> for GeneratedField {
1215            fn deserialize<D>(
1216                deserializer: D,
1217            ) -> std::result::Result<GeneratedField, D::Error>
1218            where
1219                D: serde::Deserializer<'de>,
1220            {
1221                struct GeneratedVisitor;
1222                impl serde::de::Visitor<'_> for GeneratedVisitor {
1223                    type Value = GeneratedField;
1224                    fn expecting(
1225                        &self,
1226                        formatter: &mut std::fmt::Formatter<'_>,
1227                    ) -> std::fmt::Result {
1228                        write!(formatter, "expected one of: {:?}", & FIELDS)
1229                    }
1230                    #[allow(unused_variables)]
1231                    fn visit_str<E>(
1232                        self,
1233                        value: &str,
1234                    ) -> std::result::Result<GeneratedField, E>
1235                    where
1236                        E: serde::de::Error,
1237                    {
1238                        match value {
1239                            "name" => Ok(GeneratedField::Name),
1240                            _ => Ok(GeneratedField::__SkipField__),
1241                        }
1242                    }
1243                }
1244                deserializer.deserialize_identifier(GeneratedVisitor)
1245            }
1246        }
1247        struct GeneratedVisitor;
1248        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1249            type Value = GetProjectRequest;
1250            fn expecting(
1251                &self,
1252                formatter: &mut std::fmt::Formatter<'_>,
1253            ) -> std::fmt::Result {
1254                formatter
1255                    .write_str(
1256                        "struct origincloud.resourcemanager.v1beta1.GetProjectRequest",
1257                    )
1258            }
1259            fn visit_map<V>(
1260                self,
1261                mut map_: V,
1262            ) -> std::result::Result<GetProjectRequest, V::Error>
1263            where
1264                V: serde::de::MapAccess<'de>,
1265            {
1266                let mut name__ = None;
1267                while let Some(k) = map_.next_key()? {
1268                    match k {
1269                        GeneratedField::Name => {
1270                            if name__.is_some() {
1271                                return Err(serde::de::Error::duplicate_field("name"));
1272                            }
1273                            name__ = Some(map_.next_value()?);
1274                        }
1275                        GeneratedField::__SkipField__ => {
1276                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1277                        }
1278                    }
1279                }
1280                Ok(GetProjectRequest {
1281                    name: name__.unwrap_or_default(),
1282                })
1283            }
1284        }
1285        deserializer
1286            .deserialize_struct(
1287                "origincloud.resourcemanager.v1beta1.GetProjectRequest",
1288                FIELDS,
1289                GeneratedVisitor,
1290            )
1291    }
1292}
1293impl serde::Serialize for ListOrganizationsRequest {
1294    #[allow(deprecated)]
1295    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1296    where
1297        S: serde::Serializer,
1298    {
1299        use serde::ser::SerializeStruct;
1300        let mut len = 0;
1301        if self.page_size != 0 {
1302            len += 1;
1303        }
1304        if !self.page_token.is_empty() {
1305            len += 1;
1306        }
1307        let mut struct_ser = serializer
1308            .serialize_struct(
1309                "origincloud.resourcemanager.v1beta1.ListOrganizationsRequest",
1310                len,
1311            )?;
1312        if self.page_size != 0 {
1313            struct_ser.serialize_field("pageSize", &self.page_size)?;
1314        }
1315        if !self.page_token.is_empty() {
1316            struct_ser.serialize_field("pageToken", &self.page_token)?;
1317        }
1318        struct_ser.end()
1319    }
1320}
1321impl<'de> serde::Deserialize<'de> for ListOrganizationsRequest {
1322    #[allow(deprecated)]
1323    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1324    where
1325        D: serde::Deserializer<'de>,
1326    {
1327        const FIELDS: &[&str] = &["page_size", "pageSize", "page_token", "pageToken"];
1328        #[allow(clippy::enum_variant_names)]
1329        enum GeneratedField {
1330            PageSize,
1331            PageToken,
1332            __SkipField__,
1333        }
1334        impl<'de> serde::Deserialize<'de> for GeneratedField {
1335            fn deserialize<D>(
1336                deserializer: D,
1337            ) -> std::result::Result<GeneratedField, D::Error>
1338            where
1339                D: serde::Deserializer<'de>,
1340            {
1341                struct GeneratedVisitor;
1342                impl serde::de::Visitor<'_> for GeneratedVisitor {
1343                    type Value = GeneratedField;
1344                    fn expecting(
1345                        &self,
1346                        formatter: &mut std::fmt::Formatter<'_>,
1347                    ) -> std::fmt::Result {
1348                        write!(formatter, "expected one of: {:?}", & FIELDS)
1349                    }
1350                    #[allow(unused_variables)]
1351                    fn visit_str<E>(
1352                        self,
1353                        value: &str,
1354                    ) -> std::result::Result<GeneratedField, E>
1355                    where
1356                        E: serde::de::Error,
1357                    {
1358                        match value {
1359                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
1360                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
1361                            _ => Ok(GeneratedField::__SkipField__),
1362                        }
1363                    }
1364                }
1365                deserializer.deserialize_identifier(GeneratedVisitor)
1366            }
1367        }
1368        struct GeneratedVisitor;
1369        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1370            type Value = ListOrganizationsRequest;
1371            fn expecting(
1372                &self,
1373                formatter: &mut std::fmt::Formatter<'_>,
1374            ) -> std::fmt::Result {
1375                formatter
1376                    .write_str(
1377                        "struct origincloud.resourcemanager.v1beta1.ListOrganizationsRequest",
1378                    )
1379            }
1380            fn visit_map<V>(
1381                self,
1382                mut map_: V,
1383            ) -> std::result::Result<ListOrganizationsRequest, V::Error>
1384            where
1385                V: serde::de::MapAccess<'de>,
1386            {
1387                let mut page_size__ = None;
1388                let mut page_token__ = None;
1389                while let Some(k) = map_.next_key()? {
1390                    match k {
1391                        GeneratedField::PageSize => {
1392                            if page_size__.is_some() {
1393                                return Err(serde::de::Error::duplicate_field("pageSize"));
1394                            }
1395                            page_size__ = Some(
1396                                map_
1397                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
1398                                    .0,
1399                            );
1400                        }
1401                        GeneratedField::PageToken => {
1402                            if page_token__.is_some() {
1403                                return Err(serde::de::Error::duplicate_field("pageToken"));
1404                            }
1405                            page_token__ = Some(map_.next_value()?);
1406                        }
1407                        GeneratedField::__SkipField__ => {
1408                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1409                        }
1410                    }
1411                }
1412                Ok(ListOrganizationsRequest {
1413                    page_size: page_size__.unwrap_or_default(),
1414                    page_token: page_token__.unwrap_or_default(),
1415                })
1416            }
1417        }
1418        deserializer
1419            .deserialize_struct(
1420                "origincloud.resourcemanager.v1beta1.ListOrganizationsRequest",
1421                FIELDS,
1422                GeneratedVisitor,
1423            )
1424    }
1425}
1426impl serde::Serialize for ListOrganizationsResponse {
1427    #[allow(deprecated)]
1428    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1429    where
1430        S: serde::Serializer,
1431    {
1432        use serde::ser::SerializeStruct;
1433        let mut len = 0;
1434        if !self.organizations.is_empty() {
1435            len += 1;
1436        }
1437        if !self.next_page_token.is_empty() {
1438            len += 1;
1439        }
1440        let mut struct_ser = serializer
1441            .serialize_struct(
1442                "origincloud.resourcemanager.v1beta1.ListOrganizationsResponse",
1443                len,
1444            )?;
1445        if !self.organizations.is_empty() {
1446            struct_ser.serialize_field("organizations", &self.organizations)?;
1447        }
1448        if !self.next_page_token.is_empty() {
1449            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
1450        }
1451        struct_ser.end()
1452    }
1453}
1454impl<'de> serde::Deserialize<'de> for ListOrganizationsResponse {
1455    #[allow(deprecated)]
1456    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1457    where
1458        D: serde::Deserializer<'de>,
1459    {
1460        const FIELDS: &[&str] = &["organizations", "next_page_token", "nextPageToken"];
1461        #[allow(clippy::enum_variant_names)]
1462        enum GeneratedField {
1463            Organizations,
1464            NextPageToken,
1465            __SkipField__,
1466        }
1467        impl<'de> serde::Deserialize<'de> for GeneratedField {
1468            fn deserialize<D>(
1469                deserializer: D,
1470            ) -> std::result::Result<GeneratedField, D::Error>
1471            where
1472                D: serde::Deserializer<'de>,
1473            {
1474                struct GeneratedVisitor;
1475                impl serde::de::Visitor<'_> for GeneratedVisitor {
1476                    type Value = GeneratedField;
1477                    fn expecting(
1478                        &self,
1479                        formatter: &mut std::fmt::Formatter<'_>,
1480                    ) -> std::fmt::Result {
1481                        write!(formatter, "expected one of: {:?}", & FIELDS)
1482                    }
1483                    #[allow(unused_variables)]
1484                    fn visit_str<E>(
1485                        self,
1486                        value: &str,
1487                    ) -> std::result::Result<GeneratedField, E>
1488                    where
1489                        E: serde::de::Error,
1490                    {
1491                        match value {
1492                            "organizations" => Ok(GeneratedField::Organizations),
1493                            "nextPageToken" | "next_page_token" => {
1494                                Ok(GeneratedField::NextPageToken)
1495                            }
1496                            _ => Ok(GeneratedField::__SkipField__),
1497                        }
1498                    }
1499                }
1500                deserializer.deserialize_identifier(GeneratedVisitor)
1501            }
1502        }
1503        struct GeneratedVisitor;
1504        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1505            type Value = ListOrganizationsResponse;
1506            fn expecting(
1507                &self,
1508                formatter: &mut std::fmt::Formatter<'_>,
1509            ) -> std::fmt::Result {
1510                formatter
1511                    .write_str(
1512                        "struct origincloud.resourcemanager.v1beta1.ListOrganizationsResponse",
1513                    )
1514            }
1515            fn visit_map<V>(
1516                self,
1517                mut map_: V,
1518            ) -> std::result::Result<ListOrganizationsResponse, V::Error>
1519            where
1520                V: serde::de::MapAccess<'de>,
1521            {
1522                let mut organizations__ = None;
1523                let mut next_page_token__ = None;
1524                while let Some(k) = map_.next_key()? {
1525                    match k {
1526                        GeneratedField::Organizations => {
1527                            if organizations__.is_some() {
1528                                return Err(
1529                                    serde::de::Error::duplicate_field("organizations"),
1530                                );
1531                            }
1532                            organizations__ = Some(map_.next_value()?);
1533                        }
1534                        GeneratedField::NextPageToken => {
1535                            if next_page_token__.is_some() {
1536                                return Err(
1537                                    serde::de::Error::duplicate_field("nextPageToken"),
1538                                );
1539                            }
1540                            next_page_token__ = Some(map_.next_value()?);
1541                        }
1542                        GeneratedField::__SkipField__ => {
1543                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1544                        }
1545                    }
1546                }
1547                Ok(ListOrganizationsResponse {
1548                    organizations: organizations__.unwrap_or_default(),
1549                    next_page_token: next_page_token__.unwrap_or_default(),
1550                })
1551            }
1552        }
1553        deserializer
1554            .deserialize_struct(
1555                "origincloud.resourcemanager.v1beta1.ListOrganizationsResponse",
1556                FIELDS,
1557                GeneratedVisitor,
1558            )
1559    }
1560}
1561impl serde::Serialize for ListProjectsRequest {
1562    #[allow(deprecated)]
1563    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1564    where
1565        S: serde::Serializer,
1566    {
1567        use serde::ser::SerializeStruct;
1568        let mut len = 0;
1569        if !self.organization.is_empty() {
1570            len += 1;
1571        }
1572        if self.page_size != 0 {
1573            len += 1;
1574        }
1575        if !self.page_token.is_empty() {
1576            len += 1;
1577        }
1578        let mut struct_ser = serializer
1579            .serialize_struct(
1580                "origincloud.resourcemanager.v1beta1.ListProjectsRequest",
1581                len,
1582            )?;
1583        if !self.organization.is_empty() {
1584            struct_ser.serialize_field("organization", &self.organization)?;
1585        }
1586        if self.page_size != 0 {
1587            struct_ser.serialize_field("pageSize", &self.page_size)?;
1588        }
1589        if !self.page_token.is_empty() {
1590            struct_ser.serialize_field("pageToken", &self.page_token)?;
1591        }
1592        struct_ser.end()
1593    }
1594}
1595impl<'de> serde::Deserialize<'de> for ListProjectsRequest {
1596    #[allow(deprecated)]
1597    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1598    where
1599        D: serde::Deserializer<'de>,
1600    {
1601        const FIELDS: &[&str] = &[
1602            "organization",
1603            "page_size",
1604            "pageSize",
1605            "page_token",
1606            "pageToken",
1607        ];
1608        #[allow(clippy::enum_variant_names)]
1609        enum GeneratedField {
1610            Organization,
1611            PageSize,
1612            PageToken,
1613            __SkipField__,
1614        }
1615        impl<'de> serde::Deserialize<'de> for GeneratedField {
1616            fn deserialize<D>(
1617                deserializer: D,
1618            ) -> std::result::Result<GeneratedField, D::Error>
1619            where
1620                D: serde::Deserializer<'de>,
1621            {
1622                struct GeneratedVisitor;
1623                impl serde::de::Visitor<'_> for GeneratedVisitor {
1624                    type Value = GeneratedField;
1625                    fn expecting(
1626                        &self,
1627                        formatter: &mut std::fmt::Formatter<'_>,
1628                    ) -> std::fmt::Result {
1629                        write!(formatter, "expected one of: {:?}", & FIELDS)
1630                    }
1631                    #[allow(unused_variables)]
1632                    fn visit_str<E>(
1633                        self,
1634                        value: &str,
1635                    ) -> std::result::Result<GeneratedField, E>
1636                    where
1637                        E: serde::de::Error,
1638                    {
1639                        match value {
1640                            "organization" => Ok(GeneratedField::Organization),
1641                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
1642                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
1643                            _ => Ok(GeneratedField::__SkipField__),
1644                        }
1645                    }
1646                }
1647                deserializer.deserialize_identifier(GeneratedVisitor)
1648            }
1649        }
1650        struct GeneratedVisitor;
1651        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1652            type Value = ListProjectsRequest;
1653            fn expecting(
1654                &self,
1655                formatter: &mut std::fmt::Formatter<'_>,
1656            ) -> std::fmt::Result {
1657                formatter
1658                    .write_str(
1659                        "struct origincloud.resourcemanager.v1beta1.ListProjectsRequest",
1660                    )
1661            }
1662            fn visit_map<V>(
1663                self,
1664                mut map_: V,
1665            ) -> std::result::Result<ListProjectsRequest, V::Error>
1666            where
1667                V: serde::de::MapAccess<'de>,
1668            {
1669                let mut organization__ = None;
1670                let mut page_size__ = None;
1671                let mut page_token__ = None;
1672                while let Some(k) = map_.next_key()? {
1673                    match k {
1674                        GeneratedField::Organization => {
1675                            if organization__.is_some() {
1676                                return Err(
1677                                    serde::de::Error::duplicate_field("organization"),
1678                                );
1679                            }
1680                            organization__ = Some(map_.next_value()?);
1681                        }
1682                        GeneratedField::PageSize => {
1683                            if page_size__.is_some() {
1684                                return Err(serde::de::Error::duplicate_field("pageSize"));
1685                            }
1686                            page_size__ = Some(
1687                                map_
1688                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
1689                                    .0,
1690                            );
1691                        }
1692                        GeneratedField::PageToken => {
1693                            if page_token__.is_some() {
1694                                return Err(serde::de::Error::duplicate_field("pageToken"));
1695                            }
1696                            page_token__ = Some(map_.next_value()?);
1697                        }
1698                        GeneratedField::__SkipField__ => {
1699                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1700                        }
1701                    }
1702                }
1703                Ok(ListProjectsRequest {
1704                    organization: organization__.unwrap_or_default(),
1705                    page_size: page_size__.unwrap_or_default(),
1706                    page_token: page_token__.unwrap_or_default(),
1707                })
1708            }
1709        }
1710        deserializer
1711            .deserialize_struct(
1712                "origincloud.resourcemanager.v1beta1.ListProjectsRequest",
1713                FIELDS,
1714                GeneratedVisitor,
1715            )
1716    }
1717}
1718impl serde::Serialize for ListProjectsResponse {
1719    #[allow(deprecated)]
1720    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1721    where
1722        S: serde::Serializer,
1723    {
1724        use serde::ser::SerializeStruct;
1725        let mut len = 0;
1726        if !self.projects.is_empty() {
1727            len += 1;
1728        }
1729        if !self.next_page_token.is_empty() {
1730            len += 1;
1731        }
1732        let mut struct_ser = serializer
1733            .serialize_struct(
1734                "origincloud.resourcemanager.v1beta1.ListProjectsResponse",
1735                len,
1736            )?;
1737        if !self.projects.is_empty() {
1738            struct_ser.serialize_field("projects", &self.projects)?;
1739        }
1740        if !self.next_page_token.is_empty() {
1741            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
1742        }
1743        struct_ser.end()
1744    }
1745}
1746impl<'de> serde::Deserialize<'de> for ListProjectsResponse {
1747    #[allow(deprecated)]
1748    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1749    where
1750        D: serde::Deserializer<'de>,
1751    {
1752        const FIELDS: &[&str] = &["projects", "next_page_token", "nextPageToken"];
1753        #[allow(clippy::enum_variant_names)]
1754        enum GeneratedField {
1755            Projects,
1756            NextPageToken,
1757            __SkipField__,
1758        }
1759        impl<'de> serde::Deserialize<'de> for GeneratedField {
1760            fn deserialize<D>(
1761                deserializer: D,
1762            ) -> std::result::Result<GeneratedField, D::Error>
1763            where
1764                D: serde::Deserializer<'de>,
1765            {
1766                struct GeneratedVisitor;
1767                impl serde::de::Visitor<'_> for GeneratedVisitor {
1768                    type Value = GeneratedField;
1769                    fn expecting(
1770                        &self,
1771                        formatter: &mut std::fmt::Formatter<'_>,
1772                    ) -> std::fmt::Result {
1773                        write!(formatter, "expected one of: {:?}", & FIELDS)
1774                    }
1775                    #[allow(unused_variables)]
1776                    fn visit_str<E>(
1777                        self,
1778                        value: &str,
1779                    ) -> std::result::Result<GeneratedField, E>
1780                    where
1781                        E: serde::de::Error,
1782                    {
1783                        match value {
1784                            "projects" => Ok(GeneratedField::Projects),
1785                            "nextPageToken" | "next_page_token" => {
1786                                Ok(GeneratedField::NextPageToken)
1787                            }
1788                            _ => Ok(GeneratedField::__SkipField__),
1789                        }
1790                    }
1791                }
1792                deserializer.deserialize_identifier(GeneratedVisitor)
1793            }
1794        }
1795        struct GeneratedVisitor;
1796        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1797            type Value = ListProjectsResponse;
1798            fn expecting(
1799                &self,
1800                formatter: &mut std::fmt::Formatter<'_>,
1801            ) -> std::fmt::Result {
1802                formatter
1803                    .write_str(
1804                        "struct origincloud.resourcemanager.v1beta1.ListProjectsResponse",
1805                    )
1806            }
1807            fn visit_map<V>(
1808                self,
1809                mut map_: V,
1810            ) -> std::result::Result<ListProjectsResponse, V::Error>
1811            where
1812                V: serde::de::MapAccess<'de>,
1813            {
1814                let mut projects__ = None;
1815                let mut next_page_token__ = None;
1816                while let Some(k) = map_.next_key()? {
1817                    match k {
1818                        GeneratedField::Projects => {
1819                            if projects__.is_some() {
1820                                return Err(serde::de::Error::duplicate_field("projects"));
1821                            }
1822                            projects__ = Some(map_.next_value()?);
1823                        }
1824                        GeneratedField::NextPageToken => {
1825                            if next_page_token__.is_some() {
1826                                return Err(
1827                                    serde::de::Error::duplicate_field("nextPageToken"),
1828                                );
1829                            }
1830                            next_page_token__ = Some(map_.next_value()?);
1831                        }
1832                        GeneratedField::__SkipField__ => {
1833                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
1834                        }
1835                    }
1836                }
1837                Ok(ListProjectsResponse {
1838                    projects: projects__.unwrap_or_default(),
1839                    next_page_token: next_page_token__.unwrap_or_default(),
1840                })
1841            }
1842        }
1843        deserializer
1844            .deserialize_struct(
1845                "origincloud.resourcemanager.v1beta1.ListProjectsResponse",
1846                FIELDS,
1847                GeneratedVisitor,
1848            )
1849    }
1850}
1851impl serde::Serialize for Organization {
1852    #[allow(deprecated)]
1853    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1854    where
1855        S: serde::Serializer,
1856    {
1857        use serde::ser::SerializeStruct;
1858        let mut len = 0;
1859        if !self.name.is_empty() {
1860            len += 1;
1861        }
1862        if !self.urn.is_empty() {
1863            len += 1;
1864        }
1865        if !self.display_name.is_empty() {
1866            len += 1;
1867        }
1868        if self.state != 0 {
1869            len += 1;
1870        }
1871        if self.create_time.is_some() {
1872            len += 1;
1873        }
1874        if !self.creator.is_empty() {
1875            len += 1;
1876        }
1877        let mut struct_ser = serializer
1878            .serialize_struct("origincloud.resourcemanager.v1beta1.Organization", len)?;
1879        if !self.name.is_empty() {
1880            struct_ser.serialize_field("name", &self.name)?;
1881        }
1882        if !self.urn.is_empty() {
1883            struct_ser.serialize_field("urn", &self.urn)?;
1884        }
1885        if !self.display_name.is_empty() {
1886            struct_ser.serialize_field("displayName", &self.display_name)?;
1887        }
1888        if self.state != 0 {
1889            let v = organization::State::try_from(self.state)
1890                .map_err(|_| serde::ser::Error::custom(
1891                    format!("Invalid variant {}", self.state),
1892                ))?;
1893            struct_ser.serialize_field("state", &v)?;
1894        }
1895        if let Some(v) = self.create_time.as_ref() {
1896            struct_ser.serialize_field("createTime", v)?;
1897        }
1898        if !self.creator.is_empty() {
1899            struct_ser.serialize_field("creator", &self.creator)?;
1900        }
1901        struct_ser.end()
1902    }
1903}
1904impl<'de> serde::Deserialize<'de> for Organization {
1905    #[allow(deprecated)]
1906    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1907    where
1908        D: serde::Deserializer<'de>,
1909    {
1910        const FIELDS: &[&str] = &[
1911            "name",
1912            "urn",
1913            "display_name",
1914            "displayName",
1915            "state",
1916            "create_time",
1917            "createTime",
1918            "creator",
1919        ];
1920        #[allow(clippy::enum_variant_names)]
1921        enum GeneratedField {
1922            Name,
1923            Urn,
1924            DisplayName,
1925            State,
1926            CreateTime,
1927            Creator,
1928            __SkipField__,
1929        }
1930        impl<'de> serde::Deserialize<'de> for GeneratedField {
1931            fn deserialize<D>(
1932                deserializer: D,
1933            ) -> std::result::Result<GeneratedField, D::Error>
1934            where
1935                D: serde::Deserializer<'de>,
1936            {
1937                struct GeneratedVisitor;
1938                impl serde::de::Visitor<'_> for GeneratedVisitor {
1939                    type Value = GeneratedField;
1940                    fn expecting(
1941                        &self,
1942                        formatter: &mut std::fmt::Formatter<'_>,
1943                    ) -> std::fmt::Result {
1944                        write!(formatter, "expected one of: {:?}", & FIELDS)
1945                    }
1946                    #[allow(unused_variables)]
1947                    fn visit_str<E>(
1948                        self,
1949                        value: &str,
1950                    ) -> std::result::Result<GeneratedField, E>
1951                    where
1952                        E: serde::de::Error,
1953                    {
1954                        match value {
1955                            "name" => Ok(GeneratedField::Name),
1956                            "urn" => Ok(GeneratedField::Urn),
1957                            "displayName" | "display_name" => {
1958                                Ok(GeneratedField::DisplayName)
1959                            }
1960                            "state" => Ok(GeneratedField::State),
1961                            "createTime" | "create_time" => {
1962                                Ok(GeneratedField::CreateTime)
1963                            }
1964                            "creator" => Ok(GeneratedField::Creator),
1965                            _ => Ok(GeneratedField::__SkipField__),
1966                        }
1967                    }
1968                }
1969                deserializer.deserialize_identifier(GeneratedVisitor)
1970            }
1971        }
1972        struct GeneratedVisitor;
1973        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
1974            type Value = Organization;
1975            fn expecting(
1976                &self,
1977                formatter: &mut std::fmt::Formatter<'_>,
1978            ) -> std::fmt::Result {
1979                formatter
1980                    .write_str("struct origincloud.resourcemanager.v1beta1.Organization")
1981            }
1982            fn visit_map<V>(
1983                self,
1984                mut map_: V,
1985            ) -> std::result::Result<Organization, V::Error>
1986            where
1987                V: serde::de::MapAccess<'de>,
1988            {
1989                let mut name__ = None;
1990                let mut urn__ = None;
1991                let mut display_name__ = None;
1992                let mut state__ = None;
1993                let mut create_time__ = None;
1994                let mut creator__ = None;
1995                while let Some(k) = map_.next_key()? {
1996                    match k {
1997                        GeneratedField::Name => {
1998                            if name__.is_some() {
1999                                return Err(serde::de::Error::duplicate_field("name"));
2000                            }
2001                            name__ = Some(map_.next_value()?);
2002                        }
2003                        GeneratedField::Urn => {
2004                            if urn__.is_some() {
2005                                return Err(serde::de::Error::duplicate_field("urn"));
2006                            }
2007                            urn__ = Some(map_.next_value()?);
2008                        }
2009                        GeneratedField::DisplayName => {
2010                            if display_name__.is_some() {
2011                                return Err(
2012                                    serde::de::Error::duplicate_field("displayName"),
2013                                );
2014                            }
2015                            display_name__ = Some(map_.next_value()?);
2016                        }
2017                        GeneratedField::State => {
2018                            if state__.is_some() {
2019                                return Err(serde::de::Error::duplicate_field("state"));
2020                            }
2021                            state__ = Some(
2022                                map_.next_value::<organization::State>()? as i32,
2023                            );
2024                        }
2025                        GeneratedField::CreateTime => {
2026                            if create_time__.is_some() {
2027                                return Err(serde::de::Error::duplicate_field("createTime"));
2028                            }
2029                            create_time__ = map_.next_value()?;
2030                        }
2031                        GeneratedField::Creator => {
2032                            if creator__.is_some() {
2033                                return Err(serde::de::Error::duplicate_field("creator"));
2034                            }
2035                            creator__ = Some(map_.next_value()?);
2036                        }
2037                        GeneratedField::__SkipField__ => {
2038                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2039                        }
2040                    }
2041                }
2042                Ok(Organization {
2043                    name: name__.unwrap_or_default(),
2044                    urn: urn__.unwrap_or_default(),
2045                    display_name: display_name__.unwrap_or_default(),
2046                    state: state__.unwrap_or_default(),
2047                    create_time: create_time__,
2048                    creator: creator__.unwrap_or_default(),
2049                })
2050            }
2051        }
2052        deserializer
2053            .deserialize_struct(
2054                "origincloud.resourcemanager.v1beta1.Organization",
2055                FIELDS,
2056                GeneratedVisitor,
2057            )
2058    }
2059}
2060impl serde::Serialize for organization::State {
2061    #[allow(deprecated)]
2062    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2063    where
2064        S: serde::Serializer,
2065    {
2066        let variant = match self {
2067            Self::Unspecified => "STATE_UNSPECIFIED",
2068            Self::PendingReview => "PENDING_REVIEW",
2069            Self::Active => "ACTIVE",
2070            Self::Rejected => "REJECTED",
2071        };
2072        serializer.serialize_str(variant)
2073    }
2074}
2075impl<'de> serde::Deserialize<'de> for organization::State {
2076    #[allow(deprecated)]
2077    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2078    where
2079        D: serde::Deserializer<'de>,
2080    {
2081        const FIELDS: &[&str] = &[
2082            "STATE_UNSPECIFIED",
2083            "PENDING_REVIEW",
2084            "ACTIVE",
2085            "REJECTED",
2086        ];
2087        struct GeneratedVisitor;
2088        impl serde::de::Visitor<'_> for GeneratedVisitor {
2089            type Value = organization::State;
2090            fn expecting(
2091                &self,
2092                formatter: &mut std::fmt::Formatter<'_>,
2093            ) -> std::fmt::Result {
2094                write!(formatter, "expected one of: {:?}", & FIELDS)
2095            }
2096            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2097            where
2098                E: serde::de::Error,
2099            {
2100                i32::try_from(v)
2101                    .ok()
2102                    .and_then(|x| {
2103                        x
2104                            .try_into()
2105                            .ok()
2106                            .or_else(|| Some(organization::State::default()))
2107                    })
2108                    .ok_or_else(|| {
2109                        serde::de::Error::invalid_value(
2110                            serde::de::Unexpected::Signed(v),
2111                            &self,
2112                        )
2113                    })
2114            }
2115            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2116            where
2117                E: serde::de::Error,
2118            {
2119                i32::try_from(v)
2120                    .ok()
2121                    .and_then(|x| {
2122                        x
2123                            .try_into()
2124                            .ok()
2125                            .or_else(|| Some(organization::State::default()))
2126                    })
2127                    .ok_or_else(|| {
2128                        serde::de::Error::invalid_value(
2129                            serde::de::Unexpected::Unsigned(v),
2130                            &self,
2131                        )
2132                    })
2133            }
2134            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2135            where
2136                E: serde::de::Error,
2137            {
2138                match value {
2139                    "STATE_UNSPECIFIED" => Ok(organization::State::Unspecified),
2140                    "PENDING_REVIEW" => Ok(organization::State::PendingReview),
2141                    "ACTIVE" => Ok(organization::State::Active),
2142                    "REJECTED" => Ok(organization::State::Rejected),
2143                    _ => Ok(organization::State::default()),
2144                }
2145            }
2146        }
2147        deserializer.deserialize_any(GeneratedVisitor)
2148    }
2149}
2150impl serde::Serialize for OrganizationQuota {
2151    #[allow(deprecated)]
2152    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2153    where
2154        S: serde::Serializer,
2155    {
2156        use serde::ser::SerializeStruct;
2157        let mut len = 0;
2158        if !self.name.is_empty() {
2159            len += 1;
2160        }
2161        if self.max_instances != 0 {
2162            len += 1;
2163        }
2164        if self.max_vcpu != 0 {
2165            len += 1;
2166        }
2167        if self.max_volume_gib != 0 {
2168            len += 1;
2169        }
2170        if self.max_vpcs != 0 {
2171            len += 1;
2172        }
2173        if self.max_public_ips != 0 {
2174            len += 1;
2175        }
2176        if self.usage.is_some() {
2177            len += 1;
2178        }
2179        let mut struct_ser = serializer
2180            .serialize_struct(
2181                "origincloud.resourcemanager.v1beta1.OrganizationQuota",
2182                len,
2183            )?;
2184        if !self.name.is_empty() {
2185            struct_ser.serialize_field("name", &self.name)?;
2186        }
2187        if self.max_instances != 0 {
2188            #[allow(clippy::needless_borrow)]
2189            #[allow(clippy::needless_borrows_for_generic_args)]
2190            struct_ser
2191                .serialize_field(
2192                    "maxInstances",
2193                    ToString::to_string(&self.max_instances).as_str(),
2194                )?;
2195        }
2196        if self.max_vcpu != 0 {
2197            #[allow(clippy::needless_borrow)]
2198            #[allow(clippy::needless_borrows_for_generic_args)]
2199            struct_ser
2200                .serialize_field(
2201                    "maxVcpu",
2202                    ToString::to_string(&self.max_vcpu).as_str(),
2203                )?;
2204        }
2205        if self.max_volume_gib != 0 {
2206            #[allow(clippy::needless_borrow)]
2207            #[allow(clippy::needless_borrows_for_generic_args)]
2208            struct_ser
2209                .serialize_field(
2210                    "maxVolumeGib",
2211                    ToString::to_string(&self.max_volume_gib).as_str(),
2212                )?;
2213        }
2214        if self.max_vpcs != 0 {
2215            #[allow(clippy::needless_borrow)]
2216            #[allow(clippy::needless_borrows_for_generic_args)]
2217            struct_ser
2218                .serialize_field(
2219                    "maxVpcs",
2220                    ToString::to_string(&self.max_vpcs).as_str(),
2221                )?;
2222        }
2223        if self.max_public_ips != 0 {
2224            #[allow(clippy::needless_borrow)]
2225            #[allow(clippy::needless_borrows_for_generic_args)]
2226            struct_ser
2227                .serialize_field(
2228                    "maxPublicIps",
2229                    ToString::to_string(&self.max_public_ips).as_str(),
2230                )?;
2231        }
2232        if let Some(v) = self.usage.as_ref() {
2233            struct_ser.serialize_field("usage", v)?;
2234        }
2235        struct_ser.end()
2236    }
2237}
2238impl<'de> serde::Deserialize<'de> for OrganizationQuota {
2239    #[allow(deprecated)]
2240    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2241    where
2242        D: serde::Deserializer<'de>,
2243    {
2244        const FIELDS: &[&str] = &[
2245            "name",
2246            "max_instances",
2247            "maxInstances",
2248            "max_vcpu",
2249            "maxVcpu",
2250            "max_volume_gib",
2251            "maxVolumeGib",
2252            "max_vpcs",
2253            "maxVpcs",
2254            "max_public_ips",
2255            "maxPublicIps",
2256            "usage",
2257        ];
2258        #[allow(clippy::enum_variant_names)]
2259        enum GeneratedField {
2260            Name,
2261            MaxInstances,
2262            MaxVcpu,
2263            MaxVolumeGib,
2264            MaxVpcs,
2265            MaxPublicIps,
2266            Usage,
2267            __SkipField__,
2268        }
2269        impl<'de> serde::Deserialize<'de> for GeneratedField {
2270            fn deserialize<D>(
2271                deserializer: D,
2272            ) -> std::result::Result<GeneratedField, D::Error>
2273            where
2274                D: serde::Deserializer<'de>,
2275            {
2276                struct GeneratedVisitor;
2277                impl serde::de::Visitor<'_> for GeneratedVisitor {
2278                    type Value = GeneratedField;
2279                    fn expecting(
2280                        &self,
2281                        formatter: &mut std::fmt::Formatter<'_>,
2282                    ) -> std::fmt::Result {
2283                        write!(formatter, "expected one of: {:?}", & FIELDS)
2284                    }
2285                    #[allow(unused_variables)]
2286                    fn visit_str<E>(
2287                        self,
2288                        value: &str,
2289                    ) -> std::result::Result<GeneratedField, E>
2290                    where
2291                        E: serde::de::Error,
2292                    {
2293                        match value {
2294                            "name" => Ok(GeneratedField::Name),
2295                            "maxInstances" | "max_instances" => {
2296                                Ok(GeneratedField::MaxInstances)
2297                            }
2298                            "maxVcpu" | "max_vcpu" => Ok(GeneratedField::MaxVcpu),
2299                            "maxVolumeGib" | "max_volume_gib" => {
2300                                Ok(GeneratedField::MaxVolumeGib)
2301                            }
2302                            "maxVpcs" | "max_vpcs" => Ok(GeneratedField::MaxVpcs),
2303                            "maxPublicIps" | "max_public_ips" => {
2304                                Ok(GeneratedField::MaxPublicIps)
2305                            }
2306                            "usage" => Ok(GeneratedField::Usage),
2307                            _ => Ok(GeneratedField::__SkipField__),
2308                        }
2309                    }
2310                }
2311                deserializer.deserialize_identifier(GeneratedVisitor)
2312            }
2313        }
2314        struct GeneratedVisitor;
2315        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2316            type Value = OrganizationQuota;
2317            fn expecting(
2318                &self,
2319                formatter: &mut std::fmt::Formatter<'_>,
2320            ) -> std::fmt::Result {
2321                formatter
2322                    .write_str(
2323                        "struct origincloud.resourcemanager.v1beta1.OrganizationQuota",
2324                    )
2325            }
2326            fn visit_map<V>(
2327                self,
2328                mut map_: V,
2329            ) -> std::result::Result<OrganizationQuota, V::Error>
2330            where
2331                V: serde::de::MapAccess<'de>,
2332            {
2333                let mut name__ = None;
2334                let mut max_instances__ = None;
2335                let mut max_vcpu__ = None;
2336                let mut max_volume_gib__ = None;
2337                let mut max_vpcs__ = None;
2338                let mut max_public_ips__ = None;
2339                let mut usage__ = None;
2340                while let Some(k) = map_.next_key()? {
2341                    match k {
2342                        GeneratedField::Name => {
2343                            if name__.is_some() {
2344                                return Err(serde::de::Error::duplicate_field("name"));
2345                            }
2346                            name__ = Some(map_.next_value()?);
2347                        }
2348                        GeneratedField::MaxInstances => {
2349                            if max_instances__.is_some() {
2350                                return Err(
2351                                    serde::de::Error::duplicate_field("maxInstances"),
2352                                );
2353                            }
2354                            max_instances__ = Some(
2355                                map_
2356                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2357                                    .0,
2358                            );
2359                        }
2360                        GeneratedField::MaxVcpu => {
2361                            if max_vcpu__.is_some() {
2362                                return Err(serde::de::Error::duplicate_field("maxVcpu"));
2363                            }
2364                            max_vcpu__ = Some(
2365                                map_
2366                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2367                                    .0,
2368                            );
2369                        }
2370                        GeneratedField::MaxVolumeGib => {
2371                            if max_volume_gib__.is_some() {
2372                                return Err(
2373                                    serde::de::Error::duplicate_field("maxVolumeGib"),
2374                                );
2375                            }
2376                            max_volume_gib__ = Some(
2377                                map_
2378                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2379                                    .0,
2380                            );
2381                        }
2382                        GeneratedField::MaxVpcs => {
2383                            if max_vpcs__.is_some() {
2384                                return Err(serde::de::Error::duplicate_field("maxVpcs"));
2385                            }
2386                            max_vpcs__ = Some(
2387                                map_
2388                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2389                                    .0,
2390                            );
2391                        }
2392                        GeneratedField::MaxPublicIps => {
2393                            if max_public_ips__.is_some() {
2394                                return Err(
2395                                    serde::de::Error::duplicate_field("maxPublicIps"),
2396                                );
2397                            }
2398                            max_public_ips__ = Some(
2399                                map_
2400                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2401                                    .0,
2402                            );
2403                        }
2404                        GeneratedField::Usage => {
2405                            if usage__.is_some() {
2406                                return Err(serde::de::Error::duplicate_field("usage"));
2407                            }
2408                            usage__ = map_.next_value()?;
2409                        }
2410                        GeneratedField::__SkipField__ => {
2411                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2412                        }
2413                    }
2414                }
2415                Ok(OrganizationQuota {
2416                    name: name__.unwrap_or_default(),
2417                    max_instances: max_instances__.unwrap_or_default(),
2418                    max_vcpu: max_vcpu__.unwrap_or_default(),
2419                    max_volume_gib: max_volume_gib__.unwrap_or_default(),
2420                    max_vpcs: max_vpcs__.unwrap_or_default(),
2421                    max_public_ips: max_public_ips__.unwrap_or_default(),
2422                    usage: usage__,
2423                })
2424            }
2425        }
2426        deserializer
2427            .deserialize_struct(
2428                "origincloud.resourcemanager.v1beta1.OrganizationQuota",
2429                FIELDS,
2430                GeneratedVisitor,
2431            )
2432    }
2433}
2434impl serde::Serialize for Project {
2435    #[allow(deprecated)]
2436    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2437    where
2438        S: serde::Serializer,
2439    {
2440        use serde::ser::SerializeStruct;
2441        let mut len = 0;
2442        if !self.name.is_empty() {
2443            len += 1;
2444        }
2445        if !self.urn.is_empty() {
2446            len += 1;
2447        }
2448        if !self.organization.is_empty() {
2449            len += 1;
2450        }
2451        if !self.display_name.is_empty() {
2452            len += 1;
2453        }
2454        if self.create_time.is_some() {
2455            len += 1;
2456        }
2457        if !self.creator.is_empty() {
2458            len += 1;
2459        }
2460        let mut struct_ser = serializer
2461            .serialize_struct("origincloud.resourcemanager.v1beta1.Project", len)?;
2462        if !self.name.is_empty() {
2463            struct_ser.serialize_field("name", &self.name)?;
2464        }
2465        if !self.urn.is_empty() {
2466            struct_ser.serialize_field("urn", &self.urn)?;
2467        }
2468        if !self.organization.is_empty() {
2469            struct_ser.serialize_field("organization", &self.organization)?;
2470        }
2471        if !self.display_name.is_empty() {
2472            struct_ser.serialize_field("displayName", &self.display_name)?;
2473        }
2474        if let Some(v) = self.create_time.as_ref() {
2475            struct_ser.serialize_field("createTime", v)?;
2476        }
2477        if !self.creator.is_empty() {
2478            struct_ser.serialize_field("creator", &self.creator)?;
2479        }
2480        struct_ser.end()
2481    }
2482}
2483impl<'de> serde::Deserialize<'de> for Project {
2484    #[allow(deprecated)]
2485    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2486    where
2487        D: serde::Deserializer<'de>,
2488    {
2489        const FIELDS: &[&str] = &[
2490            "name",
2491            "urn",
2492            "organization",
2493            "display_name",
2494            "displayName",
2495            "create_time",
2496            "createTime",
2497            "creator",
2498        ];
2499        #[allow(clippy::enum_variant_names)]
2500        enum GeneratedField {
2501            Name,
2502            Urn,
2503            Organization,
2504            DisplayName,
2505            CreateTime,
2506            Creator,
2507            __SkipField__,
2508        }
2509        impl<'de> serde::Deserialize<'de> for GeneratedField {
2510            fn deserialize<D>(
2511                deserializer: D,
2512            ) -> std::result::Result<GeneratedField, D::Error>
2513            where
2514                D: serde::Deserializer<'de>,
2515            {
2516                struct GeneratedVisitor;
2517                impl serde::de::Visitor<'_> for GeneratedVisitor {
2518                    type Value = GeneratedField;
2519                    fn expecting(
2520                        &self,
2521                        formatter: &mut std::fmt::Formatter<'_>,
2522                    ) -> std::fmt::Result {
2523                        write!(formatter, "expected one of: {:?}", & FIELDS)
2524                    }
2525                    #[allow(unused_variables)]
2526                    fn visit_str<E>(
2527                        self,
2528                        value: &str,
2529                    ) -> std::result::Result<GeneratedField, E>
2530                    where
2531                        E: serde::de::Error,
2532                    {
2533                        match value {
2534                            "name" => Ok(GeneratedField::Name),
2535                            "urn" => Ok(GeneratedField::Urn),
2536                            "organization" => Ok(GeneratedField::Organization),
2537                            "displayName" | "display_name" => {
2538                                Ok(GeneratedField::DisplayName)
2539                            }
2540                            "createTime" | "create_time" => {
2541                                Ok(GeneratedField::CreateTime)
2542                            }
2543                            "creator" => Ok(GeneratedField::Creator),
2544                            _ => Ok(GeneratedField::__SkipField__),
2545                        }
2546                    }
2547                }
2548                deserializer.deserialize_identifier(GeneratedVisitor)
2549            }
2550        }
2551        struct GeneratedVisitor;
2552        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2553            type Value = Project;
2554            fn expecting(
2555                &self,
2556                formatter: &mut std::fmt::Formatter<'_>,
2557            ) -> std::fmt::Result {
2558                formatter.write_str("struct origincloud.resourcemanager.v1beta1.Project")
2559            }
2560            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Project, V::Error>
2561            where
2562                V: serde::de::MapAccess<'de>,
2563            {
2564                let mut name__ = None;
2565                let mut urn__ = None;
2566                let mut organization__ = None;
2567                let mut display_name__ = None;
2568                let mut create_time__ = None;
2569                let mut creator__ = None;
2570                while let Some(k) = map_.next_key()? {
2571                    match k {
2572                        GeneratedField::Name => {
2573                            if name__.is_some() {
2574                                return Err(serde::de::Error::duplicate_field("name"));
2575                            }
2576                            name__ = Some(map_.next_value()?);
2577                        }
2578                        GeneratedField::Urn => {
2579                            if urn__.is_some() {
2580                                return Err(serde::de::Error::duplicate_field("urn"));
2581                            }
2582                            urn__ = Some(map_.next_value()?);
2583                        }
2584                        GeneratedField::Organization => {
2585                            if organization__.is_some() {
2586                                return Err(
2587                                    serde::de::Error::duplicate_field("organization"),
2588                                );
2589                            }
2590                            organization__ = Some(map_.next_value()?);
2591                        }
2592                        GeneratedField::DisplayName => {
2593                            if display_name__.is_some() {
2594                                return Err(
2595                                    serde::de::Error::duplicate_field("displayName"),
2596                                );
2597                            }
2598                            display_name__ = Some(map_.next_value()?);
2599                        }
2600                        GeneratedField::CreateTime => {
2601                            if create_time__.is_some() {
2602                                return Err(serde::de::Error::duplicate_field("createTime"));
2603                            }
2604                            create_time__ = map_.next_value()?;
2605                        }
2606                        GeneratedField::Creator => {
2607                            if creator__.is_some() {
2608                                return Err(serde::de::Error::duplicate_field("creator"));
2609                            }
2610                            creator__ = Some(map_.next_value()?);
2611                        }
2612                        GeneratedField::__SkipField__ => {
2613                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2614                        }
2615                    }
2616                }
2617                Ok(Project {
2618                    name: name__.unwrap_or_default(),
2619                    urn: urn__.unwrap_or_default(),
2620                    organization: organization__.unwrap_or_default(),
2621                    display_name: display_name__.unwrap_or_default(),
2622                    create_time: create_time__,
2623                    creator: creator__.unwrap_or_default(),
2624                })
2625            }
2626        }
2627        deserializer
2628            .deserialize_struct(
2629                "origincloud.resourcemanager.v1beta1.Project",
2630                FIELDS,
2631                GeneratedVisitor,
2632            )
2633    }
2634}
2635impl serde::Serialize for ProjectQuota {
2636    #[allow(deprecated)]
2637    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2638    where
2639        S: serde::Serializer,
2640    {
2641        use serde::ser::SerializeStruct;
2642        let mut len = 0;
2643        if !self.name.is_empty() {
2644            len += 1;
2645        }
2646        if self.max_instances.is_some() {
2647            len += 1;
2648        }
2649        if self.max_vcpu.is_some() {
2650            len += 1;
2651        }
2652        if self.max_volume_gib.is_some() {
2653            len += 1;
2654        }
2655        if self.max_vpcs.is_some() {
2656            len += 1;
2657        }
2658        if self.max_public_ips.is_some() {
2659            len += 1;
2660        }
2661        if self.usage.is_some() {
2662            len += 1;
2663        }
2664        let mut struct_ser = serializer
2665            .serialize_struct("origincloud.resourcemanager.v1beta1.ProjectQuota", len)?;
2666        if !self.name.is_empty() {
2667            struct_ser.serialize_field("name", &self.name)?;
2668        }
2669        if let Some(v) = self.max_instances.as_ref() {
2670            #[allow(clippy::needless_borrow)]
2671            #[allow(clippy::needless_borrows_for_generic_args)]
2672            struct_ser
2673                .serialize_field("maxInstances", ToString::to_string(&v).as_str())?;
2674        }
2675        if let Some(v) = self.max_vcpu.as_ref() {
2676            #[allow(clippy::needless_borrow)]
2677            #[allow(clippy::needless_borrows_for_generic_args)]
2678            struct_ser.serialize_field("maxVcpu", ToString::to_string(&v).as_str())?;
2679        }
2680        if let Some(v) = self.max_volume_gib.as_ref() {
2681            #[allow(clippy::needless_borrow)]
2682            #[allow(clippy::needless_borrows_for_generic_args)]
2683            struct_ser
2684                .serialize_field("maxVolumeGib", ToString::to_string(&v).as_str())?;
2685        }
2686        if let Some(v) = self.max_vpcs.as_ref() {
2687            #[allow(clippy::needless_borrow)]
2688            #[allow(clippy::needless_borrows_for_generic_args)]
2689            struct_ser.serialize_field("maxVpcs", ToString::to_string(&v).as_str())?;
2690        }
2691        if let Some(v) = self.max_public_ips.as_ref() {
2692            #[allow(clippy::needless_borrow)]
2693            #[allow(clippy::needless_borrows_for_generic_args)]
2694            struct_ser
2695                .serialize_field("maxPublicIps", ToString::to_string(&v).as_str())?;
2696        }
2697        if let Some(v) = self.usage.as_ref() {
2698            struct_ser.serialize_field("usage", v)?;
2699        }
2700        struct_ser.end()
2701    }
2702}
2703impl<'de> serde::Deserialize<'de> for ProjectQuota {
2704    #[allow(deprecated)]
2705    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2706    where
2707        D: serde::Deserializer<'de>,
2708    {
2709        const FIELDS: &[&str] = &[
2710            "name",
2711            "max_instances",
2712            "maxInstances",
2713            "max_vcpu",
2714            "maxVcpu",
2715            "max_volume_gib",
2716            "maxVolumeGib",
2717            "max_vpcs",
2718            "maxVpcs",
2719            "max_public_ips",
2720            "maxPublicIps",
2721            "usage",
2722        ];
2723        #[allow(clippy::enum_variant_names)]
2724        enum GeneratedField {
2725            Name,
2726            MaxInstances,
2727            MaxVcpu,
2728            MaxVolumeGib,
2729            MaxVpcs,
2730            MaxPublicIps,
2731            Usage,
2732            __SkipField__,
2733        }
2734        impl<'de> serde::Deserialize<'de> for GeneratedField {
2735            fn deserialize<D>(
2736                deserializer: D,
2737            ) -> std::result::Result<GeneratedField, D::Error>
2738            where
2739                D: serde::Deserializer<'de>,
2740            {
2741                struct GeneratedVisitor;
2742                impl serde::de::Visitor<'_> for GeneratedVisitor {
2743                    type Value = GeneratedField;
2744                    fn expecting(
2745                        &self,
2746                        formatter: &mut std::fmt::Formatter<'_>,
2747                    ) -> std::fmt::Result {
2748                        write!(formatter, "expected one of: {:?}", & FIELDS)
2749                    }
2750                    #[allow(unused_variables)]
2751                    fn visit_str<E>(
2752                        self,
2753                        value: &str,
2754                    ) -> std::result::Result<GeneratedField, E>
2755                    where
2756                        E: serde::de::Error,
2757                    {
2758                        match value {
2759                            "name" => Ok(GeneratedField::Name),
2760                            "maxInstances" | "max_instances" => {
2761                                Ok(GeneratedField::MaxInstances)
2762                            }
2763                            "maxVcpu" | "max_vcpu" => Ok(GeneratedField::MaxVcpu),
2764                            "maxVolumeGib" | "max_volume_gib" => {
2765                                Ok(GeneratedField::MaxVolumeGib)
2766                            }
2767                            "maxVpcs" | "max_vpcs" => Ok(GeneratedField::MaxVpcs),
2768                            "maxPublicIps" | "max_public_ips" => {
2769                                Ok(GeneratedField::MaxPublicIps)
2770                            }
2771                            "usage" => Ok(GeneratedField::Usage),
2772                            _ => Ok(GeneratedField::__SkipField__),
2773                        }
2774                    }
2775                }
2776                deserializer.deserialize_identifier(GeneratedVisitor)
2777            }
2778        }
2779        struct GeneratedVisitor;
2780        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2781            type Value = ProjectQuota;
2782            fn expecting(
2783                &self,
2784                formatter: &mut std::fmt::Formatter<'_>,
2785            ) -> std::fmt::Result {
2786                formatter
2787                    .write_str("struct origincloud.resourcemanager.v1beta1.ProjectQuota")
2788            }
2789            fn visit_map<V>(
2790                self,
2791                mut map_: V,
2792            ) -> std::result::Result<ProjectQuota, V::Error>
2793            where
2794                V: serde::de::MapAccess<'de>,
2795            {
2796                let mut name__ = None;
2797                let mut max_instances__ = None;
2798                let mut max_vcpu__ = None;
2799                let mut max_volume_gib__ = None;
2800                let mut max_vpcs__ = None;
2801                let mut max_public_ips__ = None;
2802                let mut usage__ = None;
2803                while let Some(k) = map_.next_key()? {
2804                    match k {
2805                        GeneratedField::Name => {
2806                            if name__.is_some() {
2807                                return Err(serde::de::Error::duplicate_field("name"));
2808                            }
2809                            name__ = Some(map_.next_value()?);
2810                        }
2811                        GeneratedField::MaxInstances => {
2812                            if max_instances__.is_some() {
2813                                return Err(
2814                                    serde::de::Error::duplicate_field("maxInstances"),
2815                                );
2816                            }
2817                            max_instances__ = map_
2818                                .next_value::<
2819                                    ::std::option::Option<
2820                                        ::pbjson::private::NumberDeserialize<_>,
2821                                    >,
2822                                >()?
2823                                .map(|x| x.0);
2824                        }
2825                        GeneratedField::MaxVcpu => {
2826                            if max_vcpu__.is_some() {
2827                                return Err(serde::de::Error::duplicate_field("maxVcpu"));
2828                            }
2829                            max_vcpu__ = map_
2830                                .next_value::<
2831                                    ::std::option::Option<
2832                                        ::pbjson::private::NumberDeserialize<_>,
2833                                    >,
2834                                >()?
2835                                .map(|x| x.0);
2836                        }
2837                        GeneratedField::MaxVolumeGib => {
2838                            if max_volume_gib__.is_some() {
2839                                return Err(
2840                                    serde::de::Error::duplicate_field("maxVolumeGib"),
2841                                );
2842                            }
2843                            max_volume_gib__ = map_
2844                                .next_value::<
2845                                    ::std::option::Option<
2846                                        ::pbjson::private::NumberDeserialize<_>,
2847                                    >,
2848                                >()?
2849                                .map(|x| x.0);
2850                        }
2851                        GeneratedField::MaxVpcs => {
2852                            if max_vpcs__.is_some() {
2853                                return Err(serde::de::Error::duplicate_field("maxVpcs"));
2854                            }
2855                            max_vpcs__ = map_
2856                                .next_value::<
2857                                    ::std::option::Option<
2858                                        ::pbjson::private::NumberDeserialize<_>,
2859                                    >,
2860                                >()?
2861                                .map(|x| x.0);
2862                        }
2863                        GeneratedField::MaxPublicIps => {
2864                            if max_public_ips__.is_some() {
2865                                return Err(
2866                                    serde::de::Error::duplicate_field("maxPublicIps"),
2867                                );
2868                            }
2869                            max_public_ips__ = map_
2870                                .next_value::<
2871                                    ::std::option::Option<
2872                                        ::pbjson::private::NumberDeserialize<_>,
2873                                    >,
2874                                >()?
2875                                .map(|x| x.0);
2876                        }
2877                        GeneratedField::Usage => {
2878                            if usage__.is_some() {
2879                                return Err(serde::de::Error::duplicate_field("usage"));
2880                            }
2881                            usage__ = map_.next_value()?;
2882                        }
2883                        GeneratedField::__SkipField__ => {
2884                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2885                        }
2886                    }
2887                }
2888                Ok(ProjectQuota {
2889                    name: name__.unwrap_or_default(),
2890                    max_instances: max_instances__,
2891                    max_vcpu: max_vcpu__,
2892                    max_volume_gib: max_volume_gib__,
2893                    max_vpcs: max_vpcs__,
2894                    max_public_ips: max_public_ips__,
2895                    usage: usage__,
2896                })
2897            }
2898        }
2899        deserializer
2900            .deserialize_struct(
2901                "origincloud.resourcemanager.v1beta1.ProjectQuota",
2902                FIELDS,
2903                GeneratedVisitor,
2904            )
2905    }
2906}
2907impl serde::Serialize for QuotaUsage {
2908    #[allow(deprecated)]
2909    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2910    where
2911        S: serde::Serializer,
2912    {
2913        use serde::ser::SerializeStruct;
2914        let mut len = 0;
2915        if self.instances != 0 {
2916            len += 1;
2917        }
2918        if self.vcpu != 0 {
2919            len += 1;
2920        }
2921        if self.volume_gib != 0 {
2922            len += 1;
2923        }
2924        if self.vpcs != 0 {
2925            len += 1;
2926        }
2927        if self.public_ips != 0 {
2928            len += 1;
2929        }
2930        let mut struct_ser = serializer
2931            .serialize_struct("origincloud.resourcemanager.v1beta1.QuotaUsage", len)?;
2932        if self.instances != 0 {
2933            #[allow(clippy::needless_borrow)]
2934            #[allow(clippy::needless_borrows_for_generic_args)]
2935            struct_ser
2936                .serialize_field(
2937                    "instances",
2938                    ToString::to_string(&self.instances).as_str(),
2939                )?;
2940        }
2941        if self.vcpu != 0 {
2942            #[allow(clippy::needless_borrow)]
2943            #[allow(clippy::needless_borrows_for_generic_args)]
2944            struct_ser
2945                .serialize_field("vcpu", ToString::to_string(&self.vcpu).as_str())?;
2946        }
2947        if self.volume_gib != 0 {
2948            #[allow(clippy::needless_borrow)]
2949            #[allow(clippy::needless_borrows_for_generic_args)]
2950            struct_ser
2951                .serialize_field(
2952                    "volumeGib",
2953                    ToString::to_string(&self.volume_gib).as_str(),
2954                )?;
2955        }
2956        if self.vpcs != 0 {
2957            #[allow(clippy::needless_borrow)]
2958            #[allow(clippy::needless_borrows_for_generic_args)]
2959            struct_ser
2960                .serialize_field("vpcs", ToString::to_string(&self.vpcs).as_str())?;
2961        }
2962        if self.public_ips != 0 {
2963            #[allow(clippy::needless_borrow)]
2964            #[allow(clippy::needless_borrows_for_generic_args)]
2965            struct_ser
2966                .serialize_field(
2967                    "publicIps",
2968                    ToString::to_string(&self.public_ips).as_str(),
2969                )?;
2970        }
2971        struct_ser.end()
2972    }
2973}
2974impl<'de> serde::Deserialize<'de> for QuotaUsage {
2975    #[allow(deprecated)]
2976    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2977    where
2978        D: serde::Deserializer<'de>,
2979    {
2980        const FIELDS: &[&str] = &[
2981            "instances",
2982            "vcpu",
2983            "volume_gib",
2984            "volumeGib",
2985            "vpcs",
2986            "public_ips",
2987            "publicIps",
2988        ];
2989        #[allow(clippy::enum_variant_names)]
2990        enum GeneratedField {
2991            Instances,
2992            Vcpu,
2993            VolumeGib,
2994            Vpcs,
2995            PublicIps,
2996            __SkipField__,
2997        }
2998        impl<'de> serde::Deserialize<'de> for GeneratedField {
2999            fn deserialize<D>(
3000                deserializer: D,
3001            ) -> std::result::Result<GeneratedField, D::Error>
3002            where
3003                D: serde::Deserializer<'de>,
3004            {
3005                struct GeneratedVisitor;
3006                impl serde::de::Visitor<'_> for GeneratedVisitor {
3007                    type Value = GeneratedField;
3008                    fn expecting(
3009                        &self,
3010                        formatter: &mut std::fmt::Formatter<'_>,
3011                    ) -> std::fmt::Result {
3012                        write!(formatter, "expected one of: {:?}", & FIELDS)
3013                    }
3014                    #[allow(unused_variables)]
3015                    fn visit_str<E>(
3016                        self,
3017                        value: &str,
3018                    ) -> std::result::Result<GeneratedField, E>
3019                    where
3020                        E: serde::de::Error,
3021                    {
3022                        match value {
3023                            "instances" => Ok(GeneratedField::Instances),
3024                            "vcpu" => Ok(GeneratedField::Vcpu),
3025                            "volumeGib" | "volume_gib" => Ok(GeneratedField::VolumeGib),
3026                            "vpcs" => Ok(GeneratedField::Vpcs),
3027                            "publicIps" | "public_ips" => Ok(GeneratedField::PublicIps),
3028                            _ => Ok(GeneratedField::__SkipField__),
3029                        }
3030                    }
3031                }
3032                deserializer.deserialize_identifier(GeneratedVisitor)
3033            }
3034        }
3035        struct GeneratedVisitor;
3036        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3037            type Value = QuotaUsage;
3038            fn expecting(
3039                &self,
3040                formatter: &mut std::fmt::Formatter<'_>,
3041            ) -> std::fmt::Result {
3042                formatter
3043                    .write_str("struct origincloud.resourcemanager.v1beta1.QuotaUsage")
3044            }
3045            fn visit_map<V>(
3046                self,
3047                mut map_: V,
3048            ) -> std::result::Result<QuotaUsage, V::Error>
3049            where
3050                V: serde::de::MapAccess<'de>,
3051            {
3052                let mut instances__ = None;
3053                let mut vcpu__ = None;
3054                let mut volume_gib__ = None;
3055                let mut vpcs__ = None;
3056                let mut public_ips__ = None;
3057                while let Some(k) = map_.next_key()? {
3058                    match k {
3059                        GeneratedField::Instances => {
3060                            if instances__.is_some() {
3061                                return Err(serde::de::Error::duplicate_field("instances"));
3062                            }
3063                            instances__ = Some(
3064                                map_
3065                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3066                                    .0,
3067                            );
3068                        }
3069                        GeneratedField::Vcpu => {
3070                            if vcpu__.is_some() {
3071                                return Err(serde::de::Error::duplicate_field("vcpu"));
3072                            }
3073                            vcpu__ = Some(
3074                                map_
3075                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3076                                    .0,
3077                            );
3078                        }
3079                        GeneratedField::VolumeGib => {
3080                            if volume_gib__.is_some() {
3081                                return Err(serde::de::Error::duplicate_field("volumeGib"));
3082                            }
3083                            volume_gib__ = Some(
3084                                map_
3085                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3086                                    .0,
3087                            );
3088                        }
3089                        GeneratedField::Vpcs => {
3090                            if vpcs__.is_some() {
3091                                return Err(serde::de::Error::duplicate_field("vpcs"));
3092                            }
3093                            vpcs__ = Some(
3094                                map_
3095                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3096                                    .0,
3097                            );
3098                        }
3099                        GeneratedField::PublicIps => {
3100                            if public_ips__.is_some() {
3101                                return Err(serde::de::Error::duplicate_field("publicIps"));
3102                            }
3103                            public_ips__ = Some(
3104                                map_
3105                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
3106                                    .0,
3107                            );
3108                        }
3109                        GeneratedField::__SkipField__ => {
3110                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3111                        }
3112                    }
3113                }
3114                Ok(QuotaUsage {
3115                    instances: instances__.unwrap_or_default(),
3116                    vcpu: vcpu__.unwrap_or_default(),
3117                    volume_gib: volume_gib__.unwrap_or_default(),
3118                    vpcs: vpcs__.unwrap_or_default(),
3119                    public_ips: public_ips__.unwrap_or_default(),
3120                })
3121            }
3122        }
3123        deserializer
3124            .deserialize_struct(
3125                "origincloud.resourcemanager.v1beta1.QuotaUsage",
3126                FIELDS,
3127                GeneratedVisitor,
3128            )
3129    }
3130}
3131impl serde::Serialize for UpdateOrganizationRequest {
3132    #[allow(deprecated)]
3133    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3134    where
3135        S: serde::Serializer,
3136    {
3137        use serde::ser::SerializeStruct;
3138        let mut len = 0;
3139        if self.organization.is_some() {
3140            len += 1;
3141        }
3142        if self.update_mask.is_some() {
3143            len += 1;
3144        }
3145        let mut struct_ser = serializer
3146            .serialize_struct(
3147                "origincloud.resourcemanager.v1beta1.UpdateOrganizationRequest",
3148                len,
3149            )?;
3150        if let Some(v) = self.organization.as_ref() {
3151            struct_ser.serialize_field("organization", v)?;
3152        }
3153        if let Some(v) = self.update_mask.as_ref() {
3154            struct_ser.serialize_field("updateMask", v)?;
3155        }
3156        struct_ser.end()
3157    }
3158}
3159impl<'de> serde::Deserialize<'de> for UpdateOrganizationRequest {
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] = &["organization", "update_mask", "updateMask"];
3166        #[allow(clippy::enum_variant_names)]
3167        enum GeneratedField {
3168            Organization,
3169            UpdateMask,
3170            __SkipField__,
3171        }
3172        impl<'de> serde::Deserialize<'de> for GeneratedField {
3173            fn deserialize<D>(
3174                deserializer: D,
3175            ) -> std::result::Result<GeneratedField, D::Error>
3176            where
3177                D: serde::Deserializer<'de>,
3178            {
3179                struct GeneratedVisitor;
3180                impl serde::de::Visitor<'_> for GeneratedVisitor {
3181                    type Value = GeneratedField;
3182                    fn expecting(
3183                        &self,
3184                        formatter: &mut std::fmt::Formatter<'_>,
3185                    ) -> std::fmt::Result {
3186                        write!(formatter, "expected one of: {:?}", & FIELDS)
3187                    }
3188                    #[allow(unused_variables)]
3189                    fn visit_str<E>(
3190                        self,
3191                        value: &str,
3192                    ) -> std::result::Result<GeneratedField, E>
3193                    where
3194                        E: serde::de::Error,
3195                    {
3196                        match value {
3197                            "organization" => Ok(GeneratedField::Organization),
3198                            "updateMask" | "update_mask" => {
3199                                Ok(GeneratedField::UpdateMask)
3200                            }
3201                            _ => Ok(GeneratedField::__SkipField__),
3202                        }
3203                    }
3204                }
3205                deserializer.deserialize_identifier(GeneratedVisitor)
3206            }
3207        }
3208        struct GeneratedVisitor;
3209        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3210            type Value = UpdateOrganizationRequest;
3211            fn expecting(
3212                &self,
3213                formatter: &mut std::fmt::Formatter<'_>,
3214            ) -> std::fmt::Result {
3215                formatter
3216                    .write_str(
3217                        "struct origincloud.resourcemanager.v1beta1.UpdateOrganizationRequest",
3218                    )
3219            }
3220            fn visit_map<V>(
3221                self,
3222                mut map_: V,
3223            ) -> std::result::Result<UpdateOrganizationRequest, V::Error>
3224            where
3225                V: serde::de::MapAccess<'de>,
3226            {
3227                let mut organization__ = None;
3228                let mut update_mask__ = None;
3229                while let Some(k) = map_.next_key()? {
3230                    match k {
3231                        GeneratedField::Organization => {
3232                            if organization__.is_some() {
3233                                return Err(
3234                                    serde::de::Error::duplicate_field("organization"),
3235                                );
3236                            }
3237                            organization__ = map_.next_value()?;
3238                        }
3239                        GeneratedField::UpdateMask => {
3240                            if update_mask__.is_some() {
3241                                return Err(serde::de::Error::duplicate_field("updateMask"));
3242                            }
3243                            update_mask__ = map_.next_value()?;
3244                        }
3245                        GeneratedField::__SkipField__ => {
3246                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3247                        }
3248                    }
3249                }
3250                Ok(UpdateOrganizationRequest {
3251                    organization: organization__,
3252                    update_mask: update_mask__,
3253                })
3254            }
3255        }
3256        deserializer
3257            .deserialize_struct(
3258                "origincloud.resourcemanager.v1beta1.UpdateOrganizationRequest",
3259                FIELDS,
3260                GeneratedVisitor,
3261            )
3262    }
3263}
3264impl serde::Serialize for UpdateProjectQuotaRequest {
3265    #[allow(deprecated)]
3266    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3267    where
3268        S: serde::Serializer,
3269    {
3270        use serde::ser::SerializeStruct;
3271        let mut len = 0;
3272        if self.project_quota.is_some() {
3273            len += 1;
3274        }
3275        if self.update_mask.is_some() {
3276            len += 1;
3277        }
3278        let mut struct_ser = serializer
3279            .serialize_struct(
3280                "origincloud.resourcemanager.v1beta1.UpdateProjectQuotaRequest",
3281                len,
3282            )?;
3283        if let Some(v) = self.project_quota.as_ref() {
3284            struct_ser.serialize_field("projectQuota", v)?;
3285        }
3286        if let Some(v) = self.update_mask.as_ref() {
3287            struct_ser.serialize_field("updateMask", v)?;
3288        }
3289        struct_ser.end()
3290    }
3291}
3292impl<'de> serde::Deserialize<'de> for UpdateProjectQuotaRequest {
3293    #[allow(deprecated)]
3294    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3295    where
3296        D: serde::Deserializer<'de>,
3297    {
3298        const FIELDS: &[&str] = &[
3299            "project_quota",
3300            "projectQuota",
3301            "update_mask",
3302            "updateMask",
3303        ];
3304        #[allow(clippy::enum_variant_names)]
3305        enum GeneratedField {
3306            ProjectQuota,
3307            UpdateMask,
3308            __SkipField__,
3309        }
3310        impl<'de> serde::Deserialize<'de> for GeneratedField {
3311            fn deserialize<D>(
3312                deserializer: D,
3313            ) -> std::result::Result<GeneratedField, D::Error>
3314            where
3315                D: serde::Deserializer<'de>,
3316            {
3317                struct GeneratedVisitor;
3318                impl serde::de::Visitor<'_> for GeneratedVisitor {
3319                    type Value = GeneratedField;
3320                    fn expecting(
3321                        &self,
3322                        formatter: &mut std::fmt::Formatter<'_>,
3323                    ) -> std::fmt::Result {
3324                        write!(formatter, "expected one of: {:?}", & FIELDS)
3325                    }
3326                    #[allow(unused_variables)]
3327                    fn visit_str<E>(
3328                        self,
3329                        value: &str,
3330                    ) -> std::result::Result<GeneratedField, E>
3331                    where
3332                        E: serde::de::Error,
3333                    {
3334                        match value {
3335                            "projectQuota" | "project_quota" => {
3336                                Ok(GeneratedField::ProjectQuota)
3337                            }
3338                            "updateMask" | "update_mask" => {
3339                                Ok(GeneratedField::UpdateMask)
3340                            }
3341                            _ => Ok(GeneratedField::__SkipField__),
3342                        }
3343                    }
3344                }
3345                deserializer.deserialize_identifier(GeneratedVisitor)
3346            }
3347        }
3348        struct GeneratedVisitor;
3349        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3350            type Value = UpdateProjectQuotaRequest;
3351            fn expecting(
3352                &self,
3353                formatter: &mut std::fmt::Formatter<'_>,
3354            ) -> std::fmt::Result {
3355                formatter
3356                    .write_str(
3357                        "struct origincloud.resourcemanager.v1beta1.UpdateProjectQuotaRequest",
3358                    )
3359            }
3360            fn visit_map<V>(
3361                self,
3362                mut map_: V,
3363            ) -> std::result::Result<UpdateProjectQuotaRequest, V::Error>
3364            where
3365                V: serde::de::MapAccess<'de>,
3366            {
3367                let mut project_quota__ = None;
3368                let mut update_mask__ = None;
3369                while let Some(k) = map_.next_key()? {
3370                    match k {
3371                        GeneratedField::ProjectQuota => {
3372                            if project_quota__.is_some() {
3373                                return Err(
3374                                    serde::de::Error::duplicate_field("projectQuota"),
3375                                );
3376                            }
3377                            project_quota__ = map_.next_value()?;
3378                        }
3379                        GeneratedField::UpdateMask => {
3380                            if update_mask__.is_some() {
3381                                return Err(serde::de::Error::duplicate_field("updateMask"));
3382                            }
3383                            update_mask__ = map_.next_value()?;
3384                        }
3385                        GeneratedField::__SkipField__ => {
3386                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3387                        }
3388                    }
3389                }
3390                Ok(UpdateProjectQuotaRequest {
3391                    project_quota: project_quota__,
3392                    update_mask: update_mask__,
3393                })
3394            }
3395        }
3396        deserializer
3397            .deserialize_struct(
3398                "origincloud.resourcemanager.v1beta1.UpdateProjectQuotaRequest",
3399                FIELDS,
3400                GeneratedVisitor,
3401            )
3402    }
3403}
3404impl serde::Serialize for UpdateProjectRequest {
3405    #[allow(deprecated)]
3406    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3407    where
3408        S: serde::Serializer,
3409    {
3410        use serde::ser::SerializeStruct;
3411        let mut len = 0;
3412        if self.project.is_some() {
3413            len += 1;
3414        }
3415        if self.update_mask.is_some() {
3416            len += 1;
3417        }
3418        let mut struct_ser = serializer
3419            .serialize_struct(
3420                "origincloud.resourcemanager.v1beta1.UpdateProjectRequest",
3421                len,
3422            )?;
3423        if let Some(v) = self.project.as_ref() {
3424            struct_ser.serialize_field("project", v)?;
3425        }
3426        if let Some(v) = self.update_mask.as_ref() {
3427            struct_ser.serialize_field("updateMask", v)?;
3428        }
3429        struct_ser.end()
3430    }
3431}
3432impl<'de> serde::Deserialize<'de> for UpdateProjectRequest {
3433    #[allow(deprecated)]
3434    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3435    where
3436        D: serde::Deserializer<'de>,
3437    {
3438        const FIELDS: &[&str] = &["project", "update_mask", "updateMask"];
3439        #[allow(clippy::enum_variant_names)]
3440        enum GeneratedField {
3441            Project,
3442            UpdateMask,
3443            __SkipField__,
3444        }
3445        impl<'de> serde::Deserialize<'de> for GeneratedField {
3446            fn deserialize<D>(
3447                deserializer: D,
3448            ) -> std::result::Result<GeneratedField, D::Error>
3449            where
3450                D: serde::Deserializer<'de>,
3451            {
3452                struct GeneratedVisitor;
3453                impl serde::de::Visitor<'_> for GeneratedVisitor {
3454                    type Value = GeneratedField;
3455                    fn expecting(
3456                        &self,
3457                        formatter: &mut std::fmt::Formatter<'_>,
3458                    ) -> std::fmt::Result {
3459                        write!(formatter, "expected one of: {:?}", & FIELDS)
3460                    }
3461                    #[allow(unused_variables)]
3462                    fn visit_str<E>(
3463                        self,
3464                        value: &str,
3465                    ) -> std::result::Result<GeneratedField, E>
3466                    where
3467                        E: serde::de::Error,
3468                    {
3469                        match value {
3470                            "project" => Ok(GeneratedField::Project),
3471                            "updateMask" | "update_mask" => {
3472                                Ok(GeneratedField::UpdateMask)
3473                            }
3474                            _ => Ok(GeneratedField::__SkipField__),
3475                        }
3476                    }
3477                }
3478                deserializer.deserialize_identifier(GeneratedVisitor)
3479            }
3480        }
3481        struct GeneratedVisitor;
3482        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3483            type Value = UpdateProjectRequest;
3484            fn expecting(
3485                &self,
3486                formatter: &mut std::fmt::Formatter<'_>,
3487            ) -> std::fmt::Result {
3488                formatter
3489                    .write_str(
3490                        "struct origincloud.resourcemanager.v1beta1.UpdateProjectRequest",
3491                    )
3492            }
3493            fn visit_map<V>(
3494                self,
3495                mut map_: V,
3496            ) -> std::result::Result<UpdateProjectRequest, V::Error>
3497            where
3498                V: serde::de::MapAccess<'de>,
3499            {
3500                let mut project__ = None;
3501                let mut update_mask__ = None;
3502                while let Some(k) = map_.next_key()? {
3503                    match k {
3504                        GeneratedField::Project => {
3505                            if project__.is_some() {
3506                                return Err(serde::de::Error::duplicate_field("project"));
3507                            }
3508                            project__ = map_.next_value()?;
3509                        }
3510                        GeneratedField::UpdateMask => {
3511                            if update_mask__.is_some() {
3512                                return Err(serde::de::Error::duplicate_field("updateMask"));
3513                            }
3514                            update_mask__ = map_.next_value()?;
3515                        }
3516                        GeneratedField::__SkipField__ => {
3517                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3518                        }
3519                    }
3520                }
3521                Ok(UpdateProjectRequest {
3522                    project: project__,
3523                    update_mask: update_mask__,
3524                })
3525            }
3526        }
3527        deserializer
3528            .deserialize_struct(
3529                "origincloud.resourcemanager.v1beta1.UpdateProjectRequest",
3530                FIELDS,
3531                GeneratedVisitor,
3532            )
3533    }
3534}
3535/// Calls `OrganizationService`.
3536///
3537/// Organizations: the account a company's projects, members and billing
3538/// belong to. Every project is in exactly one organization, and access to an
3539/// organization is granted with roles in the IAM API (`iam.origincloudapis.eu`).
3540#[derive(Clone, Debug)]
3541pub struct OrganizationClient {
3542    service: ::origincloud_core::Service,
3543}
3544impl OrganizationClient {
3545    /// Returns a client of `OrganizationService` that sends its calls through `client`.
3546    pub fn new(client: &::origincloud_core::Client) -> Self {
3547        Self {
3548            service: client.service("resourcemanager", false),
3549        }
3550    }
3551    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
3552    pub fn service(&self) -> &::origincloud_core::Service {
3553        &self.service
3554    }
3555    /// Returns an organization.
3556    pub async fn get_organization(
3557        &self,
3558        request: GetOrganizationRequest,
3559    ) -> ::core::result::Result<Organization, ::origincloud_core::Error> {
3560        let p0 = ::origincloud_core::path_value(
3561            "name",
3562            &request.name,
3563            "organizations/*",
3564        )?;
3565        let query = ::origincloud_core::query(&request, &["name"])?;
3566        let call = ::origincloud_core::Request::new(
3567                ::origincloud_core::Method::GET,
3568                format!("/v1beta1/{p0}"),
3569            )
3570            .with_query(query)
3571            .idempotent();
3572        self.service.call(call).await
3573    }
3574    /// Lists the organizations the caller holds a role in, oldest first.
3575    pub async fn list_organizations(
3576        &self,
3577        request: ListOrganizationsRequest,
3578    ) -> ::core::result::Result<ListOrganizationsResponse, ::origincloud_core::Error> {
3579        let query = ::origincloud_core::query(&request, &[])?;
3580        let call = ::origincloud_core::Request::new(
3581                ::origincloud_core::Method::GET,
3582                ::std::string::String::from("/v1beta1/organizations"),
3583            )
3584            .with_query(query)
3585            .idempotent();
3586        self.service.call(call).await
3587    }
3588    /// Returns everything [`list_organizations`](Self::list_organizations) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
3589    pub fn all_organizations(
3590        &self,
3591        request: ListOrganizationsRequest,
3592    ) -> ::origincloud_core::Pages<Organization> {
3593        let client = self.clone();
3594        ::origincloud_core::Pages::new(
3595            request,
3596            move |request: ListOrganizationsRequest| {
3597                let client = client.clone();
3598                async move {
3599                    let page = client.list_organizations(request).await?;
3600                    Ok((page.organizations, page.next_page_token))
3601                }
3602            },
3603            |request: &mut ListOrganizationsRequest, token: ::std::string::String| {
3604                request.page_token = token;
3605            },
3606        )
3607    }
3608    /// Creates an organization. Any signed-in user can create one, and becomes
3609    /// its owner and the administrator of its default billing account, which
3610    /// is created with it without billing details: the organization can't be
3611    /// invoiced until they are set with the billing API
3612    /// (`billing.origincloudapis.eu`). A new organization is either `organization::State::Active`
3613    /// at once or `organization::State::PendingReview`, depending on the platform's free capacity.
3614    pub async fn create_organization(
3615        &self,
3616        mut request: CreateOrganizationRequest,
3617    ) -> ::core::result::Result<Organization, ::origincloud_core::Error> {
3618        if request.request_id.is_empty() {
3619            request.request_id = ::origincloud_core::new_request_id();
3620        }
3621        let body = ::origincloud_core::json_body(
3622            request.organization.as_ref().unwrap_or(&::core::default::Default::default()),
3623        )?;
3624        let query = ::origincloud_core::query(&request, &["organization"])?;
3625        let call = ::origincloud_core::Request::new(
3626                ::origincloud_core::Method::POST,
3627                ::std::string::String::from("/v1beta1/organizations"),
3628            )
3629            .with_body(body)
3630            .with_query(query)
3631            .idempotent();
3632        self.service.call(call).await
3633    }
3634    /// Renames an organization.
3635    pub async fn update_organization(
3636        &self,
3637        request: UpdateOrganizationRequest,
3638    ) -> ::core::result::Result<Organization, ::origincloud_core::Error> {
3639        let p0 = ::origincloud_core::path_value(
3640            "organization.name",
3641            request.organization.as_ref().map_or("", |m| m.name.as_str()),
3642            "organizations/*",
3643        )?;
3644        let body = ::origincloud_core::json_body(
3645            request.organization.as_ref().unwrap_or(&::core::default::Default::default()),
3646        )?;
3647        let query = ::origincloud_core::query(
3648            &request,
3649            &["organization.name", "organization"],
3650        )?;
3651        let call = ::origincloud_core::Request::new(
3652                ::origincloud_core::Method::PATCH,
3653                format!("/v1beta1/{p0}"),
3654            )
3655            .with_body(body)
3656            .with_query(query);
3657        self.service.call(call).await
3658    }
3659    /// Deletes an organization. Refused as a `CONFLICT` while it
3660    /// still has a project: delete its projects first. Its quota and every
3661    /// role granted in it go with it. Its billing accounts stay, with their
3662    /// spend limits, so the last period can still be invoiced.
3663    pub async fn delete_organization(
3664        &self,
3665        request: DeleteOrganizationRequest,
3666    ) -> ::core::result::Result<
3667        ::origincloud_core::protobuf::Empty,
3668        ::origincloud_core::Error,
3669    > {
3670        let p0 = ::origincloud_core::path_value(
3671            "name",
3672            &request.name,
3673            "organizations/*",
3674        )?;
3675        let query = ::origincloud_core::query(&request, &["name"])?;
3676        let call = ::origincloud_core::Request::new(
3677                ::origincloud_core::Method::DELETE,
3678                format!("/v1beta1/{p0}"),
3679            )
3680            .with_query(query);
3681        self.service.call(call).await
3682    }
3683    /// Returns an organization's quota: the most of each kind of resource its
3684    /// projects may hold together, and how much of it they use. The limits are
3685    /// set by the platform; ask support to raise one.
3686    pub async fn get_organization_quota(
3687        &self,
3688        request: GetOrganizationQuotaRequest,
3689    ) -> ::core::result::Result<OrganizationQuota, ::origincloud_core::Error> {
3690        let p0 = ::origincloud_core::path_value(
3691            "name",
3692            &request.name,
3693            "organizations/*/quota",
3694        )?;
3695        let query = ::origincloud_core::query(&request, &["name"])?;
3696        let call = ::origincloud_core::Request::new(
3697                ::origincloud_core::Method::GET,
3698                format!("/v1beta1/{p0}"),
3699            )
3700            .with_query(query)
3701            .idempotent();
3702        self.service.call(call).await
3703    }
3704}
3705/// Calls `ProjectService`.
3706///
3707/// Projects: the namespace every resource is created in. A project belongs to
3708/// one organization, and every resource name of the other APIs starts with
3709/// it, `projects/{project}/...`.
3710#[derive(Clone, Debug)]
3711pub struct ProjectClient {
3712    service: ::origincloud_core::Service,
3713}
3714impl ProjectClient {
3715    /// Returns a client of `ProjectService` that sends its calls through `client`.
3716    pub fn new(client: &::origincloud_core::Client) -> Self {
3717        Self {
3718            service: client.service("resourcemanager", false),
3719        }
3720    }
3721    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
3722    pub fn service(&self) -> &::origincloud_core::Service {
3723        &self.service
3724    }
3725    /// Returns a project.
3726    pub async fn get_project(
3727        &self,
3728        request: GetProjectRequest,
3729    ) -> ::core::result::Result<Project, ::origincloud_core::Error> {
3730        let p0 = ::origincloud_core::path_value("name", &request.name, "projects/*")?;
3731        let query = ::origincloud_core::query(&request, &["name"])?;
3732        let call = ::origincloud_core::Request::new(
3733                ::origincloud_core::Method::GET,
3734                format!("/v1beta1/{p0}"),
3735            )
3736            .with_query(query)
3737            .idempotent();
3738        self.service.call(call).await
3739    }
3740    /// Lists an organization's projects, oldest first.
3741    pub async fn list_projects(
3742        &self,
3743        request: ListProjectsRequest,
3744    ) -> ::core::result::Result<ListProjectsResponse, ::origincloud_core::Error> {
3745        let query = ::origincloud_core::query(&request, &[])?;
3746        let call = ::origincloud_core::Request::new(
3747                ::origincloud_core::Method::GET,
3748                ::std::string::String::from("/v1beta1/projects"),
3749            )
3750            .with_query(query)
3751            .idempotent();
3752        self.service.call(call).await
3753    }
3754    /// Returns everything [`list_projects`](Self::list_projects) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
3755    pub fn all_projects(
3756        &self,
3757        request: ListProjectsRequest,
3758    ) -> ::origincloud_core::Pages<Project> {
3759        let client = self.clone();
3760        ::origincloud_core::Pages::new(
3761            request,
3762            move |request: ListProjectsRequest| {
3763                let client = client.clone();
3764                async move {
3765                    let page = client.list_projects(request).await?;
3766                    Ok((page.projects, page.next_page_token))
3767                }
3768            },
3769            |request: &mut ListProjectsRequest, token: ::std::string::String| {
3770                request.page_token = token;
3771            },
3772        )
3773    }
3774    /// Creates a project in an `organization::State::Active` organization, under the id the caller
3775    /// chooses. The caller becomes the project's owner, and the project is
3776    /// billed to the organization's default billing account. An id in use, or
3777    /// used by a project that was deleted, is refused as a `CONFLICT`.
3778    pub async fn create_project(
3779        &self,
3780        mut request: CreateProjectRequest,
3781    ) -> ::core::result::Result<Project, ::origincloud_core::Error> {
3782        if request.request_id.is_empty() {
3783            request.request_id = ::origincloud_core::new_request_id();
3784        }
3785        let body = ::origincloud_core::json_body(
3786            request.project.as_ref().unwrap_or(&::core::default::Default::default()),
3787        )?;
3788        let query = ::origincloud_core::query(&request, &["project"])?;
3789        let call = ::origincloud_core::Request::new(
3790                ::origincloud_core::Method::POST,
3791                ::std::string::String::from("/v1beta1/projects"),
3792            )
3793            .with_body(body)
3794            .with_query(query)
3795            .idempotent();
3796        self.service.call(call).await
3797    }
3798    /// Renames a project.
3799    pub async fn update_project(
3800        &self,
3801        request: UpdateProjectRequest,
3802    ) -> ::core::result::Result<Project, ::origincloud_core::Error> {
3803        let p0 = ::origincloud_core::path_value(
3804            "project.name",
3805            request.project.as_ref().map_or("", |m| m.name.as_str()),
3806            "projects/*",
3807        )?;
3808        let body = ::origincloud_core::json_body(
3809            request.project.as_ref().unwrap_or(&::core::default::Default::default()),
3810        )?;
3811        let query = ::origincloud_core::query(&request, &["project.name", "project"])?;
3812        let call = ::origincloud_core::Request::new(
3813                ::origincloud_core::Method::PATCH,
3814                format!("/v1beta1/{p0}"),
3815            )
3816            .with_body(body)
3817            .with_query(query);
3818        self.service.call(call).await
3819    }
3820    /// Deletes a project. Refused as a `CONFLICT` while the project
3821    /// still has a resource you can delete yourself: an instance that isn't terminated, an image, a key
3822    /// pair, a volume or snapshot that isn't deleted, a NAT gateway, a floating
3823    /// IP, a VPC, or a DNS policy other than its default one. The refusal names
3824    /// every kind left, in the order to delete them. Nothing you can delete
3825    /// yourself is deleted on your behalf. The project's default DNS policy,
3826    /// its quota and every role granted on it go with it; roles granted on the
3827    /// organization stay.
3828    pub async fn delete_project(
3829        &self,
3830        request: DeleteProjectRequest,
3831    ) -> ::core::result::Result<
3832        ::origincloud_core::protobuf::Empty,
3833        ::origincloud_core::Error,
3834    > {
3835        let p0 = ::origincloud_core::path_value("name", &request.name, "projects/*")?;
3836        let query = ::origincloud_core::query(&request, &["name"])?;
3837        let call = ::origincloud_core::Request::new(
3838                ::origincloud_core::Method::DELETE,
3839                format!("/v1beta1/{p0}"),
3840            )
3841            .with_query(query);
3842        self.service.call(call).await
3843    }
3844    /// Returns a project's quota: the budget of each kind of resource the
3845    /// project may hold, if one is set, and how much of it the project uses.
3846    pub async fn get_project_quota(
3847        &self,
3848        request: GetProjectQuotaRequest,
3849    ) -> ::core::result::Result<ProjectQuota, ::origincloud_core::Error> {
3850        let p0 = ::origincloud_core::path_value(
3851            "name",
3852            &request.name,
3853            "projects/*/quota",
3854        )?;
3855        let query = ::origincloud_core::query(&request, &["name"])?;
3856        let call = ::origincloud_core::Request::new(
3857                ::origincloud_core::Method::GET,
3858                format!("/v1beta1/{p0}"),
3859            )
3860            .with_query(query)
3861            .idempotent();
3862        self.service.call(call).await
3863    }
3864    /// Sets or removes a project's budgets. A budget named in `update_mask`
3865    /// is set to the value given, or removed when the value is left out.
3866    pub async fn update_project_quota(
3867        &self,
3868        request: UpdateProjectQuotaRequest,
3869    ) -> ::core::result::Result<ProjectQuota, ::origincloud_core::Error> {
3870        let p0 = ::origincloud_core::path_value(
3871            "projectQuota.name",
3872            request.project_quota.as_ref().map_or("", |m| m.name.as_str()),
3873            "projects/*/quota",
3874        )?;
3875        let body = ::origincloud_core::json_body(
3876            request
3877                .project_quota
3878                .as_ref()
3879                .unwrap_or(&::core::default::Default::default()),
3880        )?;
3881        let query = ::origincloud_core::query(
3882            &request,
3883            &["projectQuota.name", "projectQuota"],
3884        )?;
3885        let call = ::origincloud_core::Request::new(
3886                ::origincloud_core::Method::PATCH,
3887                format!("/v1beta1/{p0}"),
3888            )
3889            .with_body(body)
3890            .with_query(query);
3891        self.service.call(call).await
3892    }
3893}