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
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>The input for <code>DescribeStacks</code> action.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct DescribeStacksInput {
    /// <note>
    /// <p>If you don't pass a parameter to <code>StackName</code>, the API returns a response that describes all resources in the account, which can impact performance. This requires <code>ListStacks</code> and <code>DescribeStacks</code> permissions.</p>
    /// <p>Consider using the <code>ListStacks</code> API if you're not passing a parameter to <code>StackName</code>.</p>
    /// <p>The IAM policy below can be added to IAM policies when you want to limit resource-level permissions and avoid returning a response when no parameter is sent in the request:</p>
    /// <p>{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": "cloudformation:DescribeStacks", "NotResource": "arn:aws:cloudformation:*:*:stack/*/*" }] }</p>
    /// </note>
    /// <p>The name or the unique stack ID that's associated with the stack, which aren't always interchangeable:</p>
    /// <ul>
    /// <li>
    /// <p>Running stacks: You can specify either the stack's name or its unique stack ID.</p></li>
    /// <li>
    /// <p>Deleted stacks: You must specify the unique stack ID.</p></li>
    /// </ul>
    /// <p>Default: There is no default value.</p>
    pub stack_name: ::std::option::Option<::std::string::String>,
    /// <p>A string that identifies the next page of stacks that you want to retrieve.</p>
    pub next_token: ::std::option::Option<::std::string::String>,
}
impl DescribeStacksInput {
    /// <note>
    /// <p>If you don't pass a parameter to <code>StackName</code>, the API returns a response that describes all resources in the account, which can impact performance. This requires <code>ListStacks</code> and <code>DescribeStacks</code> permissions.</p>
    /// <p>Consider using the <code>ListStacks</code> API if you're not passing a parameter to <code>StackName</code>.</p>
    /// <p>The IAM policy below can be added to IAM policies when you want to limit resource-level permissions and avoid returning a response when no parameter is sent in the request:</p>
    /// <p>{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": "cloudformation:DescribeStacks", "NotResource": "arn:aws:cloudformation:*:*:stack/*/*" }] }</p>
    /// </note>
    /// <p>The name or the unique stack ID that's associated with the stack, which aren't always interchangeable:</p>
    /// <ul>
    /// <li>
    /// <p>Running stacks: You can specify either the stack's name or its unique stack ID.</p></li>
    /// <li>
    /// <p>Deleted stacks: You must specify the unique stack ID.</p></li>
    /// </ul>
    /// <p>Default: There is no default value.</p>
    pub fn stack_name(&self) -> ::std::option::Option<&str> {
        self.stack_name.as_deref()
    }
    /// <p>A string that identifies the next page of stacks that you want to retrieve.</p>
    pub fn next_token(&self) -> ::std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl DescribeStacksInput {
    /// Creates a new builder-style object to manufacture [`DescribeStacksInput`](crate::operation::describe_stacks::DescribeStacksInput).
    pub fn builder() -> crate::operation::describe_stacks::builders::DescribeStacksInputBuilder {
        crate::operation::describe_stacks::builders::DescribeStacksInputBuilder::default()
    }
}

/// A builder for [`DescribeStacksInput`](crate::operation::describe_stacks::DescribeStacksInput).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct DescribeStacksInputBuilder {
    pub(crate) stack_name: ::std::option::Option<::std::string::String>,
    pub(crate) next_token: ::std::option::Option<::std::string::String>,
}
impl DescribeStacksInputBuilder {
    /// <note>
    /// <p>If you don't pass a parameter to <code>StackName</code>, the API returns a response that describes all resources in the account, which can impact performance. This requires <code>ListStacks</code> and <code>DescribeStacks</code> permissions.</p>
    /// <p>Consider using the <code>ListStacks</code> API if you're not passing a parameter to <code>StackName</code>.</p>
    /// <p>The IAM policy below can be added to IAM policies when you want to limit resource-level permissions and avoid returning a response when no parameter is sent in the request:</p>
    /// <p>{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": "cloudformation:DescribeStacks", "NotResource": "arn:aws:cloudformation:*:*:stack/*/*" }] }</p>
    /// </note>
    /// <p>The name or the unique stack ID that's associated with the stack, which aren't always interchangeable:</p>
    /// <ul>
    /// <li>
    /// <p>Running stacks: You can specify either the stack's name or its unique stack ID.</p></li>
    /// <li>
    /// <p>Deleted stacks: You must specify the unique stack ID.</p></li>
    /// </ul>
    /// <p>Default: There is no default value.</p>
    pub fn stack_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.stack_name = ::std::option::Option::Some(input.into());
        self
    }
    /// <note>
    /// <p>If you don't pass a parameter to <code>StackName</code>, the API returns a response that describes all resources in the account, which can impact performance. This requires <code>ListStacks</code> and <code>DescribeStacks</code> permissions.</p>
    /// <p>Consider using the <code>ListStacks</code> API if you're not passing a parameter to <code>StackName</code>.</p>
    /// <p>The IAM policy below can be added to IAM policies when you want to limit resource-level permissions and avoid returning a response when no parameter is sent in the request:</p>
    /// <p>{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": "cloudformation:DescribeStacks", "NotResource": "arn:aws:cloudformation:*:*:stack/*/*" }] }</p>
    /// </note>
    /// <p>The name or the unique stack ID that's associated with the stack, which aren't always interchangeable:</p>
    /// <ul>
    /// <li>
    /// <p>Running stacks: You can specify either the stack's name or its unique stack ID.</p></li>
    /// <li>
    /// <p>Deleted stacks: You must specify the unique stack ID.</p></li>
    /// </ul>
    /// <p>Default: There is no default value.</p>
    pub fn set_stack_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.stack_name = input;
        self
    }
    /// <note>
    /// <p>If you don't pass a parameter to <code>StackName</code>, the API returns a response that describes all resources in the account, which can impact performance. This requires <code>ListStacks</code> and <code>DescribeStacks</code> permissions.</p>
    /// <p>Consider using the <code>ListStacks</code> API if you're not passing a parameter to <code>StackName</code>.</p>
    /// <p>The IAM policy below can be added to IAM policies when you want to limit resource-level permissions and avoid returning a response when no parameter is sent in the request:</p>
    /// <p>{ "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Action": "cloudformation:DescribeStacks", "NotResource": "arn:aws:cloudformation:*:*:stack/*/*" }] }</p>
    /// </note>
    /// <p>The name or the unique stack ID that's associated with the stack, which aren't always interchangeable:</p>
    /// <ul>
    /// <li>
    /// <p>Running stacks: You can specify either the stack's name or its unique stack ID.</p></li>
    /// <li>
    /// <p>Deleted stacks: You must specify the unique stack ID.</p></li>
    /// </ul>
    /// <p>Default: There is no default value.</p>
    pub fn get_stack_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.stack_name
    }
    /// <p>A string that identifies the next page of stacks that you want to retrieve.</p>
    pub fn next_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.next_token = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>A string that identifies the next page of stacks that you want to retrieve.</p>
    pub fn set_next_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.next_token = input;
        self
    }
    /// <p>A string that identifies the next page of stacks that you want to retrieve.</p>
    pub fn get_next_token(&self) -> &::std::option::Option<::std::string::String> {
        &self.next_token
    }
    /// Consumes the builder and constructs a [`DescribeStacksInput`](crate::operation::describe_stacks::DescribeStacksInput).
    pub fn build(
        self,
    ) -> ::std::result::Result<crate::operation::describe_stacks::DescribeStacksInput, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::operation::describe_stacks::DescribeStacksInput {
            stack_name: self.stack_name,
            next_token: self.next_token,
        })
    }
}