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