aws-sdk-connect 1.166.0

AWS SDK for Amazon Connect Service
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::disassociate_email_address_alias::_disassociate_email_address_alias_input::DisassociateEmailAddressAliasInputBuilder;

pub use crate::operation::disassociate_email_address_alias::_disassociate_email_address_alias_output::DisassociateEmailAddressAliasOutputBuilder;

impl crate::operation::disassociate_email_address_alias::builders::DisassociateEmailAddressAliasInputBuilder {
    /// Sends a request with this input using the given client.
    pub async fn send_with(
        self,
        client: &crate::Client,
    ) -> ::std::result::Result<
        crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let mut fluent_builder = client.disassociate_email_address_alias();
        fluent_builder.inner = self;
        fluent_builder.send().await
    }
}
/// Fluent builder constructing a request to `DisassociateEmailAddressAlias`.
///
/// <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>
/// <p><b>Use cases</b></p>
/// <p>Following are common uses cases for this API:</p>
/// <ul>
/// <li>
/// <p><b>Department separation</b>: Remove alias relationships when splitting a consolidated support queue back into separate department-specific queues.</p></li>
/// <li>
/// <p><b>Email address retirement</b>: Cleanly remove forwarding relationships before decommissioning old email addresses.</p></li>
/// <li>
/// <p><b>Organizational restructuring</b>: Reconfigure email routing when business processes change and aliases are no longer needed.</p></li>
/// </ul>
/// <p><b>Important things to know</b></p>
/// <ul>
/// <li>
/// <p>Concurrent operations: This API uses distributed locking, so concurrent operations on the same email addresses may be temporarily blocked.</p></li>
/// <li>
/// <p>Emails sent to the former alias address are still delivered directly to that address if it exists.</p></li>
/// <li>
/// <p>You do not need to delete the email addresses after disassociation. Both addresses remain active independently.</p></li>
/// <li>
/// <p>After a successful disassociation, you can immediately create a new alias relationship with the same addresses.</p></li>
/// <li>
/// <p>200 status means alias was successfully disassociated.</p></li>
/// </ul>
/// <p><code>DisassociateEmailAddressAlias</code> does not return the following information:</p>
/// <ul>
/// <li>
/// <p>Details in the response about the email that was disassociated. The response returns an empty body.</p></li>
/// <li>
/// <p>The timestamp of when the disassociation occurred.</p></li>
/// </ul>
/// <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>
/// <p><b>Related operations</b></p>
/// <ul>
/// <li>
/// <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>
/// <li>
/// <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>
/// <li>
/// <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>
/// <li>
/// <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>
/// <li>
/// <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>
/// <li>
/// <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>
/// </ul>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct DisassociateEmailAddressAliasFluentBuilder {
    handle: ::std::sync::Arc<crate::client::Handle>,
    inner: crate::operation::disassociate_email_address_alias::builders::DisassociateEmailAddressAliasInputBuilder,
    config_override: ::std::option::Option<crate::config::Builder>,
}
impl
    crate::client::customize::internal::CustomizableSend<
        crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
        crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
    > for DisassociateEmailAddressAliasFluentBuilder
{
    fn send(
        self,
        config_override: crate::config::Builder,
    ) -> crate::client::customize::internal::BoxFuture<
        crate::client::customize::internal::SendResult<
            crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
            crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
        >,
    > {
        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
    }
}
impl DisassociateEmailAddressAliasFluentBuilder {
    /// Creates a new `DisassociateEmailAddressAliasFluentBuilder`.
    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
        Self {
            handle,
            inner: ::std::default::Default::default(),
            config_override: ::std::option::Option::None,
        }
    }
    /// Access the DisassociateEmailAddressAlias as a reference.
    pub fn as_input(&self) -> &crate::operation::disassociate_email_address_alias::builders::DisassociateEmailAddressAliasInputBuilder {
        &self.inner
    }
    /// Sends the request and returns the response.
    ///
    /// If an error occurs, an `SdkError` will be returned with additional details that
    /// can be matched against.
    ///
    /// By default, any retryable failures will be retried twice. Retry behavior
    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
    /// set when configuring the client.
    pub async fn send(
        self,
    ) -> ::std::result::Result<
        crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let input = self
            .inner
            .build()
            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
        let runtime_plugins = crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAlias::operation_runtime_plugins(
            self.handle.runtime_plugins.clone(),
            &self.handle.conf,
            self.config_override,
        );
        crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAlias::orchestrate(&runtime_plugins, input).await
    }

    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
    pub fn customize(
        self,
    ) -> crate::client::customize::CustomizableOperation<
        crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasOutput,
        crate::operation::disassociate_email_address_alias::DisassociateEmailAddressAliasError,
        Self,
    > {
        crate::client::customize::CustomizableOperation::new(self)
    }
    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
        self.set_config_override(::std::option::Option::Some(config_override.into()));
        self
    }

    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
        self.config_override = config_override;
        self
    }
    /// <p>The identifier of the email address.</p>
    pub fn email_address_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.email_address_id(input.into());
        self
    }
    /// <p>The identifier of the email address.</p>
    pub fn set_email_address_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_email_address_id(input);
        self
    }
    /// <p>The identifier of the email address.</p>
    pub fn get_email_address_id(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_email_address_id()
    }
    /// <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>
    pub fn instance_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.instance_id(input.into());
        self
    }
    /// <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>
    pub fn set_instance_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_instance_id(input);
        self
    }
    /// <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>
    pub fn get_instance_id(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_instance_id()
    }
    /// <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>
    pub fn alias_configuration(mut self, input: crate::types::AliasConfiguration) -> Self {
        self.inner = self.inner.alias_configuration(input);
        self
    }
    /// <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>
    pub fn set_alias_configuration(mut self, input: ::std::option::Option<crate::types::AliasConfiguration>) -> Self {
        self.inner = self.inner.set_alias_configuration(input);
        self
    }
    /// <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>
    pub fn get_alias_configuration(&self) -> &::std::option::Option<crate::types::AliasConfiguration> {
        self.inner.get_alias_configuration()
    }
    /// <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>
    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.client_token(input.into());
        self
    }
    /// <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>
    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_client_token(input);
        self
    }
    /// <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>
    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_client_token()
    }
}