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, 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
804impl std::fmt::Debug for Workflow {
805    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
806        let mut debug_struct = f.debug_struct("Workflow");
807        debug_struct.field("name", &self.name);
808        debug_struct.field("description", &self.description);
809        debug_struct.field("state", &self.state);
810        debug_struct.field("revision_id", &self.revision_id);
811        debug_struct.field("create_time", &self.create_time);
812        debug_struct.field("update_time", &self.update_time);
813        debug_struct.field("revision_create_time", &self.revision_create_time);
814        debug_struct.field("labels", &self.labels);
815        debug_struct.field("service_account", &self.service_account);
816        debug_struct.field("crypto_key_name", &self.crypto_key_name);
817        debug_struct.field("state_error", &self.state_error);
818        debug_struct.field("call_log_level", &self.call_log_level);
819        debug_struct.field("user_env_vars", &self.user_env_vars);
820        debug_struct.field("execution_history_level", &self.execution_history_level);
821        debug_struct.field("all_kms_keys", &self.all_kms_keys);
822        debug_struct.field("all_kms_keys_versions", &self.all_kms_keys_versions);
823        debug_struct.field("crypto_key_version", &self.crypto_key_version);
824        debug_struct.field("tags", &self.tags);
825        debug_struct.field("source_code", &self.source_code);
826        if !self._unknown_fields.is_empty() {
827            debug_struct.field("_unknown_fields", &self._unknown_fields);
828        }
829        debug_struct.finish()
830    }
831}
832
833/// Defines additional types related to [Workflow].
834pub mod workflow {
835    #[allow(unused_imports)]
836    use super::*;
837
838    /// Describes an error related to the current state of the workflow.
839    #[derive(Clone, Default, PartialEq)]
840    #[non_exhaustive]
841    pub struct StateError {
842        /// Provides specifics about the error.
843        pub details: std::string::String,
844
845        /// The type of this state error.
846        pub r#type: crate::model::workflow::state_error::Type,
847
848        _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
849    }
850
851    impl StateError {
852        pub fn new() -> Self {
853            std::default::Default::default()
854        }
855
856        /// Sets the value of [details][crate::model::workflow::StateError::details].
857        pub fn set_details<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
858            self.details = v.into();
859            self
860        }
861
862        /// Sets the value of [r#type][crate::model::workflow::StateError::type].
863        pub fn set_type<T: std::convert::Into<crate::model::workflow::state_error::Type>>(
864            mut self,
865            v: T,
866        ) -> Self {
867            self.r#type = v.into();
868            self
869        }
870    }
871
872    impl wkt::message::Message for StateError {
873        fn typename() -> &'static str {
874            "type.googleapis.com/google.cloud.workflows.v1.Workflow.StateError"
875        }
876    }
877
878    #[doc(hidden)]
879    impl<'de> serde::de::Deserialize<'de> for StateError {
880        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
881        where
882            D: serde::Deserializer<'de>,
883        {
884            #[allow(non_camel_case_types)]
885            #[doc(hidden)]
886            #[derive(PartialEq, Eq, Hash)]
887            enum __FieldTag {
888                __details,
889                __type,
890                Unknown(std::string::String),
891            }
892            impl<'de> serde::de::Deserialize<'de> for __FieldTag {
893                fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
894                where
895                    D: serde::Deserializer<'de>,
896                {
897                    struct Visitor;
898                    impl<'de> serde::de::Visitor<'de> for Visitor {
899                        type Value = __FieldTag;
900                        fn expecting(
901                            &self,
902                            formatter: &mut std::fmt::Formatter,
903                        ) -> std::fmt::Result {
904                            formatter.write_str("a field name for StateError")
905                        }
906                        fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
907                        where
908                            E: serde::de::Error,
909                        {
910                            use std::result::Result::Ok;
911                            use std::string::ToString;
912                            match value {
913                                "details" => Ok(__FieldTag::__details),
914                                "type" => Ok(__FieldTag::__type),
915                                _ => Ok(__FieldTag::Unknown(value.to_string())),
916                            }
917                        }
918                    }
919                    deserializer.deserialize_identifier(Visitor)
920                }
921            }
922            struct Visitor;
923            impl<'de> serde::de::Visitor<'de> for Visitor {
924                type Value = StateError;
925                fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
926                    formatter.write_str("struct StateError")
927                }
928                fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
929                where
930                    A: serde::de::MapAccess<'de>,
931                {
932                    #[allow(unused_imports)]
933                    use serde::de::Error;
934                    use std::option::Option::Some;
935                    let mut fields = std::collections::HashSet::new();
936                    let mut result = Self::Value::new();
937                    while let Some(tag) = map.next_key::<__FieldTag>()? {
938                        #[allow(clippy::match_single_binding)]
939                        match tag {
940                            __FieldTag::__details => {
941                                if !fields.insert(__FieldTag::__details) {
942                                    return std::result::Result::Err(A::Error::duplicate_field(
943                                        "multiple values for details",
944                                    ));
945                                }
946                                result.details = map
947                                    .next_value::<std::option::Option<std::string::String>>()?
948                                    .unwrap_or_default();
949                            }
950                            __FieldTag::__type => {
951                                if !fields.insert(__FieldTag::__type) {
952                                    return std::result::Result::Err(A::Error::duplicate_field(
953                                        "multiple values for type",
954                                    ));
955                                }
956                                result.r#type =
957                                    map.next_value::<std::option::Option<
958                                        crate::model::workflow::state_error::Type,
959                                    >>()?
960                                    .unwrap_or_default();
961                            }
962                            __FieldTag::Unknown(key) => {
963                                let value = map.next_value::<serde_json::Value>()?;
964                                result._unknown_fields.insert(key, value);
965                            }
966                        }
967                    }
968                    std::result::Result::Ok(result)
969                }
970            }
971            deserializer.deserialize_any(Visitor)
972        }
973    }
974
975    #[doc(hidden)]
976    impl serde::ser::Serialize for StateError {
977        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
978        where
979            S: serde::ser::Serializer,
980        {
981            use serde::ser::SerializeMap;
982            #[allow(unused_imports)]
983            use std::option::Option::Some;
984            let mut state = serializer.serialize_map(std::option::Option::None)?;
985            if !self.details.is_empty() {
986                state.serialize_entry("details", &self.details)?;
987            }
988            if !wkt::internal::is_default(&self.r#type) {
989                state.serialize_entry("type", &self.r#type)?;
990            }
991            if !self._unknown_fields.is_empty() {
992                for (key, value) in self._unknown_fields.iter() {
993                    state.serialize_entry(key, &value)?;
994                }
995            }
996            state.end()
997        }
998    }
999
1000    impl std::fmt::Debug for StateError {
1001        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1002            let mut debug_struct = f.debug_struct("StateError");
1003            debug_struct.field("details", &self.details);
1004            debug_struct.field("r#type", &self.r#type);
1005            if !self._unknown_fields.is_empty() {
1006                debug_struct.field("_unknown_fields", &self._unknown_fields);
1007            }
1008            debug_struct.finish()
1009        }
1010    }
1011
1012    /// Defines additional types related to [StateError].
1013    pub mod state_error {
1014        #[allow(unused_imports)]
1015        use super::*;
1016
1017        /// Describes the possibled types of a state error.
1018        ///
1019        /// # Working with unknown values
1020        ///
1021        /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
1022        /// additional enum variants at any time. Adding new variants is not considered
1023        /// a breaking change. Applications should write their code in anticipation of:
1024        ///
1025        /// - New values appearing in future releases of the client library, **and**
1026        /// - New values received dynamically, without application changes.
1027        ///
1028        /// Please consult the [Working with enums] section in the user guide for some
1029        /// guidelines.
1030        ///
1031        /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
1032        #[derive(Clone, Debug, PartialEq)]
1033        #[non_exhaustive]
1034        pub enum Type {
1035            /// No type specified.
1036            Unspecified,
1037            /// Caused by an issue with KMS.
1038            KmsError,
1039            /// If set, the enum was initialized with an unknown value.
1040            ///
1041            /// Applications can examine the value using [Type::value] or
1042            /// [Type::name].
1043            UnknownValue(r#type::UnknownValue),
1044        }
1045
1046        #[doc(hidden)]
1047        pub mod r#type {
1048            #[allow(unused_imports)]
1049            use super::*;
1050            #[derive(Clone, Debug, PartialEq)]
1051            pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
1052        }
1053
1054        impl Type {
1055            /// Gets the enum value.
1056            ///
1057            /// Returns `None` if the enum contains an unknown value deserialized from
1058            /// the string representation of enums.
1059            pub fn value(&self) -> std::option::Option<i32> {
1060                match self {
1061                    Self::Unspecified => std::option::Option::Some(0),
1062                    Self::KmsError => std::option::Option::Some(1),
1063                    Self::UnknownValue(u) => u.0.value(),
1064                }
1065            }
1066
1067            /// Gets the enum value as a string.
1068            ///
1069            /// Returns `None` if the enum contains an unknown value deserialized from
1070            /// the integer representation of enums.
1071            pub fn name(&self) -> std::option::Option<&str> {
1072                match self {
1073                    Self::Unspecified => std::option::Option::Some("TYPE_UNSPECIFIED"),
1074                    Self::KmsError => std::option::Option::Some("KMS_ERROR"),
1075                    Self::UnknownValue(u) => u.0.name(),
1076                }
1077            }
1078        }
1079
1080        impl std::default::Default for Type {
1081            fn default() -> Self {
1082                use std::convert::From;
1083                Self::from(0)
1084            }
1085        }
1086
1087        impl std::fmt::Display for Type {
1088            fn fmt(
1089                &self,
1090                f: &mut std::fmt::Formatter<'_>,
1091            ) -> std::result::Result<(), std::fmt::Error> {
1092                wkt::internal::display_enum(f, self.name(), self.value())
1093            }
1094        }
1095
1096        impl std::convert::From<i32> for Type {
1097            fn from(value: i32) -> Self {
1098                match value {
1099                    0 => Self::Unspecified,
1100                    1 => Self::KmsError,
1101                    _ => Self::UnknownValue(r#type::UnknownValue(
1102                        wkt::internal::UnknownEnumValue::Integer(value),
1103                    )),
1104                }
1105            }
1106        }
1107
1108        impl std::convert::From<&str> for Type {
1109            fn from(value: &str) -> Self {
1110                use std::string::ToString;
1111                match value {
1112                    "TYPE_UNSPECIFIED" => Self::Unspecified,
1113                    "KMS_ERROR" => Self::KmsError,
1114                    _ => Self::UnknownValue(r#type::UnknownValue(
1115                        wkt::internal::UnknownEnumValue::String(value.to_string()),
1116                    )),
1117                }
1118            }
1119        }
1120
1121        impl serde::ser::Serialize for Type {
1122            fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1123            where
1124                S: serde::Serializer,
1125            {
1126                match self {
1127                    Self::Unspecified => serializer.serialize_i32(0),
1128                    Self::KmsError => serializer.serialize_i32(1),
1129                    Self::UnknownValue(u) => u.0.serialize(serializer),
1130                }
1131            }
1132        }
1133
1134        impl<'de> serde::de::Deserialize<'de> for Type {
1135            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1136            where
1137                D: serde::Deserializer<'de>,
1138            {
1139                deserializer.deserialize_any(wkt::internal::EnumVisitor::<Type>::new(
1140                    ".google.cloud.workflows.v1.Workflow.StateError.Type",
1141                ))
1142            }
1143        }
1144    }
1145
1146    /// Describes the current state of workflow deployment.
1147    ///
1148    /// # Working with unknown values
1149    ///
1150    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
1151    /// additional enum variants at any time. Adding new variants is not considered
1152    /// a breaking change. Applications should write their code in anticipation of:
1153    ///
1154    /// - New values appearing in future releases of the client library, **and**
1155    /// - New values received dynamically, without application changes.
1156    ///
1157    /// Please consult the [Working with enums] section in the user guide for some
1158    /// guidelines.
1159    ///
1160    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
1161    #[derive(Clone, Debug, PartialEq)]
1162    #[non_exhaustive]
1163    pub enum State {
1164        /// Invalid state.
1165        Unspecified,
1166        /// The workflow has been deployed successfully and is serving.
1167        Active,
1168        /// Workflow data is unavailable. See the `state_error` field.
1169        Unavailable,
1170        /// If set, the enum was initialized with an unknown value.
1171        ///
1172        /// Applications can examine the value using [State::value] or
1173        /// [State::name].
1174        UnknownValue(state::UnknownValue),
1175    }
1176
1177    #[doc(hidden)]
1178    pub mod state {
1179        #[allow(unused_imports)]
1180        use super::*;
1181        #[derive(Clone, Debug, PartialEq)]
1182        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
1183    }
1184
1185    impl State {
1186        /// Gets the enum value.
1187        ///
1188        /// Returns `None` if the enum contains an unknown value deserialized from
1189        /// the string representation of enums.
1190        pub fn value(&self) -> std::option::Option<i32> {
1191            match self {
1192                Self::Unspecified => std::option::Option::Some(0),
1193                Self::Active => std::option::Option::Some(1),
1194                Self::Unavailable => std::option::Option::Some(2),
1195                Self::UnknownValue(u) => u.0.value(),
1196            }
1197        }
1198
1199        /// Gets the enum value as a string.
1200        ///
1201        /// Returns `None` if the enum contains an unknown value deserialized from
1202        /// the integer representation of enums.
1203        pub fn name(&self) -> std::option::Option<&str> {
1204            match self {
1205                Self::Unspecified => std::option::Option::Some("STATE_UNSPECIFIED"),
1206                Self::Active => std::option::Option::Some("ACTIVE"),
1207                Self::Unavailable => std::option::Option::Some("UNAVAILABLE"),
1208                Self::UnknownValue(u) => u.0.name(),
1209            }
1210        }
1211    }
1212
1213    impl std::default::Default for State {
1214        fn default() -> Self {
1215            use std::convert::From;
1216            Self::from(0)
1217        }
1218    }
1219
1220    impl std::fmt::Display for State {
1221        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
1222            wkt::internal::display_enum(f, self.name(), self.value())
1223        }
1224    }
1225
1226    impl std::convert::From<i32> for State {
1227        fn from(value: i32) -> Self {
1228            match value {
1229                0 => Self::Unspecified,
1230                1 => Self::Active,
1231                2 => Self::Unavailable,
1232                _ => Self::UnknownValue(state::UnknownValue(
1233                    wkt::internal::UnknownEnumValue::Integer(value),
1234                )),
1235            }
1236        }
1237    }
1238
1239    impl std::convert::From<&str> for State {
1240        fn from(value: &str) -> Self {
1241            use std::string::ToString;
1242            match value {
1243                "STATE_UNSPECIFIED" => Self::Unspecified,
1244                "ACTIVE" => Self::Active,
1245                "UNAVAILABLE" => Self::Unavailable,
1246                _ => Self::UnknownValue(state::UnknownValue(
1247                    wkt::internal::UnknownEnumValue::String(value.to_string()),
1248                )),
1249            }
1250        }
1251    }
1252
1253    impl serde::ser::Serialize for State {
1254        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1255        where
1256            S: serde::Serializer,
1257        {
1258            match self {
1259                Self::Unspecified => serializer.serialize_i32(0),
1260                Self::Active => serializer.serialize_i32(1),
1261                Self::Unavailable => serializer.serialize_i32(2),
1262                Self::UnknownValue(u) => u.0.serialize(serializer),
1263            }
1264        }
1265    }
1266
1267    impl<'de> serde::de::Deserialize<'de> for State {
1268        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1269        where
1270            D: serde::Deserializer<'de>,
1271        {
1272            deserializer.deserialize_any(wkt::internal::EnumVisitor::<State>::new(
1273                ".google.cloud.workflows.v1.Workflow.State",
1274            ))
1275        }
1276    }
1277
1278    /// Describes the level of platform logging to apply to calls and call
1279    /// responses during workflow executions.
1280    ///
1281    /// # Working with unknown values
1282    ///
1283    /// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
1284    /// additional enum variants at any time. Adding new variants is not considered
1285    /// a breaking change. Applications should write their code in anticipation of:
1286    ///
1287    /// - New values appearing in future releases of the client library, **and**
1288    /// - New values received dynamically, without application changes.
1289    ///
1290    /// Please consult the [Working with enums] section in the user guide for some
1291    /// guidelines.
1292    ///
1293    /// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
1294    #[derive(Clone, Debug, PartialEq)]
1295    #[non_exhaustive]
1296    pub enum CallLogLevel {
1297        /// No call logging level specified.
1298        Unspecified,
1299        /// Log all call steps within workflows, all call returns, and all exceptions
1300        /// raised.
1301        LogAllCalls,
1302        /// Log only exceptions that are raised from call steps within workflows.
1303        LogErrorsOnly,
1304        /// Explicitly log nothing.
1305        LogNone,
1306        /// If set, the enum was initialized with an unknown value.
1307        ///
1308        /// Applications can examine the value using [CallLogLevel::value] or
1309        /// [CallLogLevel::name].
1310        UnknownValue(call_log_level::UnknownValue),
1311    }
1312
1313    #[doc(hidden)]
1314    pub mod call_log_level {
1315        #[allow(unused_imports)]
1316        use super::*;
1317        #[derive(Clone, Debug, PartialEq)]
1318        pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
1319    }
1320
1321    impl CallLogLevel {
1322        /// Gets the enum value.
1323        ///
1324        /// Returns `None` if the enum contains an unknown value deserialized from
1325        /// the string representation of enums.
1326        pub fn value(&self) -> std::option::Option<i32> {
1327            match self {
1328                Self::Unspecified => std::option::Option::Some(0),
1329                Self::LogAllCalls => std::option::Option::Some(1),
1330                Self::LogErrorsOnly => std::option::Option::Some(2),
1331                Self::LogNone => std::option::Option::Some(3),
1332                Self::UnknownValue(u) => u.0.value(),
1333            }
1334        }
1335
1336        /// Gets the enum value as a string.
1337        ///
1338        /// Returns `None` if the enum contains an unknown value deserialized from
1339        /// the integer representation of enums.
1340        pub fn name(&self) -> std::option::Option<&str> {
1341            match self {
1342                Self::Unspecified => std::option::Option::Some("CALL_LOG_LEVEL_UNSPECIFIED"),
1343                Self::LogAllCalls => std::option::Option::Some("LOG_ALL_CALLS"),
1344                Self::LogErrorsOnly => std::option::Option::Some("LOG_ERRORS_ONLY"),
1345                Self::LogNone => std::option::Option::Some("LOG_NONE"),
1346                Self::UnknownValue(u) => u.0.name(),
1347            }
1348        }
1349    }
1350
1351    impl std::default::Default for CallLogLevel {
1352        fn default() -> Self {
1353            use std::convert::From;
1354            Self::from(0)
1355        }
1356    }
1357
1358    impl std::fmt::Display for CallLogLevel {
1359        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
1360            wkt::internal::display_enum(f, self.name(), self.value())
1361        }
1362    }
1363
1364    impl std::convert::From<i32> for CallLogLevel {
1365        fn from(value: i32) -> Self {
1366            match value {
1367                0 => Self::Unspecified,
1368                1 => Self::LogAllCalls,
1369                2 => Self::LogErrorsOnly,
1370                3 => Self::LogNone,
1371                _ => Self::UnknownValue(call_log_level::UnknownValue(
1372                    wkt::internal::UnknownEnumValue::Integer(value),
1373                )),
1374            }
1375        }
1376    }
1377
1378    impl std::convert::From<&str> for CallLogLevel {
1379        fn from(value: &str) -> Self {
1380            use std::string::ToString;
1381            match value {
1382                "CALL_LOG_LEVEL_UNSPECIFIED" => Self::Unspecified,
1383                "LOG_ALL_CALLS" => Self::LogAllCalls,
1384                "LOG_ERRORS_ONLY" => Self::LogErrorsOnly,
1385                "LOG_NONE" => Self::LogNone,
1386                _ => Self::UnknownValue(call_log_level::UnknownValue(
1387                    wkt::internal::UnknownEnumValue::String(value.to_string()),
1388                )),
1389            }
1390        }
1391    }
1392
1393    impl serde::ser::Serialize for CallLogLevel {
1394        fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1395        where
1396            S: serde::Serializer,
1397        {
1398            match self {
1399                Self::Unspecified => serializer.serialize_i32(0),
1400                Self::LogAllCalls => serializer.serialize_i32(1),
1401                Self::LogErrorsOnly => serializer.serialize_i32(2),
1402                Self::LogNone => serializer.serialize_i32(3),
1403                Self::UnknownValue(u) => u.0.serialize(serializer),
1404            }
1405        }
1406    }
1407
1408    impl<'de> serde::de::Deserialize<'de> for CallLogLevel {
1409        fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1410        where
1411            D: serde::Deserializer<'de>,
1412        {
1413            deserializer.deserialize_any(wkt::internal::EnumVisitor::<CallLogLevel>::new(
1414                ".google.cloud.workflows.v1.Workflow.CallLogLevel",
1415            ))
1416        }
1417    }
1418
1419    /// Required. Location of the workflow source code.
1420    /// Modifying this field for an existing workflow results in a new workflow
1421    /// revision.
1422    #[derive(Clone, Debug, PartialEq)]
1423    #[non_exhaustive]
1424    pub enum SourceCode {
1425        /// Workflow code to be executed. The size limit is 128KB.
1426        SourceContents(std::string::String),
1427    }
1428}
1429
1430/// Request for the
1431/// [ListWorkflows][google.cloud.workflows.v1.Workflows.ListWorkflows]
1432/// method.
1433///
1434/// [google.cloud.workflows.v1.Workflows.ListWorkflows]: crate::client::Workflows::list_workflows
1435#[derive(Clone, Default, PartialEq)]
1436#[non_exhaustive]
1437pub struct ListWorkflowsRequest {
1438    /// Required. Project and location from which the workflows should be listed.
1439    /// Format: projects/{project}/locations/{location}
1440    pub parent: std::string::String,
1441
1442    /// Maximum number of workflows to return per call. The service might return
1443    /// fewer than this value even if not at the end of the collection. If a value
1444    /// is not specified, a default value of 500 is used. The maximum permitted
1445    /// value is 1000 and values greater than 1000 are coerced down to 1000.
1446    pub page_size: i32,
1447
1448    /// A page token, received from a previous `ListWorkflows` call.
1449    /// Provide this to retrieve the subsequent page.
1450    ///
1451    /// When paginating, all other parameters provided to `ListWorkflows` must
1452    /// match the call that provided the page token.
1453    pub page_token: std::string::String,
1454
1455    /// Filter to restrict results to specific workflows.
1456    /// For details, see <a href="https://google.aip.dev/160"
1457    /// class="external"\>AIP-160</a>.
1458    ///
1459    /// For example, if you are using the Google APIs Explorer:
1460    ///
1461    /// `state="SUCCEEDED"`
1462    ///
1463    /// or
1464    ///
1465    /// `createTime>"2023-08-01" AND state="FAILED"`
1466    pub filter: std::string::String,
1467
1468    /// Comma-separated list of fields that specify the order of the results.
1469    /// Default sorting order for a field is ascending. To specify descending order
1470    /// for a field, append a "desc" suffix.
1471    /// If not specified, the results are returned in an unspecified order.
1472    pub order_by: std::string::String,
1473
1474    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1475}
1476
1477impl ListWorkflowsRequest {
1478    pub fn new() -> Self {
1479        std::default::Default::default()
1480    }
1481
1482    /// Sets the value of [parent][crate::model::ListWorkflowsRequest::parent].
1483    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1484        self.parent = v.into();
1485        self
1486    }
1487
1488    /// Sets the value of [page_size][crate::model::ListWorkflowsRequest::page_size].
1489    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
1490        self.page_size = v.into();
1491        self
1492    }
1493
1494    /// Sets the value of [page_token][crate::model::ListWorkflowsRequest::page_token].
1495    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1496        self.page_token = v.into();
1497        self
1498    }
1499
1500    /// Sets the value of [filter][crate::model::ListWorkflowsRequest::filter].
1501    pub fn set_filter<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1502        self.filter = v.into();
1503        self
1504    }
1505
1506    /// Sets the value of [order_by][crate::model::ListWorkflowsRequest::order_by].
1507    pub fn set_order_by<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1508        self.order_by = v.into();
1509        self
1510    }
1511}
1512
1513impl wkt::message::Message for ListWorkflowsRequest {
1514    fn typename() -> &'static str {
1515        "type.googleapis.com/google.cloud.workflows.v1.ListWorkflowsRequest"
1516    }
1517}
1518
1519#[doc(hidden)]
1520impl<'de> serde::de::Deserialize<'de> for ListWorkflowsRequest {
1521    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1522    where
1523        D: serde::Deserializer<'de>,
1524    {
1525        #[allow(non_camel_case_types)]
1526        #[doc(hidden)]
1527        #[derive(PartialEq, Eq, Hash)]
1528        enum __FieldTag {
1529            __parent,
1530            __page_size,
1531            __page_token,
1532            __filter,
1533            __order_by,
1534            Unknown(std::string::String),
1535        }
1536        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1537            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1538            where
1539                D: serde::Deserializer<'de>,
1540            {
1541                struct Visitor;
1542                impl<'de> serde::de::Visitor<'de> for Visitor {
1543                    type Value = __FieldTag;
1544                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1545                        formatter.write_str("a field name for ListWorkflowsRequest")
1546                    }
1547                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1548                    where
1549                        E: serde::de::Error,
1550                    {
1551                        use std::result::Result::Ok;
1552                        use std::string::ToString;
1553                        match value {
1554                            "parent" => Ok(__FieldTag::__parent),
1555                            "pageSize" => Ok(__FieldTag::__page_size),
1556                            "page_size" => Ok(__FieldTag::__page_size),
1557                            "pageToken" => Ok(__FieldTag::__page_token),
1558                            "page_token" => Ok(__FieldTag::__page_token),
1559                            "filter" => Ok(__FieldTag::__filter),
1560                            "orderBy" => Ok(__FieldTag::__order_by),
1561                            "order_by" => Ok(__FieldTag::__order_by),
1562                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1563                        }
1564                    }
1565                }
1566                deserializer.deserialize_identifier(Visitor)
1567            }
1568        }
1569        struct Visitor;
1570        impl<'de> serde::de::Visitor<'de> for Visitor {
1571            type Value = ListWorkflowsRequest;
1572            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1573                formatter.write_str("struct ListWorkflowsRequest")
1574            }
1575            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1576            where
1577                A: serde::de::MapAccess<'de>,
1578            {
1579                #[allow(unused_imports)]
1580                use serde::de::Error;
1581                use std::option::Option::Some;
1582                let mut fields = std::collections::HashSet::new();
1583                let mut result = Self::Value::new();
1584                while let Some(tag) = map.next_key::<__FieldTag>()? {
1585                    #[allow(clippy::match_single_binding)]
1586                    match tag {
1587                        __FieldTag::__parent => {
1588                            if !fields.insert(__FieldTag::__parent) {
1589                                return std::result::Result::Err(A::Error::duplicate_field(
1590                                    "multiple values for parent",
1591                                ));
1592                            }
1593                            result.parent = map
1594                                .next_value::<std::option::Option<std::string::String>>()?
1595                                .unwrap_or_default();
1596                        }
1597                        __FieldTag::__page_size => {
1598                            if !fields.insert(__FieldTag::__page_size) {
1599                                return std::result::Result::Err(A::Error::duplicate_field(
1600                                    "multiple values for page_size",
1601                                ));
1602                            }
1603                            struct __With(std::option::Option<i32>);
1604                            impl<'de> serde::de::Deserialize<'de> for __With {
1605                                fn deserialize<D>(
1606                                    deserializer: D,
1607                                ) -> std::result::Result<Self, D::Error>
1608                                where
1609                                    D: serde::de::Deserializer<'de>,
1610                                {
1611                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
1612                                }
1613                            }
1614                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
1615                        }
1616                        __FieldTag::__page_token => {
1617                            if !fields.insert(__FieldTag::__page_token) {
1618                                return std::result::Result::Err(A::Error::duplicate_field(
1619                                    "multiple values for page_token",
1620                                ));
1621                            }
1622                            result.page_token = map
1623                                .next_value::<std::option::Option<std::string::String>>()?
1624                                .unwrap_or_default();
1625                        }
1626                        __FieldTag::__filter => {
1627                            if !fields.insert(__FieldTag::__filter) {
1628                                return std::result::Result::Err(A::Error::duplicate_field(
1629                                    "multiple values for filter",
1630                                ));
1631                            }
1632                            result.filter = map
1633                                .next_value::<std::option::Option<std::string::String>>()?
1634                                .unwrap_or_default();
1635                        }
1636                        __FieldTag::__order_by => {
1637                            if !fields.insert(__FieldTag::__order_by) {
1638                                return std::result::Result::Err(A::Error::duplicate_field(
1639                                    "multiple values for order_by",
1640                                ));
1641                            }
1642                            result.order_by = map
1643                                .next_value::<std::option::Option<std::string::String>>()?
1644                                .unwrap_or_default();
1645                        }
1646                        __FieldTag::Unknown(key) => {
1647                            let value = map.next_value::<serde_json::Value>()?;
1648                            result._unknown_fields.insert(key, value);
1649                        }
1650                    }
1651                }
1652                std::result::Result::Ok(result)
1653            }
1654        }
1655        deserializer.deserialize_any(Visitor)
1656    }
1657}
1658
1659#[doc(hidden)]
1660impl serde::ser::Serialize for ListWorkflowsRequest {
1661    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1662    where
1663        S: serde::ser::Serializer,
1664    {
1665        use serde::ser::SerializeMap;
1666        #[allow(unused_imports)]
1667        use std::option::Option::Some;
1668        let mut state = serializer.serialize_map(std::option::Option::None)?;
1669        if !self.parent.is_empty() {
1670            state.serialize_entry("parent", &self.parent)?;
1671        }
1672        if !wkt::internal::is_default(&self.page_size) {
1673            struct __With<'a>(&'a i32);
1674            impl<'a> serde::ser::Serialize for __With<'a> {
1675                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1676                where
1677                    S: serde::ser::Serializer,
1678                {
1679                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
1680                }
1681            }
1682            state.serialize_entry("pageSize", &__With(&self.page_size))?;
1683        }
1684        if !self.page_token.is_empty() {
1685            state.serialize_entry("pageToken", &self.page_token)?;
1686        }
1687        if !self.filter.is_empty() {
1688            state.serialize_entry("filter", &self.filter)?;
1689        }
1690        if !self.order_by.is_empty() {
1691            state.serialize_entry("orderBy", &self.order_by)?;
1692        }
1693        if !self._unknown_fields.is_empty() {
1694            for (key, value) in self._unknown_fields.iter() {
1695                state.serialize_entry(key, &value)?;
1696            }
1697        }
1698        state.end()
1699    }
1700}
1701
1702impl std::fmt::Debug for ListWorkflowsRequest {
1703    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1704        let mut debug_struct = f.debug_struct("ListWorkflowsRequest");
1705        debug_struct.field("parent", &self.parent);
1706        debug_struct.field("page_size", &self.page_size);
1707        debug_struct.field("page_token", &self.page_token);
1708        debug_struct.field("filter", &self.filter);
1709        debug_struct.field("order_by", &self.order_by);
1710        if !self._unknown_fields.is_empty() {
1711            debug_struct.field("_unknown_fields", &self._unknown_fields);
1712        }
1713        debug_struct.finish()
1714    }
1715}
1716
1717/// Response for the
1718/// [ListWorkflows][google.cloud.workflows.v1.Workflows.ListWorkflows]
1719/// method.
1720///
1721/// [google.cloud.workflows.v1.Workflows.ListWorkflows]: crate::client::Workflows::list_workflows
1722#[derive(Clone, Default, PartialEq)]
1723#[non_exhaustive]
1724pub struct ListWorkflowsResponse {
1725    /// The workflows that match the request.
1726    pub workflows: std::vec::Vec<crate::model::Workflow>,
1727
1728    /// A token, which can be sent as `page_token` to retrieve the next page.
1729    /// If this field is omitted, there are no subsequent pages.
1730    pub next_page_token: std::string::String,
1731
1732    /// Unreachable resources.
1733    pub unreachable: std::vec::Vec<std::string::String>,
1734
1735    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1736}
1737
1738impl ListWorkflowsResponse {
1739    pub fn new() -> Self {
1740        std::default::Default::default()
1741    }
1742
1743    /// Sets the value of [workflows][crate::model::ListWorkflowsResponse::workflows].
1744    pub fn set_workflows<T, V>(mut self, v: T) -> Self
1745    where
1746        T: std::iter::IntoIterator<Item = V>,
1747        V: std::convert::Into<crate::model::Workflow>,
1748    {
1749        use std::iter::Iterator;
1750        self.workflows = v.into_iter().map(|i| i.into()).collect();
1751        self
1752    }
1753
1754    /// Sets the value of [next_page_token][crate::model::ListWorkflowsResponse::next_page_token].
1755    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1756        self.next_page_token = v.into();
1757        self
1758    }
1759
1760    /// Sets the value of [unreachable][crate::model::ListWorkflowsResponse::unreachable].
1761    pub fn set_unreachable<T, V>(mut self, v: T) -> Self
1762    where
1763        T: std::iter::IntoIterator<Item = V>,
1764        V: std::convert::Into<std::string::String>,
1765    {
1766        use std::iter::Iterator;
1767        self.unreachable = v.into_iter().map(|i| i.into()).collect();
1768        self
1769    }
1770}
1771
1772impl wkt::message::Message for ListWorkflowsResponse {
1773    fn typename() -> &'static str {
1774        "type.googleapis.com/google.cloud.workflows.v1.ListWorkflowsResponse"
1775    }
1776}
1777
1778#[doc(hidden)]
1779impl gax::paginator::internal::PageableResponse for ListWorkflowsResponse {
1780    type PageItem = crate::model::Workflow;
1781
1782    fn items(self) -> std::vec::Vec<Self::PageItem> {
1783        self.workflows
1784    }
1785
1786    fn next_page_token(&self) -> std::string::String {
1787        use std::clone::Clone;
1788        self.next_page_token.clone()
1789    }
1790}
1791
1792#[doc(hidden)]
1793impl<'de> serde::de::Deserialize<'de> for ListWorkflowsResponse {
1794    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1795    where
1796        D: serde::Deserializer<'de>,
1797    {
1798        #[allow(non_camel_case_types)]
1799        #[doc(hidden)]
1800        #[derive(PartialEq, Eq, Hash)]
1801        enum __FieldTag {
1802            __workflows,
1803            __next_page_token,
1804            __unreachable,
1805            Unknown(std::string::String),
1806        }
1807        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1808            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1809            where
1810                D: serde::Deserializer<'de>,
1811            {
1812                struct Visitor;
1813                impl<'de> serde::de::Visitor<'de> for Visitor {
1814                    type Value = __FieldTag;
1815                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1816                        formatter.write_str("a field name for ListWorkflowsResponse")
1817                    }
1818                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
1819                    where
1820                        E: serde::de::Error,
1821                    {
1822                        use std::result::Result::Ok;
1823                        use std::string::ToString;
1824                        match value {
1825                            "workflows" => Ok(__FieldTag::__workflows),
1826                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
1827                            "next_page_token" => Ok(__FieldTag::__next_page_token),
1828                            "unreachable" => Ok(__FieldTag::__unreachable),
1829                            _ => Ok(__FieldTag::Unknown(value.to_string())),
1830                        }
1831                    }
1832                }
1833                deserializer.deserialize_identifier(Visitor)
1834            }
1835        }
1836        struct Visitor;
1837        impl<'de> serde::de::Visitor<'de> for Visitor {
1838            type Value = ListWorkflowsResponse;
1839            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
1840                formatter.write_str("struct ListWorkflowsResponse")
1841            }
1842            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
1843            where
1844                A: serde::de::MapAccess<'de>,
1845            {
1846                #[allow(unused_imports)]
1847                use serde::de::Error;
1848                use std::option::Option::Some;
1849                let mut fields = std::collections::HashSet::new();
1850                let mut result = Self::Value::new();
1851                while let Some(tag) = map.next_key::<__FieldTag>()? {
1852                    #[allow(clippy::match_single_binding)]
1853                    match tag {
1854                        __FieldTag::__workflows => {
1855                            if !fields.insert(__FieldTag::__workflows) {
1856                                return std::result::Result::Err(A::Error::duplicate_field(
1857                                    "multiple values for workflows",
1858                                ));
1859                            }
1860                            result.workflows = map.next_value::<std::option::Option<std::vec::Vec<crate::model::Workflow>>>()?.unwrap_or_default();
1861                        }
1862                        __FieldTag::__next_page_token => {
1863                            if !fields.insert(__FieldTag::__next_page_token) {
1864                                return std::result::Result::Err(A::Error::duplicate_field(
1865                                    "multiple values for next_page_token",
1866                                ));
1867                            }
1868                            result.next_page_token = map
1869                                .next_value::<std::option::Option<std::string::String>>()?
1870                                .unwrap_or_default();
1871                        }
1872                        __FieldTag::__unreachable => {
1873                            if !fields.insert(__FieldTag::__unreachable) {
1874                                return std::result::Result::Err(A::Error::duplicate_field(
1875                                    "multiple values for unreachable",
1876                                ));
1877                            }
1878                            result.unreachable = map.next_value::<std::option::Option<std::vec::Vec<std::string::String>>>()?.unwrap_or_default();
1879                        }
1880                        __FieldTag::Unknown(key) => {
1881                            let value = map.next_value::<serde_json::Value>()?;
1882                            result._unknown_fields.insert(key, value);
1883                        }
1884                    }
1885                }
1886                std::result::Result::Ok(result)
1887            }
1888        }
1889        deserializer.deserialize_any(Visitor)
1890    }
1891}
1892
1893#[doc(hidden)]
1894impl serde::ser::Serialize for ListWorkflowsResponse {
1895    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
1896    where
1897        S: serde::ser::Serializer,
1898    {
1899        use serde::ser::SerializeMap;
1900        #[allow(unused_imports)]
1901        use std::option::Option::Some;
1902        let mut state = serializer.serialize_map(std::option::Option::None)?;
1903        if !self.workflows.is_empty() {
1904            state.serialize_entry("workflows", &self.workflows)?;
1905        }
1906        if !self.next_page_token.is_empty() {
1907            state.serialize_entry("nextPageToken", &self.next_page_token)?;
1908        }
1909        if !self.unreachable.is_empty() {
1910            state.serialize_entry("unreachable", &self.unreachable)?;
1911        }
1912        if !self._unknown_fields.is_empty() {
1913            for (key, value) in self._unknown_fields.iter() {
1914                state.serialize_entry(key, &value)?;
1915            }
1916        }
1917        state.end()
1918    }
1919}
1920
1921impl std::fmt::Debug for ListWorkflowsResponse {
1922    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1923        let mut debug_struct = f.debug_struct("ListWorkflowsResponse");
1924        debug_struct.field("workflows", &self.workflows);
1925        debug_struct.field("next_page_token", &self.next_page_token);
1926        debug_struct.field("unreachable", &self.unreachable);
1927        if !self._unknown_fields.is_empty() {
1928            debug_struct.field("_unknown_fields", &self._unknown_fields);
1929        }
1930        debug_struct.finish()
1931    }
1932}
1933
1934/// Request for the
1935/// [GetWorkflow][google.cloud.workflows.v1.Workflows.GetWorkflow] method.
1936///
1937/// [google.cloud.workflows.v1.Workflows.GetWorkflow]: crate::client::Workflows::get_workflow
1938#[derive(Clone, Default, PartialEq)]
1939#[non_exhaustive]
1940pub struct GetWorkflowRequest {
1941    /// Required. Name of the workflow for which information should be retrieved.
1942    /// Format: projects/{project}/locations/{location}/workflows/{workflow}
1943    pub name: std::string::String,
1944
1945    /// Optional. The revision of the workflow to retrieve. If the revision_id is
1946    /// empty, the latest revision is retrieved.
1947    /// The format is "000001-a4d", where the first six characters define
1948    /// the zero-padded decimal revision number. They are followed by a hyphen and
1949    /// three hexadecimal characters.
1950    pub revision_id: std::string::String,
1951
1952    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
1953}
1954
1955impl GetWorkflowRequest {
1956    pub fn new() -> Self {
1957        std::default::Default::default()
1958    }
1959
1960    /// Sets the value of [name][crate::model::GetWorkflowRequest::name].
1961    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1962        self.name = v.into();
1963        self
1964    }
1965
1966    /// Sets the value of [revision_id][crate::model::GetWorkflowRequest::revision_id].
1967    pub fn set_revision_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
1968        self.revision_id = v.into();
1969        self
1970    }
1971}
1972
1973impl wkt::message::Message for GetWorkflowRequest {
1974    fn typename() -> &'static str {
1975        "type.googleapis.com/google.cloud.workflows.v1.GetWorkflowRequest"
1976    }
1977}
1978
1979#[doc(hidden)]
1980impl<'de> serde::de::Deserialize<'de> for GetWorkflowRequest {
1981    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1982    where
1983        D: serde::Deserializer<'de>,
1984    {
1985        #[allow(non_camel_case_types)]
1986        #[doc(hidden)]
1987        #[derive(PartialEq, Eq, Hash)]
1988        enum __FieldTag {
1989            __name,
1990            __revision_id,
1991            Unknown(std::string::String),
1992        }
1993        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
1994            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
1995            where
1996                D: serde::Deserializer<'de>,
1997            {
1998                struct Visitor;
1999                impl<'de> serde::de::Visitor<'de> for Visitor {
2000                    type Value = __FieldTag;
2001                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2002                        formatter.write_str("a field name for GetWorkflowRequest")
2003                    }
2004                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2005                    where
2006                        E: serde::de::Error,
2007                    {
2008                        use std::result::Result::Ok;
2009                        use std::string::ToString;
2010                        match value {
2011                            "name" => Ok(__FieldTag::__name),
2012                            "revisionId" => Ok(__FieldTag::__revision_id),
2013                            "revision_id" => Ok(__FieldTag::__revision_id),
2014                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2015                        }
2016                    }
2017                }
2018                deserializer.deserialize_identifier(Visitor)
2019            }
2020        }
2021        struct Visitor;
2022        impl<'de> serde::de::Visitor<'de> for Visitor {
2023            type Value = GetWorkflowRequest;
2024            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2025                formatter.write_str("struct GetWorkflowRequest")
2026            }
2027            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2028            where
2029                A: serde::de::MapAccess<'de>,
2030            {
2031                #[allow(unused_imports)]
2032                use serde::de::Error;
2033                use std::option::Option::Some;
2034                let mut fields = std::collections::HashSet::new();
2035                let mut result = Self::Value::new();
2036                while let Some(tag) = map.next_key::<__FieldTag>()? {
2037                    #[allow(clippy::match_single_binding)]
2038                    match tag {
2039                        __FieldTag::__name => {
2040                            if !fields.insert(__FieldTag::__name) {
2041                                return std::result::Result::Err(A::Error::duplicate_field(
2042                                    "multiple values for name",
2043                                ));
2044                            }
2045                            result.name = map
2046                                .next_value::<std::option::Option<std::string::String>>()?
2047                                .unwrap_or_default();
2048                        }
2049                        __FieldTag::__revision_id => {
2050                            if !fields.insert(__FieldTag::__revision_id) {
2051                                return std::result::Result::Err(A::Error::duplicate_field(
2052                                    "multiple values for revision_id",
2053                                ));
2054                            }
2055                            result.revision_id = map
2056                                .next_value::<std::option::Option<std::string::String>>()?
2057                                .unwrap_or_default();
2058                        }
2059                        __FieldTag::Unknown(key) => {
2060                            let value = map.next_value::<serde_json::Value>()?;
2061                            result._unknown_fields.insert(key, value);
2062                        }
2063                    }
2064                }
2065                std::result::Result::Ok(result)
2066            }
2067        }
2068        deserializer.deserialize_any(Visitor)
2069    }
2070}
2071
2072#[doc(hidden)]
2073impl serde::ser::Serialize for GetWorkflowRequest {
2074    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2075    where
2076        S: serde::ser::Serializer,
2077    {
2078        use serde::ser::SerializeMap;
2079        #[allow(unused_imports)]
2080        use std::option::Option::Some;
2081        let mut state = serializer.serialize_map(std::option::Option::None)?;
2082        if !self.name.is_empty() {
2083            state.serialize_entry("name", &self.name)?;
2084        }
2085        if !self.revision_id.is_empty() {
2086            state.serialize_entry("revisionId", &self.revision_id)?;
2087        }
2088        if !self._unknown_fields.is_empty() {
2089            for (key, value) in self._unknown_fields.iter() {
2090                state.serialize_entry(key, &value)?;
2091            }
2092        }
2093        state.end()
2094    }
2095}
2096
2097impl std::fmt::Debug for GetWorkflowRequest {
2098    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2099        let mut debug_struct = f.debug_struct("GetWorkflowRequest");
2100        debug_struct.field("name", &self.name);
2101        debug_struct.field("revision_id", &self.revision_id);
2102        if !self._unknown_fields.is_empty() {
2103            debug_struct.field("_unknown_fields", &self._unknown_fields);
2104        }
2105        debug_struct.finish()
2106    }
2107}
2108
2109/// Request for the
2110/// [CreateWorkflow][google.cloud.workflows.v1.Workflows.CreateWorkflow]
2111/// method.
2112///
2113/// [google.cloud.workflows.v1.Workflows.CreateWorkflow]: crate::client::Workflows::create_workflow
2114#[derive(Clone, Default, PartialEq)]
2115#[non_exhaustive]
2116pub struct CreateWorkflowRequest {
2117    /// Required. Project and location in which the workflow should be created.
2118    /// Format:  projects/{project}/locations/{location}
2119    pub parent: std::string::String,
2120
2121    /// Required. Workflow to be created.
2122    pub workflow: std::option::Option<crate::model::Workflow>,
2123
2124    /// Required. The ID of the workflow to be created. It has to fulfill the
2125    /// following requirements:
2126    ///
2127    /// * Must contain only letters, numbers, underscores and hyphens.
2128    /// * Must start with a letter.
2129    /// * Must be between 1-64 characters.
2130    /// * Must end with a number or a letter.
2131    /// * Must be unique within the customer project and location.
2132    pub workflow_id: std::string::String,
2133
2134    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2135}
2136
2137impl CreateWorkflowRequest {
2138    pub fn new() -> Self {
2139        std::default::Default::default()
2140    }
2141
2142    /// Sets the value of [parent][crate::model::CreateWorkflowRequest::parent].
2143    pub fn set_parent<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2144        self.parent = v.into();
2145        self
2146    }
2147
2148    /// Sets the value of [workflow][crate::model::CreateWorkflowRequest::workflow].
2149    pub fn set_workflow<T>(mut self, v: T) -> Self
2150    where
2151        T: std::convert::Into<crate::model::Workflow>,
2152    {
2153        self.workflow = std::option::Option::Some(v.into());
2154        self
2155    }
2156
2157    /// Sets or clears the value of [workflow][crate::model::CreateWorkflowRequest::workflow].
2158    pub fn set_or_clear_workflow<T>(mut self, v: std::option::Option<T>) -> Self
2159    where
2160        T: std::convert::Into<crate::model::Workflow>,
2161    {
2162        self.workflow = v.map(|x| x.into());
2163        self
2164    }
2165
2166    /// Sets the value of [workflow_id][crate::model::CreateWorkflowRequest::workflow_id].
2167    pub fn set_workflow_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2168        self.workflow_id = v.into();
2169        self
2170    }
2171}
2172
2173impl wkt::message::Message for CreateWorkflowRequest {
2174    fn typename() -> &'static str {
2175        "type.googleapis.com/google.cloud.workflows.v1.CreateWorkflowRequest"
2176    }
2177}
2178
2179#[doc(hidden)]
2180impl<'de> serde::de::Deserialize<'de> for CreateWorkflowRequest {
2181    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2182    where
2183        D: serde::Deserializer<'de>,
2184    {
2185        #[allow(non_camel_case_types)]
2186        #[doc(hidden)]
2187        #[derive(PartialEq, Eq, Hash)]
2188        enum __FieldTag {
2189            __parent,
2190            __workflow,
2191            __workflow_id,
2192            Unknown(std::string::String),
2193        }
2194        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2195            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2196            where
2197                D: serde::Deserializer<'de>,
2198            {
2199                struct Visitor;
2200                impl<'de> serde::de::Visitor<'de> for Visitor {
2201                    type Value = __FieldTag;
2202                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2203                        formatter.write_str("a field name for CreateWorkflowRequest")
2204                    }
2205                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2206                    where
2207                        E: serde::de::Error,
2208                    {
2209                        use std::result::Result::Ok;
2210                        use std::string::ToString;
2211                        match value {
2212                            "parent" => Ok(__FieldTag::__parent),
2213                            "workflow" => Ok(__FieldTag::__workflow),
2214                            "workflowId" => Ok(__FieldTag::__workflow_id),
2215                            "workflow_id" => Ok(__FieldTag::__workflow_id),
2216                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2217                        }
2218                    }
2219                }
2220                deserializer.deserialize_identifier(Visitor)
2221            }
2222        }
2223        struct Visitor;
2224        impl<'de> serde::de::Visitor<'de> for Visitor {
2225            type Value = CreateWorkflowRequest;
2226            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2227                formatter.write_str("struct CreateWorkflowRequest")
2228            }
2229            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2230            where
2231                A: serde::de::MapAccess<'de>,
2232            {
2233                #[allow(unused_imports)]
2234                use serde::de::Error;
2235                use std::option::Option::Some;
2236                let mut fields = std::collections::HashSet::new();
2237                let mut result = Self::Value::new();
2238                while let Some(tag) = map.next_key::<__FieldTag>()? {
2239                    #[allow(clippy::match_single_binding)]
2240                    match tag {
2241                        __FieldTag::__parent => {
2242                            if !fields.insert(__FieldTag::__parent) {
2243                                return std::result::Result::Err(A::Error::duplicate_field(
2244                                    "multiple values for parent",
2245                                ));
2246                            }
2247                            result.parent = map
2248                                .next_value::<std::option::Option<std::string::String>>()?
2249                                .unwrap_or_default();
2250                        }
2251                        __FieldTag::__workflow => {
2252                            if !fields.insert(__FieldTag::__workflow) {
2253                                return std::result::Result::Err(A::Error::duplicate_field(
2254                                    "multiple values for workflow",
2255                                ));
2256                            }
2257                            result.workflow =
2258                                map.next_value::<std::option::Option<crate::model::Workflow>>()?;
2259                        }
2260                        __FieldTag::__workflow_id => {
2261                            if !fields.insert(__FieldTag::__workflow_id) {
2262                                return std::result::Result::Err(A::Error::duplicate_field(
2263                                    "multiple values for workflow_id",
2264                                ));
2265                            }
2266                            result.workflow_id = map
2267                                .next_value::<std::option::Option<std::string::String>>()?
2268                                .unwrap_or_default();
2269                        }
2270                        __FieldTag::Unknown(key) => {
2271                            let value = map.next_value::<serde_json::Value>()?;
2272                            result._unknown_fields.insert(key, value);
2273                        }
2274                    }
2275                }
2276                std::result::Result::Ok(result)
2277            }
2278        }
2279        deserializer.deserialize_any(Visitor)
2280    }
2281}
2282
2283#[doc(hidden)]
2284impl serde::ser::Serialize for CreateWorkflowRequest {
2285    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2286    where
2287        S: serde::ser::Serializer,
2288    {
2289        use serde::ser::SerializeMap;
2290        #[allow(unused_imports)]
2291        use std::option::Option::Some;
2292        let mut state = serializer.serialize_map(std::option::Option::None)?;
2293        if !self.parent.is_empty() {
2294            state.serialize_entry("parent", &self.parent)?;
2295        }
2296        if self.workflow.is_some() {
2297            state.serialize_entry("workflow", &self.workflow)?;
2298        }
2299        if !self.workflow_id.is_empty() {
2300            state.serialize_entry("workflowId", &self.workflow_id)?;
2301        }
2302        if !self._unknown_fields.is_empty() {
2303            for (key, value) in self._unknown_fields.iter() {
2304                state.serialize_entry(key, &value)?;
2305            }
2306        }
2307        state.end()
2308    }
2309}
2310
2311impl std::fmt::Debug for CreateWorkflowRequest {
2312    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2313        let mut debug_struct = f.debug_struct("CreateWorkflowRequest");
2314        debug_struct.field("parent", &self.parent);
2315        debug_struct.field("workflow", &self.workflow);
2316        debug_struct.field("workflow_id", &self.workflow_id);
2317        if !self._unknown_fields.is_empty() {
2318            debug_struct.field("_unknown_fields", &self._unknown_fields);
2319        }
2320        debug_struct.finish()
2321    }
2322}
2323
2324/// Request for the
2325/// [DeleteWorkflow][google.cloud.workflows.v1.Workflows.DeleteWorkflow]
2326/// method.
2327///
2328/// [google.cloud.workflows.v1.Workflows.DeleteWorkflow]: crate::client::Workflows::delete_workflow
2329#[derive(Clone, Default, PartialEq)]
2330#[non_exhaustive]
2331pub struct DeleteWorkflowRequest {
2332    /// Required. Name of the workflow to be deleted.
2333    /// Format: projects/{project}/locations/{location}/workflows/{workflow}
2334    pub name: std::string::String,
2335
2336    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2337}
2338
2339impl DeleteWorkflowRequest {
2340    pub fn new() -> Self {
2341        std::default::Default::default()
2342    }
2343
2344    /// Sets the value of [name][crate::model::DeleteWorkflowRequest::name].
2345    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2346        self.name = v.into();
2347        self
2348    }
2349}
2350
2351impl wkt::message::Message for DeleteWorkflowRequest {
2352    fn typename() -> &'static str {
2353        "type.googleapis.com/google.cloud.workflows.v1.DeleteWorkflowRequest"
2354    }
2355}
2356
2357#[doc(hidden)]
2358impl<'de> serde::de::Deserialize<'de> for DeleteWorkflowRequest {
2359    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2360    where
2361        D: serde::Deserializer<'de>,
2362    {
2363        #[allow(non_camel_case_types)]
2364        #[doc(hidden)]
2365        #[derive(PartialEq, Eq, Hash)]
2366        enum __FieldTag {
2367            __name,
2368            Unknown(std::string::String),
2369        }
2370        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2371            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2372            where
2373                D: serde::Deserializer<'de>,
2374            {
2375                struct Visitor;
2376                impl<'de> serde::de::Visitor<'de> for Visitor {
2377                    type Value = __FieldTag;
2378                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2379                        formatter.write_str("a field name for DeleteWorkflowRequest")
2380                    }
2381                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2382                    where
2383                        E: serde::de::Error,
2384                    {
2385                        use std::result::Result::Ok;
2386                        use std::string::ToString;
2387                        match value {
2388                            "name" => Ok(__FieldTag::__name),
2389                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2390                        }
2391                    }
2392                }
2393                deserializer.deserialize_identifier(Visitor)
2394            }
2395        }
2396        struct Visitor;
2397        impl<'de> serde::de::Visitor<'de> for Visitor {
2398            type Value = DeleteWorkflowRequest;
2399            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2400                formatter.write_str("struct DeleteWorkflowRequest")
2401            }
2402            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2403            where
2404                A: serde::de::MapAccess<'de>,
2405            {
2406                #[allow(unused_imports)]
2407                use serde::de::Error;
2408                use std::option::Option::Some;
2409                let mut fields = std::collections::HashSet::new();
2410                let mut result = Self::Value::new();
2411                while let Some(tag) = map.next_key::<__FieldTag>()? {
2412                    #[allow(clippy::match_single_binding)]
2413                    match tag {
2414                        __FieldTag::__name => {
2415                            if !fields.insert(__FieldTag::__name) {
2416                                return std::result::Result::Err(A::Error::duplicate_field(
2417                                    "multiple values for name",
2418                                ));
2419                            }
2420                            result.name = map
2421                                .next_value::<std::option::Option<std::string::String>>()?
2422                                .unwrap_or_default();
2423                        }
2424                        __FieldTag::Unknown(key) => {
2425                            let value = map.next_value::<serde_json::Value>()?;
2426                            result._unknown_fields.insert(key, value);
2427                        }
2428                    }
2429                }
2430                std::result::Result::Ok(result)
2431            }
2432        }
2433        deserializer.deserialize_any(Visitor)
2434    }
2435}
2436
2437#[doc(hidden)]
2438impl serde::ser::Serialize for DeleteWorkflowRequest {
2439    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2440    where
2441        S: serde::ser::Serializer,
2442    {
2443        use serde::ser::SerializeMap;
2444        #[allow(unused_imports)]
2445        use std::option::Option::Some;
2446        let mut state = serializer.serialize_map(std::option::Option::None)?;
2447        if !self.name.is_empty() {
2448            state.serialize_entry("name", &self.name)?;
2449        }
2450        if !self._unknown_fields.is_empty() {
2451            for (key, value) in self._unknown_fields.iter() {
2452                state.serialize_entry(key, &value)?;
2453            }
2454        }
2455        state.end()
2456    }
2457}
2458
2459impl std::fmt::Debug for DeleteWorkflowRequest {
2460    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2461        let mut debug_struct = f.debug_struct("DeleteWorkflowRequest");
2462        debug_struct.field("name", &self.name);
2463        if !self._unknown_fields.is_empty() {
2464            debug_struct.field("_unknown_fields", &self._unknown_fields);
2465        }
2466        debug_struct.finish()
2467    }
2468}
2469
2470/// Request for the
2471/// [UpdateWorkflow][google.cloud.workflows.v1.Workflows.UpdateWorkflow]
2472/// method.
2473///
2474/// [google.cloud.workflows.v1.Workflows.UpdateWorkflow]: crate::client::Workflows::update_workflow
2475#[derive(Clone, Default, PartialEq)]
2476#[non_exhaustive]
2477pub struct UpdateWorkflowRequest {
2478    /// Required. Workflow to be updated.
2479    pub workflow: std::option::Option<crate::model::Workflow>,
2480
2481    /// List of fields to be updated. If not present, the entire workflow
2482    /// will be updated.
2483    pub update_mask: std::option::Option<wkt::FieldMask>,
2484
2485    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2486}
2487
2488impl UpdateWorkflowRequest {
2489    pub fn new() -> Self {
2490        std::default::Default::default()
2491    }
2492
2493    /// Sets the value of [workflow][crate::model::UpdateWorkflowRequest::workflow].
2494    pub fn set_workflow<T>(mut self, v: T) -> Self
2495    where
2496        T: std::convert::Into<crate::model::Workflow>,
2497    {
2498        self.workflow = std::option::Option::Some(v.into());
2499        self
2500    }
2501
2502    /// Sets or clears the value of [workflow][crate::model::UpdateWorkflowRequest::workflow].
2503    pub fn set_or_clear_workflow<T>(mut self, v: std::option::Option<T>) -> Self
2504    where
2505        T: std::convert::Into<crate::model::Workflow>,
2506    {
2507        self.workflow = v.map(|x| x.into());
2508        self
2509    }
2510
2511    /// Sets the value of [update_mask][crate::model::UpdateWorkflowRequest::update_mask].
2512    pub fn set_update_mask<T>(mut self, v: T) -> Self
2513    where
2514        T: std::convert::Into<wkt::FieldMask>,
2515    {
2516        self.update_mask = std::option::Option::Some(v.into());
2517        self
2518    }
2519
2520    /// Sets or clears the value of [update_mask][crate::model::UpdateWorkflowRequest::update_mask].
2521    pub fn set_or_clear_update_mask<T>(mut self, v: std::option::Option<T>) -> Self
2522    where
2523        T: std::convert::Into<wkt::FieldMask>,
2524    {
2525        self.update_mask = v.map(|x| x.into());
2526        self
2527    }
2528}
2529
2530impl wkt::message::Message for UpdateWorkflowRequest {
2531    fn typename() -> &'static str {
2532        "type.googleapis.com/google.cloud.workflows.v1.UpdateWorkflowRequest"
2533    }
2534}
2535
2536#[doc(hidden)]
2537impl<'de> serde::de::Deserialize<'de> for UpdateWorkflowRequest {
2538    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2539    where
2540        D: serde::Deserializer<'de>,
2541    {
2542        #[allow(non_camel_case_types)]
2543        #[doc(hidden)]
2544        #[derive(PartialEq, Eq, Hash)]
2545        enum __FieldTag {
2546            __workflow,
2547            __update_mask,
2548            Unknown(std::string::String),
2549        }
2550        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2551            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2552            where
2553                D: serde::Deserializer<'de>,
2554            {
2555                struct Visitor;
2556                impl<'de> serde::de::Visitor<'de> for Visitor {
2557                    type Value = __FieldTag;
2558                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2559                        formatter.write_str("a field name for UpdateWorkflowRequest")
2560                    }
2561                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2562                    where
2563                        E: serde::de::Error,
2564                    {
2565                        use std::result::Result::Ok;
2566                        use std::string::ToString;
2567                        match value {
2568                            "workflow" => Ok(__FieldTag::__workflow),
2569                            "updateMask" => Ok(__FieldTag::__update_mask),
2570                            "update_mask" => Ok(__FieldTag::__update_mask),
2571                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2572                        }
2573                    }
2574                }
2575                deserializer.deserialize_identifier(Visitor)
2576            }
2577        }
2578        struct Visitor;
2579        impl<'de> serde::de::Visitor<'de> for Visitor {
2580            type Value = UpdateWorkflowRequest;
2581            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2582                formatter.write_str("struct UpdateWorkflowRequest")
2583            }
2584            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2585            where
2586                A: serde::de::MapAccess<'de>,
2587            {
2588                #[allow(unused_imports)]
2589                use serde::de::Error;
2590                use std::option::Option::Some;
2591                let mut fields = std::collections::HashSet::new();
2592                let mut result = Self::Value::new();
2593                while let Some(tag) = map.next_key::<__FieldTag>()? {
2594                    #[allow(clippy::match_single_binding)]
2595                    match tag {
2596                        __FieldTag::__workflow => {
2597                            if !fields.insert(__FieldTag::__workflow) {
2598                                return std::result::Result::Err(A::Error::duplicate_field(
2599                                    "multiple values for workflow",
2600                                ));
2601                            }
2602                            result.workflow =
2603                                map.next_value::<std::option::Option<crate::model::Workflow>>()?;
2604                        }
2605                        __FieldTag::__update_mask => {
2606                            if !fields.insert(__FieldTag::__update_mask) {
2607                                return std::result::Result::Err(A::Error::duplicate_field(
2608                                    "multiple values for update_mask",
2609                                ));
2610                            }
2611                            result.update_mask =
2612                                map.next_value::<std::option::Option<wkt::FieldMask>>()?;
2613                        }
2614                        __FieldTag::Unknown(key) => {
2615                            let value = map.next_value::<serde_json::Value>()?;
2616                            result._unknown_fields.insert(key, value);
2617                        }
2618                    }
2619                }
2620                std::result::Result::Ok(result)
2621            }
2622        }
2623        deserializer.deserialize_any(Visitor)
2624    }
2625}
2626
2627#[doc(hidden)]
2628impl serde::ser::Serialize for UpdateWorkflowRequest {
2629    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2630    where
2631        S: serde::ser::Serializer,
2632    {
2633        use serde::ser::SerializeMap;
2634        #[allow(unused_imports)]
2635        use std::option::Option::Some;
2636        let mut state = serializer.serialize_map(std::option::Option::None)?;
2637        if self.workflow.is_some() {
2638            state.serialize_entry("workflow", &self.workflow)?;
2639        }
2640        if self.update_mask.is_some() {
2641            state.serialize_entry("updateMask", &self.update_mask)?;
2642        }
2643        if !self._unknown_fields.is_empty() {
2644            for (key, value) in self._unknown_fields.iter() {
2645                state.serialize_entry(key, &value)?;
2646            }
2647        }
2648        state.end()
2649    }
2650}
2651
2652impl std::fmt::Debug for UpdateWorkflowRequest {
2653    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2654        let mut debug_struct = f.debug_struct("UpdateWorkflowRequest");
2655        debug_struct.field("workflow", &self.workflow);
2656        debug_struct.field("update_mask", &self.update_mask);
2657        if !self._unknown_fields.is_empty() {
2658            debug_struct.field("_unknown_fields", &self._unknown_fields);
2659        }
2660        debug_struct.finish()
2661    }
2662}
2663
2664/// Represents the metadata of the long-running operation.
2665#[derive(Clone, Default, PartialEq)]
2666#[non_exhaustive]
2667pub struct OperationMetadata {
2668    /// The time the operation was created.
2669    pub create_time: std::option::Option<wkt::Timestamp>,
2670
2671    /// The time the operation finished running.
2672    pub end_time: std::option::Option<wkt::Timestamp>,
2673
2674    /// Server-defined resource path for the target of the operation.
2675    pub target: std::string::String,
2676
2677    /// Name of the verb executed by the operation.
2678    pub verb: std::string::String,
2679
2680    /// API version used to start the operation.
2681    pub api_version: std::string::String,
2682
2683    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2684}
2685
2686impl OperationMetadata {
2687    pub fn new() -> Self {
2688        std::default::Default::default()
2689    }
2690
2691    /// Sets the value of [create_time][crate::model::OperationMetadata::create_time].
2692    pub fn set_create_time<T>(mut self, v: T) -> Self
2693    where
2694        T: std::convert::Into<wkt::Timestamp>,
2695    {
2696        self.create_time = std::option::Option::Some(v.into());
2697        self
2698    }
2699
2700    /// Sets or clears the value of [create_time][crate::model::OperationMetadata::create_time].
2701    pub fn set_or_clear_create_time<T>(mut self, v: std::option::Option<T>) -> Self
2702    where
2703        T: std::convert::Into<wkt::Timestamp>,
2704    {
2705        self.create_time = v.map(|x| x.into());
2706        self
2707    }
2708
2709    /// Sets the value of [end_time][crate::model::OperationMetadata::end_time].
2710    pub fn set_end_time<T>(mut self, v: T) -> Self
2711    where
2712        T: std::convert::Into<wkt::Timestamp>,
2713    {
2714        self.end_time = std::option::Option::Some(v.into());
2715        self
2716    }
2717
2718    /// Sets or clears the value of [end_time][crate::model::OperationMetadata::end_time].
2719    pub fn set_or_clear_end_time<T>(mut self, v: std::option::Option<T>) -> Self
2720    where
2721        T: std::convert::Into<wkt::Timestamp>,
2722    {
2723        self.end_time = v.map(|x| x.into());
2724        self
2725    }
2726
2727    /// Sets the value of [target][crate::model::OperationMetadata::target].
2728    pub fn set_target<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2729        self.target = v.into();
2730        self
2731    }
2732
2733    /// Sets the value of [verb][crate::model::OperationMetadata::verb].
2734    pub fn set_verb<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2735        self.verb = v.into();
2736        self
2737    }
2738
2739    /// Sets the value of [api_version][crate::model::OperationMetadata::api_version].
2740    pub fn set_api_version<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2741        self.api_version = v.into();
2742        self
2743    }
2744}
2745
2746impl wkt::message::Message for OperationMetadata {
2747    fn typename() -> &'static str {
2748        "type.googleapis.com/google.cloud.workflows.v1.OperationMetadata"
2749    }
2750}
2751
2752#[doc(hidden)]
2753impl<'de> serde::de::Deserialize<'de> for OperationMetadata {
2754    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2755    where
2756        D: serde::Deserializer<'de>,
2757    {
2758        #[allow(non_camel_case_types)]
2759        #[doc(hidden)]
2760        #[derive(PartialEq, Eq, Hash)]
2761        enum __FieldTag {
2762            __create_time,
2763            __end_time,
2764            __target,
2765            __verb,
2766            __api_version,
2767            Unknown(std::string::String),
2768        }
2769        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
2770            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2771            where
2772                D: serde::Deserializer<'de>,
2773            {
2774                struct Visitor;
2775                impl<'de> serde::de::Visitor<'de> for Visitor {
2776                    type Value = __FieldTag;
2777                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2778                        formatter.write_str("a field name for OperationMetadata")
2779                    }
2780                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2781                    where
2782                        E: serde::de::Error,
2783                    {
2784                        use std::result::Result::Ok;
2785                        use std::string::ToString;
2786                        match value {
2787                            "createTime" => Ok(__FieldTag::__create_time),
2788                            "create_time" => Ok(__FieldTag::__create_time),
2789                            "endTime" => Ok(__FieldTag::__end_time),
2790                            "end_time" => Ok(__FieldTag::__end_time),
2791                            "target" => Ok(__FieldTag::__target),
2792                            "verb" => Ok(__FieldTag::__verb),
2793                            "apiVersion" => Ok(__FieldTag::__api_version),
2794                            "api_version" => Ok(__FieldTag::__api_version),
2795                            _ => Ok(__FieldTag::Unknown(value.to_string())),
2796                        }
2797                    }
2798                }
2799                deserializer.deserialize_identifier(Visitor)
2800            }
2801        }
2802        struct Visitor;
2803        impl<'de> serde::de::Visitor<'de> for Visitor {
2804            type Value = OperationMetadata;
2805            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
2806                formatter.write_str("struct OperationMetadata")
2807            }
2808            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
2809            where
2810                A: serde::de::MapAccess<'de>,
2811            {
2812                #[allow(unused_imports)]
2813                use serde::de::Error;
2814                use std::option::Option::Some;
2815                let mut fields = std::collections::HashSet::new();
2816                let mut result = Self::Value::new();
2817                while let Some(tag) = map.next_key::<__FieldTag>()? {
2818                    #[allow(clippy::match_single_binding)]
2819                    match tag {
2820                        __FieldTag::__create_time => {
2821                            if !fields.insert(__FieldTag::__create_time) {
2822                                return std::result::Result::Err(A::Error::duplicate_field(
2823                                    "multiple values for create_time",
2824                                ));
2825                            }
2826                            result.create_time =
2827                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
2828                        }
2829                        __FieldTag::__end_time => {
2830                            if !fields.insert(__FieldTag::__end_time) {
2831                                return std::result::Result::Err(A::Error::duplicate_field(
2832                                    "multiple values for end_time",
2833                                ));
2834                            }
2835                            result.end_time =
2836                                map.next_value::<std::option::Option<wkt::Timestamp>>()?;
2837                        }
2838                        __FieldTag::__target => {
2839                            if !fields.insert(__FieldTag::__target) {
2840                                return std::result::Result::Err(A::Error::duplicate_field(
2841                                    "multiple values for target",
2842                                ));
2843                            }
2844                            result.target = map
2845                                .next_value::<std::option::Option<std::string::String>>()?
2846                                .unwrap_or_default();
2847                        }
2848                        __FieldTag::__verb => {
2849                            if !fields.insert(__FieldTag::__verb) {
2850                                return std::result::Result::Err(A::Error::duplicate_field(
2851                                    "multiple values for verb",
2852                                ));
2853                            }
2854                            result.verb = map
2855                                .next_value::<std::option::Option<std::string::String>>()?
2856                                .unwrap_or_default();
2857                        }
2858                        __FieldTag::__api_version => {
2859                            if !fields.insert(__FieldTag::__api_version) {
2860                                return std::result::Result::Err(A::Error::duplicate_field(
2861                                    "multiple values for api_version",
2862                                ));
2863                            }
2864                            result.api_version = map
2865                                .next_value::<std::option::Option<std::string::String>>()?
2866                                .unwrap_or_default();
2867                        }
2868                        __FieldTag::Unknown(key) => {
2869                            let value = map.next_value::<serde_json::Value>()?;
2870                            result._unknown_fields.insert(key, value);
2871                        }
2872                    }
2873                }
2874                std::result::Result::Ok(result)
2875            }
2876        }
2877        deserializer.deserialize_any(Visitor)
2878    }
2879}
2880
2881#[doc(hidden)]
2882impl serde::ser::Serialize for OperationMetadata {
2883    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2884    where
2885        S: serde::ser::Serializer,
2886    {
2887        use serde::ser::SerializeMap;
2888        #[allow(unused_imports)]
2889        use std::option::Option::Some;
2890        let mut state = serializer.serialize_map(std::option::Option::None)?;
2891        if self.create_time.is_some() {
2892            state.serialize_entry("createTime", &self.create_time)?;
2893        }
2894        if self.end_time.is_some() {
2895            state.serialize_entry("endTime", &self.end_time)?;
2896        }
2897        if !self.target.is_empty() {
2898            state.serialize_entry("target", &self.target)?;
2899        }
2900        if !self.verb.is_empty() {
2901            state.serialize_entry("verb", &self.verb)?;
2902        }
2903        if !self.api_version.is_empty() {
2904            state.serialize_entry("apiVersion", &self.api_version)?;
2905        }
2906        if !self._unknown_fields.is_empty() {
2907            for (key, value) in self._unknown_fields.iter() {
2908                state.serialize_entry(key, &value)?;
2909            }
2910        }
2911        state.end()
2912    }
2913}
2914
2915impl std::fmt::Debug for OperationMetadata {
2916    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2917        let mut debug_struct = f.debug_struct("OperationMetadata");
2918        debug_struct.field("create_time", &self.create_time);
2919        debug_struct.field("end_time", &self.end_time);
2920        debug_struct.field("target", &self.target);
2921        debug_struct.field("verb", &self.verb);
2922        debug_struct.field("api_version", &self.api_version);
2923        if !self._unknown_fields.is_empty() {
2924            debug_struct.field("_unknown_fields", &self._unknown_fields);
2925        }
2926        debug_struct.finish()
2927    }
2928}
2929
2930/// Request for the
2931/// [ListWorkflowRevisions][google.cloud.workflows.v1.Workflows.ListWorkflowRevisions]
2932/// method.
2933///
2934/// [google.cloud.workflows.v1.Workflows.ListWorkflowRevisions]: crate::client::Workflows::list_workflow_revisions
2935#[derive(Clone, Default, PartialEq)]
2936#[non_exhaustive]
2937pub struct ListWorkflowRevisionsRequest {
2938    /// Required. Workflow for which the revisions should be listed.
2939    /// Format: projects/{project}/locations/{location}/workflows/{workflow}
2940    pub name: std::string::String,
2941
2942    /// The maximum number of revisions to return per page. If a value is not
2943    /// specified, a default value of 20 is used. The maximum permitted value is
2944    /// 100. Values greater than 100 are coerced down to 100.
2945    pub page_size: i32,
2946
2947    /// The page token, received from a previous ListWorkflowRevisions call.
2948    /// Provide this to retrieve the subsequent page.
2949    pub page_token: std::string::String,
2950
2951    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
2952}
2953
2954impl ListWorkflowRevisionsRequest {
2955    pub fn new() -> Self {
2956        std::default::Default::default()
2957    }
2958
2959    /// Sets the value of [name][crate::model::ListWorkflowRevisionsRequest::name].
2960    pub fn set_name<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2961        self.name = v.into();
2962        self
2963    }
2964
2965    /// Sets the value of [page_size][crate::model::ListWorkflowRevisionsRequest::page_size].
2966    pub fn set_page_size<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
2967        self.page_size = v.into();
2968        self
2969    }
2970
2971    /// Sets the value of [page_token][crate::model::ListWorkflowRevisionsRequest::page_token].
2972    pub fn set_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
2973        self.page_token = v.into();
2974        self
2975    }
2976}
2977
2978impl wkt::message::Message for ListWorkflowRevisionsRequest {
2979    fn typename() -> &'static str {
2980        "type.googleapis.com/google.cloud.workflows.v1.ListWorkflowRevisionsRequest"
2981    }
2982}
2983
2984#[doc(hidden)]
2985impl<'de> serde::de::Deserialize<'de> for ListWorkflowRevisionsRequest {
2986    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2987    where
2988        D: serde::Deserializer<'de>,
2989    {
2990        #[allow(non_camel_case_types)]
2991        #[doc(hidden)]
2992        #[derive(PartialEq, Eq, Hash)]
2993        enum __FieldTag {
2994            __name,
2995            __page_size,
2996            __page_token,
2997            Unknown(std::string::String),
2998        }
2999        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
3000            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3001            where
3002                D: serde::Deserializer<'de>,
3003            {
3004                struct Visitor;
3005                impl<'de> serde::de::Visitor<'de> for Visitor {
3006                    type Value = __FieldTag;
3007                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3008                        formatter.write_str("a field name for ListWorkflowRevisionsRequest")
3009                    }
3010                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3011                    where
3012                        E: serde::de::Error,
3013                    {
3014                        use std::result::Result::Ok;
3015                        use std::string::ToString;
3016                        match value {
3017                            "name" => Ok(__FieldTag::__name),
3018                            "pageSize" => Ok(__FieldTag::__page_size),
3019                            "page_size" => Ok(__FieldTag::__page_size),
3020                            "pageToken" => Ok(__FieldTag::__page_token),
3021                            "page_token" => Ok(__FieldTag::__page_token),
3022                            _ => Ok(__FieldTag::Unknown(value.to_string())),
3023                        }
3024                    }
3025                }
3026                deserializer.deserialize_identifier(Visitor)
3027            }
3028        }
3029        struct Visitor;
3030        impl<'de> serde::de::Visitor<'de> for Visitor {
3031            type Value = ListWorkflowRevisionsRequest;
3032            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3033                formatter.write_str("struct ListWorkflowRevisionsRequest")
3034            }
3035            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3036            where
3037                A: serde::de::MapAccess<'de>,
3038            {
3039                #[allow(unused_imports)]
3040                use serde::de::Error;
3041                use std::option::Option::Some;
3042                let mut fields = std::collections::HashSet::new();
3043                let mut result = Self::Value::new();
3044                while let Some(tag) = map.next_key::<__FieldTag>()? {
3045                    #[allow(clippy::match_single_binding)]
3046                    match tag {
3047                        __FieldTag::__name => {
3048                            if !fields.insert(__FieldTag::__name) {
3049                                return std::result::Result::Err(A::Error::duplicate_field(
3050                                    "multiple values for name",
3051                                ));
3052                            }
3053                            result.name = map
3054                                .next_value::<std::option::Option<std::string::String>>()?
3055                                .unwrap_or_default();
3056                        }
3057                        __FieldTag::__page_size => {
3058                            if !fields.insert(__FieldTag::__page_size) {
3059                                return std::result::Result::Err(A::Error::duplicate_field(
3060                                    "multiple values for page_size",
3061                                ));
3062                            }
3063                            struct __With(std::option::Option<i32>);
3064                            impl<'de> serde::de::Deserialize<'de> for __With {
3065                                fn deserialize<D>(
3066                                    deserializer: D,
3067                                ) -> std::result::Result<Self, D::Error>
3068                                where
3069                                    D: serde::de::Deserializer<'de>,
3070                                {
3071                                    serde_with::As::< std::option::Option<wkt::internal::I32> >::deserialize(deserializer).map(__With)
3072                                }
3073                            }
3074                            result.page_size = map.next_value::<__With>()?.0.unwrap_or_default();
3075                        }
3076                        __FieldTag::__page_token => {
3077                            if !fields.insert(__FieldTag::__page_token) {
3078                                return std::result::Result::Err(A::Error::duplicate_field(
3079                                    "multiple values for page_token",
3080                                ));
3081                            }
3082                            result.page_token = map
3083                                .next_value::<std::option::Option<std::string::String>>()?
3084                                .unwrap_or_default();
3085                        }
3086                        __FieldTag::Unknown(key) => {
3087                            let value = map.next_value::<serde_json::Value>()?;
3088                            result._unknown_fields.insert(key, value);
3089                        }
3090                    }
3091                }
3092                std::result::Result::Ok(result)
3093            }
3094        }
3095        deserializer.deserialize_any(Visitor)
3096    }
3097}
3098
3099#[doc(hidden)]
3100impl serde::ser::Serialize for ListWorkflowRevisionsRequest {
3101    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3102    where
3103        S: serde::ser::Serializer,
3104    {
3105        use serde::ser::SerializeMap;
3106        #[allow(unused_imports)]
3107        use std::option::Option::Some;
3108        let mut state = serializer.serialize_map(std::option::Option::None)?;
3109        if !self.name.is_empty() {
3110            state.serialize_entry("name", &self.name)?;
3111        }
3112        if !wkt::internal::is_default(&self.page_size) {
3113            struct __With<'a>(&'a i32);
3114            impl<'a> serde::ser::Serialize for __With<'a> {
3115                fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3116                where
3117                    S: serde::ser::Serializer,
3118                {
3119                    serde_with::As::<wkt::internal::I32>::serialize(self.0, serializer)
3120                }
3121            }
3122            state.serialize_entry("pageSize", &__With(&self.page_size))?;
3123        }
3124        if !self.page_token.is_empty() {
3125            state.serialize_entry("pageToken", &self.page_token)?;
3126        }
3127        if !self._unknown_fields.is_empty() {
3128            for (key, value) in self._unknown_fields.iter() {
3129                state.serialize_entry(key, &value)?;
3130            }
3131        }
3132        state.end()
3133    }
3134}
3135
3136impl std::fmt::Debug for ListWorkflowRevisionsRequest {
3137    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3138        let mut debug_struct = f.debug_struct("ListWorkflowRevisionsRequest");
3139        debug_struct.field("name", &self.name);
3140        debug_struct.field("page_size", &self.page_size);
3141        debug_struct.field("page_token", &self.page_token);
3142        if !self._unknown_fields.is_empty() {
3143            debug_struct.field("_unknown_fields", &self._unknown_fields);
3144        }
3145        debug_struct.finish()
3146    }
3147}
3148
3149/// Response for the
3150/// [ListWorkflowRevisions][google.cloud.workflows.v1.Workflows.ListWorkflowRevisions]
3151/// method.
3152///
3153/// [google.cloud.workflows.v1.Workflows.ListWorkflowRevisions]: crate::client::Workflows::list_workflow_revisions
3154#[derive(Clone, Default, PartialEq)]
3155#[non_exhaustive]
3156pub struct ListWorkflowRevisionsResponse {
3157    /// The revisions of the workflow, ordered in reverse chronological order.
3158    pub workflows: std::vec::Vec<crate::model::Workflow>,
3159
3160    /// A token, which can be sent as `page_token` to retrieve the next page.
3161    /// If this field is omitted, there are no subsequent pages.
3162    pub next_page_token: std::string::String,
3163
3164    _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
3165}
3166
3167impl ListWorkflowRevisionsResponse {
3168    pub fn new() -> Self {
3169        std::default::Default::default()
3170    }
3171
3172    /// Sets the value of [workflows][crate::model::ListWorkflowRevisionsResponse::workflows].
3173    pub fn set_workflows<T, V>(mut self, v: T) -> Self
3174    where
3175        T: std::iter::IntoIterator<Item = V>,
3176        V: std::convert::Into<crate::model::Workflow>,
3177    {
3178        use std::iter::Iterator;
3179        self.workflows = v.into_iter().map(|i| i.into()).collect();
3180        self
3181    }
3182
3183    /// Sets the value of [next_page_token][crate::model::ListWorkflowRevisionsResponse::next_page_token].
3184    pub fn set_next_page_token<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
3185        self.next_page_token = v.into();
3186        self
3187    }
3188}
3189
3190impl wkt::message::Message for ListWorkflowRevisionsResponse {
3191    fn typename() -> &'static str {
3192        "type.googleapis.com/google.cloud.workflows.v1.ListWorkflowRevisionsResponse"
3193    }
3194}
3195
3196#[doc(hidden)]
3197impl gax::paginator::internal::PageableResponse for ListWorkflowRevisionsResponse {
3198    type PageItem = crate::model::Workflow;
3199
3200    fn items(self) -> std::vec::Vec<Self::PageItem> {
3201        self.workflows
3202    }
3203
3204    fn next_page_token(&self) -> std::string::String {
3205        use std::clone::Clone;
3206        self.next_page_token.clone()
3207    }
3208}
3209
3210#[doc(hidden)]
3211impl<'de> serde::de::Deserialize<'de> for ListWorkflowRevisionsResponse {
3212    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3213    where
3214        D: serde::Deserializer<'de>,
3215    {
3216        #[allow(non_camel_case_types)]
3217        #[doc(hidden)]
3218        #[derive(PartialEq, Eq, Hash)]
3219        enum __FieldTag {
3220            __workflows,
3221            __next_page_token,
3222            Unknown(std::string::String),
3223        }
3224        impl<'de> serde::de::Deserialize<'de> for __FieldTag {
3225            fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3226            where
3227                D: serde::Deserializer<'de>,
3228            {
3229                struct Visitor;
3230                impl<'de> serde::de::Visitor<'de> for Visitor {
3231                    type Value = __FieldTag;
3232                    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3233                        formatter.write_str("a field name for ListWorkflowRevisionsResponse")
3234                    }
3235                    fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
3236                    where
3237                        E: serde::de::Error,
3238                    {
3239                        use std::result::Result::Ok;
3240                        use std::string::ToString;
3241                        match value {
3242                            "workflows" => Ok(__FieldTag::__workflows),
3243                            "nextPageToken" => Ok(__FieldTag::__next_page_token),
3244                            "next_page_token" => Ok(__FieldTag::__next_page_token),
3245                            _ => Ok(__FieldTag::Unknown(value.to_string())),
3246                        }
3247                    }
3248                }
3249                deserializer.deserialize_identifier(Visitor)
3250            }
3251        }
3252        struct Visitor;
3253        impl<'de> serde::de::Visitor<'de> for Visitor {
3254            type Value = ListWorkflowRevisionsResponse;
3255            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
3256                formatter.write_str("struct ListWorkflowRevisionsResponse")
3257            }
3258            fn visit_map<A>(self, mut map: A) -> std::result::Result<Self::Value, A::Error>
3259            where
3260                A: serde::de::MapAccess<'de>,
3261            {
3262                #[allow(unused_imports)]
3263                use serde::de::Error;
3264                use std::option::Option::Some;
3265                let mut fields = std::collections::HashSet::new();
3266                let mut result = Self::Value::new();
3267                while let Some(tag) = map.next_key::<__FieldTag>()? {
3268                    #[allow(clippy::match_single_binding)]
3269                    match tag {
3270                        __FieldTag::__workflows => {
3271                            if !fields.insert(__FieldTag::__workflows) {
3272                                return std::result::Result::Err(A::Error::duplicate_field(
3273                                    "multiple values for workflows",
3274                                ));
3275                            }
3276                            result.workflows = map.next_value::<std::option::Option<std::vec::Vec<crate::model::Workflow>>>()?.unwrap_or_default();
3277                        }
3278                        __FieldTag::__next_page_token => {
3279                            if !fields.insert(__FieldTag::__next_page_token) {
3280                                return std::result::Result::Err(A::Error::duplicate_field(
3281                                    "multiple values for next_page_token",
3282                                ));
3283                            }
3284                            result.next_page_token = map
3285                                .next_value::<std::option::Option<std::string::String>>()?
3286                                .unwrap_or_default();
3287                        }
3288                        __FieldTag::Unknown(key) => {
3289                            let value = map.next_value::<serde_json::Value>()?;
3290                            result._unknown_fields.insert(key, value);
3291                        }
3292                    }
3293                }
3294                std::result::Result::Ok(result)
3295            }
3296        }
3297        deserializer.deserialize_any(Visitor)
3298    }
3299}
3300
3301#[doc(hidden)]
3302impl serde::ser::Serialize for ListWorkflowRevisionsResponse {
3303    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3304    where
3305        S: serde::ser::Serializer,
3306    {
3307        use serde::ser::SerializeMap;
3308        #[allow(unused_imports)]
3309        use std::option::Option::Some;
3310        let mut state = serializer.serialize_map(std::option::Option::None)?;
3311        if !self.workflows.is_empty() {
3312            state.serialize_entry("workflows", &self.workflows)?;
3313        }
3314        if !self.next_page_token.is_empty() {
3315            state.serialize_entry("nextPageToken", &self.next_page_token)?;
3316        }
3317        if !self._unknown_fields.is_empty() {
3318            for (key, value) in self._unknown_fields.iter() {
3319                state.serialize_entry(key, &value)?;
3320            }
3321        }
3322        state.end()
3323    }
3324}
3325
3326impl std::fmt::Debug for ListWorkflowRevisionsResponse {
3327    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3328        let mut debug_struct = f.debug_struct("ListWorkflowRevisionsResponse");
3329        debug_struct.field("workflows", &self.workflows);
3330        debug_struct.field("next_page_token", &self.next_page_token);
3331        if !self._unknown_fields.is_empty() {
3332            debug_struct.field("_unknown_fields", &self._unknown_fields);
3333        }
3334        debug_struct.finish()
3335    }
3336}
3337
3338/// Define possible options for enabling the execution history level.
3339///
3340/// # Working with unknown values
3341///
3342/// This enum is defined as `#[non_exhaustive]` because Google Cloud may add
3343/// additional enum variants at any time. Adding new variants is not considered
3344/// a breaking change. Applications should write their code in anticipation of:
3345///
3346/// - New values appearing in future releases of the client library, **and**
3347/// - New values received dynamically, without application changes.
3348///
3349/// Please consult the [Working with enums] section in the user guide for some
3350/// guidelines.
3351///
3352/// [Working with enums]: https://google-cloud-rust.github.io/working_with_enums.html
3353#[derive(Clone, Debug, PartialEq)]
3354#[non_exhaustive]
3355pub enum ExecutionHistoryLevel {
3356    /// The default/unset value.
3357    Unspecified,
3358    /// Enable execution history basic feature.
3359    ExecutionHistoryBasic,
3360    /// Enable execution history detailed feature.
3361    ExecutionHistoryDetailed,
3362    /// If set, the enum was initialized with an unknown value.
3363    ///
3364    /// Applications can examine the value using [ExecutionHistoryLevel::value] or
3365    /// [ExecutionHistoryLevel::name].
3366    UnknownValue(execution_history_level::UnknownValue),
3367}
3368
3369#[doc(hidden)]
3370pub mod execution_history_level {
3371    #[allow(unused_imports)]
3372    use super::*;
3373    #[derive(Clone, Debug, PartialEq)]
3374    pub struct UnknownValue(pub(crate) wkt::internal::UnknownEnumValue);
3375}
3376
3377impl ExecutionHistoryLevel {
3378    /// Gets the enum value.
3379    ///
3380    /// Returns `None` if the enum contains an unknown value deserialized from
3381    /// the string representation of enums.
3382    pub fn value(&self) -> std::option::Option<i32> {
3383        match self {
3384            Self::Unspecified => std::option::Option::Some(0),
3385            Self::ExecutionHistoryBasic => std::option::Option::Some(1),
3386            Self::ExecutionHistoryDetailed => std::option::Option::Some(2),
3387            Self::UnknownValue(u) => u.0.value(),
3388        }
3389    }
3390
3391    /// Gets the enum value as a string.
3392    ///
3393    /// Returns `None` if the enum contains an unknown value deserialized from
3394    /// the integer representation of enums.
3395    pub fn name(&self) -> std::option::Option<&str> {
3396        match self {
3397            Self::Unspecified => std::option::Option::Some("EXECUTION_HISTORY_LEVEL_UNSPECIFIED"),
3398            Self::ExecutionHistoryBasic => std::option::Option::Some("EXECUTION_HISTORY_BASIC"),
3399            Self::ExecutionHistoryDetailed => {
3400                std::option::Option::Some("EXECUTION_HISTORY_DETAILED")
3401            }
3402            Self::UnknownValue(u) => u.0.name(),
3403        }
3404    }
3405}
3406
3407impl std::default::Default for ExecutionHistoryLevel {
3408    fn default() -> Self {
3409        use std::convert::From;
3410        Self::from(0)
3411    }
3412}
3413
3414impl std::fmt::Display for ExecutionHistoryLevel {
3415    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
3416        wkt::internal::display_enum(f, self.name(), self.value())
3417    }
3418}
3419
3420impl std::convert::From<i32> for ExecutionHistoryLevel {
3421    fn from(value: i32) -> Self {
3422        match value {
3423            0 => Self::Unspecified,
3424            1 => Self::ExecutionHistoryBasic,
3425            2 => Self::ExecutionHistoryDetailed,
3426            _ => Self::UnknownValue(execution_history_level::UnknownValue(
3427                wkt::internal::UnknownEnumValue::Integer(value),
3428            )),
3429        }
3430    }
3431}
3432
3433impl std::convert::From<&str> for ExecutionHistoryLevel {
3434    fn from(value: &str) -> Self {
3435        use std::string::ToString;
3436        match value {
3437            "EXECUTION_HISTORY_LEVEL_UNSPECIFIED" => Self::Unspecified,
3438            "EXECUTION_HISTORY_BASIC" => Self::ExecutionHistoryBasic,
3439            "EXECUTION_HISTORY_DETAILED" => Self::ExecutionHistoryDetailed,
3440            _ => Self::UnknownValue(execution_history_level::UnknownValue(
3441                wkt::internal::UnknownEnumValue::String(value.to_string()),
3442            )),
3443        }
3444    }
3445}
3446
3447impl serde::ser::Serialize for ExecutionHistoryLevel {
3448    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3449    where
3450        S: serde::Serializer,
3451    {
3452        match self {
3453            Self::Unspecified => serializer.serialize_i32(0),
3454            Self::ExecutionHistoryBasic => serializer.serialize_i32(1),
3455            Self::ExecutionHistoryDetailed => serializer.serialize_i32(2),
3456            Self::UnknownValue(u) => u.0.serialize(serializer),
3457        }
3458    }
3459}
3460
3461impl<'de> serde::de::Deserialize<'de> for ExecutionHistoryLevel {
3462    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3463    where
3464        D: serde::Deserializer<'de>,
3465    {
3466        deserializer.deserialize_any(wkt::internal::EnumVisitor::<ExecutionHistoryLevel>::new(
3467            ".google.cloud.workflows.v1.ExecutionHistoryLevel",
3468        ))
3469    }
3470}