Skip to main content

aws_sdk_cloudformation/operation/describe_type/
_describe_type_output.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct DescribeTypeOutput {
6    /// <p>The Amazon Resource Name (ARN) of the extension.</p>
7    pub arn: ::std::option::Option<::std::string::String>,
8    /// <p>The kind of extension.</p>
9    pub r#type: ::std::option::Option<crate::types::RegistryType>,
10    /// <p>The name of the extension.</p>
11    /// <p>If the extension is a public third-party type you have activated with a type name alias, CloudFormation returns the type name alias. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p>
12    pub type_name: ::std::option::Option<::std::string::String>,
13    /// <p>The ID of the default version of the extension. The default version is used when the extension version isn't specified.</p>
14    /// <p>This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
15    /// <p>To set the default version of an extension, use <code>SetTypeDefaultVersion</code>.</p>
16    pub default_version_id: ::std::option::Option<::std::string::String>,
17    /// <p>Whether the specified extension version is set as the default version.</p>
18    /// <p>This applies only to private extensions you have registered in your account, and extensions published by Amazon Web Services. For public third-party extensions, whether they are activated in your account, CloudFormation returns <code>null</code>.</p>
19    pub is_default_version: ::std::option::Option<bool>,
20    /// <p>The contract test status of the registered extension version. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
21    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
22    /// <ul>
23    /// <li>
24    /// <p><code>PASSED</code>: The extension has passed all its contract tests.</p>
25    /// <p>An extension must have a test status of <code>PASSED</code> before it can be published. For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html">Publishing extensions to make them available for public use</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i>.</p></li>
26    /// <li>
27    /// <p><code>FAILED</code>: The extension has failed one or more contract tests.</p></li>
28    /// <li>
29    /// <p><code>IN_PROGRESS</code>: Contract tests are currently being performed on the extension.</p></li>
30    /// <li>
31    /// <p><code>NOT_TESTED</code>: Contract tests haven't been performed on the extension.</p></li>
32    /// </ul>
33    pub type_tests_status: ::std::option::Option<crate::types::TypeTestsStatus>,
34    /// <p>The description of the test status. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
35    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
36    pub type_tests_status_description: ::std::option::Option<::std::string::String>,
37    /// <p>The description of the extension.</p>
38    pub description: ::std::option::Option<::std::string::String>,
39    /// <p>The schema that defines the extension.</p>
40    /// <p>For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html">Resource type schema</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i> and the <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/what-is-cloudformation-hooks.html">CloudFormation Hooks User Guide</a>.</p>
41    pub schema: ::std::option::Option<::std::string::String>,
42    /// <p>For resource type extensions, the provisioning behavior of the resource type. CloudFormation determines the provisioning type during registration, based on the types of handlers in the schema handler package submitted.</p>
43    /// <p>Valid values include:</p>
44    /// <ul>
45    /// <li>
46    /// <p><code>FULLY_MUTABLE</code>: The resource type includes an update handler to process updates to the type during stack update operations.</p></li>
47    /// <li>
48    /// <p><code>IMMUTABLE</code>: The resource type doesn't include an update handler, so the type can't be updated and must instead be replaced during stack update operations.</p></li>
49    /// <li>
50    /// <p><code>NON_PROVISIONABLE</code>: The resource type doesn't include all the following handlers, and therefore can't actually be provisioned.</p>
51    /// <ul>
52    /// <li>
53    /// <p>create</p></li>
54    /// <li>
55    /// <p>read</p></li>
56    /// <li>
57    /// <p>delete</p></li>
58    /// </ul></li>
59    /// </ul>
60    pub provisioning_type: ::std::option::Option<crate::types::ProvisioningType>,
61    /// <p>The deprecation status of the extension version.</p>
62    /// <p>Valid values include:</p>
63    /// <ul>
64    /// <li>
65    /// <p><code>LIVE</code>: The extension is activated or registered and can be used in CloudFormation operations, dependent on its provisioning behavior and visibility scope.</p></li>
66    /// <li>
67    /// <p><code>DEPRECATED</code>: The extension has been deactivated or deregistered and can no longer be used in CloudFormation operations.</p></li>
68    /// </ul>
69    /// <p>For public third-party extensions, CloudFormation returns <code>null</code>.</p>
70    pub deprecated_status: ::std::option::Option<crate::types::DeprecatedStatus>,
71    /// <p>Contains logging configuration information for private extensions. This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
72    pub logging_config: ::std::option::Option<crate::types::LoggingConfig>,
73    /// <p>For extensions that are modules, the public third-party extensions that must be activated in your account in order for the module itself to be activated.</p>
74    pub required_activated_types: ::std::option::Option<::std::vec::Vec<crate::types::RequiredActivatedType>>,
75    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to register the extension. This applies only to private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
76    /// <p>If the registered extension calls any Amazon Web Services APIs, you must create an <i> <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html">IAM execution role</a> </i> that includes the necessary permissions to call those Amazon Web Services APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your extension with the appropriate credentials.</p>
77    pub execution_role_arn: ::std::option::Option<::std::string::String>,
78    /// <p>The scope at which the extension is visible and usable in CloudFormation operations.</p>
79    /// <p>Valid values include:</p>
80    /// <ul>
81    /// <li>
82    /// <p><code>PRIVATE</code>: The extension is only visible and usable within the account in which it is registered. CloudFormation marks any extensions you register as <code>PRIVATE</code>.</p></li>
83    /// <li>
84    /// <p><code>PUBLIC</code>: The extension is publicly visible and usable within any Amazon Web Services account.</p></li>
85    /// </ul>
86    pub visibility: ::std::option::Option<crate::types::Visibility>,
87    /// <p>The URL of the source code for the extension.</p>
88    pub source_url: ::std::option::Option<::std::string::String>,
89    /// <p>The URL of a page providing detailed documentation for this extension.</p>
90    pub documentation_url: ::std::option::Option<::std::string::String>,
91    /// <p>When the specified extension version was registered. This applies only to:</p>
92    /// <ul>
93    /// <li>
94    /// <p>Private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p></li>
95    /// <li>
96    /// <p>Public extensions you have activated in your account with auto-update specified. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p></li>
97    /// </ul>
98    pub last_updated: ::std::option::Option<::aws_smithy_types::DateTime>,
99    /// <p>When the specified private extension version was registered or activated in your account.</p>
100    pub time_created: ::std::option::Option<::aws_smithy_types::DateTime>,
101    /// <p>A JSON string that represent the current configuration data for the extension in this account and Region.</p>
102    /// <p>To set the configuration data for an extension, use <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html">SetTypeConfiguration</a>.</p>
103    pub configuration_schema: ::std::option::Option<::std::string::String>,
104    /// <p>The publisher ID of the extension publisher.</p>
105    /// <p>This applies only to public third-party extensions. For private registered extensions, and extensions provided by Amazon Web Services, CloudFormation returns <code>null</code>.</p>
106    pub publisher_id: ::std::option::Option<::std::string::String>,
107    /// <p>For public extensions that have been activated for this account and Region, the type name of the public extension.</p>
108    /// <p>If you specified a <code>TypeNameAlias</code> when enabling the extension in this account and Region, CloudFormation treats that alias as the extension's type name within the account and Region, not the type name of the public extension. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias">Use aliases to refer to extensions</a> in the <i>CloudFormation User Guide</i>.</p>
109    pub original_type_name: ::std::option::Option<::std::string::String>,
110    /// <p>For public extensions that have been activated for this account and Region, the Amazon Resource Name (ARN) of the public extension.</p>
111    pub original_type_arn: ::std::option::Option<::std::string::String>,
112    /// <p>The version number of a public third-party extension.</p>
113    /// <p>This applies only if you specify a public extension you have activated in your account, or specify a public extension without specifying a version. For all other extensions, CloudFormation returns <code>null</code>.</p>
114    pub public_version_number: ::std::option::Option<::std::string::String>,
115    /// <p>The latest version of a public extension <i>that is available</i> for use.</p>
116    /// <p>This only applies if you specify a public extension, and you don't specify a version. For all other requests, CloudFormation returns <code>null</code>.</p>
117    pub latest_public_version: ::std::option::Option<::std::string::String>,
118    /// <p>Whether the extension is activated in the account and Region.</p>
119    /// <p>This only applies to public third-party extensions. For all other extensions, CloudFormation returns <code>null</code>.</p>
120    pub is_activated: ::std::option::Option<bool>,
121    /// <p>Whether CloudFormation automatically updates the extension in this account and Region when a new <i>minor</i> version is published by the extension publisher. Major versions released by the publisher must be manually updated. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-auto">Automatically use new versions of extensions</a> in the <i>CloudFormation User Guide</i>.</p>
122    pub auto_update: ::std::option::Option<bool>,
123    _request_id: Option<String>,
124}
125impl DescribeTypeOutput {
126    /// <p>The Amazon Resource Name (ARN) of the extension.</p>
127    pub fn arn(&self) -> ::std::option::Option<&str> {
128        self.arn.as_deref()
129    }
130    /// <p>The kind of extension.</p>
131    pub fn r#type(&self) -> ::std::option::Option<&crate::types::RegistryType> {
132        self.r#type.as_ref()
133    }
134    /// <p>The name of the extension.</p>
135    /// <p>If the extension is a public third-party type you have activated with a type name alias, CloudFormation returns the type name alias. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p>
136    pub fn type_name(&self) -> ::std::option::Option<&str> {
137        self.type_name.as_deref()
138    }
139    /// <p>The ID of the default version of the extension. The default version is used when the extension version isn't specified.</p>
140    /// <p>This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
141    /// <p>To set the default version of an extension, use <code>SetTypeDefaultVersion</code>.</p>
142    pub fn default_version_id(&self) -> ::std::option::Option<&str> {
143        self.default_version_id.as_deref()
144    }
145    /// <p>Whether the specified extension version is set as the default version.</p>
146    /// <p>This applies only to private extensions you have registered in your account, and extensions published by Amazon Web Services. For public third-party extensions, whether they are activated in your account, CloudFormation returns <code>null</code>.</p>
147    pub fn is_default_version(&self) -> ::std::option::Option<bool> {
148        self.is_default_version
149    }
150    /// <p>The contract test status of the registered extension version. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
151    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
152    /// <ul>
153    /// <li>
154    /// <p><code>PASSED</code>: The extension has passed all its contract tests.</p>
155    /// <p>An extension must have a test status of <code>PASSED</code> before it can be published. For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html">Publishing extensions to make them available for public use</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i>.</p></li>
156    /// <li>
157    /// <p><code>FAILED</code>: The extension has failed one or more contract tests.</p></li>
158    /// <li>
159    /// <p><code>IN_PROGRESS</code>: Contract tests are currently being performed on the extension.</p></li>
160    /// <li>
161    /// <p><code>NOT_TESTED</code>: Contract tests haven't been performed on the extension.</p></li>
162    /// </ul>
163    pub fn type_tests_status(&self) -> ::std::option::Option<&crate::types::TypeTestsStatus> {
164        self.type_tests_status.as_ref()
165    }
166    /// <p>The description of the test status. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
167    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
168    pub fn type_tests_status_description(&self) -> ::std::option::Option<&str> {
169        self.type_tests_status_description.as_deref()
170    }
171    /// <p>The description of the extension.</p>
172    pub fn description(&self) -> ::std::option::Option<&str> {
173        self.description.as_deref()
174    }
175    /// <p>The schema that defines the extension.</p>
176    /// <p>For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html">Resource type schema</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i> and the <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/what-is-cloudformation-hooks.html">CloudFormation Hooks User Guide</a>.</p>
177    pub fn schema(&self) -> ::std::option::Option<&str> {
178        self.schema.as_deref()
179    }
180    /// <p>For resource type extensions, the provisioning behavior of the resource type. CloudFormation determines the provisioning type during registration, based on the types of handlers in the schema handler package submitted.</p>
181    /// <p>Valid values include:</p>
182    /// <ul>
183    /// <li>
184    /// <p><code>FULLY_MUTABLE</code>: The resource type includes an update handler to process updates to the type during stack update operations.</p></li>
185    /// <li>
186    /// <p><code>IMMUTABLE</code>: The resource type doesn't include an update handler, so the type can't be updated and must instead be replaced during stack update operations.</p></li>
187    /// <li>
188    /// <p><code>NON_PROVISIONABLE</code>: The resource type doesn't include all the following handlers, and therefore can't actually be provisioned.</p>
189    /// <ul>
190    /// <li>
191    /// <p>create</p></li>
192    /// <li>
193    /// <p>read</p></li>
194    /// <li>
195    /// <p>delete</p></li>
196    /// </ul></li>
197    /// </ul>
198    pub fn provisioning_type(&self) -> ::std::option::Option<&crate::types::ProvisioningType> {
199        self.provisioning_type.as_ref()
200    }
201    /// <p>The deprecation status of the extension version.</p>
202    /// <p>Valid values include:</p>
203    /// <ul>
204    /// <li>
205    /// <p><code>LIVE</code>: The extension is activated or registered and can be used in CloudFormation operations, dependent on its provisioning behavior and visibility scope.</p></li>
206    /// <li>
207    /// <p><code>DEPRECATED</code>: The extension has been deactivated or deregistered and can no longer be used in CloudFormation operations.</p></li>
208    /// </ul>
209    /// <p>For public third-party extensions, CloudFormation returns <code>null</code>.</p>
210    pub fn deprecated_status(&self) -> ::std::option::Option<&crate::types::DeprecatedStatus> {
211        self.deprecated_status.as_ref()
212    }
213    /// <p>Contains logging configuration information for private extensions. This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
214    pub fn logging_config(&self) -> ::std::option::Option<&crate::types::LoggingConfig> {
215        self.logging_config.as_ref()
216    }
217    /// <p>For extensions that are modules, the public third-party extensions that must be activated in your account in order for the module itself to be activated.</p>
218    ///
219    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.required_activated_types.is_none()`.
220    pub fn required_activated_types(&self) -> &[crate::types::RequiredActivatedType] {
221        self.required_activated_types.as_deref().unwrap_or_default()
222    }
223    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to register the extension. This applies only to private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
224    /// <p>If the registered extension calls any Amazon Web Services APIs, you must create an <i> <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html">IAM execution role</a> </i> that includes the necessary permissions to call those Amazon Web Services APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your extension with the appropriate credentials.</p>
225    pub fn execution_role_arn(&self) -> ::std::option::Option<&str> {
226        self.execution_role_arn.as_deref()
227    }
228    /// <p>The scope at which the extension is visible and usable in CloudFormation operations.</p>
229    /// <p>Valid values include:</p>
230    /// <ul>
231    /// <li>
232    /// <p><code>PRIVATE</code>: The extension is only visible and usable within the account in which it is registered. CloudFormation marks any extensions you register as <code>PRIVATE</code>.</p></li>
233    /// <li>
234    /// <p><code>PUBLIC</code>: The extension is publicly visible and usable within any Amazon Web Services account.</p></li>
235    /// </ul>
236    pub fn visibility(&self) -> ::std::option::Option<&crate::types::Visibility> {
237        self.visibility.as_ref()
238    }
239    /// <p>The URL of the source code for the extension.</p>
240    pub fn source_url(&self) -> ::std::option::Option<&str> {
241        self.source_url.as_deref()
242    }
243    /// <p>The URL of a page providing detailed documentation for this extension.</p>
244    pub fn documentation_url(&self) -> ::std::option::Option<&str> {
245        self.documentation_url.as_deref()
246    }
247    /// <p>When the specified extension version was registered. This applies only to:</p>
248    /// <ul>
249    /// <li>
250    /// <p>Private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p></li>
251    /// <li>
252    /// <p>Public extensions you have activated in your account with auto-update specified. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p></li>
253    /// </ul>
254    pub fn last_updated(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
255        self.last_updated.as_ref()
256    }
257    /// <p>When the specified private extension version was registered or activated in your account.</p>
258    pub fn time_created(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
259        self.time_created.as_ref()
260    }
261    /// <p>A JSON string that represent the current configuration data for the extension in this account and Region.</p>
262    /// <p>To set the configuration data for an extension, use <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html">SetTypeConfiguration</a>.</p>
263    pub fn configuration_schema(&self) -> ::std::option::Option<&str> {
264        self.configuration_schema.as_deref()
265    }
266    /// <p>The publisher ID of the extension publisher.</p>
267    /// <p>This applies only to public third-party extensions. For private registered extensions, and extensions provided by Amazon Web Services, CloudFormation returns <code>null</code>.</p>
268    pub fn publisher_id(&self) -> ::std::option::Option<&str> {
269        self.publisher_id.as_deref()
270    }
271    /// <p>For public extensions that have been activated for this account and Region, the type name of the public extension.</p>
272    /// <p>If you specified a <code>TypeNameAlias</code> when enabling the extension in this account and Region, CloudFormation treats that alias as the extension's type name within the account and Region, not the type name of the public extension. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias">Use aliases to refer to extensions</a> in the <i>CloudFormation User Guide</i>.</p>
273    pub fn original_type_name(&self) -> ::std::option::Option<&str> {
274        self.original_type_name.as_deref()
275    }
276    /// <p>For public extensions that have been activated for this account and Region, the Amazon Resource Name (ARN) of the public extension.</p>
277    pub fn original_type_arn(&self) -> ::std::option::Option<&str> {
278        self.original_type_arn.as_deref()
279    }
280    /// <p>The version number of a public third-party extension.</p>
281    /// <p>This applies only if you specify a public extension you have activated in your account, or specify a public extension without specifying a version. For all other extensions, CloudFormation returns <code>null</code>.</p>
282    pub fn public_version_number(&self) -> ::std::option::Option<&str> {
283        self.public_version_number.as_deref()
284    }
285    /// <p>The latest version of a public extension <i>that is available</i> for use.</p>
286    /// <p>This only applies if you specify a public extension, and you don't specify a version. For all other requests, CloudFormation returns <code>null</code>.</p>
287    pub fn latest_public_version(&self) -> ::std::option::Option<&str> {
288        self.latest_public_version.as_deref()
289    }
290    /// <p>Whether the extension is activated in the account and Region.</p>
291    /// <p>This only applies to public third-party extensions. For all other extensions, CloudFormation returns <code>null</code>.</p>
292    pub fn is_activated(&self) -> ::std::option::Option<bool> {
293        self.is_activated
294    }
295    /// <p>Whether CloudFormation automatically updates the extension in this account and Region when a new <i>minor</i> version is published by the extension publisher. Major versions released by the publisher must be manually updated. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-auto">Automatically use new versions of extensions</a> in the <i>CloudFormation User Guide</i>.</p>
296    pub fn auto_update(&self) -> ::std::option::Option<bool> {
297        self.auto_update
298    }
299}
300impl ::aws_types::request_id::RequestId for DescribeTypeOutput {
301    fn request_id(&self) -> Option<&str> {
302        self._request_id.as_deref()
303    }
304}
305impl DescribeTypeOutput {
306    /// Creates a new builder-style object to manufacture [`DescribeTypeOutput`](crate::operation::describe_type::DescribeTypeOutput).
307    pub fn builder() -> crate::operation::describe_type::builders::DescribeTypeOutputBuilder {
308        crate::operation::describe_type::builders::DescribeTypeOutputBuilder::default()
309    }
310}
311
312/// A builder for [`DescribeTypeOutput`](crate::operation::describe_type::DescribeTypeOutput).
313#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
314#[non_exhaustive]
315pub struct DescribeTypeOutputBuilder {
316    pub(crate) arn: ::std::option::Option<::std::string::String>,
317    pub(crate) r#type: ::std::option::Option<crate::types::RegistryType>,
318    pub(crate) type_name: ::std::option::Option<::std::string::String>,
319    pub(crate) default_version_id: ::std::option::Option<::std::string::String>,
320    pub(crate) is_default_version: ::std::option::Option<bool>,
321    pub(crate) type_tests_status: ::std::option::Option<crate::types::TypeTestsStatus>,
322    pub(crate) type_tests_status_description: ::std::option::Option<::std::string::String>,
323    pub(crate) description: ::std::option::Option<::std::string::String>,
324    pub(crate) schema: ::std::option::Option<::std::string::String>,
325    pub(crate) provisioning_type: ::std::option::Option<crate::types::ProvisioningType>,
326    pub(crate) deprecated_status: ::std::option::Option<crate::types::DeprecatedStatus>,
327    pub(crate) logging_config: ::std::option::Option<crate::types::LoggingConfig>,
328    pub(crate) required_activated_types: ::std::option::Option<::std::vec::Vec<crate::types::RequiredActivatedType>>,
329    pub(crate) execution_role_arn: ::std::option::Option<::std::string::String>,
330    pub(crate) visibility: ::std::option::Option<crate::types::Visibility>,
331    pub(crate) source_url: ::std::option::Option<::std::string::String>,
332    pub(crate) documentation_url: ::std::option::Option<::std::string::String>,
333    pub(crate) last_updated: ::std::option::Option<::aws_smithy_types::DateTime>,
334    pub(crate) time_created: ::std::option::Option<::aws_smithy_types::DateTime>,
335    pub(crate) configuration_schema: ::std::option::Option<::std::string::String>,
336    pub(crate) publisher_id: ::std::option::Option<::std::string::String>,
337    pub(crate) original_type_name: ::std::option::Option<::std::string::String>,
338    pub(crate) original_type_arn: ::std::option::Option<::std::string::String>,
339    pub(crate) public_version_number: ::std::option::Option<::std::string::String>,
340    pub(crate) latest_public_version: ::std::option::Option<::std::string::String>,
341    pub(crate) is_activated: ::std::option::Option<bool>,
342    pub(crate) auto_update: ::std::option::Option<bool>,
343    _request_id: Option<String>,
344}
345impl DescribeTypeOutputBuilder {
346    /// <p>The Amazon Resource Name (ARN) of the extension.</p>
347    pub fn arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
348        self.arn = ::std::option::Option::Some(input.into());
349        self
350    }
351    /// <p>The Amazon Resource Name (ARN) of the extension.</p>
352    pub fn set_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
353        self.arn = input;
354        self
355    }
356    /// <p>The Amazon Resource Name (ARN) of the extension.</p>
357    pub fn get_arn(&self) -> &::std::option::Option<::std::string::String> {
358        &self.arn
359    }
360    /// <p>The kind of extension.</p>
361    pub fn r#type(mut self, input: crate::types::RegistryType) -> Self {
362        self.r#type = ::std::option::Option::Some(input);
363        self
364    }
365    /// <p>The kind of extension.</p>
366    pub fn set_type(mut self, input: ::std::option::Option<crate::types::RegistryType>) -> Self {
367        self.r#type = input;
368        self
369    }
370    /// <p>The kind of extension.</p>
371    pub fn get_type(&self) -> &::std::option::Option<crate::types::RegistryType> {
372        &self.r#type
373    }
374    /// <p>The name of the extension.</p>
375    /// <p>If the extension is a public third-party type you have activated with a type name alias, CloudFormation returns the type name alias. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p>
376    pub fn type_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
377        self.type_name = ::std::option::Option::Some(input.into());
378        self
379    }
380    /// <p>The name of the extension.</p>
381    /// <p>If the extension is a public third-party type you have activated with a type name alias, CloudFormation returns the type name alias. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p>
382    pub fn set_type_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
383        self.type_name = input;
384        self
385    }
386    /// <p>The name of the extension.</p>
387    /// <p>If the extension is a public third-party type you have activated with a type name alias, CloudFormation returns the type name alias. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p>
388    pub fn get_type_name(&self) -> &::std::option::Option<::std::string::String> {
389        &self.type_name
390    }
391    /// <p>The ID of the default version of the extension. The default version is used when the extension version isn't specified.</p>
392    /// <p>This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
393    /// <p>To set the default version of an extension, use <code>SetTypeDefaultVersion</code>.</p>
394    pub fn default_version_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
395        self.default_version_id = ::std::option::Option::Some(input.into());
396        self
397    }
398    /// <p>The ID of the default version of the extension. The default version is used when the extension version isn't specified.</p>
399    /// <p>This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
400    /// <p>To set the default version of an extension, use <code>SetTypeDefaultVersion</code>.</p>
401    pub fn set_default_version_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
402        self.default_version_id = input;
403        self
404    }
405    /// <p>The ID of the default version of the extension. The default version is used when the extension version isn't specified.</p>
406    /// <p>This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
407    /// <p>To set the default version of an extension, use <code>SetTypeDefaultVersion</code>.</p>
408    pub fn get_default_version_id(&self) -> &::std::option::Option<::std::string::String> {
409        &self.default_version_id
410    }
411    /// <p>Whether the specified extension version is set as the default version.</p>
412    /// <p>This applies only to private extensions you have registered in your account, and extensions published by Amazon Web Services. For public third-party extensions, whether they are activated in your account, CloudFormation returns <code>null</code>.</p>
413    pub fn is_default_version(mut self, input: bool) -> Self {
414        self.is_default_version = ::std::option::Option::Some(input);
415        self
416    }
417    /// <p>Whether the specified extension version is set as the default version.</p>
418    /// <p>This applies only to private extensions you have registered in your account, and extensions published by Amazon Web Services. For public third-party extensions, whether they are activated in your account, CloudFormation returns <code>null</code>.</p>
419    pub fn set_is_default_version(mut self, input: ::std::option::Option<bool>) -> Self {
420        self.is_default_version = input;
421        self
422    }
423    /// <p>Whether the specified extension version is set as the default version.</p>
424    /// <p>This applies only to private extensions you have registered in your account, and extensions published by Amazon Web Services. For public third-party extensions, whether they are activated in your account, CloudFormation returns <code>null</code>.</p>
425    pub fn get_is_default_version(&self) -> &::std::option::Option<bool> {
426        &self.is_default_version
427    }
428    /// <p>The contract test status of the registered extension version. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
429    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
430    /// <ul>
431    /// <li>
432    /// <p><code>PASSED</code>: The extension has passed all its contract tests.</p>
433    /// <p>An extension must have a test status of <code>PASSED</code> before it can be published. For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html">Publishing extensions to make them available for public use</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i>.</p></li>
434    /// <li>
435    /// <p><code>FAILED</code>: The extension has failed one or more contract tests.</p></li>
436    /// <li>
437    /// <p><code>IN_PROGRESS</code>: Contract tests are currently being performed on the extension.</p></li>
438    /// <li>
439    /// <p><code>NOT_TESTED</code>: Contract tests haven't been performed on the extension.</p></li>
440    /// </ul>
441    pub fn type_tests_status(mut self, input: crate::types::TypeTestsStatus) -> Self {
442        self.type_tests_status = ::std::option::Option::Some(input);
443        self
444    }
445    /// <p>The contract test status of the registered extension version. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
446    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
447    /// <ul>
448    /// <li>
449    /// <p><code>PASSED</code>: The extension has passed all its contract tests.</p>
450    /// <p>An extension must have a test status of <code>PASSED</code> before it can be published. For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html">Publishing extensions to make them available for public use</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i>.</p></li>
451    /// <li>
452    /// <p><code>FAILED</code>: The extension has failed one or more contract tests.</p></li>
453    /// <li>
454    /// <p><code>IN_PROGRESS</code>: Contract tests are currently being performed on the extension.</p></li>
455    /// <li>
456    /// <p><code>NOT_TESTED</code>: Contract tests haven't been performed on the extension.</p></li>
457    /// </ul>
458    pub fn set_type_tests_status(mut self, input: ::std::option::Option<crate::types::TypeTestsStatus>) -> Self {
459        self.type_tests_status = input;
460        self
461    }
462    /// <p>The contract test status of the registered extension version. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
463    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
464    /// <ul>
465    /// <li>
466    /// <p><code>PASSED</code>: The extension has passed all its contract tests.</p>
467    /// <p>An extension must have a test status of <code>PASSED</code> before it can be published. For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-publish.html">Publishing extensions to make them available for public use</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i>.</p></li>
468    /// <li>
469    /// <p><code>FAILED</code>: The extension has failed one or more contract tests.</p></li>
470    /// <li>
471    /// <p><code>IN_PROGRESS</code>: Contract tests are currently being performed on the extension.</p></li>
472    /// <li>
473    /// <p><code>NOT_TESTED</code>: Contract tests haven't been performed on the extension.</p></li>
474    /// </ul>
475    pub fn get_type_tests_status(&self) -> &::std::option::Option<crate::types::TypeTestsStatus> {
476        &self.type_tests_status
477    }
478    /// <p>The description of the test status. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
479    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
480    pub fn type_tests_status_description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
481        self.type_tests_status_description = ::std::option::Option::Some(input.into());
482        self
483    }
484    /// <p>The description of the test status. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
485    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
486    pub fn set_type_tests_status_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
487        self.type_tests_status_description = input;
488        self
489    }
490    /// <p>The description of the test status. To return the extension test status of a specific extension version, you must specify <code>VersionId</code>.</p>
491    /// <p>This applies only to registered private extension versions. CloudFormation doesn't return this information for public extensions, whether they are activated in your account.</p>
492    pub fn get_type_tests_status_description(&self) -> &::std::option::Option<::std::string::String> {
493        &self.type_tests_status_description
494    }
495    /// <p>The description of the extension.</p>
496    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
497        self.description = ::std::option::Option::Some(input.into());
498        self
499    }
500    /// <p>The description of the extension.</p>
501    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
502        self.description = input;
503        self
504    }
505    /// <p>The description of the extension.</p>
506    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
507        &self.description
508    }
509    /// <p>The schema that defines the extension.</p>
510    /// <p>For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html">Resource type schema</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i> and the <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/what-is-cloudformation-hooks.html">CloudFormation Hooks User Guide</a>.</p>
511    pub fn schema(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
512        self.schema = ::std::option::Option::Some(input.into());
513        self
514    }
515    /// <p>The schema that defines the extension.</p>
516    /// <p>For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html">Resource type schema</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i> and the <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/what-is-cloudformation-hooks.html">CloudFormation Hooks User Guide</a>.</p>
517    pub fn set_schema(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
518        self.schema = input;
519        self
520    }
521    /// <p>The schema that defines the extension.</p>
522    /// <p>For more information, see <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html">Resource type schema</a> in the <i>CloudFormation Command Line Interface (CLI) User Guide</i> and the <a href="https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/what-is-cloudformation-hooks.html">CloudFormation Hooks User Guide</a>.</p>
523    pub fn get_schema(&self) -> &::std::option::Option<::std::string::String> {
524        &self.schema
525    }
526    /// <p>For resource type extensions, the provisioning behavior of the resource type. CloudFormation determines the provisioning type during registration, based on the types of handlers in the schema handler package submitted.</p>
527    /// <p>Valid values include:</p>
528    /// <ul>
529    /// <li>
530    /// <p><code>FULLY_MUTABLE</code>: The resource type includes an update handler to process updates to the type during stack update operations.</p></li>
531    /// <li>
532    /// <p><code>IMMUTABLE</code>: The resource type doesn't include an update handler, so the type can't be updated and must instead be replaced during stack update operations.</p></li>
533    /// <li>
534    /// <p><code>NON_PROVISIONABLE</code>: The resource type doesn't include all the following handlers, and therefore can't actually be provisioned.</p>
535    /// <ul>
536    /// <li>
537    /// <p>create</p></li>
538    /// <li>
539    /// <p>read</p></li>
540    /// <li>
541    /// <p>delete</p></li>
542    /// </ul></li>
543    /// </ul>
544    pub fn provisioning_type(mut self, input: crate::types::ProvisioningType) -> Self {
545        self.provisioning_type = ::std::option::Option::Some(input);
546        self
547    }
548    /// <p>For resource type extensions, the provisioning behavior of the resource type. CloudFormation determines the provisioning type during registration, based on the types of handlers in the schema handler package submitted.</p>
549    /// <p>Valid values include:</p>
550    /// <ul>
551    /// <li>
552    /// <p><code>FULLY_MUTABLE</code>: The resource type includes an update handler to process updates to the type during stack update operations.</p></li>
553    /// <li>
554    /// <p><code>IMMUTABLE</code>: The resource type doesn't include an update handler, so the type can't be updated and must instead be replaced during stack update operations.</p></li>
555    /// <li>
556    /// <p><code>NON_PROVISIONABLE</code>: The resource type doesn't include all the following handlers, and therefore can't actually be provisioned.</p>
557    /// <ul>
558    /// <li>
559    /// <p>create</p></li>
560    /// <li>
561    /// <p>read</p></li>
562    /// <li>
563    /// <p>delete</p></li>
564    /// </ul></li>
565    /// </ul>
566    pub fn set_provisioning_type(mut self, input: ::std::option::Option<crate::types::ProvisioningType>) -> Self {
567        self.provisioning_type = input;
568        self
569    }
570    /// <p>For resource type extensions, the provisioning behavior of the resource type. CloudFormation determines the provisioning type during registration, based on the types of handlers in the schema handler package submitted.</p>
571    /// <p>Valid values include:</p>
572    /// <ul>
573    /// <li>
574    /// <p><code>FULLY_MUTABLE</code>: The resource type includes an update handler to process updates to the type during stack update operations.</p></li>
575    /// <li>
576    /// <p><code>IMMUTABLE</code>: The resource type doesn't include an update handler, so the type can't be updated and must instead be replaced during stack update operations.</p></li>
577    /// <li>
578    /// <p><code>NON_PROVISIONABLE</code>: The resource type doesn't include all the following handlers, and therefore can't actually be provisioned.</p>
579    /// <ul>
580    /// <li>
581    /// <p>create</p></li>
582    /// <li>
583    /// <p>read</p></li>
584    /// <li>
585    /// <p>delete</p></li>
586    /// </ul></li>
587    /// </ul>
588    pub fn get_provisioning_type(&self) -> &::std::option::Option<crate::types::ProvisioningType> {
589        &self.provisioning_type
590    }
591    /// <p>The deprecation status of the extension version.</p>
592    /// <p>Valid values include:</p>
593    /// <ul>
594    /// <li>
595    /// <p><code>LIVE</code>: The extension is activated or registered and can be used in CloudFormation operations, dependent on its provisioning behavior and visibility scope.</p></li>
596    /// <li>
597    /// <p><code>DEPRECATED</code>: The extension has been deactivated or deregistered and can no longer be used in CloudFormation operations.</p></li>
598    /// </ul>
599    /// <p>For public third-party extensions, CloudFormation returns <code>null</code>.</p>
600    pub fn deprecated_status(mut self, input: crate::types::DeprecatedStatus) -> Self {
601        self.deprecated_status = ::std::option::Option::Some(input);
602        self
603    }
604    /// <p>The deprecation status of the extension version.</p>
605    /// <p>Valid values include:</p>
606    /// <ul>
607    /// <li>
608    /// <p><code>LIVE</code>: The extension is activated or registered and can be used in CloudFormation operations, dependent on its provisioning behavior and visibility scope.</p></li>
609    /// <li>
610    /// <p><code>DEPRECATED</code>: The extension has been deactivated or deregistered and can no longer be used in CloudFormation operations.</p></li>
611    /// </ul>
612    /// <p>For public third-party extensions, CloudFormation returns <code>null</code>.</p>
613    pub fn set_deprecated_status(mut self, input: ::std::option::Option<crate::types::DeprecatedStatus>) -> Self {
614        self.deprecated_status = input;
615        self
616    }
617    /// <p>The deprecation status of the extension version.</p>
618    /// <p>Valid values include:</p>
619    /// <ul>
620    /// <li>
621    /// <p><code>LIVE</code>: The extension is activated or registered and can be used in CloudFormation operations, dependent on its provisioning behavior and visibility scope.</p></li>
622    /// <li>
623    /// <p><code>DEPRECATED</code>: The extension has been deactivated or deregistered and can no longer be used in CloudFormation operations.</p></li>
624    /// </ul>
625    /// <p>For public third-party extensions, CloudFormation returns <code>null</code>.</p>
626    pub fn get_deprecated_status(&self) -> &::std::option::Option<crate::types::DeprecatedStatus> {
627        &self.deprecated_status
628    }
629    /// <p>Contains logging configuration information for private extensions. This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
630    pub fn logging_config(mut self, input: crate::types::LoggingConfig) -> Self {
631        self.logging_config = ::std::option::Option::Some(input);
632        self
633    }
634    /// <p>Contains logging configuration information for private extensions. This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
635    pub fn set_logging_config(mut self, input: ::std::option::Option<crate::types::LoggingConfig>) -> Self {
636        self.logging_config = input;
637        self
638    }
639    /// <p>Contains logging configuration information for private extensions. This applies only to private extensions you have registered in your account. For public extensions, both those provided by Amazon Web Services and published by third parties, CloudFormation returns <code>null</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
640    pub fn get_logging_config(&self) -> &::std::option::Option<crate::types::LoggingConfig> {
641        &self.logging_config
642    }
643    /// Appends an item to `required_activated_types`.
644    ///
645    /// To override the contents of this collection use [`set_required_activated_types`](Self::set_required_activated_types).
646    ///
647    /// <p>For extensions that are modules, the public third-party extensions that must be activated in your account in order for the module itself to be activated.</p>
648    pub fn required_activated_types(mut self, input: crate::types::RequiredActivatedType) -> Self {
649        let mut v = self.required_activated_types.unwrap_or_default();
650        v.push(input);
651        self.required_activated_types = ::std::option::Option::Some(v);
652        self
653    }
654    /// <p>For extensions that are modules, the public third-party extensions that must be activated in your account in order for the module itself to be activated.</p>
655    pub fn set_required_activated_types(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::RequiredActivatedType>>) -> Self {
656        self.required_activated_types = input;
657        self
658    }
659    /// <p>For extensions that are modules, the public third-party extensions that must be activated in your account in order for the module itself to be activated.</p>
660    pub fn get_required_activated_types(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::RequiredActivatedType>> {
661        &self.required_activated_types
662    }
663    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to register the extension. This applies only to private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
664    /// <p>If the registered extension calls any Amazon Web Services APIs, you must create an <i> <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html">IAM execution role</a> </i> that includes the necessary permissions to call those Amazon Web Services APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your extension with the appropriate credentials.</p>
665    pub fn execution_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
666        self.execution_role_arn = ::std::option::Option::Some(input.into());
667        self
668    }
669    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to register the extension. This applies only to private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
670    /// <p>If the registered extension calls any Amazon Web Services APIs, you must create an <i> <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html">IAM execution role</a> </i> that includes the necessary permissions to call those Amazon Web Services APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your extension with the appropriate credentials.</p>
671    pub fn set_execution_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
672        self.execution_role_arn = input;
673        self
674    }
675    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to register the extension. This applies only to private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p>
676    /// <p>If the registered extension calls any Amazon Web Services APIs, you must create an <i> <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html">IAM execution role</a> </i> that includes the necessary permissions to call those Amazon Web Services APIs, and provision that execution role in your account. CloudFormation then assumes that execution role to provide your extension with the appropriate credentials.</p>
677    pub fn get_execution_role_arn(&self) -> &::std::option::Option<::std::string::String> {
678        &self.execution_role_arn
679    }
680    /// <p>The scope at which the extension is visible and usable in CloudFormation operations.</p>
681    /// <p>Valid values include:</p>
682    /// <ul>
683    /// <li>
684    /// <p><code>PRIVATE</code>: The extension is only visible and usable within the account in which it is registered. CloudFormation marks any extensions you register as <code>PRIVATE</code>.</p></li>
685    /// <li>
686    /// <p><code>PUBLIC</code>: The extension is publicly visible and usable within any Amazon Web Services account.</p></li>
687    /// </ul>
688    pub fn visibility(mut self, input: crate::types::Visibility) -> Self {
689        self.visibility = ::std::option::Option::Some(input);
690        self
691    }
692    /// <p>The scope at which the extension is visible and usable in CloudFormation operations.</p>
693    /// <p>Valid values include:</p>
694    /// <ul>
695    /// <li>
696    /// <p><code>PRIVATE</code>: The extension is only visible and usable within the account in which it is registered. CloudFormation marks any extensions you register as <code>PRIVATE</code>.</p></li>
697    /// <li>
698    /// <p><code>PUBLIC</code>: The extension is publicly visible and usable within any Amazon Web Services account.</p></li>
699    /// </ul>
700    pub fn set_visibility(mut self, input: ::std::option::Option<crate::types::Visibility>) -> Self {
701        self.visibility = input;
702        self
703    }
704    /// <p>The scope at which the extension is visible and usable in CloudFormation operations.</p>
705    /// <p>Valid values include:</p>
706    /// <ul>
707    /// <li>
708    /// <p><code>PRIVATE</code>: The extension is only visible and usable within the account in which it is registered. CloudFormation marks any extensions you register as <code>PRIVATE</code>.</p></li>
709    /// <li>
710    /// <p><code>PUBLIC</code>: The extension is publicly visible and usable within any Amazon Web Services account.</p></li>
711    /// </ul>
712    pub fn get_visibility(&self) -> &::std::option::Option<crate::types::Visibility> {
713        &self.visibility
714    }
715    /// <p>The URL of the source code for the extension.</p>
716    pub fn source_url(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
717        self.source_url = ::std::option::Option::Some(input.into());
718        self
719    }
720    /// <p>The URL of the source code for the extension.</p>
721    pub fn set_source_url(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
722        self.source_url = input;
723        self
724    }
725    /// <p>The URL of the source code for the extension.</p>
726    pub fn get_source_url(&self) -> &::std::option::Option<::std::string::String> {
727        &self.source_url
728    }
729    /// <p>The URL of a page providing detailed documentation for this extension.</p>
730    pub fn documentation_url(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
731        self.documentation_url = ::std::option::Option::Some(input.into());
732        self
733    }
734    /// <p>The URL of a page providing detailed documentation for this extension.</p>
735    pub fn set_documentation_url(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
736        self.documentation_url = input;
737        self
738    }
739    /// <p>The URL of a page providing detailed documentation for this extension.</p>
740    pub fn get_documentation_url(&self) -> &::std::option::Option<::std::string::String> {
741        &self.documentation_url
742    }
743    /// <p>When the specified extension version was registered. This applies only to:</p>
744    /// <ul>
745    /// <li>
746    /// <p>Private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p></li>
747    /// <li>
748    /// <p>Public extensions you have activated in your account with auto-update specified. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p></li>
749    /// </ul>
750    pub fn last_updated(mut self, input: ::aws_smithy_types::DateTime) -> Self {
751        self.last_updated = ::std::option::Option::Some(input);
752        self
753    }
754    /// <p>When the specified extension version was registered. This applies only to:</p>
755    /// <ul>
756    /// <li>
757    /// <p>Private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p></li>
758    /// <li>
759    /// <p>Public extensions you have activated in your account with auto-update specified. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p></li>
760    /// </ul>
761    pub fn set_last_updated(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
762        self.last_updated = input;
763        self
764    }
765    /// <p>When the specified extension version was registered. This applies only to:</p>
766    /// <ul>
767    /// <li>
768    /// <p>Private extensions you have registered in your account. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html">RegisterType</a>.</p></li>
769    /// <li>
770    /// <p>Public extensions you have activated in your account with auto-update specified. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateType.html">ActivateType</a>.</p></li>
771    /// </ul>
772    pub fn get_last_updated(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
773        &self.last_updated
774    }
775    /// <p>When the specified private extension version was registered or activated in your account.</p>
776    pub fn time_created(mut self, input: ::aws_smithy_types::DateTime) -> Self {
777        self.time_created = ::std::option::Option::Some(input);
778        self
779    }
780    /// <p>When the specified private extension version was registered or activated in your account.</p>
781    pub fn set_time_created(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
782        self.time_created = input;
783        self
784    }
785    /// <p>When the specified private extension version was registered or activated in your account.</p>
786    pub fn get_time_created(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
787        &self.time_created
788    }
789    /// <p>A JSON string that represent the current configuration data for the extension in this account and Region.</p>
790    /// <p>To set the configuration data for an extension, use <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html">SetTypeConfiguration</a>.</p>
791    pub fn configuration_schema(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
792        self.configuration_schema = ::std::option::Option::Some(input.into());
793        self
794    }
795    /// <p>A JSON string that represent the current configuration data for the extension in this account and Region.</p>
796    /// <p>To set the configuration data for an extension, use <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html">SetTypeConfiguration</a>.</p>
797    pub fn set_configuration_schema(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
798        self.configuration_schema = input;
799        self
800    }
801    /// <p>A JSON string that represent the current configuration data for the extension in this account and Region.</p>
802    /// <p>To set the configuration data for an extension, use <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html">SetTypeConfiguration</a>.</p>
803    pub fn get_configuration_schema(&self) -> &::std::option::Option<::std::string::String> {
804        &self.configuration_schema
805    }
806    /// <p>The publisher ID of the extension publisher.</p>
807    /// <p>This applies only to public third-party extensions. For private registered extensions, and extensions provided by Amazon Web Services, CloudFormation returns <code>null</code>.</p>
808    pub fn publisher_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
809        self.publisher_id = ::std::option::Option::Some(input.into());
810        self
811    }
812    /// <p>The publisher ID of the extension publisher.</p>
813    /// <p>This applies only to public third-party extensions. For private registered extensions, and extensions provided by Amazon Web Services, CloudFormation returns <code>null</code>.</p>
814    pub fn set_publisher_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
815        self.publisher_id = input;
816        self
817    }
818    /// <p>The publisher ID of the extension publisher.</p>
819    /// <p>This applies only to public third-party extensions. For private registered extensions, and extensions provided by Amazon Web Services, CloudFormation returns <code>null</code>.</p>
820    pub fn get_publisher_id(&self) -> &::std::option::Option<::std::string::String> {
821        &self.publisher_id
822    }
823    /// <p>For public extensions that have been activated for this account and Region, the type name of the public extension.</p>
824    /// <p>If you specified a <code>TypeNameAlias</code> when enabling the extension in this account and Region, CloudFormation treats that alias as the extension's type name within the account and Region, not the type name of the public extension. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias">Use aliases to refer to extensions</a> in the <i>CloudFormation User Guide</i>.</p>
825    pub fn original_type_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
826        self.original_type_name = ::std::option::Option::Some(input.into());
827        self
828    }
829    /// <p>For public extensions that have been activated for this account and Region, the type name of the public extension.</p>
830    /// <p>If you specified a <code>TypeNameAlias</code> when enabling the extension in this account and Region, CloudFormation treats that alias as the extension's type name within the account and Region, not the type name of the public extension. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias">Use aliases to refer to extensions</a> in the <i>CloudFormation User Guide</i>.</p>
831    pub fn set_original_type_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
832        self.original_type_name = input;
833        self
834    }
835    /// <p>For public extensions that have been activated for this account and Region, the type name of the public extension.</p>
836    /// <p>If you specified a <code>TypeNameAlias</code> when enabling the extension in this account and Region, CloudFormation treats that alias as the extension's type name within the account and Region, not the type name of the public extension. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-alias">Use aliases to refer to extensions</a> in the <i>CloudFormation User Guide</i>.</p>
837    pub fn get_original_type_name(&self) -> &::std::option::Option<::std::string::String> {
838        &self.original_type_name
839    }
840    /// <p>For public extensions that have been activated for this account and Region, the Amazon Resource Name (ARN) of the public extension.</p>
841    pub fn original_type_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
842        self.original_type_arn = ::std::option::Option::Some(input.into());
843        self
844    }
845    /// <p>For public extensions that have been activated for this account and Region, the Amazon Resource Name (ARN) of the public extension.</p>
846    pub fn set_original_type_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
847        self.original_type_arn = input;
848        self
849    }
850    /// <p>For public extensions that have been activated for this account and Region, the Amazon Resource Name (ARN) of the public extension.</p>
851    pub fn get_original_type_arn(&self) -> &::std::option::Option<::std::string::String> {
852        &self.original_type_arn
853    }
854    /// <p>The version number of a public third-party extension.</p>
855    /// <p>This applies only if you specify a public extension you have activated in your account, or specify a public extension without specifying a version. For all other extensions, CloudFormation returns <code>null</code>.</p>
856    pub fn public_version_number(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
857        self.public_version_number = ::std::option::Option::Some(input.into());
858        self
859    }
860    /// <p>The version number of a public third-party extension.</p>
861    /// <p>This applies only if you specify a public extension you have activated in your account, or specify a public extension without specifying a version. For all other extensions, CloudFormation returns <code>null</code>.</p>
862    pub fn set_public_version_number(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
863        self.public_version_number = input;
864        self
865    }
866    /// <p>The version number of a public third-party extension.</p>
867    /// <p>This applies only if you specify a public extension you have activated in your account, or specify a public extension without specifying a version. For all other extensions, CloudFormation returns <code>null</code>.</p>
868    pub fn get_public_version_number(&self) -> &::std::option::Option<::std::string::String> {
869        &self.public_version_number
870    }
871    /// <p>The latest version of a public extension <i>that is available</i> for use.</p>
872    /// <p>This only applies if you specify a public extension, and you don't specify a version. For all other requests, CloudFormation returns <code>null</code>.</p>
873    pub fn latest_public_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
874        self.latest_public_version = ::std::option::Option::Some(input.into());
875        self
876    }
877    /// <p>The latest version of a public extension <i>that is available</i> for use.</p>
878    /// <p>This only applies if you specify a public extension, and you don't specify a version. For all other requests, CloudFormation returns <code>null</code>.</p>
879    pub fn set_latest_public_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
880        self.latest_public_version = input;
881        self
882    }
883    /// <p>The latest version of a public extension <i>that is available</i> for use.</p>
884    /// <p>This only applies if you specify a public extension, and you don't specify a version. For all other requests, CloudFormation returns <code>null</code>.</p>
885    pub fn get_latest_public_version(&self) -> &::std::option::Option<::std::string::String> {
886        &self.latest_public_version
887    }
888    /// <p>Whether the extension is activated in the account and Region.</p>
889    /// <p>This only applies to public third-party extensions. For all other extensions, CloudFormation returns <code>null</code>.</p>
890    pub fn is_activated(mut self, input: bool) -> Self {
891        self.is_activated = ::std::option::Option::Some(input);
892        self
893    }
894    /// <p>Whether the extension is activated in the account and Region.</p>
895    /// <p>This only applies to public third-party extensions. For all other extensions, CloudFormation returns <code>null</code>.</p>
896    pub fn set_is_activated(mut self, input: ::std::option::Option<bool>) -> Self {
897        self.is_activated = input;
898        self
899    }
900    /// <p>Whether the extension is activated in the account and Region.</p>
901    /// <p>This only applies to public third-party extensions. For all other extensions, CloudFormation returns <code>null</code>.</p>
902    pub fn get_is_activated(&self) -> &::std::option::Option<bool> {
903        &self.is_activated
904    }
905    /// <p>Whether CloudFormation automatically updates the extension in this account and Region when a new <i>minor</i> version is published by the extension publisher. Major versions released by the publisher must be manually updated. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-auto">Automatically use new versions of extensions</a> in the <i>CloudFormation User Guide</i>.</p>
906    pub fn auto_update(mut self, input: bool) -> Self {
907        self.auto_update = ::std::option::Option::Some(input);
908        self
909    }
910    /// <p>Whether CloudFormation automatically updates the extension in this account and Region when a new <i>minor</i> version is published by the extension publisher. Major versions released by the publisher must be manually updated. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-auto">Automatically use new versions of extensions</a> in the <i>CloudFormation User Guide</i>.</p>
911    pub fn set_auto_update(mut self, input: ::std::option::Option<bool>) -> Self {
912        self.auto_update = input;
913        self
914    }
915    /// <p>Whether CloudFormation automatically updates the extension in this account and Region when a new <i>minor</i> version is published by the extension publisher. Major versions released by the publisher must be manually updated. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html#registry-public-enable-auto">Automatically use new versions of extensions</a> in the <i>CloudFormation User Guide</i>.</p>
916    pub fn get_auto_update(&self) -> &::std::option::Option<bool> {
917        &self.auto_update
918    }
919    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
920        self._request_id = Some(request_id.into());
921        self
922    }
923
924    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
925        self._request_id = request_id;
926        self
927    }
928    /// Consumes the builder and constructs a [`DescribeTypeOutput`](crate::operation::describe_type::DescribeTypeOutput).
929    pub fn build(self) -> crate::operation::describe_type::DescribeTypeOutput {
930        crate::operation::describe_type::DescribeTypeOutput {
931            arn: self.arn,
932            r#type: self.r#type,
933            type_name: self.type_name,
934            default_version_id: self.default_version_id,
935            is_default_version: self.is_default_version,
936            type_tests_status: self.type_tests_status,
937            type_tests_status_description: self.type_tests_status_description,
938            description: self.description,
939            schema: self.schema,
940            provisioning_type: self.provisioning_type,
941            deprecated_status: self.deprecated_status,
942            logging_config: self.logging_config,
943            required_activated_types: self.required_activated_types,
944            execution_role_arn: self.execution_role_arn,
945            visibility: self.visibility,
946            source_url: self.source_url,
947            documentation_url: self.documentation_url,
948            last_updated: self.last_updated,
949            time_created: self.time_created,
950            configuration_schema: self.configuration_schema,
951            publisher_id: self.publisher_id,
952            original_type_name: self.original_type_name,
953            original_type_arn: self.original_type_arn,
954            public_version_number: self.public_version_number,
955            latest_public_version: self.latest_public_version,
956            is_activated: self.is_activated,
957            auto_update: self.auto_update,
958            _request_id: self._request_id,
959        }
960    }
961}