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