aws_sdk_acm/operation/request_certificate/
_request_certificate_input.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 RequestCertificateInput {
6    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
7    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
8    pub domain_name: ::std::option::Option<::std::string::String>,
9    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
10    pub validation_method: ::std::option::Option<crate::types::ValidationMethod>,
11    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
12    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
13    /// <ul>
14    /// <li>
15    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
16    /// <li>
17    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
18    /// <li>
19    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
20    /// </ul>
21    pub subject_alternative_names: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
22    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
23    pub idempotency_token: ::std::option::Option<::std::string::String>,
24    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
25    pub domain_validation_options: ::std::option::Option<::std::vec::Vec<crate::types::DomainValidationOption>>,
26    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
27    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
28    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
29    pub options: ::std::option::Option<crate::types::CertificateOptions>,
30    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
31    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
32    pub certificate_authority_arn: ::std::option::Option<::std::string::String>,
33    /// <p>One or more resource tags to associate with the certificate.</p>
34    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
35    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
36    /// <p>Algorithms supported for an ACM certificate request include:</p>
37    /// <ul>
38    /// <li>
39    /// <p><code>RSA_2048</code></p></li>
40    /// <li>
41    /// <p><code>EC_prime256v1</code></p></li>
42    /// <li>
43    /// <p><code>EC_secp384r1</code></p></li>
44    /// </ul>
45    /// <p>Other listed algorithms are for imported certificates only.</p>
46    /// </note> <note>
47    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
48    /// </note>
49    /// <p>Default: RSA_2048</p>
50    pub key_algorithm: ::std::option::Option<crate::types::KeyAlgorithm>,
51    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
52    pub managed_by: ::std::option::Option<crate::types::CertificateManagedBy>,
53}
54impl RequestCertificateInput {
55    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
56    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
57    pub fn domain_name(&self) -> ::std::option::Option<&str> {
58        self.domain_name.as_deref()
59    }
60    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
61    pub fn validation_method(&self) -> ::std::option::Option<&crate::types::ValidationMethod> {
62        self.validation_method.as_ref()
63    }
64    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
65    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
66    /// <ul>
67    /// <li>
68    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
69    /// <li>
70    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
71    /// <li>
72    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
73    /// </ul>
74    ///
75    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.subject_alternative_names.is_none()`.
76    pub fn subject_alternative_names(&self) -> &[::std::string::String] {
77        self.subject_alternative_names.as_deref().unwrap_or_default()
78    }
79    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
80    pub fn idempotency_token(&self) -> ::std::option::Option<&str> {
81        self.idempotency_token.as_deref()
82    }
83    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
84    ///
85    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.domain_validation_options.is_none()`.
86    pub fn domain_validation_options(&self) -> &[crate::types::DomainValidationOption] {
87        self.domain_validation_options.as_deref().unwrap_or_default()
88    }
89    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
90    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
91    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
92    pub fn options(&self) -> ::std::option::Option<&crate::types::CertificateOptions> {
93        self.options.as_ref()
94    }
95    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
96    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
97    pub fn certificate_authority_arn(&self) -> ::std::option::Option<&str> {
98        self.certificate_authority_arn.as_deref()
99    }
100    /// <p>One or more resource tags to associate with the certificate.</p>
101    ///
102    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
103    pub fn tags(&self) -> &[crate::types::Tag] {
104        self.tags.as_deref().unwrap_or_default()
105    }
106    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
107    /// <p>Algorithms supported for an ACM certificate request include:</p>
108    /// <ul>
109    /// <li>
110    /// <p><code>RSA_2048</code></p></li>
111    /// <li>
112    /// <p><code>EC_prime256v1</code></p></li>
113    /// <li>
114    /// <p><code>EC_secp384r1</code></p></li>
115    /// </ul>
116    /// <p>Other listed algorithms are for imported certificates only.</p>
117    /// </note> <note>
118    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
119    /// </note>
120    /// <p>Default: RSA_2048</p>
121    pub fn key_algorithm(&self) -> ::std::option::Option<&crate::types::KeyAlgorithm> {
122        self.key_algorithm.as_ref()
123    }
124    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
125    pub fn managed_by(&self) -> ::std::option::Option<&crate::types::CertificateManagedBy> {
126        self.managed_by.as_ref()
127    }
128}
129impl RequestCertificateInput {
130    /// Creates a new builder-style object to manufacture [`RequestCertificateInput`](crate::operation::request_certificate::RequestCertificateInput).
131    pub fn builder() -> crate::operation::request_certificate::builders::RequestCertificateInputBuilder {
132        crate::operation::request_certificate::builders::RequestCertificateInputBuilder::default()
133    }
134}
135
136/// A builder for [`RequestCertificateInput`](crate::operation::request_certificate::RequestCertificateInput).
137#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
138#[non_exhaustive]
139pub struct RequestCertificateInputBuilder {
140    pub(crate) domain_name: ::std::option::Option<::std::string::String>,
141    pub(crate) validation_method: ::std::option::Option<crate::types::ValidationMethod>,
142    pub(crate) subject_alternative_names: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
143    pub(crate) idempotency_token: ::std::option::Option<::std::string::String>,
144    pub(crate) domain_validation_options: ::std::option::Option<::std::vec::Vec<crate::types::DomainValidationOption>>,
145    pub(crate) options: ::std::option::Option<crate::types::CertificateOptions>,
146    pub(crate) certificate_authority_arn: ::std::option::Option<::std::string::String>,
147    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
148    pub(crate) key_algorithm: ::std::option::Option<crate::types::KeyAlgorithm>,
149    pub(crate) managed_by: ::std::option::Option<crate::types::CertificateManagedBy>,
150}
151impl RequestCertificateInputBuilder {
152    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
153    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
154    /// This field is required.
155    pub fn domain_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
156        self.domain_name = ::std::option::Option::Some(input.into());
157        self
158    }
159    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
160    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
161    pub fn set_domain_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
162        self.domain_name = input;
163        self
164    }
165    /// <p>Fully qualified domain name (FQDN), such as www.example.com, that you want to secure with an ACM certificate. Use an asterisk (*) to create a wildcard certificate that protects several sites in the same domain. For example, *.example.com protects www.example.com, site.example.com, and images.example.com.</p>
166    /// <p>In compliance with <a href="https://datatracker.ietf.org/doc/html/rfc5280">RFC 5280</a>, the length of the domain name (technically, the Common Name) that you provide cannot exceed 64 octets (characters), including periods. To add a longer domain name, specify it in the Subject Alternative Name field, which supports names up to 253 octets in length.</p>
167    pub fn get_domain_name(&self) -> &::std::option::Option<::std::string::String> {
168        &self.domain_name
169    }
170    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
171    pub fn validation_method(mut self, input: crate::types::ValidationMethod) -> Self {
172        self.validation_method = ::std::option::Option::Some(input);
173        self
174    }
175    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
176    pub fn set_validation_method(mut self, input: ::std::option::Option<crate::types::ValidationMethod>) -> Self {
177        self.validation_method = input;
178        self
179    }
180    /// <p>The method you want to use if you are requesting a public certificate to validate that you own or control domain. You can <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html">validate with DNS</a> or <a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-email.html">validate with email</a>. We recommend that you use DNS validation.</p>
181    pub fn get_validation_method(&self) -> &::std::option::Option<crate::types::ValidationMethod> {
182        &self.validation_method
183    }
184    /// Appends an item to `subject_alternative_names`.
185    ///
186    /// To override the contents of this collection use [`set_subject_alternative_names`](Self::set_subject_alternative_names).
187    ///
188    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
189    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
190    /// <ul>
191    /// <li>
192    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
193    /// <li>
194    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
195    /// <li>
196    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
197    /// </ul>
198    pub fn subject_alternative_names(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
199        let mut v = self.subject_alternative_names.unwrap_or_default();
200        v.push(input.into());
201        self.subject_alternative_names = ::std::option::Option::Some(v);
202        self
203    }
204    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
205    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
206    /// <ul>
207    /// <li>
208    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
209    /// <li>
210    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
211    /// <li>
212    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
213    /// </ul>
214    pub fn set_subject_alternative_names(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
215        self.subject_alternative_names = input;
216        self
217    }
218    /// <p>Additional FQDNs to be included in the Subject Alternative Name extension of the ACM certificate. For example, add the name www.example.net to a certificate for which the <code>DomainName</code> field is www.example.com if users can reach your site by using either name. The maximum number of domain names that you can add to an ACM certificate is 100. However, the initial quota is 10 domain names. If you need more than 10 names, you must request a quota increase. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-limits.html">Quotas</a>.</p>
219    /// <p>The maximum length of a SAN DNS name is 253 octets. The name is made up of multiple labels separated by periods. No label can be longer than 63 octets. Consider the following examples:</p>
220    /// <ul>
221    /// <li>
222    /// <p><code>(63 octets).(63 octets).(63 octets).(61 octets)</code> is legal because the total length is 253 octets (63+1+63+1+63+1+61) and no label exceeds 63 octets.</p></li>
223    /// <li>
224    /// <p><code>(64 octets).(63 octets).(63 octets).(61 octets)</code> is not legal because the total length exceeds 253 octets (64+1+63+1+63+1+61) and the first label exceeds 63 octets.</p></li>
225    /// <li>
226    /// <p><code>(63 octets).(63 octets).(63 octets).(62 octets)</code> is not legal because the total length of the DNS name (63+1+63+1+63+1+62) exceeds 253 octets.</p></li>
227    /// </ul>
228    pub fn get_subject_alternative_names(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
229        &self.subject_alternative_names
230    }
231    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
232    pub fn idempotency_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
233        self.idempotency_token = ::std::option::Option::Some(input.into());
234        self
235    }
236    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
237    pub fn set_idempotency_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
238        self.idempotency_token = input;
239        self
240    }
241    /// <p>Customer chosen string that can be used to distinguish between calls to <code>RequestCertificate</code>. Idempotency tokens time out after one hour. Therefore, if you call <code>RequestCertificate</code> multiple times with the same idempotency token within one hour, ACM recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, ACM recognizes that you are requesting multiple certificates.</p>
242    pub fn get_idempotency_token(&self) -> &::std::option::Option<::std::string::String> {
243        &self.idempotency_token
244    }
245    /// Appends an item to `domain_validation_options`.
246    ///
247    /// To override the contents of this collection use [`set_domain_validation_options`](Self::set_domain_validation_options).
248    ///
249    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
250    pub fn domain_validation_options(mut self, input: crate::types::DomainValidationOption) -> Self {
251        let mut v = self.domain_validation_options.unwrap_or_default();
252        v.push(input);
253        self.domain_validation_options = ::std::option::Option::Some(v);
254        self
255    }
256    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
257    pub fn set_domain_validation_options(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::DomainValidationOption>>) -> Self {
258        self.domain_validation_options = input;
259        self
260    }
261    /// <p>The domain name that you want ACM to use to send you emails so that you can validate domain ownership.</p>
262    pub fn get_domain_validation_options(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::DomainValidationOption>> {
263        &self.domain_validation_options
264    }
265    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
266    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
267    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
268    pub fn options(mut self, input: crate::types::CertificateOptions) -> Self {
269        self.options = ::std::option::Option::Some(input);
270        self
271    }
272    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
273    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
274    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
275    pub fn set_options(mut self, input: ::std::option::Option<crate::types::CertificateOptions>) -> Self {
276        self.options = input;
277        self
278    }
279    /// <p>You can use this parameter to specify whether to add the certificate to a certificate transparency log and export your certificate.</p>
280    /// <p>Certificate transparency makes it possible to detect SSL/TLS certificates that have been mistakenly or maliciously issued. Certificates that have not been logged typically produce an error message in a browser. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency">Opting Out of Certificate Transparency Logging</a>.</p>
281    /// <p>You can export public ACM certificates to use with Amazon Web Services services as well as outside the Amazon Web Services Cloud. For more information, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html">Certificate Manager exportable public certificate</a>.</p>
282    pub fn get_options(&self) -> &::std::option::Option<crate::types::CertificateOptions> {
283        &self.options
284    }
285    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
286    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
287    pub fn certificate_authority_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
288        self.certificate_authority_arn = ::std::option::Option::Some(input.into());
289        self
290    }
291    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
292    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
293    pub fn set_certificate_authority_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
294        self.certificate_authority_arn = input;
295        self
296    }
297    /// <p>The Amazon Resource Name (ARN) of the private certificate authority (CA) that will be used to issue the certificate. If you do not provide an ARN and you are trying to request a private certificate, ACM will attempt to issue a public certificate. For more information about private CAs, see the <a href="https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html">Amazon Web Services Private Certificate Authority</a> user guide. The ARN must have the following form:</p>
298    /// <p><code>arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012</code></p>
299    pub fn get_certificate_authority_arn(&self) -> &::std::option::Option<::std::string::String> {
300        &self.certificate_authority_arn
301    }
302    /// Appends an item to `tags`.
303    ///
304    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
305    ///
306    /// <p>One or more resource tags to associate with the certificate.</p>
307    pub fn tags(mut self, input: crate::types::Tag) -> Self {
308        let mut v = self.tags.unwrap_or_default();
309        v.push(input);
310        self.tags = ::std::option::Option::Some(v);
311        self
312    }
313    /// <p>One or more resource tags to associate with the certificate.</p>
314    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
315        self.tags = input;
316        self
317    }
318    /// <p>One or more resource tags to associate with the certificate.</p>
319    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
320        &self.tags
321    }
322    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
323    /// <p>Algorithms supported for an ACM certificate request include:</p>
324    /// <ul>
325    /// <li>
326    /// <p><code>RSA_2048</code></p></li>
327    /// <li>
328    /// <p><code>EC_prime256v1</code></p></li>
329    /// <li>
330    /// <p><code>EC_secp384r1</code></p></li>
331    /// </ul>
332    /// <p>Other listed algorithms are for imported certificates only.</p>
333    /// </note> <note>
334    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
335    /// </note>
336    /// <p>Default: RSA_2048</p>
337    pub fn key_algorithm(mut self, input: crate::types::KeyAlgorithm) -> Self {
338        self.key_algorithm = ::std::option::Option::Some(input);
339        self
340    }
341    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
342    /// <p>Algorithms supported for an ACM certificate request include:</p>
343    /// <ul>
344    /// <li>
345    /// <p><code>RSA_2048</code></p></li>
346    /// <li>
347    /// <p><code>EC_prime256v1</code></p></li>
348    /// <li>
349    /// <p><code>EC_secp384r1</code></p></li>
350    /// </ul>
351    /// <p>Other listed algorithms are for imported certificates only.</p>
352    /// </note> <note>
353    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
354    /// </note>
355    /// <p>Default: RSA_2048</p>
356    pub fn set_key_algorithm(mut self, input: ::std::option::Option<crate::types::KeyAlgorithm>) -> Self {
357        self.key_algorithm = input;
358        self
359    }
360    /// <p>Specifies the algorithm of the public and private key pair that your certificate uses to encrypt data. RSA is the default key algorithm for ACM certificates. Elliptic Curve Digital Signature Algorithm (ECDSA) keys are smaller, offering security comparable to RSA keys but with greater computing efficiency. However, ECDSA is not supported by all network clients. Some Amazon Web Services services may require RSA keys, or only support ECDSA keys of a particular size, while others allow the use of either RSA and ECDSA keys to ensure that compatibility is not broken. Check the requirements for the Amazon Web Services service where you plan to deploy your certificate. For more information about selecting an algorithm, see <a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms">Key algorithms</a>.</p><note>
361    /// <p>Algorithms supported for an ACM certificate request include:</p>
362    /// <ul>
363    /// <li>
364    /// <p><code>RSA_2048</code></p></li>
365    /// <li>
366    /// <p><code>EC_prime256v1</code></p></li>
367    /// <li>
368    /// <p><code>EC_secp384r1</code></p></li>
369    /// </ul>
370    /// <p>Other listed algorithms are for imported certificates only.</p>
371    /// </note> <note>
372    /// <p>When you request a private PKI certificate signed by a CA from Amazon Web Services Private CA, the specified signing algorithm family (RSA or ECDSA) must match the algorithm family of the CA's secret key.</p>
373    /// </note>
374    /// <p>Default: RSA_2048</p>
375    pub fn get_key_algorithm(&self) -> &::std::option::Option<crate::types::KeyAlgorithm> {
376        &self.key_algorithm
377    }
378    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
379    pub fn managed_by(mut self, input: crate::types::CertificateManagedBy) -> Self {
380        self.managed_by = ::std::option::Option::Some(input);
381        self
382    }
383    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
384    pub fn set_managed_by(mut self, input: ::std::option::Option<crate::types::CertificateManagedBy>) -> Self {
385        self.managed_by = input;
386        self
387    }
388    /// <p>Identifies the Amazon Web Services service that manages the certificate issued by ACM.</p>
389    pub fn get_managed_by(&self) -> &::std::option::Option<crate::types::CertificateManagedBy> {
390        &self.managed_by
391    }
392    /// Consumes the builder and constructs a [`RequestCertificateInput`](crate::operation::request_certificate::RequestCertificateInput).
393    pub fn build(
394        self,
395    ) -> ::std::result::Result<crate::operation::request_certificate::RequestCertificateInput, ::aws_smithy_types::error::operation::BuildError> {
396        ::std::result::Result::Ok(crate::operation::request_certificate::RequestCertificateInput {
397            domain_name: self.domain_name,
398            validation_method: self.validation_method,
399            subject_alternative_names: self.subject_alternative_names,
400            idempotency_token: self.idempotency_token,
401            domain_validation_options: self.domain_validation_options,
402            options: self.options,
403            certificate_authority_arn: self.certificate_authority_arn,
404            tags: self.tags,
405            key_algorithm: self.key_algorithm,
406            managed_by: self.managed_by,
407        })
408    }
409}