google_cloud_shell_v1/
model.rs

1// Copyright 2025 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Code generated by sidekick. DO NOT EDIT.
16
17#![allow(rustdoc::redundant_explicit_links)]
18#![allow(rustdoc::broken_intra_doc_links)]
19#![no_implicit_prelude]
20extern crate async_trait;
21extern crate bytes;
22extern crate gax;
23extern crate gaxi;
24extern crate lazy_static;
25extern crate longrunning;
26extern crate lro;
27extern crate reqwest;
28extern crate serde;
29extern crate serde_json;
30extern crate serde_with;
31extern crate std;
32extern crate tracing;
33extern crate wkt;
34
35/// A Cloud Shell environment, which is defined as the combination of a Docker
36/// image specifying what is installed on the environment and a home directory
37/// containing the user's data that will remain across sessions. Each user has
38/// at least an environment with the ID "default".
39#[derive(Clone, Default, PartialEq)]
40#[non_exhaustive]
41pub struct Environment {
42    /// Immutable. Full name of this resource, in the format
43    /// `users/{owner_email}/environments/{environment_id}`. `{owner_email}` is the
44    /// email address of the user to whom this environment belongs, and
45    /// `{environment_id}` is the identifier of this environment. For example,
46    /// `users/someone@example.com/environments/default`.
47    pub name: std::string::String,
48
49    /// Output only. The environment's identifier, unique among the user's
50    /// environments.
51    pub id: std::string::String,
52
53    /// Required. Immutable. Full path to the Docker image used to run this environment, e.g.
54    /// "gcr.io/dev-con/cloud-devshell:latest".
55    pub docker_image: std::string::String,
56
57    /// Output only. Current execution state of this environment.
58    pub state: crate::model::environment::State,
59
60    /// Output only. Host to which clients can connect to initiate HTTPS or WSS
61    /// connections with the environment.
62    pub web_host: std::string::String,
63
64    /// Output only. Username that clients should use when initiating SSH sessions
65    /// with the environment.
66    pub ssh_username: std::string::String,
67
68    /// Output only. Host to which clients can connect to initiate SSH sessions
69    /// with the environment.
70    pub ssh_host: std::string::String,
71
72    /// Output only. Port to which clients can connect to initiate SSH sessions
73    /// with the environment.
74    pub ssh_port: i32,
75
76    /// Output only. Public keys associated with the environment. Clients can
77    /// connect to this environment via SSH only if they possess a private key
78    /// corresponding to at least one of these public keys. Keys can be added to or
79    /// removed from the environment using the AddPublicKey and RemovePublicKey
80    /// methods.
81    pub public_keys: std::vec::Vec<std::string::String>,
82
83    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
84}
85
86impl Environment {
87    pub fn new() -> Self {
88        std::default::Default::default()
89    }
90
91    /// Sets the value of [name][crate::model::Environment::name].
92    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
93        self.name = v.into();
94        self
95    }
96
97    /// Sets the value of [id][crate::model::Environment::id].
98    pub fn set_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
99        self.id = v.into();
100        self
101    }
102
103    /// Sets the value of [docker_image][crate::model::Environment::docker_image].
104    pub fn set_docker_image<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
105        self.docker_image = v.into();
106        self
107    }
108
109    /// Sets the value of [state][crate::model::Environment::state].
110    pub fn set_state<T: std::convert::Into<crate::model::environment::State>>(
111        mut self,
112        v: T,
113    ) -> Self {
114        self.state = v.into();
115        self
116    }
117
118    /// Sets the value of [web_host][crate::model::Environment::web_host].
119    pub fn set_web_host<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
120        self.web_host = v.into();
121        self
122    }
123
124    /// Sets the value of [ssh_username][crate::model::Environment::ssh_username].
125    pub fn set_ssh_username<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
126        self.ssh_username = v.into();
127        self
128    }
129
130    /// Sets the value of [ssh_host][crate::model::Environment::ssh_host].
131    pub fn set_ssh_host<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
132        self.ssh_host = v.into();
133        self
134    }
135
136    /// Sets the value of [ssh_port][crate::model::Environment::ssh_port].
137    pub fn set_ssh_port<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
138        self.ssh_port = v.into();
139        self
140    }
141
142    /// Sets the value of [public_keys][crate::model::Environment::public_keys].
143    pub fn set_public_keys<T, V>(mut self, v: T) -> Self
144    where
145        T: std::iter::IntoIterator<Item = V>,
146        V: std::convert::Into<std::string::String>,
147    {
148        use std::iter::Iterator;
149        self.public_keys = v.into_iter().map(|i| i.into()).collect();
150        self
151    }
152}
153
154impl wkt::message::Message for Environment {
155    fn typename() -> &'static str {
156        "type.googleapis.com/google.cloud.shell.v1.Environment"
157    }
158}
159
160#[doc(hidden)]
161impl<'de> serde::de::Deserialize<'de> for Environment {
162    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
163    where
164        D: serde::Deserializer<'de>,
165    {
166        #[allow(non_camel_case_types)]
167        #[doc(hidden)]
168        #[derive(PartialEq, Eq, Hash)]
169        enum __FieldTag {
170            __name,
171            __id,
172            __docker_image,
173            __state,
174            __web_host,
175            __ssh_username,
176            __ssh_host,
177            __ssh_port,
178            __public_keys,
179            Unknown(std::string::String),
180        }
181        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
182            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
183            where
184                D: serde::Deserializer<'de>,
185            {
186                struct Visitor;
187                impl<'de> serde::de::Visitor<'de> for Visitor {
188                    type Value = __FieldTag;
189                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
190                        formatter.write_str("a field name for Environment")
191                    }
192                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
193                    where
194                        E: serde::de::Error,
195                    {
196                        use std::result::Result::Ok;
197                        use std::string::ToString;
198                        match value {
199                            "name" => Ok(__FieldTag::__name),
200                            "id" => Ok(__FieldTag::__id),
201                            "dockerImage" => Ok(__FieldTag::__docker_image),
202                            "docker_image" => Ok(__FieldTag::__docker_image),
203                            "state" => Ok(__FieldTag::__state),
204                            "webHost" => Ok(__FieldTag::__web_host),
205                            "web_host" => Ok(__FieldTag::__web_host),
206                            "sshUsername" => Ok(__FieldTag::__ssh_username),
207                            "ssh_username" => Ok(__FieldTag::__ssh_username),
208                            "sshHost" => Ok(__FieldTag::__ssh_host),
209                            "ssh_host" => Ok(__FieldTag::__ssh_host),
210                            "sshPort" => Ok(__FieldTag::__ssh_port),
211                            "ssh_port" => Ok(__FieldTag::__ssh_port),
212                            "publicKeys" => Ok(__FieldTag::__public_keys),
213                            "public_keys" => Ok(__FieldTag::__public_keys),
214                            _ => Ok(__FieldTag::Unknown(value.to_string())),
215                        }
216                    }
217                }
218                deserializer.deserialize_identifier(Visitor)
219            }
220        }
221        struct Visitor;
222        impl<'de> serde::de::Visitor<'de> for Visitor {
223            type Value = Environment;
224            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
225                formatter.write_str("struct Environment")
226            }
227            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
228            where
229                A: serde::de::MapAccess<'de>,
230            {
231                #[allow(unused_imports)]
232                use serde::de::Error;
233                use std::option::Option::Some;
234                let mut fields = std::collections::HashSet::new();
235                let mut result = Self::Value::new();
236                while let Some(tag) = map.next_key::<__FieldTag>()? {
237                    #[allow(clippy::match_single_binding)]
238                    match tag {
239                        __FieldTag::__name => {
240                            if !fields.insert(__FieldTag::__name) {
241                                return std::result::Result::Err(A::Error::duplicate_field(
242                                    "multiple values for name",
243                                ));
244                            }
245                            result.name = map
246                                .next_value::<std::option::Option<std::string::String>>()?
247                                .unwrap_or_default();
248                        }
249                        __FieldTag::__id => {
250                            if !fields.insert(__FieldTag::__id) {
251                                return std::result::Result::Err(A::Error::duplicate_field(
252                                    "multiple values for id",
253                                ));
254                            }
255                            result.id = map
256                                .next_value::<std::option::Option<std::string::String>>()?
257                                .unwrap_or_default();
258                        }
259                        __FieldTag::__docker_image => {
260                            if !fields.insert(__FieldTag::__docker_image) {
261                                return std::result::Result::Err(A::Error::duplicate_field(
262                                    "multiple values for docker_image",
263                                ));
264                            }
265                            result.docker_image = map
266                                .next_value::<std::option::Option<std::string::String>>()?
267                                .unwrap_or_default();
268                        }
269                        __FieldTag::__state => {
270                            if !fields.insert(__FieldTag::__state) {
271                                return std::result::Result::Err(A::Error::duplicate_field(
272                                    "multiple values for state",
273                                ));
274                            }
275                            result.state = map.next_value::<std::option::Option<crate::model::environment::State>>()?.unwrap_or_default();
276                        }
277                        __FieldTag::__web_host => {
278                            if !fields.insert(__FieldTag::__web_host) {
279                                return std::result::Result::Err(A::Error::duplicate_field(
280                                    "multiple values for web_host",
281                                ));
282                            }
283                            result.web_host = map
284                                .next_value::<std::option::Option<std::string::String>>()?
285                                .unwrap_or_default();
286                        }
287                        __FieldTag::__ssh_username => {
288                            if !fields.insert(__FieldTag::__ssh_username) {
289                                return std::result::Result::Err(A::Error::duplicate_field(
290                                    "multiple values for ssh_username",
291                                ));
292                            }
293                            result.ssh_username = map
294                                .next_value::<std::option::Option<std::string::String>>()?
295                                .unwrap_or_default();
296                        }
297                        __FieldTag::__ssh_host => {
298                            if !fields.insert(__FieldTag::__ssh_host) {
299                                return std::result::Result::Err(A::Error::duplicate_field(
300                                    "multiple values for ssh_host",
301                                ));
302                            }
303                            result.ssh_host = map
304                                .next_value::<std::option::Option<std::string::String>>()?
305                                .unwrap_or_default();
306                        }
307                        __FieldTag::__ssh_port => {
308                            if !fields.insert(__FieldTag::__ssh_port) {
309                                return std::result::Result::Err(A::Error::duplicate_field(
310                                    "multiple values for ssh_port",
311                                ));
312                            }
313                            struct __With(std::option::Option<i32>);
314                            impl<'de> serde::de::Deserialize<'de> for __With {
315                                fn deserialize<D>(
316                                    deserializer: D,
317                                ) -> std::result::Result<Self, D::Error>
318                                where
319                                    D: serde::de::Deserializer<'de>,
320                                {
321                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
322                                }
323                            }
324                            result.ssh_port = map.next_value::<__With>()?.0.unwrap_or_default();
325                        }
326                        __FieldTag::__public_keys => {
327                            if !fields.insert(__FieldTag::__public_keys) {
328                                return std::result::Result::Err(A::Error::duplicate_field(
329                                    "multiple values for public_keys",
330                                ));
331                            }
332                            result.public_keys = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
333                        }
334                        __FieldTag::Unknown(key) => {
335                            let value = map.next_value::<serde_json::Value>()?;
336                            result._unknown_fields.insert(key, value);
337                        }
338                    }
339                }
340                std::result::Result::Ok(result)
341            }
342        }
343        deserializer.deserialize_any(Visitor)
344    }
345}
346
347#[doc(hidden)]
348impl serde::ser::Serialize for Environment {
349    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
350    where
351        S: serde::ser::Serializer,
352    {
353        use serde::ser::SerializeMap;
354        #[allow(unused_imports)]
355        use std::option::Option::Some;
356        let mut state = serializer.serialize_map(std::option::Option::None)?;
357        if !self.name.is_empty() {
358            state.serialize_entry("name", &self.name)?;
359        }
360        if !self.id.is_empty() {
361            state.serialize_entry("id", &self.id)?;
362        }
363        if !self.docker_image.is_empty() {
364            state.serialize_entry("dockerImage", &self.docker_image)?;
365        }
366        if !wkt::internal::is_default(&self.state) {
367            state.serialize_entry("state", &self.state)?;
368        }
369        if !self.web_host.is_empty() {
370            state.serialize_entry("webHost", &self.web_host)?;
371        }
372        if !self.ssh_username.is_empty() {
373            state.serialize_entry("sshUsername", &self.ssh_username)?;
374        }
375        if !self.ssh_host.is_empty() {
376            state.serialize_entry("sshHost", &self.ssh_host)?;
377        }
378        if !wkt::internal::is_default(&self.ssh_port) {
379            struct __With<'a>(&'a i32);
380            impl<'a> serde::ser::Serialize for __With<'a> {
381                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
382                where
383                    S: serde::ser::Serializer,
384                {
385                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
386                }
387            }
388            state.serialize_entry("sshPort", &__With(&self.ssh_port))?;
389        }
390        if !self.public_keys.is_empty() {
391            state.serialize_entry("publicKeys", &self.public_keys)?;
392        }
393        if !self._unknown_fields.is_empty() {
394            for (key, value) in self._unknown_fields.iter() {
395                state.serialize_entry(key, &value)?;
396            }
397        }
398        state.end()
399    }
400}
401
402impl std::fmt::Debug for Environment {
403    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
404        let mut debug_struct = f.debug_struct("Environment");
405        debug_struct.field("name", &self.name);
406        debug_struct.field("id", &self.id);
407        debug_struct.field("docker_image", &self.docker_image);
408        debug_struct.field("state", &self.state);
409        debug_struct.field("web_host", &self.web_host);
410        debug_struct.field("ssh_username", &self.ssh_username);
411        debug_struct.field("ssh_host", &self.ssh_host);
412        debug_struct.field("ssh_port", &self.ssh_port);
413        debug_struct.field("public_keys", &self.public_keys);
414        if !self._unknown_fields.is_empty() {
415            debug_struct.field("_unknown_fields", &self._unknown_fields);
416        }
417        debug_struct.finish()
418    }
419}
420
421/// Defines additional types related to [Environment].
422pub mod environment {
423    #[allow(unused_imports)]
424    use super::*;
425
426    /// Possible execution states for an environment.
427    ///
428    /// # Working with unknown values
429    ///
430    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
431    /// additional enum variants at any time. Adding new variants is not considered
432    /// a breaking change. Applications should write their code in anticipation of:
433    ///
434    /// - New values appearing in future releases of the client library, **and**
435    /// - New values received dynamically, without application changes.
436    ///
437    /// Please consult the [Working with enums] section in the user guide for some
438    /// guidelines.
439    ///
440    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
441    #[derive(Clone, Debug, PartialEq)]
442    #[non_exhaustive]
443    pub enum State {
444        /// The environment's states is unknown.
445        Unspecified,
446        /// The environment is not running and can't be connected to. Starting the
447        /// environment will transition it to the PENDING state.
448        Suspended,
449        /// The environment is being started but is not yet ready to accept
450        /// connections.
451        Pending,
452        /// The environment is running and ready to accept connections. It will
453        /// automatically transition back to DISABLED after a period of inactivity or
454        /// if another environment is started.
455        Running,
456        /// The environment is being deleted and can't be connected to.
457        Deleting,
458        /// If set, the enum was initialized with an unknown value.
459        ///
460        /// Applications can examine the value using [State::value] or
461        /// [State::name].
462        UnknownValue(state::UnknownValue),
463    }
464
465    #[doc(hidden)]
466    pub mod state {
467        #[allow(unused_imports)]
468        use super::*;
469        #[derive(Clone, Debug, PartialEq)]
470        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
471    }
472
473    impl State {
474        /// Gets the enum value.
475        ///
476        /// Returns `None` if the enum contains an unknown value deserialized from
477        /// the string representation of enums.
478        pub fn value(&self) -> std::option::Option<i32> {
479            match self {
480                Self::Unspecified => std::option::Option::Some(0),
481                Self::Suspended => std::option::Option::Some(1),
482                Self::Pending => std::option::Option::Some(2),
483                Self::Running => std::option::Option::Some(3),
484                Self::Deleting => std::option::Option::Some(4),
485                Self::UnknownValue(u) => u.0.value(),
486            }
487        }
488
489        /// Gets the enum value as a string.
490        ///
491        /// Returns `None` if the enum contains an unknown value deserialized from
492        /// the integer representation of enums.
493        pub fn name(&self) -> std::option::Option<&str> {
494            match self {
495                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
496                Self::Suspended => std::option::Option::Some("SUSPENDED"),
497                Self::Pending => std::option::Option::Some("PENDING"),
498                Self::Running => std::option::Option::Some("RUNNING"),
499                Self::Deleting => std::option::Option::Some("DELETING"),
500                Self::UnknownValue(u) => u.0.name(),
501            }
502        }
503    }
504
505    impl std::default::Default for State {
506        fn default() -> Self {
507            use std::convert::From;
508            Self::from(0)
509        }
510    }
511
512    impl std::fmt::Display for State {
513        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
514            wkt::internal::display_enum(f, self.name(), self.value())
515        }
516    }
517
518    impl std::convert::From<i32> for State {
519        fn from(value: i32) -> Self {
520            match value {
521                0 => Self::Unspecified,
522                1 => Self::Suspended,
523                2 => Self::Pending,
524                3 => Self::Running,
525                4 => Self::Deleting,
526                _ => Self::UnknownValue(state::UnknownValue(
527                    wkt::internal::UnknownEnumValue::Integer(value),
528                )),
529            }
530        }
531    }
532
533    impl std::convert::From<&str> for State {
534        fn from(value: &str) -> Self {
535            use std::string::ToString;
536            match value {
537                "STATE_UNSPECIFIED" => Self::Unspecified,
538                "SUSPENDED" => Self::Suspended,
539                "PENDING" => Self::Pending,
540                "RUNNING" => Self::Running,
541                "DELETING" => Self::Deleting,
542                _ => Self::UnknownValue(state::UnknownValue(
543                    wkt::internal::UnknownEnumValue::String(value.to_string()),
544                )),
545            }
546        }
547    }
548
549    impl serde::ser::Serialize for State {
550        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
551        where
552            S: serde::Serializer,
553        {
554            match self {
555                Self::Unspecified => serializer.serialize_i32(0),
556                Self::Suspended => serializer.serialize_i32(1),
557                Self::Pending => serializer.serialize_i32(2),
558                Self::Running => serializer.serialize_i32(3),
559                Self::Deleting => serializer.serialize_i32(4),
560                Self::UnknownValue(u) => u.0.serialize(serializer),
561            }
562        }
563    }
564
565    impl<'de> serde::de::Deserialize<'de> for State {
566        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
567        where
568            D: serde::Deserializer<'de>,
569        {
570            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
571                ".google.cloud.shell.v1.Environment.State",
572            ))
573        }
574    }
575}
576
577/// Request message for
578/// [GetEnvironment][google.cloud.shell.v1.CloudShellService.GetEnvironment].
579///
580/// [google.cloud.shell.v1.CloudShellService.GetEnvironment]: crate::client::CloudShellService::get_environment
581#[derive(Clone, Default, PartialEq)]
582#[non_exhaustive]
583pub struct GetEnvironmentRequest {
584    /// Required. Name of the requested resource, for example `users/me/environments/default`
585    /// or `users/someone@example.com/environments/default`.
586    pub name: std::string::String,
587
588    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
589}
590
591impl GetEnvironmentRequest {
592    pub fn new() -> Self {
593        std::default::Default::default()
594    }
595
596    /// Sets the value of [name][crate::model::GetEnvironmentRequest::name].
597    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
598        self.name = v.into();
599        self
600    }
601}
602
603impl wkt::message::Message for GetEnvironmentRequest {
604    fn typename() -> &'static str {
605        "type.googleapis.com/google.cloud.shell.v1.GetEnvironmentRequest"
606    }
607}
608
609#[doc(hidden)]
610impl<'de> serde::de::Deserialize<'de> for GetEnvironmentRequest {
611    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
612    where
613        D: serde::Deserializer<'de>,
614    {
615        #[allow(non_camel_case_types)]
616        #[doc(hidden)]
617        #[derive(PartialEq, Eq, Hash)]
618        enum __FieldTag {
619            __name,
620            Unknown(std::string::String),
621        }
622        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
623            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
624            where
625                D: serde::Deserializer<'de>,
626            {
627                struct Visitor;
628                impl<'de> serde::de::Visitor<'de> for Visitor {
629                    type Value = __FieldTag;
630                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
631                        formatter.write_str("a field name for GetEnvironmentRequest")
632                    }
633                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
634                    where
635                        E: serde::de::Error,
636                    {
637                        use std::result::Result::Ok;
638                        use std::string::ToString;
639                        match value {
640                            "name" => Ok(__FieldTag::__name),
641                            _ => Ok(__FieldTag::Unknown(value.to_string())),
642                        }
643                    }
644                }
645                deserializer.deserialize_identifier(Visitor)
646            }
647        }
648        struct Visitor;
649        impl<'de> serde::de::Visitor<'de> for Visitor {
650            type Value = GetEnvironmentRequest;
651            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
652                formatter.write_str("struct GetEnvironmentRequest")
653            }
654            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
655            where
656                A: serde::de::MapAccess<'de>,
657            {
658                #[allow(unused_imports)]
659                use serde::de::Error;
660                use std::option::Option::Some;
661                let mut fields = std::collections::HashSet::new();
662                let mut result = Self::Value::new();
663                while let Some(tag) = map.next_key::<__FieldTag>()? {
664                    #[allow(clippy::match_single_binding)]
665                    match tag {
666                        __FieldTag::__name => {
667                            if !fields.insert(__FieldTag::__name) {
668                                return std::result::Result::Err(A::Error::duplicate_field(
669                                    "multiple values for name",
670                                ));
671                            }
672                            result.name = map
673                                .next_value::<std::option::Option<std::string::String>>()?
674                                .unwrap_or_default();
675                        }
676                        __FieldTag::Unknown(key) => {
677                            let value = map.next_value::<serde_json::Value>()?;
678                            result._unknown_fields.insert(key, value);
679                        }
680                    }
681                }
682                std::result::Result::Ok(result)
683            }
684        }
685        deserializer.deserialize_any(Visitor)
686    }
687}
688
689#[doc(hidden)]
690impl serde::ser::Serialize for GetEnvironmentRequest {
691    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
692    where
693        S: serde::ser::Serializer,
694    {
695        use serde::ser::SerializeMap;
696        #[allow(unused_imports)]
697        use std::option::Option::Some;
698        let mut state = serializer.serialize_map(std::option::Option::None)?;
699        if !self.name.is_empty() {
700            state.serialize_entry("name", &self.name)?;
701        }
702        if !self._unknown_fields.is_empty() {
703            for (key, value) in self._unknown_fields.iter() {
704                state.serialize_entry(key, &value)?;
705            }
706        }
707        state.end()
708    }
709}
710
711impl std::fmt::Debug for GetEnvironmentRequest {
712    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
713        let mut debug_struct = f.debug_struct("GetEnvironmentRequest");
714        debug_struct.field("name", &self.name);
715        if !self._unknown_fields.is_empty() {
716            debug_struct.field("_unknown_fields", &self._unknown_fields);
717        }
718        debug_struct.finish()
719    }
720}
721
722/// Message included in the metadata field of operations returned from
723/// [CreateEnvironment][google.cloud.shell.v1.CloudShellService.CreateEnvironment].
724#[derive(Clone, Default, PartialEq)]
725#[non_exhaustive]
726pub struct CreateEnvironmentMetadata {
727    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
728}
729
730impl CreateEnvironmentMetadata {
731    pub fn new() -> Self {
732        std::default::Default::default()
733    }
734}
735
736impl wkt::message::Message for CreateEnvironmentMetadata {
737    fn typename() -> &'static str {
738        "type.googleapis.com/google.cloud.shell.v1.CreateEnvironmentMetadata"
739    }
740}
741
742#[doc(hidden)]
743impl<'de> serde::de::Deserialize<'de> for CreateEnvironmentMetadata {
744    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
745    where
746        D: serde::Deserializer<'de>,
747    {
748        #[allow(non_camel_case_types)]
749        #[doc(hidden)]
750        #[derive(PartialEq, Eq, Hash)]
751        enum __FieldTag {
752            Unknown(std::string::String),
753        }
754        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
755            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
756            where
757                D: serde::Deserializer<'de>,
758            {
759                struct Visitor;
760                impl<'de> serde::de::Visitor<'de> for Visitor {
761                    type Value = __FieldTag;
762                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
763                        formatter.write_str("a field name for CreateEnvironmentMetadata")
764                    }
765                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
766                    where
767                        E: serde::de::Error,
768                    {
769                        use std::result::Result::Ok;
770                        use std::string::ToString;
771                        Ok(__FieldTag::Unknown(value.to_string()))
772                    }
773                }
774                deserializer.deserialize_identifier(Visitor)
775            }
776        }
777        struct Visitor;
778        impl<'de> serde::de::Visitor<'de> for Visitor {
779            type Value = CreateEnvironmentMetadata;
780            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
781                formatter.write_str("struct CreateEnvironmentMetadata")
782            }
783            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
784            where
785                A: serde::de::MapAccess<'de>,
786            {
787                #[allow(unused_imports)]
788                use serde::de::Error;
789                use std::option::Option::Some;
790                let mut result = Self::Value::new();
791                while let Some(tag) = map.next_key::<__FieldTag>()? {
792                    #[allow(clippy::match_single_binding)]
793                    match tag {
794                        __FieldTag::Unknown(key) => {
795                            let value = map.next_value::<serde_json::Value>()?;
796                            result._unknown_fields.insert(key, value);
797                        }
798                    }
799                }
800                std::result::Result::Ok(result)
801            }
802        }
803        deserializer.deserialize_any(Visitor)
804    }
805}
806
807#[doc(hidden)]
808impl serde::ser::Serialize for CreateEnvironmentMetadata {
809    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
810    where
811        S: serde::ser::Serializer,
812    {
813        use serde::ser::SerializeMap;
814        #[allow(unused_imports)]
815        use std::option::Option::Some;
816        let mut state = serializer.serialize_map(std::option::Option::None)?;
817        if !self._unknown_fields.is_empty() {
818            for (key, value) in self._unknown_fields.iter() {
819                state.serialize_entry(key, &value)?;
820            }
821        }
822        state.end()
823    }
824}
825
826impl std::fmt::Debug for CreateEnvironmentMetadata {
827    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
828        let mut debug_struct = f.debug_struct("CreateEnvironmentMetadata");
829        if !self._unknown_fields.is_empty() {
830            debug_struct.field("_unknown_fields", &self._unknown_fields);
831        }
832        debug_struct.finish()
833    }
834}
835
836/// Message included in the metadata field of operations returned from
837/// [DeleteEnvironment][google.cloud.shell.v1.CloudShellService.DeleteEnvironment].
838#[derive(Clone, Default, PartialEq)]
839#[non_exhaustive]
840pub struct DeleteEnvironmentMetadata {
841    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
842}
843
844impl DeleteEnvironmentMetadata {
845    pub fn new() -> Self {
846        std::default::Default::default()
847    }
848}
849
850impl wkt::message::Message for DeleteEnvironmentMetadata {
851    fn typename() -> &'static str {
852        "type.googleapis.com/google.cloud.shell.v1.DeleteEnvironmentMetadata"
853    }
854}
855
856#[doc(hidden)]
857impl<'de> serde::de::Deserialize<'de> for DeleteEnvironmentMetadata {
858    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
859    where
860        D: serde::Deserializer<'de>,
861    {
862        #[allow(non_camel_case_types)]
863        #[doc(hidden)]
864        #[derive(PartialEq, Eq, Hash)]
865        enum __FieldTag {
866            Unknown(std::string::String),
867        }
868        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
869            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
870            where
871                D: serde::Deserializer<'de>,
872            {
873                struct Visitor;
874                impl<'de> serde::de::Visitor<'de> for Visitor {
875                    type Value = __FieldTag;
876                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
877                        formatter.write_str("a field name for DeleteEnvironmentMetadata")
878                    }
879                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
880                    where
881                        E: serde::de::Error,
882                    {
883                        use std::result::Result::Ok;
884                        use std::string::ToString;
885                        Ok(__FieldTag::Unknown(value.to_string()))
886                    }
887                }
888                deserializer.deserialize_identifier(Visitor)
889            }
890        }
891        struct Visitor;
892        impl<'de> serde::de::Visitor<'de> for Visitor {
893            type Value = DeleteEnvironmentMetadata;
894            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
895                formatter.write_str("struct DeleteEnvironmentMetadata")
896            }
897            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
898            where
899                A: serde::de::MapAccess<'de>,
900            {
901                #[allow(unused_imports)]
902                use serde::de::Error;
903                use std::option::Option::Some;
904                let mut result = Self::Value::new();
905                while let Some(tag) = map.next_key::<__FieldTag>()? {
906                    #[allow(clippy::match_single_binding)]
907                    match tag {
908                        __FieldTag::Unknown(key) => {
909                            let value = map.next_value::<serde_json::Value>()?;
910                            result._unknown_fields.insert(key, value);
911                        }
912                    }
913                }
914                std::result::Result::Ok(result)
915            }
916        }
917        deserializer.deserialize_any(Visitor)
918    }
919}
920
921#[doc(hidden)]
922impl serde::ser::Serialize for DeleteEnvironmentMetadata {
923    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
924    where
925        S: serde::ser::Serializer,
926    {
927        use serde::ser::SerializeMap;
928        #[allow(unused_imports)]
929        use std::option::Option::Some;
930        let mut state = serializer.serialize_map(std::option::Option::None)?;
931        if !self._unknown_fields.is_empty() {
932            for (key, value) in self._unknown_fields.iter() {
933                state.serialize_entry(key, &value)?;
934            }
935        }
936        state.end()
937    }
938}
939
940impl std::fmt::Debug for DeleteEnvironmentMetadata {
941    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
942        let mut debug_struct = f.debug_struct("DeleteEnvironmentMetadata");
943        if !self._unknown_fields.is_empty() {
944            debug_struct.field("_unknown_fields", &self._unknown_fields);
945        }
946        debug_struct.finish()
947    }
948}
949
950/// Request message for
951/// [StartEnvironment][google.cloud.shell.v1.CloudShellService.StartEnvironment].
952///
953/// [google.cloud.shell.v1.CloudShellService.StartEnvironment]: crate::client::CloudShellService::start_environment
954#[derive(Clone, Default, PartialEq)]
955#[non_exhaustive]
956pub struct StartEnvironmentRequest {
957    /// Name of the resource that should be started, for example
958    /// `users/me/environments/default` or
959    /// `users/someone@example.com/environments/default`.
960    pub name: std::string::String,
961
962    /// The initial access token passed to the environment. If this is present and
963    /// valid, the environment will be pre-authenticated with gcloud so that the
964    /// user can run gcloud commands in Cloud Shell without having to log in. This
965    /// code can be updated later by calling AuthorizeEnvironment.
966    pub access_token: std::string::String,
967
968    /// Public keys that should be added to the environment before it is started.
969    pub public_keys: std::vec::Vec<std::string::String>,
970
971    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
972}
973
974impl StartEnvironmentRequest {
975    pub fn new() -> Self {
976        std::default::Default::default()
977    }
978
979    /// Sets the value of [name][crate::model::StartEnvironmentRequest::name].
980    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
981        self.name = v.into();
982        self
983    }
984
985    /// Sets the value of [access_token][crate::model::StartEnvironmentRequest::access_token].
986    pub fn set_access_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
987        self.access_token = v.into();
988        self
989    }
990
991    /// Sets the value of [public_keys][crate::model::StartEnvironmentRequest::public_keys].
992    pub fn set_public_keys<T, V>(mut self, v: T) -> Self
993    where
994        T: std::iter::IntoIterator<Item = V>,
995        V: std::convert::Into<std::string::String>,
996    {
997        use std::iter::Iterator;
998        self.public_keys = v.into_iter().map(|i| i.into()).collect();
999        self
1000    }
1001}
1002
1003impl wkt::message::Message for StartEnvironmentRequest {
1004    fn typename() -> &'static str {
1005        "type.googleapis.com/google.cloud.shell.v1.StartEnvironmentRequest"
1006    }
1007}
1008
1009#[doc(hidden)]
1010impl<'de> serde::de::Deserialize<'de> for StartEnvironmentRequest {
1011    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1012    where
1013        D: serde::Deserializer<'de>,
1014    {
1015        #[allow(non_camel_case_types)]
1016        #[doc(hidden)]
1017        #[derive(PartialEq, Eq, Hash)]
1018        enum __FieldTag {
1019            __name,
1020            __access_token,
1021            __public_keys,
1022            Unknown(std::string::String),
1023        }
1024        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1025            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1026            where
1027                D: serde::Deserializer<'de>,
1028            {
1029                struct Visitor;
1030                impl<'de> serde::de::Visitor<'de> for Visitor {
1031                    type Value = __FieldTag;
1032                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1033                        formatter.write_str("a field name for StartEnvironmentRequest")
1034                    }
1035                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1036                    where
1037                        E: serde::de::Error,
1038                    {
1039                        use std::result::Result::Ok;
1040                        use std::string::ToString;
1041                        match value {
1042                            "name" => Ok(__FieldTag::__name),
1043                            "accessToken" => Ok(__FieldTag::__access_token),
1044                            "access_token" => Ok(__FieldTag::__access_token),
1045                            "publicKeys" => Ok(__FieldTag::__public_keys),
1046                            "public_keys" => Ok(__FieldTag::__public_keys),
1047                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1048                        }
1049                    }
1050                }
1051                deserializer.deserialize_identifier(Visitor)
1052            }
1053        }
1054        struct Visitor;
1055        impl<'de> serde::de::Visitor<'de> for Visitor {
1056            type Value = StartEnvironmentRequest;
1057            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1058                formatter.write_str("struct StartEnvironmentRequest")
1059            }
1060            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1061            where
1062                A: serde::de::MapAccess<'de>,
1063            {
1064                #[allow(unused_imports)]
1065                use serde::de::Error;
1066                use std::option::Option::Some;
1067                let mut fields = std::collections::HashSet::new();
1068                let mut result = Self::Value::new();
1069                while let Some(tag) = map.next_key::<__FieldTag>()? {
1070                    #[allow(clippy::match_single_binding)]
1071                    match tag {
1072                        __FieldTag::__name => {
1073                            if !fields.insert(__FieldTag::__name) {
1074                                return std::result::Result::Err(A::Error::duplicate_field(
1075                                    "multiple values for name",
1076                                ));
1077                            }
1078                            result.name = map
1079                                .next_value::<std::option::Option<std::string::String>>()?
1080                                .unwrap_or_default();
1081                        }
1082                        __FieldTag::__access_token => {
1083                            if !fields.insert(__FieldTag::__access_token) {
1084                                return std::result::Result::Err(A::Error::duplicate_field(
1085                                    "multiple values for access_token",
1086                                ));
1087                            }
1088                            result.access_token = map
1089                                .next_value::<std::option::Option<std::string::String>>()?
1090                                .unwrap_or_default();
1091                        }
1092                        __FieldTag::__public_keys => {
1093                            if !fields.insert(__FieldTag::__public_keys) {
1094                                return std::result::Result::Err(A::Error::duplicate_field(
1095                                    "multiple values for public_keys",
1096                                ));
1097                            }
1098                            result.public_keys = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
1099                        }
1100                        __FieldTag::Unknown(key) => {
1101                            let value = map.next_value::<serde_json::Value>()?;
1102                            result._unknown_fields.insert(key, value);
1103                        }
1104                    }
1105                }
1106                std::result::Result::Ok(result)
1107            }
1108        }
1109        deserializer.deserialize_any(Visitor)
1110    }
1111}
1112
1113#[doc(hidden)]
1114impl serde::ser::Serialize for StartEnvironmentRequest {
1115    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1116    where
1117        S: serde::ser::Serializer,
1118    {
1119        use serde::ser::SerializeMap;
1120        #[allow(unused_imports)]
1121        use std::option::Option::Some;
1122        let mut state = serializer.serialize_map(std::option::Option::None)?;
1123        if !self.name.is_empty() {
1124            state.serialize_entry("name", &self.name)?;
1125        }
1126        if !self.access_token.is_empty() {
1127            state.serialize_entry("accessToken", &self.access_token)?;
1128        }
1129        if !self.public_keys.is_empty() {
1130            state.serialize_entry("publicKeys", &self.public_keys)?;
1131        }
1132        if !self._unknown_fields.is_empty() {
1133            for (key, value) in self._unknown_fields.iter() {
1134                state.serialize_entry(key, &value)?;
1135            }
1136        }
1137        state.end()
1138    }
1139}
1140
1141impl std::fmt::Debug for StartEnvironmentRequest {
1142    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1143        let mut debug_struct = f.debug_struct("StartEnvironmentRequest");
1144        debug_struct.field("name", &self.name);
1145        debug_struct.field("access_token", &self.access_token);
1146        debug_struct.field("public_keys", &self.public_keys);
1147        if !self._unknown_fields.is_empty() {
1148            debug_struct.field("_unknown_fields", &self._unknown_fields);
1149        }
1150        debug_struct.finish()
1151    }
1152}
1153
1154/// Request message for
1155/// [AuthorizeEnvironment][google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment].
1156///
1157/// [google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment]: crate::client::CloudShellService::authorize_environment
1158#[derive(Clone, Default, PartialEq)]
1159#[non_exhaustive]
1160pub struct AuthorizeEnvironmentRequest {
1161    /// Name of the resource that should receive the credentials, for example
1162    /// `users/me/environments/default` or
1163    /// `users/someone@example.com/environments/default`.
1164    pub name: std::string::String,
1165
1166    /// The OAuth access token that should be sent to the environment.
1167    pub access_token: std::string::String,
1168
1169    /// The OAuth ID token that should be sent to the environment.
1170    pub id_token: std::string::String,
1171
1172    /// The time when the credentials expire. If not set, defaults to one hour from
1173    /// when the server received the request.
1174    pub expire_time: std::option::Option<wkt::Timestamp>,
1175
1176    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1177}
1178
1179impl AuthorizeEnvironmentRequest {
1180    pub fn new() -> Self {
1181        std::default::Default::default()
1182    }
1183
1184    /// Sets the value of [name][crate::model::AuthorizeEnvironmentRequest::name].
1185    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1186        self.name = v.into();
1187        self
1188    }
1189
1190    /// Sets the value of [access_token][crate::model::AuthorizeEnvironmentRequest::access_token].
1191    pub fn set_access_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1192        self.access_token = v.into();
1193        self
1194    }
1195
1196    /// Sets the value of [id_token][crate::model::AuthorizeEnvironmentRequest::id_token].
1197    pub fn set_id_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1198        self.id_token = v.into();
1199        self
1200    }
1201
1202    /// Sets the value of [expire_time][crate::model::AuthorizeEnvironmentRequest::expire_time].
1203    pub fn set_expire_time<T>(mut self, v: T) -> Self
1204    where
1205        T: std::convert::Into<wkt::Timestamp>,
1206    {
1207        self.expire_time = std::option::Option::Some(v.into());
1208        self
1209    }
1210
1211    /// Sets or clears the value of [expire_time][crate::model::AuthorizeEnvironmentRequest::expire_time].
1212    pub fn set_or_clear_expire_time<T>(mut self, v: std::option::Option<T>) -> Self
1213    where
1214        T: std::convert::Into<wkt::Timestamp>,
1215    {
1216        self.expire_time = v.map(|x| x.into());
1217        self
1218    }
1219}
1220
1221impl wkt::message::Message for AuthorizeEnvironmentRequest {
1222    fn typename() -> &'static str {
1223        "type.googleapis.com/google.cloud.shell.v1.AuthorizeEnvironmentRequest"
1224    }
1225}
1226
1227#[doc(hidden)]
1228impl<'de> serde::de::Deserialize<'de> for AuthorizeEnvironmentRequest {
1229    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1230    where
1231        D: serde::Deserializer<'de>,
1232    {
1233        #[allow(non_camel_case_types)]
1234        #[doc(hidden)]
1235        #[derive(PartialEq, Eq, Hash)]
1236        enum __FieldTag {
1237            __name,
1238            __access_token,
1239            __id_token,
1240            __expire_time,
1241            Unknown(std::string::String),
1242        }
1243        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1244            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1245            where
1246                D: serde::Deserializer<'de>,
1247            {
1248                struct Visitor;
1249                impl<'de> serde::de::Visitor<'de> for Visitor {
1250                    type Value = __FieldTag;
1251                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1252                        formatter.write_str("a field name for AuthorizeEnvironmentRequest")
1253                    }
1254                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1255                    where
1256                        E: serde::de::Error,
1257                    {
1258                        use std::result::Result::Ok;
1259                        use std::string::ToString;
1260                        match value {
1261                            "name" => Ok(__FieldTag::__name),
1262                            "accessToken" => Ok(__FieldTag::__access_token),
1263                            "access_token" => Ok(__FieldTag::__access_token),
1264                            "idToken" => Ok(__FieldTag::__id_token),
1265                            "id_token" => Ok(__FieldTag::__id_token),
1266                            "expireTime" => Ok(__FieldTag::__expire_time),
1267                            "expire_time" => Ok(__FieldTag::__expire_time),
1268                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1269                        }
1270                    }
1271                }
1272                deserializer.deserialize_identifier(Visitor)
1273            }
1274        }
1275        struct Visitor;
1276        impl<'de> serde::de::Visitor<'de> for Visitor {
1277            type Value = AuthorizeEnvironmentRequest;
1278            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1279                formatter.write_str("struct AuthorizeEnvironmentRequest")
1280            }
1281            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1282            where
1283                A: serde::de::MapAccess<'de>,
1284            {
1285                #[allow(unused_imports)]
1286                use serde::de::Error;
1287                use std::option::Option::Some;
1288                let mut fields = std::collections::HashSet::new();
1289                let mut result = Self::Value::new();
1290                while let Some(tag) = map.next_key::<__FieldTag>()? {
1291                    #[allow(clippy::match_single_binding)]
1292                    match tag {
1293                        __FieldTag::__name => {
1294                            if !fields.insert(__FieldTag::__name) {
1295                                return std::result::Result::Err(A::Error::duplicate_field(
1296                                    "multiple values for name",
1297                                ));
1298                            }
1299                            result.name = map
1300                                .next_value::<std::option::Option<std::string::String>>()?
1301                                .unwrap_or_default();
1302                        }
1303                        __FieldTag::__access_token => {
1304                            if !fields.insert(__FieldTag::__access_token) {
1305                                return std::result::Result::Err(A::Error::duplicate_field(
1306                                    "multiple values for access_token",
1307                                ));
1308                            }
1309                            result.access_token = map
1310                                .next_value::<std::option::Option<std::string::String>>()?
1311                                .unwrap_or_default();
1312                        }
1313                        __FieldTag::__id_token => {
1314                            if !fields.insert(__FieldTag::__id_token) {
1315                                return std::result::Result::Err(A::Error::duplicate_field(
1316                                    "multiple values for id_token",
1317                                ));
1318                            }
1319                            result.id_token = map
1320                                .next_value::<std::option::Option<std::string::String>>()?
1321                                .unwrap_or_default();
1322                        }
1323                        __FieldTag::__expire_time => {
1324                            if !fields.insert(__FieldTag::__expire_time) {
1325                                return std::result::Result::Err(A::Error::duplicate_field(
1326                                    "multiple values for expire_time",
1327                                ));
1328                            }
1329                            result.expire_time =
1330                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
1331                        }
1332                        __FieldTag::Unknown(key) => {
1333                            let value = map.next_value::<serde_json::Value>()?;
1334                            result._unknown_fields.insert(key, value);
1335                        }
1336                    }
1337                }
1338                std::result::Result::Ok(result)
1339            }
1340        }
1341        deserializer.deserialize_any(Visitor)
1342    }
1343}
1344
1345#[doc(hidden)]
1346impl serde::ser::Serialize for AuthorizeEnvironmentRequest {
1347    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1348    where
1349        S: serde::ser::Serializer,
1350    {
1351        use serde::ser::SerializeMap;
1352        #[allow(unused_imports)]
1353        use std::option::Option::Some;
1354        let mut state = serializer.serialize_map(std::option::Option::None)?;
1355        if !self.name.is_empty() {
1356            state.serialize_entry("name", &self.name)?;
1357        }
1358        if !self.access_token.is_empty() {
1359            state.serialize_entry("accessToken", &self.access_token)?;
1360        }
1361        if !self.id_token.is_empty() {
1362            state.serialize_entry("idToken", &self.id_token)?;
1363        }
1364        if self.expire_time.is_some() {
1365            state.serialize_entry("expireTime", &self.expire_time)?;
1366        }
1367        if !self._unknown_fields.is_empty() {
1368            for (key, value) in self._unknown_fields.iter() {
1369                state.serialize_entry(key, &value)?;
1370            }
1371        }
1372        state.end()
1373    }
1374}
1375
1376impl std::fmt::Debug for AuthorizeEnvironmentRequest {
1377    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1378        let mut debug_struct = f.debug_struct("AuthorizeEnvironmentRequest");
1379        debug_struct.field("name", &self.name);
1380        debug_struct.field("access_token", &self.access_token);
1381        debug_struct.field("id_token", &self.id_token);
1382        debug_struct.field("expire_time", &self.expire_time);
1383        if !self._unknown_fields.is_empty() {
1384            debug_struct.field("_unknown_fields", &self._unknown_fields);
1385        }
1386        debug_struct.finish()
1387    }
1388}
1389
1390/// Response message for
1391/// [AuthorizeEnvironment][google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment].
1392///
1393/// [google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment]: crate::client::CloudShellService::authorize_environment
1394#[derive(Clone, Default, PartialEq)]
1395#[non_exhaustive]
1396pub struct AuthorizeEnvironmentResponse {
1397    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1398}
1399
1400impl AuthorizeEnvironmentResponse {
1401    pub fn new() -> Self {
1402        std::default::Default::default()
1403    }
1404}
1405
1406impl wkt::message::Message for AuthorizeEnvironmentResponse {
1407    fn typename() -> &'static str {
1408        "type.googleapis.com/google.cloud.shell.v1.AuthorizeEnvironmentResponse"
1409    }
1410}
1411
1412#[doc(hidden)]
1413impl<'de> serde::de::Deserialize<'de> for AuthorizeEnvironmentResponse {
1414    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1415    where
1416        D: serde::Deserializer<'de>,
1417    {
1418        #[allow(non_camel_case_types)]
1419        #[doc(hidden)]
1420        #[derive(PartialEq, Eq, Hash)]
1421        enum __FieldTag {
1422            Unknown(std::string::String),
1423        }
1424        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1425            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1426            where
1427                D: serde::Deserializer<'de>,
1428            {
1429                struct Visitor;
1430                impl<'de> serde::de::Visitor<'de> for Visitor {
1431                    type Value = __FieldTag;
1432                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1433                        formatter.write_str("a field name for AuthorizeEnvironmentResponse")
1434                    }
1435                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1436                    where
1437                        E: serde::de::Error,
1438                    {
1439                        use std::result::Result::Ok;
1440                        use std::string::ToString;
1441                        Ok(__FieldTag::Unknown(value.to_string()))
1442                    }
1443                }
1444                deserializer.deserialize_identifier(Visitor)
1445            }
1446        }
1447        struct Visitor;
1448        impl<'de> serde::de::Visitor<'de> for Visitor {
1449            type Value = AuthorizeEnvironmentResponse;
1450            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1451                formatter.write_str("struct AuthorizeEnvironmentResponse")
1452            }
1453            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1454            where
1455                A: serde::de::MapAccess<'de>,
1456            {
1457                #[allow(unused_imports)]
1458                use serde::de::Error;
1459                use std::option::Option::Some;
1460                let mut result = Self::Value::new();
1461                while let Some(tag) = map.next_key::<__FieldTag>()? {
1462                    #[allow(clippy::match_single_binding)]
1463                    match tag {
1464                        __FieldTag::Unknown(key) => {
1465                            let value = map.next_value::<serde_json::Value>()?;
1466                            result._unknown_fields.insert(key, value);
1467                        }
1468                    }
1469                }
1470                std::result::Result::Ok(result)
1471            }
1472        }
1473        deserializer.deserialize_any(Visitor)
1474    }
1475}
1476
1477#[doc(hidden)]
1478impl serde::ser::Serialize for AuthorizeEnvironmentResponse {
1479    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1480    where
1481        S: serde::ser::Serializer,
1482    {
1483        use serde::ser::SerializeMap;
1484        #[allow(unused_imports)]
1485        use std::option::Option::Some;
1486        let mut state = serializer.serialize_map(std::option::Option::None)?;
1487        if !self._unknown_fields.is_empty() {
1488            for (key, value) in self._unknown_fields.iter() {
1489                state.serialize_entry(key, &value)?;
1490            }
1491        }
1492        state.end()
1493    }
1494}
1495
1496impl std::fmt::Debug for AuthorizeEnvironmentResponse {
1497    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1498        let mut debug_struct = f.debug_struct("AuthorizeEnvironmentResponse");
1499        if !self._unknown_fields.is_empty() {
1500            debug_struct.field("_unknown_fields", &self._unknown_fields);
1501        }
1502        debug_struct.finish()
1503    }
1504}
1505
1506/// Message included in the metadata field of operations returned from
1507/// [AuthorizeEnvironment][google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment].
1508///
1509/// [google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment]: crate::client::CloudShellService::authorize_environment
1510#[derive(Clone, Default, PartialEq)]
1511#[non_exhaustive]
1512pub struct AuthorizeEnvironmentMetadata {
1513    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1514}
1515
1516impl AuthorizeEnvironmentMetadata {
1517    pub fn new() -> Self {
1518        std::default::Default::default()
1519    }
1520}
1521
1522impl wkt::message::Message for AuthorizeEnvironmentMetadata {
1523    fn typename() -> &'static str {
1524        "type.googleapis.com/google.cloud.shell.v1.AuthorizeEnvironmentMetadata"
1525    }
1526}
1527
1528#[doc(hidden)]
1529impl<'de> serde::de::Deserialize<'de> for AuthorizeEnvironmentMetadata {
1530    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1531    where
1532        D: serde::Deserializer<'de>,
1533    {
1534        #[allow(non_camel_case_types)]
1535        #[doc(hidden)]
1536        #[derive(PartialEq, Eq, Hash)]
1537        enum __FieldTag {
1538            Unknown(std::string::String),
1539        }
1540        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1541            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1542            where
1543                D: serde::Deserializer<'de>,
1544            {
1545                struct Visitor;
1546                impl<'de> serde::de::Visitor<'de> for Visitor {
1547                    type Value = __FieldTag;
1548                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1549                        formatter.write_str("a field name for AuthorizeEnvironmentMetadata")
1550                    }
1551                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1552                    where
1553                        E: serde::de::Error,
1554                    {
1555                        use std::result::Result::Ok;
1556                        use std::string::ToString;
1557                        Ok(__FieldTag::Unknown(value.to_string()))
1558                    }
1559                }
1560                deserializer.deserialize_identifier(Visitor)
1561            }
1562        }
1563        struct Visitor;
1564        impl<'de> serde::de::Visitor<'de> for Visitor {
1565            type Value = AuthorizeEnvironmentMetadata;
1566            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1567                formatter.write_str("struct AuthorizeEnvironmentMetadata")
1568            }
1569            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1570            where
1571                A: serde::de::MapAccess<'de>,
1572            {
1573                #[allow(unused_imports)]
1574                use serde::de::Error;
1575                use std::option::Option::Some;
1576                let mut result = Self::Value::new();
1577                while let Some(tag) = map.next_key::<__FieldTag>()? {
1578                    #[allow(clippy::match_single_binding)]
1579                    match tag {
1580                        __FieldTag::Unknown(key) => {
1581                            let value = map.next_value::<serde_json::Value>()?;
1582                            result._unknown_fields.insert(key, value);
1583                        }
1584                    }
1585                }
1586                std::result::Result::Ok(result)
1587            }
1588        }
1589        deserializer.deserialize_any(Visitor)
1590    }
1591}
1592
1593#[doc(hidden)]
1594impl serde::ser::Serialize for AuthorizeEnvironmentMetadata {
1595    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1596    where
1597        S: serde::ser::Serializer,
1598    {
1599        use serde::ser::SerializeMap;
1600        #[allow(unused_imports)]
1601        use std::option::Option::Some;
1602        let mut state = serializer.serialize_map(std::option::Option::None)?;
1603        if !self._unknown_fields.is_empty() {
1604            for (key, value) in self._unknown_fields.iter() {
1605                state.serialize_entry(key, &value)?;
1606            }
1607        }
1608        state.end()
1609    }
1610}
1611
1612impl std::fmt::Debug for AuthorizeEnvironmentMetadata {
1613    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1614        let mut debug_struct = f.debug_struct("AuthorizeEnvironmentMetadata");
1615        if !self._unknown_fields.is_empty() {
1616            debug_struct.field("_unknown_fields", &self._unknown_fields);
1617        }
1618        debug_struct.finish()
1619    }
1620}
1621
1622/// Message included in the metadata field of operations returned from
1623/// [StartEnvironment][google.cloud.shell.v1.CloudShellService.StartEnvironment].
1624///
1625/// [google.cloud.shell.v1.CloudShellService.StartEnvironment]: crate::client::CloudShellService::start_environment
1626#[derive(Clone, Default, PartialEq)]
1627#[non_exhaustive]
1628pub struct StartEnvironmentMetadata {
1629    /// Current state of the environment being started.
1630    pub state: crate::model::start_environment_metadata::State,
1631
1632    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1633}
1634
1635impl StartEnvironmentMetadata {
1636    pub fn new() -> Self {
1637        std::default::Default::default()
1638    }
1639
1640    /// Sets the value of [state][crate::model::StartEnvironmentMetadata::state].
1641    pub fn set_state<T: std::convert::Into<crate::model::start_environment_metadata::State>>(
1642        mut self,
1643        v: T,
1644    ) -> Self {
1645        self.state = v.into();
1646        self
1647    }
1648}
1649
1650impl wkt::message::Message for StartEnvironmentMetadata {
1651    fn typename() -> &'static str {
1652        "type.googleapis.com/google.cloud.shell.v1.StartEnvironmentMetadata"
1653    }
1654}
1655
1656#[doc(hidden)]
1657impl<'de> serde::de::Deserialize<'de> for StartEnvironmentMetadata {
1658    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1659    where
1660        D: serde::Deserializer<'de>,
1661    {
1662        #[allow(non_camel_case_types)]
1663        #[doc(hidden)]
1664        #[derive(PartialEq, Eq, Hash)]
1665        enum __FieldTag {
1666            __state,
1667            Unknown(std::string::String),
1668        }
1669        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1670            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1671            where
1672                D: serde::Deserializer<'de>,
1673            {
1674                struct Visitor;
1675                impl<'de> serde::de::Visitor<'de> for Visitor {
1676                    type Value = __FieldTag;
1677                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1678                        formatter.write_str("a field name for StartEnvironmentMetadata")
1679                    }
1680                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1681                    where
1682                        E: serde::de::Error,
1683                    {
1684                        use std::result::Result::Ok;
1685                        use std::string::ToString;
1686                        match value {
1687                            "state" => Ok(__FieldTag::__state),
1688                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1689                        }
1690                    }
1691                }
1692                deserializer.deserialize_identifier(Visitor)
1693            }
1694        }
1695        struct Visitor;
1696        impl<'de> serde::de::Visitor<'de> for Visitor {
1697            type Value = StartEnvironmentMetadata;
1698            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1699                formatter.write_str("struct StartEnvironmentMetadata")
1700            }
1701            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1702            where
1703                A: serde::de::MapAccess<'de>,
1704            {
1705                #[allow(unused_imports)]
1706                use serde::de::Error;
1707                use std::option::Option::Some;
1708                let mut fields = std::collections::HashSet::new();
1709                let mut result = Self::Value::new();
1710                while let Some(tag) = map.next_key::<__FieldTag>()? {
1711                    #[allow(clippy::match_single_binding)]
1712                    match tag {
1713                        __FieldTag::__state => {
1714                            if !fields.insert(__FieldTag::__state) {
1715                                return std::result::Result::Err(A::Error::duplicate_field(
1716                                    "multiple values for state",
1717                                ));
1718                            }
1719                            result.state = map
1720                                .next_value::<std::option::Option<
1721                                    crate::model::start_environment_metadata::State,
1722                                >>()?
1723                                .unwrap_or_default();
1724                        }
1725                        __FieldTag::Unknown(key) => {
1726                            let value = map.next_value::<serde_json::Value>()?;
1727                            result._unknown_fields.insert(key, value);
1728                        }
1729                    }
1730                }
1731                std::result::Result::Ok(result)
1732            }
1733        }
1734        deserializer.deserialize_any(Visitor)
1735    }
1736}
1737
1738#[doc(hidden)]
1739impl serde::ser::Serialize for StartEnvironmentMetadata {
1740    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1741    where
1742        S: serde::ser::Serializer,
1743    {
1744        use serde::ser::SerializeMap;
1745        #[allow(unused_imports)]
1746        use std::option::Option::Some;
1747        let mut state = serializer.serialize_map(std::option::Option::None)?;
1748        if !wkt::internal::is_default(&self.state) {
1749            state.serialize_entry("state", &self.state)?;
1750        }
1751        if !self._unknown_fields.is_empty() {
1752            for (key, value) in self._unknown_fields.iter() {
1753                state.serialize_entry(key, &value)?;
1754            }
1755        }
1756        state.end()
1757    }
1758}
1759
1760impl std::fmt::Debug for StartEnvironmentMetadata {
1761    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1762        let mut debug_struct = f.debug_struct("StartEnvironmentMetadata");
1763        debug_struct.field("state", &self.state);
1764        if !self._unknown_fields.is_empty() {
1765            debug_struct.field("_unknown_fields", &self._unknown_fields);
1766        }
1767        debug_struct.finish()
1768    }
1769}
1770
1771/// Defines additional types related to [StartEnvironmentMetadata].
1772pub mod start_environment_metadata {
1773    #[allow(unused_imports)]
1774    use super::*;
1775
1776    /// Possible states an environment might transition between during startup.
1777    /// These states are not normally actionable by clients, but may be used to
1778    /// show a progress message to the user. An environment won't necessarily go
1779    /// through all of these states when starting. More states are likely to be
1780    /// added in the future.
1781    ///
1782    /// # Working with unknown values
1783    ///
1784    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
1785    /// additional enum variants at any time. Adding new variants is not considered
1786    /// a breaking change. Applications should write their code in anticipation of:
1787    ///
1788    /// - New values appearing in future releases of the client library, **and**
1789    /// - New values received dynamically, without application changes.
1790    ///
1791    /// Please consult the [Working with enums] section in the user guide for some
1792    /// guidelines.
1793    ///
1794    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
1795    #[derive(Clone, Debug, PartialEq)]
1796    #[non_exhaustive]
1797    pub enum State {
1798        /// The environment's start state is unknown.
1799        Unspecified,
1800        /// The environment is in the process of being started, but no additional
1801        /// details are available.
1802        Starting,
1803        /// Startup is waiting for the user's disk to be unarchived. This can happen
1804        /// when the user returns to Cloud Shell after not having used it for a
1805        /// while, and suggests that startup will take longer than normal.
1806        UnarchivingDisk,
1807        /// Startup is waiting for compute resources to be assigned to the
1808        /// environment. This should normally happen very quickly, but an environment
1809        /// might stay in this state for an extended period of time if the system is
1810        /// experiencing heavy load.
1811        AwaitingComputeResources,
1812        /// Startup has completed. If the start operation was successful, the user
1813        /// should be able to establish an SSH connection to their environment.
1814        /// Otherwise, the operation will contain details of the failure.
1815        Finished,
1816        /// If set, the enum was initialized with an unknown value.
1817        ///
1818        /// Applications can examine the value using [State::value] or
1819        /// [State::name].
1820        UnknownValue(state::UnknownValue),
1821    }
1822
1823    #[doc(hidden)]
1824    pub mod state {
1825        #[allow(unused_imports)]
1826        use super::*;
1827        #[derive(Clone, Debug, PartialEq)]
1828        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
1829    }
1830
1831    impl State {
1832        /// Gets the enum value.
1833        ///
1834        /// Returns `None` if the enum contains an unknown value deserialized from
1835        /// the string representation of enums.
1836        pub fn value(&self) -> std::option::Option<i32> {
1837            match self {
1838                Self::Unspecified => std::option::Option::Some(0),
1839                Self::Starting => std::option::Option::Some(1),
1840                Self::UnarchivingDisk => std::option::Option::Some(2),
1841                Self::AwaitingComputeResources => std::option::Option::Some(4),
1842                Self::Finished => std::option::Option::Some(3),
1843                Self::UnknownValue(u) => u.0.value(),
1844            }
1845        }
1846
1847        /// Gets the enum value as a string.
1848        ///
1849        /// Returns `None` if the enum contains an unknown value deserialized from
1850        /// the integer representation of enums.
1851        pub fn name(&self) -> std::option::Option<&str> {
1852            match self {
1853                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
1854                Self::Starting => std::option::Option::Some("STARTING"),
1855                Self::UnarchivingDisk => std::option::Option::Some("UNARCHIVING_DISK"),
1856                Self::AwaitingComputeResources => {
1857                    std::option::Option::Some("AWAITING_COMPUTE_RESOURCES")
1858                }
1859                Self::Finished => std::option::Option::Some("FINISHED"),
1860                Self::UnknownValue(u) => u.0.name(),
1861            }
1862        }
1863    }
1864
1865    impl std::default::Default for State {
1866        fn default() -> Self {
1867            use std::convert::From;
1868            Self::from(0)
1869        }
1870    }
1871
1872    impl std::fmt::Display for State {
1873        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
1874            wkt::internal::display_enum(f, self.name(), self.value())
1875        }
1876    }
1877
1878    impl std::convert::From<i32> for State {
1879        fn from(value: i32) -> Self {
1880            match value {
1881                0 => Self::Unspecified,
1882                1 => Self::Starting,
1883                2 => Self::UnarchivingDisk,
1884                3 => Self::Finished,
1885                4 => Self::AwaitingComputeResources,
1886                _ => Self::UnknownValue(state::UnknownValue(
1887                    wkt::internal::UnknownEnumValue::Integer(value),
1888                )),
1889            }
1890        }
1891    }
1892
1893    impl std::convert::From<&str> for State {
1894        fn from(value: &str) -> Self {
1895            use std::string::ToString;
1896            match value {
1897                "STATE_UNSPECIFIED" => Self::Unspecified,
1898                "STARTING" => Self::Starting,
1899                "UNARCHIVING_DISK" => Self::UnarchivingDisk,
1900                "AWAITING_COMPUTE_RESOURCES" => Self::AwaitingComputeResources,
1901                "FINISHED" => Self::Finished,
1902                _ => Self::UnknownValue(state::UnknownValue(
1903                    wkt::internal::UnknownEnumValue::String(value.to_string()),
1904                )),
1905            }
1906        }
1907    }
1908
1909    impl serde::ser::Serialize for State {
1910        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1911        where
1912            S: serde::Serializer,
1913        {
1914            match self {
1915                Self::Unspecified => serializer.serialize_i32(0),
1916                Self::Starting => serializer.serialize_i32(1),
1917                Self::UnarchivingDisk => serializer.serialize_i32(2),
1918                Self::AwaitingComputeResources => serializer.serialize_i32(4),
1919                Self::Finished => serializer.serialize_i32(3),
1920                Self::UnknownValue(u) => u.0.serialize(serializer),
1921            }
1922        }
1923    }
1924
1925    impl<'de> serde::de::Deserialize<'de> for State {
1926        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1927        where
1928            D: serde::Deserializer<'de>,
1929        {
1930            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
1931                ".google.cloud.shell.v1.StartEnvironmentMetadata.State",
1932            ))
1933        }
1934    }
1935}
1936
1937/// Message included in the response field of operations returned from
1938/// [StartEnvironment][google.cloud.shell.v1.CloudShellService.StartEnvironment]
1939/// once the operation is complete.
1940///
1941/// [google.cloud.shell.v1.CloudShellService.StartEnvironment]: crate::client::CloudShellService::start_environment
1942#[derive(Clone, Default, PartialEq)]
1943#[non_exhaustive]
1944pub struct StartEnvironmentResponse {
1945    /// Environment that was started.
1946    pub environment: std::option::Option<crate::model::Environment>,
1947
1948    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1949}
1950
1951impl StartEnvironmentResponse {
1952    pub fn new() -> Self {
1953        std::default::Default::default()
1954    }
1955
1956    /// Sets the value of [environment][crate::model::StartEnvironmentResponse::environment].
1957    pub fn set_environment<T>(mut self, v: T) -> Self
1958    where
1959        T: std::convert::Into<crate::model::Environment>,
1960    {
1961        self.environment = std::option::Option::Some(v.into());
1962        self
1963    }
1964
1965    /// Sets or clears the value of [environment][crate::model::StartEnvironmentResponse::environment].
1966    pub fn set_or_clear_environment<T>(mut self, v: std::option::Option<T>) -> Self
1967    where
1968        T: std::convert::Into<crate::model::Environment>,
1969    {
1970        self.environment = v.map(|x| x.into());
1971        self
1972    }
1973}
1974
1975impl wkt::message::Message for StartEnvironmentResponse {
1976    fn typename() -> &'static str {
1977        "type.googleapis.com/google.cloud.shell.v1.StartEnvironmentResponse"
1978    }
1979}
1980
1981#[doc(hidden)]
1982impl<'de> serde::de::Deserialize<'de> for StartEnvironmentResponse {
1983    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1984    where
1985        D: serde::Deserializer<'de>,
1986    {
1987        #[allow(non_camel_case_types)]
1988        #[doc(hidden)]
1989        #[derive(PartialEq, Eq, Hash)]
1990        enum __FieldTag {
1991            __environment,
1992            Unknown(std::string::String),
1993        }
1994        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1995            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1996            where
1997                D: serde::Deserializer<'de>,
1998            {
1999                struct Visitor;
2000                impl<'de> serde::de::Visitor<'de> for Visitor {
2001                    type Value = __FieldTag;
2002                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2003                        formatter.write_str("a field name for StartEnvironmentResponse")
2004                    }
2005                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2006                    where
2007                        E: serde::de::Error,
2008                    {
2009                        use std::result::Result::Ok;
2010                        use std::string::ToString;
2011                        match value {
2012                            "environment" => Ok(__FieldTag::__environment),
2013                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2014                        }
2015                    }
2016                }
2017                deserializer.deserialize_identifier(Visitor)
2018            }
2019        }
2020        struct Visitor;
2021        impl<'de> serde::de::Visitor<'de> for Visitor {
2022            type Value = StartEnvironmentResponse;
2023            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2024                formatter.write_str("struct StartEnvironmentResponse")
2025            }
2026            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2027            where
2028                A: serde::de::MapAccess<'de>,
2029            {
2030                #[allow(unused_imports)]
2031                use serde::de::Error;
2032                use std::option::Option::Some;
2033                let mut fields = std::collections::HashSet::new();
2034                let mut result = Self::Value::new();
2035                while let Some(tag) = map.next_key::<__FieldTag>()? {
2036                    #[allow(clippy::match_single_binding)]
2037                    match tag {
2038                        __FieldTag::__environment => {
2039                            if !fields.insert(__FieldTag::__environment) {
2040                                return std::result::Result::Err(A::Error::duplicate_field(
2041                                    "multiple values for environment",
2042                                ));
2043                            }
2044                            result.environment =
2045                                map.next_value::<std::option::Option<crate::model::Environment>>()?;
2046                        }
2047                        __FieldTag::Unknown(key) => {
2048                            let value = map.next_value::<serde_json::Value>()?;
2049                            result._unknown_fields.insert(key, value);
2050                        }
2051                    }
2052                }
2053                std::result::Result::Ok(result)
2054            }
2055        }
2056        deserializer.deserialize_any(Visitor)
2057    }
2058}
2059
2060#[doc(hidden)]
2061impl serde::ser::Serialize for StartEnvironmentResponse {
2062    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2063    where
2064        S: serde::ser::Serializer,
2065    {
2066        use serde::ser::SerializeMap;
2067        #[allow(unused_imports)]
2068        use std::option::Option::Some;
2069        let mut state = serializer.serialize_map(std::option::Option::None)?;
2070        if self.environment.is_some() {
2071            state.serialize_entry("environment", &self.environment)?;
2072        }
2073        if !self._unknown_fields.is_empty() {
2074            for (key, value) in self._unknown_fields.iter() {
2075                state.serialize_entry(key, &value)?;
2076            }
2077        }
2078        state.end()
2079    }
2080}
2081
2082impl std::fmt::Debug for StartEnvironmentResponse {
2083    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2084        let mut debug_struct = f.debug_struct("StartEnvironmentResponse");
2085        debug_struct.field("environment", &self.environment);
2086        if !self._unknown_fields.is_empty() {
2087            debug_struct.field("_unknown_fields", &self._unknown_fields);
2088        }
2089        debug_struct.finish()
2090    }
2091}
2092
2093/// Request message for
2094/// [AddPublicKey][google.cloud.shell.v1.CloudShellService.AddPublicKey].
2095///
2096/// [google.cloud.shell.v1.CloudShellService.AddPublicKey]: crate::client::CloudShellService::add_public_key
2097#[derive(Clone, Default, PartialEq)]
2098#[non_exhaustive]
2099pub struct AddPublicKeyRequest {
2100    /// Environment this key should be added to, e.g.
2101    /// `users/me/environments/default`.
2102    pub environment: std::string::String,
2103
2104    /// Key that should be added to the environment. Supported formats are
2105    /// `ssh-dss` (see RFC4253), `ssh-rsa` (see RFC4253), `ecdsa-sha2-nistp256`
2106    /// (see RFC5656), `ecdsa-sha2-nistp384` (see RFC5656) and
2107    /// `ecdsa-sha2-nistp521` (see RFC5656). It should be structured as
2108    /// &lt;format&gt; &lt;content&gt;, where &lt;content&gt; part is encoded with
2109    /// Base64.
2110    pub key: std::string::String,
2111
2112    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2113}
2114
2115impl AddPublicKeyRequest {
2116    pub fn new() -> Self {
2117        std::default::Default::default()
2118    }
2119
2120    /// Sets the value of [environment][crate::model::AddPublicKeyRequest::environment].
2121    pub fn set_environment<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2122        self.environment = v.into();
2123        self
2124    }
2125
2126    /// Sets the value of [key][crate::model::AddPublicKeyRequest::key].
2127    pub fn set_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2128        self.key = v.into();
2129        self
2130    }
2131}
2132
2133impl wkt::message::Message for AddPublicKeyRequest {
2134    fn typename() -> &'static str {
2135        "type.googleapis.com/google.cloud.shell.v1.AddPublicKeyRequest"
2136    }
2137}
2138
2139#[doc(hidden)]
2140impl<'de> serde::de::Deserialize<'de> for AddPublicKeyRequest {
2141    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2142    where
2143        D: serde::Deserializer<'de>,
2144    {
2145        #[allow(non_camel_case_types)]
2146        #[doc(hidden)]
2147        #[derive(PartialEq, Eq, Hash)]
2148        enum __FieldTag {
2149            __environment,
2150            __key,
2151            Unknown(std::string::String),
2152        }
2153        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2154            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2155            where
2156                D: serde::Deserializer<'de>,
2157            {
2158                struct Visitor;
2159                impl<'de> serde::de::Visitor<'de> for Visitor {
2160                    type Value = __FieldTag;
2161                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2162                        formatter.write_str("a field name for AddPublicKeyRequest")
2163                    }
2164                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2165                    where
2166                        E: serde::de::Error,
2167                    {
2168                        use std::result::Result::Ok;
2169                        use std::string::ToString;
2170                        match value {
2171                            "environment" => Ok(__FieldTag::__environment),
2172                            "key" => Ok(__FieldTag::__key),
2173                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2174                        }
2175                    }
2176                }
2177                deserializer.deserialize_identifier(Visitor)
2178            }
2179        }
2180        struct Visitor;
2181        impl<'de> serde::de::Visitor<'de> for Visitor {
2182            type Value = AddPublicKeyRequest;
2183            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2184                formatter.write_str("struct AddPublicKeyRequest")
2185            }
2186            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2187            where
2188                A: serde::de::MapAccess<'de>,
2189            {
2190                #[allow(unused_imports)]
2191                use serde::de::Error;
2192                use std::option::Option::Some;
2193                let mut fields = std::collections::HashSet::new();
2194                let mut result = Self::Value::new();
2195                while let Some(tag) = map.next_key::<__FieldTag>()? {
2196                    #[allow(clippy::match_single_binding)]
2197                    match tag {
2198                        __FieldTag::__environment => {
2199                            if !fields.insert(__FieldTag::__environment) {
2200                                return std::result::Result::Err(A::Error::duplicate_field(
2201                                    "multiple values for environment",
2202                                ));
2203                            }
2204                            result.environment = map
2205                                .next_value::<std::option::Option<std::string::String>>()?
2206                                .unwrap_or_default();
2207                        }
2208                        __FieldTag::__key => {
2209                            if !fields.insert(__FieldTag::__key) {
2210                                return std::result::Result::Err(A::Error::duplicate_field(
2211                                    "multiple values for key",
2212                                ));
2213                            }
2214                            result.key = map
2215                                .next_value::<std::option::Option<std::string::String>>()?
2216                                .unwrap_or_default();
2217                        }
2218                        __FieldTag::Unknown(key) => {
2219                            let value = map.next_value::<serde_json::Value>()?;
2220                            result._unknown_fields.insert(key, value);
2221                        }
2222                    }
2223                }
2224                std::result::Result::Ok(result)
2225            }
2226        }
2227        deserializer.deserialize_any(Visitor)
2228    }
2229}
2230
2231#[doc(hidden)]
2232impl serde::ser::Serialize for AddPublicKeyRequest {
2233    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2234    where
2235        S: serde::ser::Serializer,
2236    {
2237        use serde::ser::SerializeMap;
2238        #[allow(unused_imports)]
2239        use std::option::Option::Some;
2240        let mut state = serializer.serialize_map(std::option::Option::None)?;
2241        if !self.environment.is_empty() {
2242            state.serialize_entry("environment", &self.environment)?;
2243        }
2244        if !self.key.is_empty() {
2245            state.serialize_entry("key", &self.key)?;
2246        }
2247        if !self._unknown_fields.is_empty() {
2248            for (key, value) in self._unknown_fields.iter() {
2249                state.serialize_entry(key, &value)?;
2250            }
2251        }
2252        state.end()
2253    }
2254}
2255
2256impl std::fmt::Debug for AddPublicKeyRequest {
2257    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2258        let mut debug_struct = f.debug_struct("AddPublicKeyRequest");
2259        debug_struct.field("environment", &self.environment);
2260        debug_struct.field("key", &self.key);
2261        if !self._unknown_fields.is_empty() {
2262            debug_struct.field("_unknown_fields", &self._unknown_fields);
2263        }
2264        debug_struct.finish()
2265    }
2266}
2267
2268/// Response message for
2269/// [AddPublicKey][google.cloud.shell.v1.CloudShellService.AddPublicKey].
2270///
2271/// [google.cloud.shell.v1.CloudShellService.AddPublicKey]: crate::client::CloudShellService::add_public_key
2272#[derive(Clone, Default, PartialEq)]
2273#[non_exhaustive]
2274pub struct AddPublicKeyResponse {
2275    /// Key that was added to the environment.
2276    pub key: std::string::String,
2277
2278    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2279}
2280
2281impl AddPublicKeyResponse {
2282    pub fn new() -> Self {
2283        std::default::Default::default()
2284    }
2285
2286    /// Sets the value of [key][crate::model::AddPublicKeyResponse::key].
2287    pub fn set_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2288        self.key = v.into();
2289        self
2290    }
2291}
2292
2293impl wkt::message::Message for AddPublicKeyResponse {
2294    fn typename() -> &'static str {
2295        "type.googleapis.com/google.cloud.shell.v1.AddPublicKeyResponse"
2296    }
2297}
2298
2299#[doc(hidden)]
2300impl<'de> serde::de::Deserialize<'de> for AddPublicKeyResponse {
2301    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2302    where
2303        D: serde::Deserializer<'de>,
2304    {
2305        #[allow(non_camel_case_types)]
2306        #[doc(hidden)]
2307        #[derive(PartialEq, Eq, Hash)]
2308        enum __FieldTag {
2309            __key,
2310            Unknown(std::string::String),
2311        }
2312        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2313            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2314            where
2315                D: serde::Deserializer<'de>,
2316            {
2317                struct Visitor;
2318                impl<'de> serde::de::Visitor<'de> for Visitor {
2319                    type Value = __FieldTag;
2320                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2321                        formatter.write_str("a field name for AddPublicKeyResponse")
2322                    }
2323                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2324                    where
2325                        E: serde::de::Error,
2326                    {
2327                        use std::result::Result::Ok;
2328                        use std::string::ToString;
2329                        match value {
2330                            "key" => Ok(__FieldTag::__key),
2331                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2332                        }
2333                    }
2334                }
2335                deserializer.deserialize_identifier(Visitor)
2336            }
2337        }
2338        struct Visitor;
2339        impl<'de> serde::de::Visitor<'de> for Visitor {
2340            type Value = AddPublicKeyResponse;
2341            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2342                formatter.write_str("struct AddPublicKeyResponse")
2343            }
2344            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2345            where
2346                A: serde::de::MapAccess<'de>,
2347            {
2348                #[allow(unused_imports)]
2349                use serde::de::Error;
2350                use std::option::Option::Some;
2351                let mut fields = std::collections::HashSet::new();
2352                let mut result = Self::Value::new();
2353                while let Some(tag) = map.next_key::<__FieldTag>()? {
2354                    #[allow(clippy::match_single_binding)]
2355                    match tag {
2356                        __FieldTag::__key => {
2357                            if !fields.insert(__FieldTag::__key) {
2358                                return std::result::Result::Err(A::Error::duplicate_field(
2359                                    "multiple values for key",
2360                                ));
2361                            }
2362                            result.key = map
2363                                .next_value::<std::option::Option<std::string::String>>()?
2364                                .unwrap_or_default();
2365                        }
2366                        __FieldTag::Unknown(key) => {
2367                            let value = map.next_value::<serde_json::Value>()?;
2368                            result._unknown_fields.insert(key, value);
2369                        }
2370                    }
2371                }
2372                std::result::Result::Ok(result)
2373            }
2374        }
2375        deserializer.deserialize_any(Visitor)
2376    }
2377}
2378
2379#[doc(hidden)]
2380impl serde::ser::Serialize for AddPublicKeyResponse {
2381    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2382    where
2383        S: serde::ser::Serializer,
2384    {
2385        use serde::ser::SerializeMap;
2386        #[allow(unused_imports)]
2387        use std::option::Option::Some;
2388        let mut state = serializer.serialize_map(std::option::Option::None)?;
2389        if !self.key.is_empty() {
2390            state.serialize_entry("key", &self.key)?;
2391        }
2392        if !self._unknown_fields.is_empty() {
2393            for (key, value) in self._unknown_fields.iter() {
2394                state.serialize_entry(key, &value)?;
2395            }
2396        }
2397        state.end()
2398    }
2399}
2400
2401impl std::fmt::Debug for AddPublicKeyResponse {
2402    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2403        let mut debug_struct = f.debug_struct("AddPublicKeyResponse");
2404        debug_struct.field("key", &self.key);
2405        if !self._unknown_fields.is_empty() {
2406            debug_struct.field("_unknown_fields", &self._unknown_fields);
2407        }
2408        debug_struct.finish()
2409    }
2410}
2411
2412/// Message included in the metadata field of operations returned from
2413/// [AddPublicKey][google.cloud.shell.v1.CloudShellService.AddPublicKey].
2414///
2415/// [google.cloud.shell.v1.CloudShellService.AddPublicKey]: crate::client::CloudShellService::add_public_key
2416#[derive(Clone, Default, PartialEq)]
2417#[non_exhaustive]
2418pub struct AddPublicKeyMetadata {
2419    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2420}
2421
2422impl AddPublicKeyMetadata {
2423    pub fn new() -> Self {
2424        std::default::Default::default()
2425    }
2426}
2427
2428impl wkt::message::Message for AddPublicKeyMetadata {
2429    fn typename() -> &'static str {
2430        "type.googleapis.com/google.cloud.shell.v1.AddPublicKeyMetadata"
2431    }
2432}
2433
2434#[doc(hidden)]
2435impl<'de> serde::de::Deserialize<'de> for AddPublicKeyMetadata {
2436    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2437    where
2438        D: serde::Deserializer<'de>,
2439    {
2440        #[allow(non_camel_case_types)]
2441        #[doc(hidden)]
2442        #[derive(PartialEq, Eq, Hash)]
2443        enum __FieldTag {
2444            Unknown(std::string::String),
2445        }
2446        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2447            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2448            where
2449                D: serde::Deserializer<'de>,
2450            {
2451                struct Visitor;
2452                impl<'de> serde::de::Visitor<'de> for Visitor {
2453                    type Value = __FieldTag;
2454                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2455                        formatter.write_str("a field name for AddPublicKeyMetadata")
2456                    }
2457                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2458                    where
2459                        E: serde::de::Error,
2460                    {
2461                        use std::result::Result::Ok;
2462                        use std::string::ToString;
2463                        Ok(__FieldTag::Unknown(value.to_string()))
2464                    }
2465                }
2466                deserializer.deserialize_identifier(Visitor)
2467            }
2468        }
2469        struct Visitor;
2470        impl<'de> serde::de::Visitor<'de> for Visitor {
2471            type Value = AddPublicKeyMetadata;
2472            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2473                formatter.write_str("struct AddPublicKeyMetadata")
2474            }
2475            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2476            where
2477                A: serde::de::MapAccess<'de>,
2478            {
2479                #[allow(unused_imports)]
2480                use serde::de::Error;
2481                use std::option::Option::Some;
2482                let mut result = Self::Value::new();
2483                while let Some(tag) = map.next_key::<__FieldTag>()? {
2484                    #[allow(clippy::match_single_binding)]
2485                    match tag {
2486                        __FieldTag::Unknown(key) => {
2487                            let value = map.next_value::<serde_json::Value>()?;
2488                            result._unknown_fields.insert(key, value);
2489                        }
2490                    }
2491                }
2492                std::result::Result::Ok(result)
2493            }
2494        }
2495        deserializer.deserialize_any(Visitor)
2496    }
2497}
2498
2499#[doc(hidden)]
2500impl serde::ser::Serialize for AddPublicKeyMetadata {
2501    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2502    where
2503        S: serde::ser::Serializer,
2504    {
2505        use serde::ser::SerializeMap;
2506        #[allow(unused_imports)]
2507        use std::option::Option::Some;
2508        let mut state = serializer.serialize_map(std::option::Option::None)?;
2509        if !self._unknown_fields.is_empty() {
2510            for (key, value) in self._unknown_fields.iter() {
2511                state.serialize_entry(key, &value)?;
2512            }
2513        }
2514        state.end()
2515    }
2516}
2517
2518impl std::fmt::Debug for AddPublicKeyMetadata {
2519    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2520        let mut debug_struct = f.debug_struct("AddPublicKeyMetadata");
2521        if !self._unknown_fields.is_empty() {
2522            debug_struct.field("_unknown_fields", &self._unknown_fields);
2523        }
2524        debug_struct.finish()
2525    }
2526}
2527
2528/// Request message for
2529/// [RemovePublicKey][google.cloud.shell.v1.CloudShellService.RemovePublicKey].
2530///
2531/// [google.cloud.shell.v1.CloudShellService.RemovePublicKey]: crate::client::CloudShellService::remove_public_key
2532#[derive(Clone, Default, PartialEq)]
2533#[non_exhaustive]
2534pub struct RemovePublicKeyRequest {
2535    /// Environment this key should be removed from, e.g.
2536    /// `users/me/environments/default`.
2537    pub environment: std::string::String,
2538
2539    /// Key that should be removed from the environment.
2540    pub key: std::string::String,
2541
2542    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2543}
2544
2545impl RemovePublicKeyRequest {
2546    pub fn new() -> Self {
2547        std::default::Default::default()
2548    }
2549
2550    /// Sets the value of [environment][crate::model::RemovePublicKeyRequest::environment].
2551    pub fn set_environment<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2552        self.environment = v.into();
2553        self
2554    }
2555
2556    /// Sets the value of [key][crate::model::RemovePublicKeyRequest::key].
2557    pub fn set_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2558        self.key = v.into();
2559        self
2560    }
2561}
2562
2563impl wkt::message::Message for RemovePublicKeyRequest {
2564    fn typename() -> &'static str {
2565        "type.googleapis.com/google.cloud.shell.v1.RemovePublicKeyRequest"
2566    }
2567}
2568
2569#[doc(hidden)]
2570impl<'de> serde::de::Deserialize<'de> for RemovePublicKeyRequest {
2571    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2572    where
2573        D: serde::Deserializer<'de>,
2574    {
2575        #[allow(non_camel_case_types)]
2576        #[doc(hidden)]
2577        #[derive(PartialEq, Eq, Hash)]
2578        enum __FieldTag {
2579            __environment,
2580            __key,
2581            Unknown(std::string::String),
2582        }
2583        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2584            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2585            where
2586                D: serde::Deserializer<'de>,
2587            {
2588                struct Visitor;
2589                impl<'de> serde::de::Visitor<'de> for Visitor {
2590                    type Value = __FieldTag;
2591                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2592                        formatter.write_str("a field name for RemovePublicKeyRequest")
2593                    }
2594                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2595                    where
2596                        E: serde::de::Error,
2597                    {
2598                        use std::result::Result::Ok;
2599                        use std::string::ToString;
2600                        match value {
2601                            "environment" => Ok(__FieldTag::__environment),
2602                            "key" => Ok(__FieldTag::__key),
2603                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2604                        }
2605                    }
2606                }
2607                deserializer.deserialize_identifier(Visitor)
2608            }
2609        }
2610        struct Visitor;
2611        impl<'de> serde::de::Visitor<'de> for Visitor {
2612            type Value = RemovePublicKeyRequest;
2613            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2614                formatter.write_str("struct RemovePublicKeyRequest")
2615            }
2616            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2617            where
2618                A: serde::de::MapAccess<'de>,
2619            {
2620                #[allow(unused_imports)]
2621                use serde::de::Error;
2622                use std::option::Option::Some;
2623                let mut fields = std::collections::HashSet::new();
2624                let mut result = Self::Value::new();
2625                while let Some(tag) = map.next_key::<__FieldTag>()? {
2626                    #[allow(clippy::match_single_binding)]
2627                    match tag {
2628                        __FieldTag::__environment => {
2629                            if !fields.insert(__FieldTag::__environment) {
2630                                return std::result::Result::Err(A::Error::duplicate_field(
2631                                    "multiple values for environment",
2632                                ));
2633                            }
2634                            result.environment = map
2635                                .next_value::<std::option::Option<std::string::String>>()?
2636                                .unwrap_or_default();
2637                        }
2638                        __FieldTag::__key => {
2639                            if !fields.insert(__FieldTag::__key) {
2640                                return std::result::Result::Err(A::Error::duplicate_field(
2641                                    "multiple values for key",
2642                                ));
2643                            }
2644                            result.key = map
2645                                .next_value::<std::option::Option<std::string::String>>()?
2646                                .unwrap_or_default();
2647                        }
2648                        __FieldTag::Unknown(key) => {
2649                            let value = map.next_value::<serde_json::Value>()?;
2650                            result._unknown_fields.insert(key, value);
2651                        }
2652                    }
2653                }
2654                std::result::Result::Ok(result)
2655            }
2656        }
2657        deserializer.deserialize_any(Visitor)
2658    }
2659}
2660
2661#[doc(hidden)]
2662impl serde::ser::Serialize for RemovePublicKeyRequest {
2663    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2664    where
2665        S: serde::ser::Serializer,
2666    {
2667        use serde::ser::SerializeMap;
2668        #[allow(unused_imports)]
2669        use std::option::Option::Some;
2670        let mut state = serializer.serialize_map(std::option::Option::None)?;
2671        if !self.environment.is_empty() {
2672            state.serialize_entry("environment", &self.environment)?;
2673        }
2674        if !self.key.is_empty() {
2675            state.serialize_entry("key", &self.key)?;
2676        }
2677        if !self._unknown_fields.is_empty() {
2678            for (key, value) in self._unknown_fields.iter() {
2679                state.serialize_entry(key, &value)?;
2680            }
2681        }
2682        state.end()
2683    }
2684}
2685
2686impl std::fmt::Debug for RemovePublicKeyRequest {
2687    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2688        let mut debug_struct = f.debug_struct("RemovePublicKeyRequest");
2689        debug_struct.field("environment", &self.environment);
2690        debug_struct.field("key", &self.key);
2691        if !self._unknown_fields.is_empty() {
2692            debug_struct.field("_unknown_fields", &self._unknown_fields);
2693        }
2694        debug_struct.finish()
2695    }
2696}
2697
2698/// Response message for
2699/// [RemovePublicKey][google.cloud.shell.v1.CloudShellService.RemovePublicKey].
2700///
2701/// [google.cloud.shell.v1.CloudShellService.RemovePublicKey]: crate::client::CloudShellService::remove_public_key
2702#[derive(Clone, Default, PartialEq)]
2703#[non_exhaustive]
2704pub struct RemovePublicKeyResponse {
2705    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2706}
2707
2708impl RemovePublicKeyResponse {
2709    pub fn new() -> Self {
2710        std::default::Default::default()
2711    }
2712}
2713
2714impl wkt::message::Message for RemovePublicKeyResponse {
2715    fn typename() -> &'static str {
2716        "type.googleapis.com/google.cloud.shell.v1.RemovePublicKeyResponse"
2717    }
2718}
2719
2720#[doc(hidden)]
2721impl<'de> serde::de::Deserialize<'de> for RemovePublicKeyResponse {
2722    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2723    where
2724        D: serde::Deserializer<'de>,
2725    {
2726        #[allow(non_camel_case_types)]
2727        #[doc(hidden)]
2728        #[derive(PartialEq, Eq, Hash)]
2729        enum __FieldTag {
2730            Unknown(std::string::String),
2731        }
2732        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2733            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2734            where
2735                D: serde::Deserializer<'de>,
2736            {
2737                struct Visitor;
2738                impl<'de> serde::de::Visitor<'de> for Visitor {
2739                    type Value = __FieldTag;
2740                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2741                        formatter.write_str("a field name for RemovePublicKeyResponse")
2742                    }
2743                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2744                    where
2745                        E: serde::de::Error,
2746                    {
2747                        use std::result::Result::Ok;
2748                        use std::string::ToString;
2749                        Ok(__FieldTag::Unknown(value.to_string()))
2750                    }
2751                }
2752                deserializer.deserialize_identifier(Visitor)
2753            }
2754        }
2755        struct Visitor;
2756        impl<'de> serde::de::Visitor<'de> for Visitor {
2757            type Value = RemovePublicKeyResponse;
2758            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2759                formatter.write_str("struct RemovePublicKeyResponse")
2760            }
2761            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2762            where
2763                A: serde::de::MapAccess<'de>,
2764            {
2765                #[allow(unused_imports)]
2766                use serde::de::Error;
2767                use std::option::Option::Some;
2768                let mut result = Self::Value::new();
2769                while let Some(tag) = map.next_key::<__FieldTag>()? {
2770                    #[allow(clippy::match_single_binding)]
2771                    match tag {
2772                        __FieldTag::Unknown(key) => {
2773                            let value = map.next_value::<serde_json::Value>()?;
2774                            result._unknown_fields.insert(key, value);
2775                        }
2776                    }
2777                }
2778                std::result::Result::Ok(result)
2779            }
2780        }
2781        deserializer.deserialize_any(Visitor)
2782    }
2783}
2784
2785#[doc(hidden)]
2786impl serde::ser::Serialize for RemovePublicKeyResponse {
2787    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2788    where
2789        S: serde::ser::Serializer,
2790    {
2791        use serde::ser::SerializeMap;
2792        #[allow(unused_imports)]
2793        use std::option::Option::Some;
2794        let mut state = serializer.serialize_map(std::option::Option::None)?;
2795        if !self._unknown_fields.is_empty() {
2796            for (key, value) in self._unknown_fields.iter() {
2797                state.serialize_entry(key, &value)?;
2798            }
2799        }
2800        state.end()
2801    }
2802}
2803
2804impl std::fmt::Debug for RemovePublicKeyResponse {
2805    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2806        let mut debug_struct = f.debug_struct("RemovePublicKeyResponse");
2807        if !self._unknown_fields.is_empty() {
2808            debug_struct.field("_unknown_fields", &self._unknown_fields);
2809        }
2810        debug_struct.finish()
2811    }
2812}
2813
2814/// Message included in the metadata field of operations returned from
2815/// [RemovePublicKey][google.cloud.shell.v1.CloudShellService.RemovePublicKey].
2816///
2817/// [google.cloud.shell.v1.CloudShellService.RemovePublicKey]: crate::client::CloudShellService::remove_public_key
2818#[derive(Clone, Default, PartialEq)]
2819#[non_exhaustive]
2820pub struct RemovePublicKeyMetadata {
2821    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2822}
2823
2824impl RemovePublicKeyMetadata {
2825    pub fn new() -> Self {
2826        std::default::Default::default()
2827    }
2828}
2829
2830impl wkt::message::Message for RemovePublicKeyMetadata {
2831    fn typename() -> &'static str {
2832        "type.googleapis.com/google.cloud.shell.v1.RemovePublicKeyMetadata"
2833    }
2834}
2835
2836#[doc(hidden)]
2837impl<'de> serde::de::Deserialize<'de> for RemovePublicKeyMetadata {
2838    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2839    where
2840        D: serde::Deserializer<'de>,
2841    {
2842        #[allow(non_camel_case_types)]
2843        #[doc(hidden)]
2844        #[derive(PartialEq, Eq, Hash)]
2845        enum __FieldTag {
2846            Unknown(std::string::String),
2847        }
2848        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2849            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2850            where
2851                D: serde::Deserializer<'de>,
2852            {
2853                struct Visitor;
2854                impl<'de> serde::de::Visitor<'de> for Visitor {
2855                    type Value = __FieldTag;
2856                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2857                        formatter.write_str("a field name for RemovePublicKeyMetadata")
2858                    }
2859                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2860                    where
2861                        E: serde::de::Error,
2862                    {
2863                        use std::result::Result::Ok;
2864                        use std::string::ToString;
2865                        Ok(__FieldTag::Unknown(value.to_string()))
2866                    }
2867                }
2868                deserializer.deserialize_identifier(Visitor)
2869            }
2870        }
2871        struct Visitor;
2872        impl<'de> serde::de::Visitor<'de> for Visitor {
2873            type Value = RemovePublicKeyMetadata;
2874            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2875                formatter.write_str("struct RemovePublicKeyMetadata")
2876            }
2877            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2878            where
2879                A: serde::de::MapAccess<'de>,
2880            {
2881                #[allow(unused_imports)]
2882                use serde::de::Error;
2883                use std::option::Option::Some;
2884                let mut result = Self::Value::new();
2885                while let Some(tag) = map.next_key::<__FieldTag>()? {
2886                    #[allow(clippy::match_single_binding)]
2887                    match tag {
2888                        __FieldTag::Unknown(key) => {
2889                            let value = map.next_value::<serde_json::Value>()?;
2890                            result._unknown_fields.insert(key, value);
2891                        }
2892                    }
2893                }
2894                std::result::Result::Ok(result)
2895            }
2896        }
2897        deserializer.deserialize_any(Visitor)
2898    }
2899}
2900
2901#[doc(hidden)]
2902impl serde::ser::Serialize for RemovePublicKeyMetadata {
2903    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2904    where
2905        S: serde::ser::Serializer,
2906    {
2907        use serde::ser::SerializeMap;
2908        #[allow(unused_imports)]
2909        use std::option::Option::Some;
2910        let mut state = serializer.serialize_map(std::option::Option::None)?;
2911        if !self._unknown_fields.is_empty() {
2912            for (key, value) in self._unknown_fields.iter() {
2913                state.serialize_entry(key, &value)?;
2914            }
2915        }
2916        state.end()
2917    }
2918}
2919
2920impl std::fmt::Debug for RemovePublicKeyMetadata {
2921    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2922        let mut debug_struct = f.debug_struct("RemovePublicKeyMetadata");
2923        if !self._unknown_fields.is_empty() {
2924            debug_struct.field("_unknown_fields", &self._unknown_fields);
2925        }
2926        debug_struct.finish()
2927    }
2928}
2929
2930/// Cloud-shell specific information that will be included as details in failure
2931/// responses.
2932#[derive(Clone, Default, PartialEq)]
2933#[non_exhaustive]
2934pub struct CloudShellErrorDetails {
2935    /// Code indicating the specific error the occurred.
2936    pub code: crate::model::cloud_shell_error_details::CloudShellErrorCode,
2937
2938    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2939}
2940
2941impl CloudShellErrorDetails {
2942    pub fn new() -> Self {
2943        std::default::Default::default()
2944    }
2945
2946    /// Sets the value of [code][crate::model::CloudShellErrorDetails::code].
2947    pub fn set_code<
2948        T: std::convert::Into<crate::model::cloud_shell_error_details::CloudShellErrorCode>,
2949    >(
2950        mut self,
2951        v: T,
2952    ) -> Self {
2953        self.code = v.into();
2954        self
2955    }
2956}
2957
2958impl wkt::message::Message for CloudShellErrorDetails {
2959    fn typename() -> &'static str {
2960        "type.googleapis.com/google.cloud.shell.v1.CloudShellErrorDetails"
2961    }
2962}
2963
2964#[doc(hidden)]
2965impl<'de> serde::de::Deserialize<'de> for CloudShellErrorDetails {
2966    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2967    where
2968        D: serde::Deserializer<'de>,
2969    {
2970        #[allow(non_camel_case_types)]
2971        #[doc(hidden)]
2972        #[derive(PartialEq, Eq, Hash)]
2973        enum __FieldTag {
2974            __code,
2975            Unknown(std::string::String),
2976        }
2977        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2978            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2979            where
2980                D: serde::Deserializer<'de>,
2981            {
2982                struct Visitor;
2983                impl<'de> serde::de::Visitor<'de> for Visitor {
2984                    type Value = __FieldTag;
2985                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2986                        formatter.write_str("a field name for CloudShellErrorDetails")
2987                    }
2988                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2989                    where
2990                        E: serde::de::Error,
2991                    {
2992                        use std::result::Result::Ok;
2993                        use std::string::ToString;
2994                        match value {
2995                            "code" => Ok(__FieldTag::__code),
2996                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2997                        }
2998                    }
2999                }
3000                deserializer.deserialize_identifier(Visitor)
3001            }
3002        }
3003        struct Visitor;
3004        impl<'de> serde::de::Visitor<'de> for Visitor {
3005            type Value = CloudShellErrorDetails;
3006            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3007                formatter.write_str("struct CloudShellErrorDetails")
3008            }
3009            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3010            where
3011                A: serde::de::MapAccess<'de>,
3012            {
3013                #[allow(unused_imports)]
3014                use serde::de::Error;
3015                use std::option::Option::Some;
3016                let mut fields = std::collections::HashSet::new();
3017                let mut result = Self::Value::new();
3018                while let Some(tag) = map.next_key::<__FieldTag>()? {
3019                    #[allow(clippy::match_single_binding)]
3020                    match tag {
3021                        __FieldTag::__code => {
3022                            if !fields.insert(__FieldTag::__code) {
3023                                return std::result::Result::Err(A::Error::duplicate_field(
3024                                    "multiple values for code",
3025                                ));
3026                            }
3027                            result.code = map
3028                                .next_value::<std::option::Option<
3029                                    crate::model::cloud_shell_error_details::CloudShellErrorCode,
3030                                >>()?
3031                                .unwrap_or_default();
3032                        }
3033                        __FieldTag::Unknown(key) => {
3034                            let value = map.next_value::<serde_json::Value>()?;
3035                            result._unknown_fields.insert(key, value);
3036                        }
3037                    }
3038                }
3039                std::result::Result::Ok(result)
3040            }
3041        }
3042        deserializer.deserialize_any(Visitor)
3043    }
3044}
3045
3046#[doc(hidden)]
3047impl serde::ser::Serialize for CloudShellErrorDetails {
3048    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3049    where
3050        S: serde::ser::Serializer,
3051    {
3052        use serde::ser::SerializeMap;
3053        #[allow(unused_imports)]
3054        use std::option::Option::Some;
3055        let mut state = serializer.serialize_map(std::option::Option::None)?;
3056        if !wkt::internal::is_default(&self.code) {
3057            state.serialize_entry("code", &self.code)?;
3058        }
3059        if !self._unknown_fields.is_empty() {
3060            for (key, value) in self._unknown_fields.iter() {
3061                state.serialize_entry(key, &value)?;
3062            }
3063        }
3064        state.end()
3065    }
3066}
3067
3068impl std::fmt::Debug for CloudShellErrorDetails {
3069    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3070        let mut debug_struct = f.debug_struct("CloudShellErrorDetails");
3071        debug_struct.field("code", &self.code);
3072        if !self._unknown_fields.is_empty() {
3073            debug_struct.field("_unknown_fields", &self._unknown_fields);
3074        }
3075        debug_struct.finish()
3076    }
3077}
3078
3079/// Defines additional types related to [CloudShellErrorDetails].
3080pub mod cloud_shell_error_details {
3081    #[allow(unused_imports)]
3082    use super::*;
3083
3084    /// Set of possible errors returned from API calls.
3085    ///
3086    /// # Working with unknown values
3087    ///
3088    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
3089    /// additional enum variants at any time. Adding new variants is not considered
3090    /// a breaking change. Applications should write their code in anticipation of:
3091    ///
3092    /// - New values appearing in future releases of the client library, **and**
3093    /// - New values received dynamically, without application changes.
3094    ///
3095    /// Please consult the [Working with enums] section in the user guide for some
3096    /// guidelines.
3097    ///
3098    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
3099    #[derive(Clone, Debug, PartialEq)]
3100    #[non_exhaustive]
3101    pub enum CloudShellErrorCode {
3102        /// An unknown error occurred.
3103        Unspecified,
3104        /// The image used by the Cloud Shell environment either does not exist or
3105        /// the user does not have access to it.
3106        ImageUnavailable,
3107        /// Cloud Shell has been disabled by an administrator for the user making the
3108        /// request.
3109        CloudShellDisabled,
3110        /// Cloud Shell has been permanently disabled due to a Terms of Service
3111        /// violation by the user.
3112        TosViolation,
3113        /// The user has exhausted their weekly Cloud Shell quota, and Cloud Shell
3114        /// will be disabled until the quota resets.
3115        QuotaExceeded,
3116        /// The Cloud Shell environment is unavailable and cannot be connected to at
3117        /// the moment.
3118        EnvironmentUnavailable,
3119        /// If set, the enum was initialized with an unknown value.
3120        ///
3121        /// Applications can examine the value using [CloudShellErrorCode::value] or
3122        /// [CloudShellErrorCode::name].
3123        UnknownValue(cloud_shell_error_code::UnknownValue),
3124    }
3125
3126    #[doc(hidden)]
3127    pub mod cloud_shell_error_code {
3128        #[allow(unused_imports)]
3129        use super::*;
3130        #[derive(Clone, Debug, PartialEq)]
3131        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
3132    }
3133
3134    impl CloudShellErrorCode {
3135        /// Gets the enum value.
3136        ///
3137        /// Returns `None` if the enum contains an unknown value deserialized from
3138        /// the string representation of enums.
3139        pub fn value(&self) -> std::option::Option<i32> {
3140            match self {
3141                Self::Unspecified => std::option::Option::Some(0),
3142                Self::ImageUnavailable => std::option::Option::Some(1),
3143                Self::CloudShellDisabled => std::option::Option::Some(2),
3144                Self::TosViolation => std::option::Option::Some(4),
3145                Self::QuotaExceeded => std::option::Option::Some(5),
3146                Self::EnvironmentUnavailable => std::option::Option::Some(6),
3147                Self::UnknownValue(u) => u.0.value(),
3148            }
3149        }
3150
3151        /// Gets the enum value as a string.
3152        ///
3153        /// Returns `None` if the enum contains an unknown value deserialized from
3154        /// the integer representation of enums.
3155        pub fn name(&self) -> std::option::Option<&str> {
3156            match self {
3157                Self::Unspecified => {
3158                    std::option::Option::Some("CLOUD_SHELL_ERROR_CODE_UNSPECIFIED")
3159                }
3160                Self::ImageUnavailable => std::option::Option::Some("IMAGE_UNAVAILABLE"),
3161                Self::CloudShellDisabled => std::option::Option::Some("CLOUD_SHELL_DISABLED"),
3162                Self::TosViolation => std::option::Option::Some("TOS_VIOLATION"),
3163                Self::QuotaExceeded => std::option::Option::Some("QUOTA_EXCEEDED"),
3164                Self::EnvironmentUnavailable => {
3165                    std::option::Option::Some("ENVIRONMENT_UNAVAILABLE")
3166                }
3167                Self::UnknownValue(u) => u.0.name(),
3168            }
3169        }
3170    }
3171
3172    impl std::default::Default for CloudShellErrorCode {
3173        fn default() -> Self {
3174            use std::convert::From;
3175            Self::from(0)
3176        }
3177    }
3178
3179    impl std::fmt::Display for CloudShellErrorCode {
3180        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
3181            wkt::internal::display_enum(f, self.name(), self.value())
3182        }
3183    }
3184
3185    impl std::convert::From<i32> for CloudShellErrorCode {
3186        fn from(value: i32) -> Self {
3187            match value {
3188                0 => Self::Unspecified,
3189                1 => Self::ImageUnavailable,
3190                2 => Self::CloudShellDisabled,
3191                4 => Self::TosViolation,
3192                5 => Self::QuotaExceeded,
3193                6 => Self::EnvironmentUnavailable,
3194                _ => Self::UnknownValue(cloud_shell_error_code::UnknownValue(
3195                    wkt::internal::UnknownEnumValue::Integer(value),
3196                )),
3197            }
3198        }
3199    }
3200
3201    impl std::convert::From<&str> for CloudShellErrorCode {
3202        fn from(value: &str) -> Self {
3203            use std::string::ToString;
3204            match value {
3205                "CLOUD_SHELL_ERROR_CODE_UNSPECIFIED" => Self::Unspecified,
3206                "IMAGE_UNAVAILABLE" => Self::ImageUnavailable,
3207                "CLOUD_SHELL_DISABLED" => Self::CloudShellDisabled,
3208                "TOS_VIOLATION" => Self::TosViolation,
3209                "QUOTA_EXCEEDED" => Self::QuotaExceeded,
3210                "ENVIRONMENT_UNAVAILABLE" => Self::EnvironmentUnavailable,
3211                _ => Self::UnknownValue(cloud_shell_error_code::UnknownValue(
3212                    wkt::internal::UnknownEnumValue::String(value.to_string()),
3213                )),
3214            }
3215        }
3216    }
3217
3218    impl serde::ser::Serialize for CloudShellErrorCode {
3219        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3220        where
3221            S: serde::Serializer,
3222        {
3223            match self {
3224                Self::Unspecified => serializer.serialize_i32(0),
3225                Self::ImageUnavailable => serializer.serialize_i32(1),
3226                Self::CloudShellDisabled => serializer.serialize_i32(2),
3227                Self::TosViolation => serializer.serialize_i32(4),
3228                Self::QuotaExceeded => serializer.serialize_i32(5),
3229                Self::EnvironmentUnavailable => serializer.serialize_i32(6),
3230                Self::UnknownValue(u) => u.0.serialize(serializer),
3231            }
3232        }
3233    }
3234
3235    impl<'de> serde::de::Deserialize<'de> for CloudShellErrorCode {
3236        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3237        where
3238            D: serde::Deserializer<'de>,
3239        {
3240            deserializer.deserialize_any(wkt::internal::EnumVisitor::<CloudShellErrorCode>::new(
3241                ".google.cloud.shell.v1.CloudShellErrorDetails.CloudShellErrorCode",
3242            ))
3243        }
3244    }
3245}