1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>Result message containing a list of application version descriptions.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct DescribeConfigurationOptionsInput {
    /// <p>The name of the application associated with the configuration template or environment. Only needed if you want to describe the configuration options associated with either the configuration template or environment.</p>
    pub application_name: ::std::option::Option<::std::string::String>,
    /// <p>The name of the configuration template whose configuration options you want to describe.</p>
    pub template_name: ::std::option::Option<::std::string::String>,
    /// <p>The name of the environment whose configuration options you want to describe.</p>
    pub environment_name: ::std::option::Option<::std::string::String>,
    /// <p>The name of the solution stack whose configuration options you want to describe.</p>
    pub solution_stack_name: ::std::option::Option<::std::string::String>,
    /// <p>The ARN of the custom platform.</p>
    pub platform_arn: ::std::option::Option<::std::string::String>,
    /// <p>If specified, restricts the descriptions to only the specified options.</p>
    pub options: ::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>>,
}
impl DescribeConfigurationOptionsInput {
    /// <p>The name of the application associated with the configuration template or environment. Only needed if you want to describe the configuration options associated with either the configuration template or environment.</p>
    pub fn application_name(&self) -> ::std::option::Option<&str> {
        self.application_name.as_deref()
    }
    /// <p>The name of the configuration template whose configuration options you want to describe.</p>
    pub fn template_name(&self) -> ::std::option::Option<&str> {
        self.template_name.as_deref()
    }
    /// <p>The name of the environment whose configuration options you want to describe.</p>
    pub fn environment_name(&self) -> ::std::option::Option<&str> {
        self.environment_name.as_deref()
    }
    /// <p>The name of the solution stack whose configuration options you want to describe.</p>
    pub fn solution_stack_name(&self) -> ::std::option::Option<&str> {
        self.solution_stack_name.as_deref()
    }
    /// <p>The ARN of the custom platform.</p>
    pub fn platform_arn(&self) -> ::std::option::Option<&str> {
        self.platform_arn.as_deref()
    }
    /// <p>If specified, restricts the descriptions to only the specified options.</p>
    ///
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.options.is_none()`.
    pub fn options(&self) -> &[crate::types::OptionSpecification] {
        self.options.as_deref().unwrap_or_default()
    }
}
impl DescribeConfigurationOptionsInput {
    /// Creates a new builder-style object to manufacture [`DescribeConfigurationOptionsInput`](crate::operation::describe_configuration_options::DescribeConfigurationOptionsInput).
    pub fn builder() -> crate::operation::describe_configuration_options::builders::DescribeConfigurationOptionsInputBuilder {
        crate::operation::describe_configuration_options::builders::DescribeConfigurationOptionsInputBuilder::default()
    }
}

/// A builder for [`DescribeConfigurationOptionsInput`](crate::operation::describe_configuration_options::DescribeConfigurationOptionsInput).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct DescribeConfigurationOptionsInputBuilder {
    pub(crate) application_name: ::std::option::Option<::std::string::String>,
    pub(crate) template_name: ::std::option::Option<::std::string::String>,
    pub(crate) environment_name: ::std::option::Option<::std::string::String>,
    pub(crate) solution_stack_name: ::std::option::Option<::std::string::String>,
    pub(crate) platform_arn: ::std::option::Option<::std::string::String>,
    pub(crate) options: ::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>>,
}
impl DescribeConfigurationOptionsInputBuilder {
    /// <p>The name of the application associated with the configuration template or environment. Only needed if you want to describe the configuration options associated with either the configuration template or environment.</p>
    pub fn application_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.application_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The name of the application associated with the configuration template or environment. Only needed if you want to describe the configuration options associated with either the configuration template or environment.</p>
    pub fn set_application_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.application_name = input;
        self
    }
    /// <p>The name of the application associated with the configuration template or environment. Only needed if you want to describe the configuration options associated with either the configuration template or environment.</p>
    pub fn get_application_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.application_name
    }
    /// <p>The name of the configuration template whose configuration options you want to describe.</p>
    pub fn template_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.template_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The name of the configuration template whose configuration options you want to describe.</p>
    pub fn set_template_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.template_name = input;
        self
    }
    /// <p>The name of the configuration template whose configuration options you want to describe.</p>
    pub fn get_template_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.template_name
    }
    /// <p>The name of the environment whose configuration options you want to describe.</p>
    pub fn environment_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.environment_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The name of the environment whose configuration options you want to describe.</p>
    pub fn set_environment_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.environment_name = input;
        self
    }
    /// <p>The name of the environment whose configuration options you want to describe.</p>
    pub fn get_environment_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.environment_name
    }
    /// <p>The name of the solution stack whose configuration options you want to describe.</p>
    pub fn solution_stack_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.solution_stack_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The name of the solution stack whose configuration options you want to describe.</p>
    pub fn set_solution_stack_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.solution_stack_name = input;
        self
    }
    /// <p>The name of the solution stack whose configuration options you want to describe.</p>
    pub fn get_solution_stack_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.solution_stack_name
    }
    /// <p>The ARN of the custom platform.</p>
    pub fn platform_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.platform_arn = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The ARN of the custom platform.</p>
    pub fn set_platform_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.platform_arn = input;
        self
    }
    /// <p>The ARN of the custom platform.</p>
    pub fn get_platform_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.platform_arn
    }
    /// Appends an item to `options`.
    ///
    /// To override the contents of this collection use [`set_options`](Self::set_options).
    ///
    /// <p>If specified, restricts the descriptions to only the specified options.</p>
    pub fn options(mut self, input: crate::types::OptionSpecification) -> Self {
        let mut v = self.options.unwrap_or_default();
        v.push(input);
        self.options = ::std::option::Option::Some(v);
        self
    }
    /// <p>If specified, restricts the descriptions to only the specified options.</p>
    pub fn set_options(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>>) -> Self {
        self.options = input;
        self
    }
    /// <p>If specified, restricts the descriptions to only the specified options.</p>
    pub fn get_options(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>> {
        &self.options
    }
    /// Consumes the builder and constructs a [`DescribeConfigurationOptionsInput`](crate::operation::describe_configuration_options::DescribeConfigurationOptionsInput).
    pub fn build(
        self,
    ) -> ::std::result::Result<
        crate::operation::describe_configuration_options::DescribeConfigurationOptionsInput,
        ::aws_smithy_types::error::operation::BuildError,
    > {
        ::std::result::Result::Ok(crate::operation::describe_configuration_options::DescribeConfigurationOptionsInput {
            application_name: self.application_name,
            template_name: self.template_name,
            environment_name: self.environment_name,
            solution_stack_name: self.solution_stack_name,
            platform_arn: self.platform_arn,
            options: self.options,
        })
    }
}