aws_sdk_connect/operation/associate_email_address_alias/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::associate_email_address_alias::_associate_email_address_alias_output::AssociateEmailAddressAliasOutputBuilder;
3
4pub use crate::operation::associate_email_address_alias::_associate_email_address_alias_input::AssociateEmailAddressAliasInputBuilder;
5
6impl crate::operation::associate_email_address_alias::builders::AssociateEmailAddressAliasInputBuilder {
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::associate_email_address_alias::AssociateEmailAddressAliasOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::associate_email_address_alias::AssociateEmailAddressAliasError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.associate_email_address_alias();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `AssociateEmailAddressAlias`.
24///
25/// <p>Associates an email address alias with an existing email address in an Amazon Connect instance. This creates a forwarding relationship where emails sent to the alias email address are automatically forwarded to the primary email address.</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>Unified customer support</b>: Create multiple entry points (for example, support@example.com, help@example.com, customercare@example.com) that all forward to a single agent queue for streamlined management.</p></li>
31/// <li>
32/// <p><b>Department consolidation</b>: Forward emails from legacy department addresses (for example, sales@example.com, info@example.com) to a centralized customer service email during organizational restructuring.</p></li>
33/// <li>
34/// <p><b>Brand management</b>: Enable you to use familiar brand-specific email addresses that forward to the appropriate Amazon Connect instance email address.</p></li>
35/// </ul>
36/// <p><b>Important things to know</b></p>
37/// <ul>
38/// <li>
39/// <p>Each email address can have a maximum of one alias. You cannot create multiple aliases for the same email address.</p></li>
40/// <li>
41/// <p>If the alias email address already receives direct emails, it continues to receive direct emails plus forwarded emails.</p></li>
42/// <li>
43/// <p>You cannot chain email aliases together (that is, create an alias of an alias).</p></li>
44/// </ul>
45/// <p><code>AssociateEmailAddressAlias</code> does not return the following information:</p>
46/// <ul>
47/// <li>
48/// <p>A confirmation of the alias relationship details (you must call <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribeEmailAddress.html">DescribeEmailAddress</a> to verify).</p></li>
49/// <li>
50/// <p>The timestamp of when the association occurred.</p></li>
51/// <li>
52/// <p>The status of the forwarding configuration.</p></li>
53/// </ul>
54/// <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>
55/// <p><b>Related operations</b></p>
56/// <ul>
57/// <li>
58/// <p><a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_DisassociateEmailAddressAlias.html">DisassociateEmailAddressAlias</a>: Removes the alias association between two email addresses in an Amazon Connect instance.</p></li>
59/// <li>
60/// <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>
61/// <li>
62/// <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>
63/// <li>
64/// <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>
65/// <li>
66/// <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>
67/// <li>
68/// <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>
69/// </ul>
70#[derive(::std::clone::Clone, ::std::fmt::Debug)]
71pub struct AssociateEmailAddressAliasFluentBuilder {
72    handle: ::std::sync::Arc<crate::client::Handle>,
73    inner: crate::operation::associate_email_address_alias::builders::AssociateEmailAddressAliasInputBuilder,
74    config_override: ::std::option::Option<crate::config::Builder>,
75}
76impl
77    crate::client::customize::internal::CustomizableSend<
78        crate::operation::associate_email_address_alias::AssociateEmailAddressAliasOutput,
79        crate::operation::associate_email_address_alias::AssociateEmailAddressAliasError,
80    > for AssociateEmailAddressAliasFluentBuilder
81{
82    fn send(
83        self,
84        config_override: crate::config::Builder,
85    ) -> crate::client::customize::internal::BoxFuture<
86        crate::client::customize::internal::SendResult<
87            crate::operation::associate_email_address_alias::AssociateEmailAddressAliasOutput,
88            crate::operation::associate_email_address_alias::AssociateEmailAddressAliasError,
89        >,
90    > {
91        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
92    }
93}
94impl AssociateEmailAddressAliasFluentBuilder {
95    /// Creates a new `AssociateEmailAddressAliasFluentBuilder`.
96    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
97        Self {
98            handle,
99            inner: ::std::default::Default::default(),
100            config_override: ::std::option::Option::None,
101        }
102    }
103    /// Access the AssociateEmailAddressAlias as a reference.
104    pub fn as_input(&self) -> &crate::operation::associate_email_address_alias::builders::AssociateEmailAddressAliasInputBuilder {
105        &self.inner
106    }
107    /// Sends the request and returns the response.
108    ///
109    /// If an error occurs, an `SdkError` will be returned with additional details that
110    /// can be matched against.
111    ///
112    /// By default, any retryable failures will be retried twice. Retry behavior
113    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
114    /// set when configuring the client.
115    pub async fn send(
116        self,
117    ) -> ::std::result::Result<
118        crate::operation::associate_email_address_alias::AssociateEmailAddressAliasOutput,
119        ::aws_smithy_runtime_api::client::result::SdkError<
120            crate::operation::associate_email_address_alias::AssociateEmailAddressAliasError,
121            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
122        >,
123    > {
124        let input = self
125            .inner
126            .build()
127            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
128        let runtime_plugins = crate::operation::associate_email_address_alias::AssociateEmailAddressAlias::operation_runtime_plugins(
129            self.handle.runtime_plugins.clone(),
130            &self.handle.conf,
131            self.config_override,
132        );
133        crate::operation::associate_email_address_alias::AssociateEmailAddressAlias::orchestrate(&runtime_plugins, input).await
134    }
135
136    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
137    pub fn customize(
138        self,
139    ) -> crate::client::customize::CustomizableOperation<
140        crate::operation::associate_email_address_alias::AssociateEmailAddressAliasOutput,
141        crate::operation::associate_email_address_alias::AssociateEmailAddressAliasError,
142        Self,
143    > {
144        crate::client::customize::CustomizableOperation::new(self)
145    }
146    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
147        self.set_config_override(::std::option::Option::Some(config_override.into()));
148        self
149    }
150
151    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
152        self.config_override = config_override;
153        self
154    }
155    /// <p>The identifier of the email address.</p>
156    pub fn email_address_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
157        self.inner = self.inner.email_address_id(input.into());
158        self
159    }
160    /// <p>The identifier of the email address.</p>
161    pub fn set_email_address_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
162        self.inner = self.inner.set_email_address_id(input);
163        self
164    }
165    /// <p>The identifier of the email address.</p>
166    pub fn get_email_address_id(&self) -> &::std::option::Option<::std::string::String> {
167        self.inner.get_email_address_id()
168    }
169    /// <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>
170    pub fn instance_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
171        self.inner = self.inner.instance_id(input.into());
172        self
173    }
174    /// <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>
175    pub fn set_instance_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
176        self.inner = self.inner.set_instance_id(input);
177        self
178    }
179    /// <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>
180    pub fn get_instance_id(&self) -> &::std::option::Option<::std::string::String> {
181        self.inner.get_instance_id()
182    }
183    /// <p>Configuration object that specifies which email address will serve as the alias. The specified email address must already exist in the Amazon Connect instance and cannot already be configured as an alias or have an alias of its own.</p>
184    pub fn alias_configuration(mut self, input: crate::types::AliasConfiguration) -> Self {
185        self.inner = self.inner.alias_configuration(input);
186        self
187    }
188    /// <p>Configuration object that specifies which email address will serve as the alias. The specified email address must already exist in the Amazon Connect instance and cannot already be configured as an alias or have an alias of its own.</p>
189    pub fn set_alias_configuration(mut self, input: ::std::option::Option<crate::types::AliasConfiguration>) -> Self {
190        self.inner = self.inner.set_alias_configuration(input);
191        self
192    }
193    /// <p>Configuration object that specifies which email address will serve as the alias. The specified email address must already exist in the Amazon Connect instance and cannot already be configured as an alias or have an alias of its own.</p>
194    pub fn get_alias_configuration(&self) -> &::std::option::Option<crate::types::AliasConfiguration> {
195        self.inner.get_alias_configuration()
196    }
197    /// <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>
198    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
199        self.inner = self.inner.client_token(input.into());
200        self
201    }
202    /// <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>
203    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
204        self.inner = self.inner.set_client_token(input);
205        self
206    }
207    /// <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>
208    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
209        self.inner.get_client_token()
210    }
211}