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}