aws_sdk_connect/operation/disassociate_email_address_alias/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::disassociate_email_address_alias::_disassociate_email_address_alias_output::DisassociateEmailAddressAliasOutputBuilder;
3
4pub use crate::operation::disassociate_email_address_alias::_disassociate_email_address_alias_input::DisassociateEmailAddressAliasInputBuilder;
5
6impl crate::operation::disassociate_email_address_alias::builders::DisassociateEmailAddressAliasInputBuilder {
7 /// Sends a request with this input using the given client.
8 pub async fn send_with(
9 self,
10 client: &crate::Client,
11 ) -> ::std::result::Result<
12 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.disassociate_email_address_alias();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `DisassociateEmailAddressAlias`.
24///
25/// <p>Removes the alias association between two email addresses in an Amazon Connect instance. After disassociation, emails sent to the former alias email address are no longer forwarded to the primary email address. Both email addresses continue to exist independently and can receive emails directly.</p>
26/// <p><b>Use cases</b></p>
27/// <p>Following are common uses cases for this API:</p>
28/// <ul>
29/// <li>
30/// <p><b>Department separation</b>: Remove alias relationships when splitting a consolidated support queue back into separate department-specific queues.</p></li>
31/// <li>
32/// <p><b>Email address retirement</b>: Cleanly remove forwarding relationships before decommissioning old email addresses.</p></li>
33/// <li>
34/// <p><b>Organizational restructuring</b>: Reconfigure email routing when business processes change and aliases are no longer needed.</p></li>
35/// </ul>
36/// <p><b>Important things to know</b></p>
37/// <ul>
38/// <li>
39/// <p>Concurrent operations: This API uses distributed locking, so concurrent operations on the same email addresses may be temporarily blocked.</p></li>
40/// <li>
41/// <p>Emails sent to the former alias address are still delivered directly to that address if it exists.</p></li>
42/// <li>
43/// <p>You do not need to delete the email addresses after disassociation. Both addresses remain active independently.</p></li>
44/// <li>
45/// <p>After a successful disassociation, you can immediately create a new alias relationship with the same addresses.</p></li>
46/// <li>
47/// <p>200 status means alias was successfully disassociated.</p></li>
48/// </ul>
49/// <p><code>DisassociateEmailAddressAlias</code> does not return the following information:</p>
50/// <ul>
51/// <li>
52/// <p>Details in the response about the email that was disassociated. The response returns an empty body.</p></li>
53/// <li>
54/// <p>The timestamp of when the disassociation occurred.</p></li>
55/// </ul>
56/// <p><b>Endpoints</b>: See <a href="https://docs.aws.amazon.com/general/latest/gr/connect_region.html">Amazon Connect endpoints and quotas</a>.</p>
57/// <p><b>Related operations</b></p>
58/// <ul>
59/// <li>
60/// <p><a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_AssociateEmailAddressAlias.html">AssociateEmailAddressAlias</a>: Associates an email address alias with an existing email address in an Amazon Connect instance.</p></li>
61/// <li>
62/// <p><a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribeEmailAddress.html">DescribeEmailAddress</a>: View current alias configurations for an email address.</p></li>
63/// <li>
64/// <p><a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_SearchEmailAddresses.html">SearchEmailAddresses</a>: Find email addresses and their alias relationships across an instance.</p></li>
65/// <li>
66/// <p><a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateEmailAddress.html">CreateEmailAddress</a>: Create new email addresses that can participate in alias relationships.</p></li>
67/// <li>
68/// <p><a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_DeleteEmailAddress.html">DeleteEmailAddress</a>: Remove email addresses (automatically removes any alias relationships).</p></li>
69/// <li>
70/// <p><a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateEmailAddressMetadata.html">UpdateEmailAddressMetadata</a>: Modify email address properties (does not affect alias relationships).</p></li>
71/// </ul>
72#[derive(::std::clone::Clone, ::std::fmt::Debug)]
73pub struct DisassociateEmailAddressAliasFluentBuilder {
74 handle: ::std::sync::Arc<crate::client::Handle>,
75 inner: crate::operation::disassociate_email_address_alias::builders::DisassociateEmailAddressAliasInputBuilder,
76 config_override: ::std::option::Option<crate::config::Builder>,
77}
78impl
79 crate::client::customize::internal::CustomizableSend<
80 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
81 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
82 > for DisassociateEmailAddressAliasFluentBuilder
83{
84 fn send(
85 self,
86 config_override: crate::config::Builder,
87 ) -> crate::client::customize::internal::BoxFuture<
88 crate::client::customize::internal::SendResult<
89 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
90 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
91 >,
92 > {
93 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
94 }
95}
96impl DisassociateEmailAddressAliasFluentBuilder {
97 /// Creates a new `DisassociateEmailAddressAliasFluentBuilder`.
98 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
99 Self {
100 handle,
101 inner: ::std::default::Default::default(),
102 config_override: ::std::option::Option::None,
103 }
104 }
105 /// Access the DisassociateEmailAddressAlias as a reference.
106 pub fn as_input(&self) -> &crate::operation::disassociate_email_address_alias::builders::DisassociateEmailAddressAliasInputBuilder {
107 &self.inner
108 }
109 /// Sends the request and returns the response.
110 ///
111 /// If an error occurs, an `SdkError` will be returned with additional details that
112 /// can be matched against.
113 ///
114 /// By default, any retryable failures will be retried twice. Retry behavior
115 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
116 /// set when configuring the client.
117 pub async fn send(
118 self,
119 ) -> ::std::result::Result<
120 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
121 ::aws_smithy_runtime_api::client::result::SdkError<
122 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
123 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
124 >,
125 > {
126 let input = self
127 .inner
128 .build()
129 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
130 let runtime_plugins = crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAlias::operation_runtime_plugins(
131 self.handle.runtime_plugins.clone(),
132 &self.handle.conf,
133 self.config_override,
134 );
135 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAlias::orchestrate(&runtime_plugins, input).await
136 }
137
138 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
139 pub fn customize(
140 self,
141 ) -> crate::client::customize::CustomizableOperation<
142 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
143 crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
144 Self,
145 > {
146 crate::client::customize::CustomizableOperation::new(self)
147 }
148 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
149 self.set_config_override(::std::option::Option::Some(config_override.into()));
150 self
151 }
152
153 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
154 self.config_override = config_override;
155 self
156 }
157 /// <p>The identifier of the email address.</p>
158 pub fn email_address_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
159 self.inner = self.inner.email_address_id(input.into());
160 self
161 }
162 /// <p>The identifier of the email address.</p>
163 pub fn set_email_address_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
164 self.inner = self.inner.set_email_address_id(input);
165 self
166 }
167 /// <p>The identifier of the email address.</p>
168 pub fn get_email_address_id(&self) -> &::std::option::Option<::std::string::String> {
169 self.inner.get_email_address_id()
170 }
171 /// <p>The identifier of the Amazon Connect instance. You can <a href="https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html">find the instance ID</a> in the Amazon Resource Name (ARN) of the instance.</p>
172 pub fn instance_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
173 self.inner = self.inner.instance_id(input.into());
174 self
175 }
176 /// <p>The identifier of the Amazon Connect instance. You can <a href="https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html">find the instance ID</a> in the Amazon Resource Name (ARN) of the instance.</p>
177 pub fn set_instance_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
178 self.inner = self.inner.set_instance_id(input);
179 self
180 }
181 /// <p>The identifier of the Amazon Connect instance. You can <a href="https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html">find the instance ID</a> in the Amazon Resource Name (ARN) of the instance.</p>
182 pub fn get_instance_id(&self) -> &::std::option::Option<::std::string::String> {
183 self.inner.get_instance_id()
184 }
185 /// <p>Configuration object that specifies which alias relationship to remove. The alias association must currently exist between the primary email address and the specified alias email address.</p>
186 pub fn alias_configuration(mut self, input: crate::types::AliasConfiguration) -> Self {
187 self.inner = self.inner.alias_configuration(input);
188 self
189 }
190 /// <p>Configuration object that specifies which alias relationship to remove. The alias association must currently exist between the primary email address and the specified alias email address.</p>
191 pub fn set_alias_configuration(mut self, input: ::std::option::Option<crate::types::AliasConfiguration>) -> Self {
192 self.inner = self.inner.set_alias_configuration(input);
193 self
194 }
195 /// <p>Configuration object that specifies which alias relationship to remove. The alias association must currently exist between the primary email address and the specified alias email address.</p>
196 pub fn get_alias_configuration(&self) -> &::std::option::Option<crate::types::AliasConfiguration> {
197 self.inner.get_alias_configuration()
198 }
199 /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see <a href="https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/">Making retries safe with idempotent APIs</a>.</p>
200 pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
201 self.inner = self.inner.client_token(input.into());
202 self
203 }
204 /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see <a href="https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/">Making retries safe with idempotent APIs</a>.</p>
205 pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
206 self.inner = self.inner.set_client_token(input);
207 self
208 }
209 /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see <a href="https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/">Making retries safe with idempotent APIs</a>.</p>
210 pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
211 self.inner.get_client_token()
212 }
213}