aws-sdk-connect 0.24.0

AWS SDK for Amazon Connect Service
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[derive(Debug)]
pub(crate) struct Handle {
    pub(crate) client: aws_smithy_client::Client<
        aws_smithy_client::erase::DynConnector,
        aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
    >,
    pub(crate) conf: crate::Config,
}

/// Client for Amazon Connect Service
///
/// Client for invoking operations on Amazon Connect Service. Each operation on Amazon Connect Service is a method on this
/// this struct. `.send()` MUST be invoked on the generated operations to dispatch the request to the service.
///
/// # Examples
/// **Constructing a client and invoking an operation**
/// ```rust,no_run
/// # async fn docs() {
///     // create a shared configuration. This can be used & shared between multiple service clients.
///     let shared_config = aws_config::load_from_env().await;
///     let client = aws_sdk_connect::Client::new(&shared_config);
///     // invoke an operation
///     /* let rsp = client
///         .<operation_name>().
///         .<param>("some value")
///         .send().await; */
/// # }
/// ```
/// **Constructing a client with custom configuration**
/// ```rust,no_run
/// use aws_config::retry::RetryConfig;
/// # async fn docs() {
/// let shared_config = aws_config::load_from_env().await;
/// let config = aws_sdk_connect::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_connect::Client::from_conf(config);
/// # }
#[derive(std::fmt::Debug)]
pub struct Client {
    handle: std::sync::Arc<Handle>,
}

impl std::clone::Clone for Client {
    fn clone(&self) -> Self {
        Self {
            handle: self.handle.clone(),
        }
    }
}

#[doc(inline)]
pub use aws_smithy_client::Builder;

impl
    From<
        aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
    > for Client
{
    fn from(
        client: aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
    ) -> Self {
        Self::with_config(client, crate::Config::builder().build())
    }
}

impl Client {
    /// Creates a client with the given service configuration.
    pub fn with_config(
        client: aws_smithy_client::Client<
            aws_smithy_client::erase::DynConnector,
            aws_smithy_client::erase::DynMiddleware<aws_smithy_client::erase::DynConnector>,
        >,
        conf: crate::Config,
    ) -> Self {
        Self {
            handle: std::sync::Arc::new(Handle { client, conf }),
        }
    }

    /// Returns the client's configuration.
    pub fn conf(&self) -> &crate::Config {
        &self.handle.conf
    }
}
impl Client {
    /// Constructs a fluent builder for the [`AssociateApprovedOrigin`](crate::client::fluent_builders::AssociateApprovedOrigin) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateApprovedOrigin::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateApprovedOrigin::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`origin(impl Into<String>)`](crate::client::fluent_builders::AssociateApprovedOrigin::origin) / [`set_origin(Option<String>)`](crate::client::fluent_builders::AssociateApprovedOrigin::set_origin): <p>The domain to add to your allow list.</p>
    /// - On success, responds with [`AssociateApprovedOriginOutput`](crate::output::AssociateApprovedOriginOutput)

    /// - On failure, responds with [`SdkError<AssociateApprovedOriginError>`](crate::error::AssociateApprovedOriginError)
    pub fn associate_approved_origin(&self) -> fluent_builders::AssociateApprovedOrigin {
        fluent_builders::AssociateApprovedOrigin::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateBot`](crate::client::fluent_builders::AssociateBot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateBot::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateBot::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`lex_bot(LexBot)`](crate::client::fluent_builders::AssociateBot::lex_bot) / [`set_lex_bot(Option<LexBot>)`](crate::client::fluent_builders::AssociateBot::set_lex_bot): <p>Configuration information of an Amazon Lex bot.</p>
    ///   - [`lex_v2_bot(LexV2Bot)`](crate::client::fluent_builders::AssociateBot::lex_v2_bot) / [`set_lex_v2_bot(Option<LexV2Bot>)`](crate::client::fluent_builders::AssociateBot::set_lex_v2_bot): <p>The Amazon Lex V2 bot to associate with the instance.</p>
    /// - On success, responds with [`AssociateBotOutput`](crate::output::AssociateBotOutput)

    /// - On failure, responds with [`SdkError<AssociateBotError>`](crate::error::AssociateBotError)
    pub fn associate_bot(&self) -> fluent_builders::AssociateBot {
        fluent_builders::AssociateBot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateDefaultVocabulary`](crate::client::fluent_builders::AssociateDefaultVocabulary) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateDefaultVocabulary::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateDefaultVocabulary::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`language_code(VocabularyLanguageCode)`](crate::client::fluent_builders::AssociateDefaultVocabulary::language_code) / [`set_language_code(Option<VocabularyLanguageCode>)`](crate::client::fluent_builders::AssociateDefaultVocabulary::set_language_code): <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
    ///   - [`vocabulary_id(impl Into<String>)`](crate::client::fluent_builders::AssociateDefaultVocabulary::vocabulary_id) / [`set_vocabulary_id(Option<String>)`](crate::client::fluent_builders::AssociateDefaultVocabulary::set_vocabulary_id): <p>The identifier of the custom vocabulary. If this is empty, the default is set to none.</p>
    /// - On success, responds with [`AssociateDefaultVocabularyOutput`](crate::output::AssociateDefaultVocabularyOutput)

    /// - On failure, responds with [`SdkError<AssociateDefaultVocabularyError>`](crate::error::AssociateDefaultVocabularyError)
    pub fn associate_default_vocabulary(&self) -> fluent_builders::AssociateDefaultVocabulary {
        fluent_builders::AssociateDefaultVocabulary::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateInstanceStorageConfig`](crate::client::fluent_builders::AssociateInstanceStorageConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateInstanceStorageConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateInstanceStorageConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`resource_type(InstanceStorageResourceType)`](crate::client::fluent_builders::AssociateInstanceStorageConfig::resource_type) / [`set_resource_type(Option<InstanceStorageResourceType>)`](crate::client::fluent_builders::AssociateInstanceStorageConfig::set_resource_type): <p>A valid resource type.</p>
    ///   - [`storage_config(InstanceStorageConfig)`](crate::client::fluent_builders::AssociateInstanceStorageConfig::storage_config) / [`set_storage_config(Option<InstanceStorageConfig>)`](crate::client::fluent_builders::AssociateInstanceStorageConfig::set_storage_config): <p>A valid storage type.</p>
    /// - On success, responds with [`AssociateInstanceStorageConfigOutput`](crate::output::AssociateInstanceStorageConfigOutput) with field(s):
    ///   - [`association_id(Option<String>)`](crate::output::AssociateInstanceStorageConfigOutput::association_id): <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
    /// - On failure, responds with [`SdkError<AssociateInstanceStorageConfigError>`](crate::error::AssociateInstanceStorageConfigError)
    pub fn associate_instance_storage_config(
        &self,
    ) -> fluent_builders::AssociateInstanceStorageConfig {
        fluent_builders::AssociateInstanceStorageConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateLambdaFunction`](crate::client::fluent_builders::AssociateLambdaFunction) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateLambdaFunction::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateLambdaFunction::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`function_arn(impl Into<String>)`](crate::client::fluent_builders::AssociateLambdaFunction::function_arn) / [`set_function_arn(Option<String>)`](crate::client::fluent_builders::AssociateLambdaFunction::set_function_arn): <p>The Amazon Resource Name (ARN) for the Lambda function being associated. Maximum number of characters allowed is 140.</p>
    /// - On success, responds with [`AssociateLambdaFunctionOutput`](crate::output::AssociateLambdaFunctionOutput)

    /// - On failure, responds with [`SdkError<AssociateLambdaFunctionError>`](crate::error::AssociateLambdaFunctionError)
    pub fn associate_lambda_function(&self) -> fluent_builders::AssociateLambdaFunction {
        fluent_builders::AssociateLambdaFunction::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateLexBot`](crate::client::fluent_builders::AssociateLexBot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateLexBot::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateLexBot::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`lex_bot(LexBot)`](crate::client::fluent_builders::AssociateLexBot::lex_bot) / [`set_lex_bot(Option<LexBot>)`](crate::client::fluent_builders::AssociateLexBot::set_lex_bot): <p>The Amazon Lex bot to associate with the instance.</p>
    /// - On success, responds with [`AssociateLexBotOutput`](crate::output::AssociateLexBotOutput)

    /// - On failure, responds with [`SdkError<AssociateLexBotError>`](crate::error::AssociateLexBotError)
    pub fn associate_lex_bot(&self) -> fluent_builders::AssociateLexBot {
        fluent_builders::AssociateLexBot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociatePhoneNumberContactFlow`](crate::client::fluent_builders::AssociatePhoneNumberContactFlow) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`phone_number_id(impl Into<String>)`](crate::client::fluent_builders::AssociatePhoneNumberContactFlow::phone_number_id) / [`set_phone_number_id(Option<String>)`](crate::client::fluent_builders::AssociatePhoneNumberContactFlow::set_phone_number_id): <p>A unique identifier for the phone number.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociatePhoneNumberContactFlow::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociatePhoneNumberContactFlow::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::AssociatePhoneNumberContactFlow::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::AssociatePhoneNumberContactFlow::set_contact_flow_id): <p>The identifier of the flow.</p>
    /// - On success, responds with [`AssociatePhoneNumberContactFlowOutput`](crate::output::AssociatePhoneNumberContactFlowOutput)

    /// - On failure, responds with [`SdkError<AssociatePhoneNumberContactFlowError>`](crate::error::AssociatePhoneNumberContactFlowError)
    pub fn associate_phone_number_contact_flow(
        &self,
    ) -> fluent_builders::AssociatePhoneNumberContactFlow {
        fluent_builders::AssociatePhoneNumberContactFlow::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateQueueQuickConnects`](crate::client::fluent_builders::AssociateQueueQuickConnects) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateQueueQuickConnects::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateQueueQuickConnects::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::AssociateQueueQuickConnects::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::AssociateQueueQuickConnects::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`quick_connect_ids(Vec<String>)`](crate::client::fluent_builders::AssociateQueueQuickConnects::quick_connect_ids) / [`set_quick_connect_ids(Option<Vec<String>>)`](crate::client::fluent_builders::AssociateQueueQuickConnects::set_quick_connect_ids): <p>The quick connects to associate with this queue.</p>
    /// - On success, responds with [`AssociateQueueQuickConnectsOutput`](crate::output::AssociateQueueQuickConnectsOutput)

    /// - On failure, responds with [`SdkError<AssociateQueueQuickConnectsError>`](crate::error::AssociateQueueQuickConnectsError)
    pub fn associate_queue_quick_connects(&self) -> fluent_builders::AssociateQueueQuickConnects {
        fluent_builders::AssociateQueueQuickConnects::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateRoutingProfileQueues`](crate::client::fluent_builders::AssociateRoutingProfileQueues) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateRoutingProfileQueues::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateRoutingProfileQueues::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::AssociateRoutingProfileQueues::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::AssociateRoutingProfileQueues::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    ///   - [`queue_configs(Vec<RoutingProfileQueueConfig>)`](crate::client::fluent_builders::AssociateRoutingProfileQueues::queue_configs) / [`set_queue_configs(Option<Vec<RoutingProfileQueueConfig>>)`](crate::client::fluent_builders::AssociateRoutingProfileQueues::set_queue_configs): <p>The queues to associate with this routing profile.</p>
    /// - On success, responds with [`AssociateRoutingProfileQueuesOutput`](crate::output::AssociateRoutingProfileQueuesOutput)

    /// - On failure, responds with [`SdkError<AssociateRoutingProfileQueuesError>`](crate::error::AssociateRoutingProfileQueuesError)
    pub fn associate_routing_profile_queues(
        &self,
    ) -> fluent_builders::AssociateRoutingProfileQueues {
        fluent_builders::AssociateRoutingProfileQueues::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`AssociateSecurityKey`](crate::client::fluent_builders::AssociateSecurityKey) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::AssociateSecurityKey::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::AssociateSecurityKey::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`key(impl Into<String>)`](crate::client::fluent_builders::AssociateSecurityKey::key) / [`set_key(Option<String>)`](crate::client::fluent_builders::AssociateSecurityKey::set_key): <p>A valid security key in PEM format.</p>
    /// - On success, responds with [`AssociateSecurityKeyOutput`](crate::output::AssociateSecurityKeyOutput) with field(s):
    ///   - [`association_id(Option<String>)`](crate::output::AssociateSecurityKeyOutput::association_id): <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
    /// - On failure, responds with [`SdkError<AssociateSecurityKeyError>`](crate::error::AssociateSecurityKeyError)
    pub fn associate_security_key(&self) -> fluent_builders::AssociateSecurityKey {
        fluent_builders::AssociateSecurityKey::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ClaimPhoneNumber`](crate::client::fluent_builders::ClaimPhoneNumber) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`target_arn(impl Into<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::target_arn) / [`set_target_arn(Option<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::set_target_arn): <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
    ///   - [`phone_number(impl Into<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::phone_number) / [`set_phone_number(Option<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::set_phone_number): <p>The phone number you want to claim. Phone numbers are formatted <code>[+] [country code] [subscriber number including area code]</code>.</p>
    ///   - [`phone_number_description(impl Into<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::phone_number_description) / [`set_phone_number_description(Option<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::set_phone_number_description): <p>The description of the phone number.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::ClaimPhoneNumber::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::ClaimPhoneNumber::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::ClaimPhoneNumber::set_client_token): <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>  <p>Pattern: <code>^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$</code> </p>
    /// - On success, responds with [`ClaimPhoneNumberOutput`](crate::output::ClaimPhoneNumberOutput) with field(s):
    ///   - [`phone_number_id(Option<String>)`](crate::output::ClaimPhoneNumberOutput::phone_number_id): <p>A unique identifier for the phone number.</p>
    ///   - [`phone_number_arn(Option<String>)`](crate::output::ClaimPhoneNumberOutput::phone_number_arn): <p>The Amazon Resource Name (ARN) of the phone number.</p>
    /// - On failure, responds with [`SdkError<ClaimPhoneNumberError>`](crate::error::ClaimPhoneNumberError)
    pub fn claim_phone_number(&self) -> fluent_builders::ClaimPhoneNumber {
        fluent_builders::ClaimPhoneNumber::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateAgentStatus`](crate::client::fluent_builders::CreateAgentStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateAgentStatus::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateAgentStatus::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateAgentStatus::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateAgentStatus::set_name): <p>The name of the status.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateAgentStatus::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateAgentStatus::set_description): <p>The description of the status.</p>
    ///   - [`state(AgentStatusState)`](crate::client::fluent_builders::CreateAgentStatus::state) / [`set_state(Option<AgentStatusState>)`](crate::client::fluent_builders::CreateAgentStatus::set_state): <p>The state of the status.</p>
    ///   - [`display_order(i32)`](crate::client::fluent_builders::CreateAgentStatus::display_order) / [`set_display_order(Option<i32>)`](crate::client::fluent_builders::CreateAgentStatus::set_display_order): <p>The display order of the status.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateAgentStatus::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateAgentStatus::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateAgentStatusOutput`](crate::output::CreateAgentStatusOutput) with field(s):
    ///   - [`agent_status_arn(Option<String>)`](crate::output::CreateAgentStatusOutput::agent_status_arn): <p>The Amazon Resource Name (ARN) of the agent status.</p>
    ///   - [`agent_status_id(Option<String>)`](crate::output::CreateAgentStatusOutput::agent_status_id): <p>The identifier of the agent status.</p>
    /// - On failure, responds with [`SdkError<CreateAgentStatusError>`](crate::error::CreateAgentStatusError)
    pub fn create_agent_status(&self) -> fluent_builders::CreateAgentStatus {
        fluent_builders::CreateAgentStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateContactFlow`](crate::client::fluent_builders::CreateContactFlow) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlow::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateContactFlow::set_instance_id): <p>The identifier of the Amazon Connect instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlow::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateContactFlow::set_name): <p>The name of the flow.</p>
    ///   - [`r#type(ContactFlowType)`](crate::client::fluent_builders::CreateContactFlow::type) / [`set_type(Option<ContactFlowType>)`](crate::client::fluent_builders::CreateContactFlow::set_type): <p>The type of the flow. For descriptions of the available types, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/create-contact-flow.html#contact-flow-types">Choose a flow type</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlow::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateContactFlow::set_description): <p>The description of the flow. </p>
    ///   - [`content(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlow::content) / [`set_content(Option<String>)`](crate::client::fluent_builders::CreateContactFlow::set_content): <p>The content of the flow. </p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateContactFlow::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateContactFlow::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateContactFlowOutput`](crate::output::CreateContactFlowOutput) with field(s):
    ///   - [`contact_flow_id(Option<String>)`](crate::output::CreateContactFlowOutput::contact_flow_id): <p>The identifier of the flow.</p>
    ///   - [`contact_flow_arn(Option<String>)`](crate::output::CreateContactFlowOutput::contact_flow_arn): <p>The Amazon Resource Name (ARN) of the flow.</p>
    /// - On failure, responds with [`SdkError<CreateContactFlowError>`](crate::error::CreateContactFlowError)
    pub fn create_contact_flow(&self) -> fluent_builders::CreateContactFlow {
        fluent_builders::CreateContactFlow::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateContactFlowModule`](crate::client::fluent_builders::CreateContactFlowModule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlowModule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateContactFlowModule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlowModule::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateContactFlowModule::set_name): <p>The name of the flow module.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlowModule::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateContactFlowModule::set_description): <p>The description of the flow module. </p>
    ///   - [`content(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlowModule::content) / [`set_content(Option<String>)`](crate::client::fluent_builders::CreateContactFlowModule::set_content): <p>The content of the flow module.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateContactFlowModule::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateContactFlowModule::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateContactFlowModule::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateContactFlowModule::set_client_token): <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>
    /// - On success, responds with [`CreateContactFlowModuleOutput`](crate::output::CreateContactFlowModuleOutput) with field(s):
    ///   - [`id(Option<String>)`](crate::output::CreateContactFlowModuleOutput::id): <p>The identifier of the flow module.</p>
    ///   - [`arn(Option<String>)`](crate::output::CreateContactFlowModuleOutput::arn): <p>The Amazon Resource Name (ARN) of the flow module.</p>
    /// - On failure, responds with [`SdkError<CreateContactFlowModuleError>`](crate::error::CreateContactFlowModuleError)
    pub fn create_contact_flow_module(&self) -> fluent_builders::CreateContactFlowModule {
        fluent_builders::CreateContactFlowModule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateHoursOfOperation`](crate::client::fluent_builders::CreateHoursOfOperation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::set_name): <p>The name of the hours of operation.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::set_description): <p>The description of the hours of operation.</p>
    ///   - [`time_zone(impl Into<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::time_zone) / [`set_time_zone(Option<String>)`](crate::client::fluent_builders::CreateHoursOfOperation::set_time_zone): <p>The time zone of the hours of operation.</p>
    ///   - [`config(Vec<HoursOfOperationConfig>)`](crate::client::fluent_builders::CreateHoursOfOperation::config) / [`set_config(Option<Vec<HoursOfOperationConfig>>)`](crate::client::fluent_builders::CreateHoursOfOperation::set_config): <p>Configuration information for the hours of operation: day, start time, and end time.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateHoursOfOperation::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateHoursOfOperation::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateHoursOfOperationOutput`](crate::output::CreateHoursOfOperationOutput) with field(s):
    ///   - [`hours_of_operation_id(Option<String>)`](crate::output::CreateHoursOfOperationOutput::hours_of_operation_id): <p>The identifier for the hours of operation.</p>
    ///   - [`hours_of_operation_arn(Option<String>)`](crate::output::CreateHoursOfOperationOutput::hours_of_operation_arn): <p>The Amazon Resource Name (ARN) for the hours of operation.</p>
    /// - On failure, responds with [`SdkError<CreateHoursOfOperationError>`](crate::error::CreateHoursOfOperationError)
    pub fn create_hours_of_operation(&self) -> fluent_builders::CreateHoursOfOperation {
        fluent_builders::CreateHoursOfOperation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateInstance`](crate::client::fluent_builders::CreateInstance) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateInstance::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateInstance::set_client_token): <p>The idempotency token.</p>
    ///   - [`identity_management_type(DirectoryType)`](crate::client::fluent_builders::CreateInstance::identity_management_type) / [`set_identity_management_type(Option<DirectoryType>)`](crate::client::fluent_builders::CreateInstance::set_identity_management_type): <p>The type of identity management for your Amazon Connect users.</p>
    ///   - [`instance_alias(impl Into<String>)`](crate::client::fluent_builders::CreateInstance::instance_alias) / [`set_instance_alias(Option<String>)`](crate::client::fluent_builders::CreateInstance::set_instance_alias): <p>The name for your instance.</p>
    ///   - [`directory_id(impl Into<String>)`](crate::client::fluent_builders::CreateInstance::directory_id) / [`set_directory_id(Option<String>)`](crate::client::fluent_builders::CreateInstance::set_directory_id): <p>The identifier for the directory.</p>
    ///   - [`inbound_calls_enabled(bool)`](crate::client::fluent_builders::CreateInstance::inbound_calls_enabled) / [`set_inbound_calls_enabled(Option<bool>)`](crate::client::fluent_builders::CreateInstance::set_inbound_calls_enabled): <p>Your contact center handles incoming contacts.</p>
    ///   - [`outbound_calls_enabled(bool)`](crate::client::fluent_builders::CreateInstance::outbound_calls_enabled) / [`set_outbound_calls_enabled(Option<bool>)`](crate::client::fluent_builders::CreateInstance::set_outbound_calls_enabled): <p>Your contact center allows outbound calls.</p>
    /// - On success, responds with [`CreateInstanceOutput`](crate::output::CreateInstanceOutput) with field(s):
    ///   - [`id(Option<String>)`](crate::output::CreateInstanceOutput::id): <p>The identifier for the instance.</p>
    ///   - [`arn(Option<String>)`](crate::output::CreateInstanceOutput::arn): <p>The Amazon Resource Name (ARN) of the instance.</p>
    /// - On failure, responds with [`SdkError<CreateInstanceError>`](crate::error::CreateInstanceError)
    pub fn create_instance(&self) -> fluent_builders::CreateInstance {
        fluent_builders::CreateInstance::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateIntegrationAssociation`](crate::client::fluent_builders::CreateIntegrationAssociation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`integration_type(IntegrationType)`](crate::client::fluent_builders::CreateIntegrationAssociation::integration_type) / [`set_integration_type(Option<IntegrationType>)`](crate::client::fluent_builders::CreateIntegrationAssociation::set_integration_type): <p>The type of information to be ingested.</p>
    ///   - [`integration_arn(impl Into<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::integration_arn) / [`set_integration_arn(Option<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::set_integration_arn): <p>The Amazon Resource Name (ARN) of the integration.</p> <note>   <p>When integrating with Amazon Pinpoint, the Amazon Connect and Amazon Pinpoint instances must be in the same account.</p>  </note>
    ///   - [`source_application_url(impl Into<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::source_application_url) / [`set_source_application_url(Option<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::set_source_application_url): <p>The URL for the external application. This field is only required for the EVENT integration type.</p>
    ///   - [`source_application_name(impl Into<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::source_application_name) / [`set_source_application_name(Option<String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::set_source_application_name): <p>The name of the external application. This field is only required for the EVENT integration type.</p>
    ///   - [`source_type(SourceType)`](crate::client::fluent_builders::CreateIntegrationAssociation::source_type) / [`set_source_type(Option<SourceType>)`](crate::client::fluent_builders::CreateIntegrationAssociation::set_source_type): <p>The type of the data source. This field is only required for the EVENT integration type.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateIntegrationAssociation::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateIntegrationAssociation::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateIntegrationAssociationOutput`](crate::output::CreateIntegrationAssociationOutput) with field(s):
    ///   - [`integration_association_id(Option<String>)`](crate::output::CreateIntegrationAssociationOutput::integration_association_id): <p>The identifier for the integration association.</p>
    ///   - [`integration_association_arn(Option<String>)`](crate::output::CreateIntegrationAssociationOutput::integration_association_arn): <p>The Amazon Resource Name (ARN) for the association.</p>
    /// - On failure, responds with [`SdkError<CreateIntegrationAssociationError>`](crate::error::CreateIntegrationAssociationError)
    pub fn create_integration_association(&self) -> fluent_builders::CreateIntegrationAssociation {
        fluent_builders::CreateIntegrationAssociation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateQueue`](crate::client::fluent_builders::CreateQueue) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateQueue::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateQueue::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateQueue::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateQueue::set_name): <p>The name of the queue.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateQueue::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateQueue::set_description): <p>The description of the queue.</p>
    ///   - [`outbound_caller_config(OutboundCallerConfig)`](crate::client::fluent_builders::CreateQueue::outbound_caller_config) / [`set_outbound_caller_config(Option<OutboundCallerConfig>)`](crate::client::fluent_builders::CreateQueue::set_outbound_caller_config): <p>The outbound caller ID name, number, and outbound whisper flow.</p>
    ///   - [`hours_of_operation_id(impl Into<String>)`](crate::client::fluent_builders::CreateQueue::hours_of_operation_id) / [`set_hours_of_operation_id(Option<String>)`](crate::client::fluent_builders::CreateQueue::set_hours_of_operation_id): <p>The identifier for the hours of operation.</p>
    ///   - [`max_contacts(i32)`](crate::client::fluent_builders::CreateQueue::max_contacts) / [`set_max_contacts(Option<i32>)`](crate::client::fluent_builders::CreateQueue::set_max_contacts): <p>The maximum number of contacts that can be in the queue before it is considered full.</p>
    ///   - [`quick_connect_ids(Vec<String>)`](crate::client::fluent_builders::CreateQueue::quick_connect_ids) / [`set_quick_connect_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateQueue::set_quick_connect_ids): <p>The quick connects available to agents who are working the queue.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateQueue::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateQueue::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateQueueOutput`](crate::output::CreateQueueOutput) with field(s):
    ///   - [`queue_arn(Option<String>)`](crate::output::CreateQueueOutput::queue_arn): <p>The Amazon Resource Name (ARN) of the queue.</p>
    ///   - [`queue_id(Option<String>)`](crate::output::CreateQueueOutput::queue_id): <p>The identifier for the queue.</p>
    /// - On failure, responds with [`SdkError<CreateQueueError>`](crate::error::CreateQueueError)
    pub fn create_queue(&self) -> fluent_builders::CreateQueue {
        fluent_builders::CreateQueue::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateQuickConnect`](crate::client::fluent_builders::CreateQuickConnect) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateQuickConnect::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateQuickConnect::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateQuickConnect::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateQuickConnect::set_name): <p>The name of the quick connect.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateQuickConnect::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateQuickConnect::set_description): <p>The description of the quick connect.</p>
    ///   - [`quick_connect_config(QuickConnectConfig)`](crate::client::fluent_builders::CreateQuickConnect::quick_connect_config) / [`set_quick_connect_config(Option<QuickConnectConfig>)`](crate::client::fluent_builders::CreateQuickConnect::set_quick_connect_config): <p>Configuration settings for the quick connect.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateQuickConnect::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateQuickConnect::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateQuickConnectOutput`](crate::output::CreateQuickConnectOutput) with field(s):
    ///   - [`quick_connect_arn(Option<String>)`](crate::output::CreateQuickConnectOutput::quick_connect_arn): <p>The Amazon Resource Name (ARN) for the quick connect. </p>
    ///   - [`quick_connect_id(Option<String>)`](crate::output::CreateQuickConnectOutput::quick_connect_id): <p>The identifier for the quick connect. </p>
    /// - On failure, responds with [`SdkError<CreateQuickConnectError>`](crate::error::CreateQuickConnectError)
    pub fn create_quick_connect(&self) -> fluent_builders::CreateQuickConnect {
        fluent_builders::CreateQuickConnect::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateRoutingProfile`](crate::client::fluent_builders::CreateRoutingProfile) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateRoutingProfile::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateRoutingProfile::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateRoutingProfile::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateRoutingProfile::set_name): <p>The name of the routing profile. Must not be more than 127 characters.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateRoutingProfile::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateRoutingProfile::set_description): <p>Description of the routing profile. Must not be more than 250 characters.</p>
    ///   - [`default_outbound_queue_id(impl Into<String>)`](crate::client::fluent_builders::CreateRoutingProfile::default_outbound_queue_id) / [`set_default_outbound_queue_id(Option<String>)`](crate::client::fluent_builders::CreateRoutingProfile::set_default_outbound_queue_id): <p>The default outbound queue for the routing profile.</p>
    ///   - [`queue_configs(Vec<RoutingProfileQueueConfig>)`](crate::client::fluent_builders::CreateRoutingProfile::queue_configs) / [`set_queue_configs(Option<Vec<RoutingProfileQueueConfig>>)`](crate::client::fluent_builders::CreateRoutingProfile::set_queue_configs): <p>The inbound queues associated with the routing profile. If no queue is added, the agent can make only outbound calls.</p>
    ///   - [`media_concurrencies(Vec<MediaConcurrency>)`](crate::client::fluent_builders::CreateRoutingProfile::media_concurrencies) / [`set_media_concurrencies(Option<Vec<MediaConcurrency>>)`](crate::client::fluent_builders::CreateRoutingProfile::set_media_concurrencies): <p>The channels that agents can handle in the Contact Control Panel (CCP) for this routing profile.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateRoutingProfile::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateRoutingProfile::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateRoutingProfileOutput`](crate::output::CreateRoutingProfileOutput) with field(s):
    ///   - [`routing_profile_arn(Option<String>)`](crate::output::CreateRoutingProfileOutput::routing_profile_arn): <p>The Amazon Resource Name (ARN) of the routing profile.</p>
    ///   - [`routing_profile_id(Option<String>)`](crate::output::CreateRoutingProfileOutput::routing_profile_id): <p>The identifier of the routing profile.</p>
    /// - On failure, responds with [`SdkError<CreateRoutingProfileError>`](crate::error::CreateRoutingProfileError)
    pub fn create_routing_profile(&self) -> fluent_builders::CreateRoutingProfile {
        fluent_builders::CreateRoutingProfile::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateRule`](crate::client::fluent_builders::CreateRule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateRule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateRule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateRule::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateRule::set_name): <p>A unique name for the rule.</p>
    ///   - [`trigger_event_source(RuleTriggerEventSource)`](crate::client::fluent_builders::CreateRule::trigger_event_source) / [`set_trigger_event_source(Option<RuleTriggerEventSource>)`](crate::client::fluent_builders::CreateRule::set_trigger_event_source): <p>The event source to trigger the rule.</p>
    ///   - [`function(impl Into<String>)`](crate::client::fluent_builders::CreateRule::function) / [`set_function(Option<String>)`](crate::client::fluent_builders::CreateRule::set_function): <p>The conditions of the rule.</p>
    ///   - [`actions(Vec<RuleAction>)`](crate::client::fluent_builders::CreateRule::actions) / [`set_actions(Option<Vec<RuleAction>>)`](crate::client::fluent_builders::CreateRule::set_actions): <p>A list of actions to be run when the rule is triggered.</p>
    ///   - [`publish_status(RulePublishStatus)`](crate::client::fluent_builders::CreateRule::publish_status) / [`set_publish_status(Option<RulePublishStatus>)`](crate::client::fluent_builders::CreateRule::set_publish_status): <p>The publish status of the rule.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateRule::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateRule::set_client_token): <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>
    /// - On success, responds with [`CreateRuleOutput`](crate::output::CreateRuleOutput) with field(s):
    ///   - [`rule_arn(Option<String>)`](crate::output::CreateRuleOutput::rule_arn): <p>The Amazon Resource Name (ARN) of the rule.</p>
    ///   - [`rule_id(Option<String>)`](crate::output::CreateRuleOutput::rule_id): <p>A unique identifier for the rule.</p>
    /// - On failure, responds with [`SdkError<CreateRuleError>`](crate::error::CreateRuleError)
    pub fn create_rule(&self) -> fluent_builders::CreateRule {
        fluent_builders::CreateRule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateSecurityProfile`](crate::client::fluent_builders::CreateSecurityProfile) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`security_profile_name(impl Into<String>)`](crate::client::fluent_builders::CreateSecurityProfile::security_profile_name) / [`set_security_profile_name(Option<String>)`](crate::client::fluent_builders::CreateSecurityProfile::set_security_profile_name): <p>The name of the security profile.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateSecurityProfile::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateSecurityProfile::set_description): <p>The description of the security profile.</p>
    ///   - [`permissions(Vec<String>)`](crate::client::fluent_builders::CreateSecurityProfile::permissions) / [`set_permissions(Option<Vec<String>>)`](crate::client::fluent_builders::CreateSecurityProfile::set_permissions): <p>Permissions assigned to the security profile. For a list of valid permissions, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html">List of security profile permissions</a>. </p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateSecurityProfile::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateSecurityProfile::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateSecurityProfile::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateSecurityProfile::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    ///   - [`allowed_access_control_tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateSecurityProfile::allowed_access_control_tags) / [`set_allowed_access_control_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateSecurityProfile::set_allowed_access_control_tags): <p>The list of tags that a security profile uses to restrict access to resources in Amazon Connect.</p>
    ///   - [`tag_restricted_resources(Vec<String>)`](crate::client::fluent_builders::CreateSecurityProfile::tag_restricted_resources) / [`set_tag_restricted_resources(Option<Vec<String>>)`](crate::client::fluent_builders::CreateSecurityProfile::set_tag_restricted_resources): <p>The list of resources that a security profile applies tag restrictions to in Amazon Connect. Following are acceptable ResourceNames: <code>User</code> | <code>SecurityProfile</code> | <code>Queue</code> | <code>RoutingProfile</code> </p>
    /// - On success, responds with [`CreateSecurityProfileOutput`](crate::output::CreateSecurityProfileOutput) with field(s):
    ///   - [`security_profile_id(Option<String>)`](crate::output::CreateSecurityProfileOutput::security_profile_id): <p>The identifier for the security profle.</p>
    ///   - [`security_profile_arn(Option<String>)`](crate::output::CreateSecurityProfileOutput::security_profile_arn): <p>The Amazon Resource Name (ARN) for the security profile.</p>
    /// - On failure, responds with [`SdkError<CreateSecurityProfileError>`](crate::error::CreateSecurityProfileError)
    pub fn create_security_profile(&self) -> fluent_builders::CreateSecurityProfile {
        fluent_builders::CreateSecurityProfile::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateTaskTemplate`](crate::client::fluent_builders::CreateTaskTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateTaskTemplate::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateTaskTemplate::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateTaskTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateTaskTemplate::set_name): <p>The name of the task template.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateTaskTemplate::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateTaskTemplate::set_description): <p>The description of the task template.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::CreateTaskTemplate::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::CreateTaskTemplate::set_contact_flow_id): <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
    ///   - [`constraints(TaskTemplateConstraints)`](crate::client::fluent_builders::CreateTaskTemplate::constraints) / [`set_constraints(Option<TaskTemplateConstraints>)`](crate::client::fluent_builders::CreateTaskTemplate::set_constraints): <p>Constraints that are applicable to the fields listed.</p>
    ///   - [`defaults(TaskTemplateDefaults)`](crate::client::fluent_builders::CreateTaskTemplate::defaults) / [`set_defaults(Option<TaskTemplateDefaults>)`](crate::client::fluent_builders::CreateTaskTemplate::set_defaults): <p>The default values for fields when a task is created by referencing this template.</p>
    ///   - [`status(TaskTemplateStatus)`](crate::client::fluent_builders::CreateTaskTemplate::status) / [`set_status(Option<TaskTemplateStatus>)`](crate::client::fluent_builders::CreateTaskTemplate::set_status): <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created. </p>
    ///   - [`fields(Vec<TaskTemplateField>)`](crate::client::fluent_builders::CreateTaskTemplate::fields) / [`set_fields(Option<Vec<TaskTemplateField>>)`](crate::client::fluent_builders::CreateTaskTemplate::set_fields): <p>Fields that are part of the template.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateTaskTemplate::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateTaskTemplate::set_client_token): <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>
    /// - On success, responds with [`CreateTaskTemplateOutput`](crate::output::CreateTaskTemplateOutput) with field(s):
    ///   - [`id(Option<String>)`](crate::output::CreateTaskTemplateOutput::id): <p>The identifier of the task template resource.</p>
    ///   - [`arn(Option<String>)`](crate::output::CreateTaskTemplateOutput::arn): <p>The Amazon Resource Name (ARN) for the task template resource.</p>
    /// - On failure, responds with [`SdkError<CreateTaskTemplateError>`](crate::error::CreateTaskTemplateError)
    pub fn create_task_template(&self) -> fluent_builders::CreateTaskTemplate {
        fluent_builders::CreateTaskTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateTrafficDistributionGroup`](crate::client::fluent_builders::CreateTrafficDistributionGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::set_name): <p>The name for the traffic distribution group. </p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::set_description): <p>A description for the traffic distribution group.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::set_instance_id): <p>The identifier of the Amazon Connect instance that has been replicated. You can find the <code>instanceId</code> in the ARN of the instance.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::set_client_token): <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>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateTrafficDistributionGroup::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateTrafficDistributionGroupOutput`](crate::output::CreateTrafficDistributionGroupOutput) with field(s):
    ///   - [`id(Option<String>)`](crate::output::CreateTrafficDistributionGroupOutput::id): <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
    ///   - [`arn(Option<String>)`](crate::output::CreateTrafficDistributionGroupOutput::arn): <p>The Amazon Resource Name (ARN) of the traffic distribution group.</p>
    /// - On failure, responds with [`SdkError<CreateTrafficDistributionGroupError>`](crate::error::CreateTrafficDistributionGroupError)
    pub fn create_traffic_distribution_group(
        &self,
    ) -> fluent_builders::CreateTrafficDistributionGroup {
        fluent_builders::CreateTrafficDistributionGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateUseCase`](crate::client::fluent_builders::CreateUseCase) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateUseCase::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateUseCase::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`integration_association_id(impl Into<String>)`](crate::client::fluent_builders::CreateUseCase::integration_association_id) / [`set_integration_association_id(Option<String>)`](crate::client::fluent_builders::CreateUseCase::set_integration_association_id): <p>The identifier for the integration association.</p>
    ///   - [`use_case_type(UseCaseType)`](crate::client::fluent_builders::CreateUseCase::use_case_type) / [`set_use_case_type(Option<UseCaseType>)`](crate::client::fluent_builders::CreateUseCase::set_use_case_type): <p>The type of use case to associate to the integration association. Each integration association can have only one of each use case type.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateUseCase::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateUseCase::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateUseCaseOutput`](crate::output::CreateUseCaseOutput) with field(s):
    ///   - [`use_case_id(Option<String>)`](crate::output::CreateUseCaseOutput::use_case_id): <p>The identifier of the use case.</p>
    ///   - [`use_case_arn(Option<String>)`](crate::output::CreateUseCaseOutput::use_case_arn): <p>The Amazon Resource Name (ARN) for the use case.</p>
    /// - On failure, responds with [`SdkError<CreateUseCaseError>`](crate::error::CreateUseCaseError)
    pub fn create_use_case(&self) -> fluent_builders::CreateUseCase {
        fluent_builders::CreateUseCase::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateUser`](crate::client::fluent_builders::CreateUser) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`username(impl Into<String>)`](crate::client::fluent_builders::CreateUser::username) / [`set_username(Option<String>)`](crate::client::fluent_builders::CreateUser::set_username): <p>The user name for the account. For instances not using SAML for identity management, the user name can include up to 20 characters. If you are using SAML for identity management, the user name can include up to 64 characters from [a-zA-Z0-9_-.\@]+.</p>
    ///   - [`password(impl Into<String>)`](crate::client::fluent_builders::CreateUser::password) / [`set_password(Option<String>)`](crate::client::fluent_builders::CreateUser::set_password): <p>The password for the user account. A password is required if you are using Amazon Connect for identity management. Otherwise, it is an error to include a password.</p>
    ///   - [`identity_info(UserIdentityInfo)`](crate::client::fluent_builders::CreateUser::identity_info) / [`set_identity_info(Option<UserIdentityInfo>)`](crate::client::fluent_builders::CreateUser::set_identity_info): <p>The information about the identity of the user.</p>
    ///   - [`phone_config(UserPhoneConfig)`](crate::client::fluent_builders::CreateUser::phone_config) / [`set_phone_config(Option<UserPhoneConfig>)`](crate::client::fluent_builders::CreateUser::set_phone_config): <p>The phone settings for the user.</p>
    ///   - [`directory_user_id(impl Into<String>)`](crate::client::fluent_builders::CreateUser::directory_user_id) / [`set_directory_user_id(Option<String>)`](crate::client::fluent_builders::CreateUser::set_directory_user_id): <p>The identifier of the user account in the directory used for identity management. If Amazon Connect cannot access the directory, you can specify this identifier to authenticate users. If you include the identifier, we assume that Amazon Connect cannot access the directory. Otherwise, the identity information is used to authenticate users from your directory.</p>  <p>This parameter is required if you are using an existing directory for identity management in Amazon Connect when Amazon Connect cannot access your directory to authenticate users. If you are using SAML for identity management and include this parameter, an error is returned.</p>
    ///   - [`security_profile_ids(Vec<String>)`](crate::client::fluent_builders::CreateUser::security_profile_ids) / [`set_security_profile_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateUser::set_security_profile_ids): <p>The identifier of the security profile for the user.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::CreateUser::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::CreateUser::set_routing_profile_id): <p>The identifier of the routing profile for the user.</p>
    ///   - [`hierarchy_group_id(impl Into<String>)`](crate::client::fluent_builders::CreateUser::hierarchy_group_id) / [`set_hierarchy_group_id(Option<String>)`](crate::client::fluent_builders::CreateUser::set_hierarchy_group_id): <p>The identifier of the hierarchy group for the user.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateUser::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateUser::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateUser::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateUser::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateUserOutput`](crate::output::CreateUserOutput) with field(s):
    ///   - [`user_id(Option<String>)`](crate::output::CreateUserOutput::user_id): <p>The identifier of the user account.</p>
    ///   - [`user_arn(Option<String>)`](crate::output::CreateUserOutput::user_arn): <p>The Amazon Resource Name (ARN) of the user account.</p>
    /// - On failure, responds with [`SdkError<CreateUserError>`](crate::error::CreateUserError)
    pub fn create_user(&self) -> fluent_builders::CreateUser {
        fluent_builders::CreateUser::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateUserHierarchyGroup`](crate::client::fluent_builders::CreateUserHierarchyGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::set_name): <p>The name of the user hierarchy group. Must not be more than 100 characters.</p>
    ///   - [`parent_group_id(impl Into<String>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::parent_group_id) / [`set_parent_group_id(Option<String>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::set_parent_group_id): <p>The identifier for the parent hierarchy group. The user hierarchy is created at level one if the parent group ID is null.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateUserHierarchyGroup::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateUserHierarchyGroupOutput`](crate::output::CreateUserHierarchyGroupOutput) with field(s):
    ///   - [`hierarchy_group_id(Option<String>)`](crate::output::CreateUserHierarchyGroupOutput::hierarchy_group_id): <p>The identifier of the hierarchy group.</p>
    ///   - [`hierarchy_group_arn(Option<String>)`](crate::output::CreateUserHierarchyGroupOutput::hierarchy_group_arn): <p>The Amazon Resource Name (ARN) of the hierarchy group. </p>
    /// - On failure, responds with [`SdkError<CreateUserHierarchyGroupError>`](crate::error::CreateUserHierarchyGroupError)
    pub fn create_user_hierarchy_group(&self) -> fluent_builders::CreateUserHierarchyGroup {
        fluent_builders::CreateUserHierarchyGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateVocabulary`](crate::client::fluent_builders::CreateVocabulary) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateVocabulary::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateVocabulary::set_client_token): <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>. If a create request is received more than once with same client token, subsequent requests return the previous response without creating a vocabulary again.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::CreateVocabulary::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::CreateVocabulary::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`vocabulary_name(impl Into<String>)`](crate::client::fluent_builders::CreateVocabulary::vocabulary_name) / [`set_vocabulary_name(Option<String>)`](crate::client::fluent_builders::CreateVocabulary::set_vocabulary_name): <p>A unique name of the custom vocabulary.</p>
    ///   - [`language_code(VocabularyLanguageCode)`](crate::client::fluent_builders::CreateVocabulary::language_code) / [`set_language_code(Option<VocabularyLanguageCode>)`](crate::client::fluent_builders::CreateVocabulary::set_language_code): <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
    ///   - [`content(impl Into<String>)`](crate::client::fluent_builders::CreateVocabulary::content) / [`set_content(Option<String>)`](crate::client::fluent_builders::CreateVocabulary::set_content): <p>The content of the custom vocabulary in plain-text format with a table of values. Each row in the table represents a word or a phrase, described with <code>Phrase</code>, <code>IPA</code>, <code>SoundsLike</code>, and <code>DisplayAs</code> fields. Separate the fields with TAB characters. The size limit is 50KB. For more information, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/custom-vocabulary.html#create-vocabulary-table">Create a custom vocabulary using a table</a>.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateVocabulary::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateVocabulary::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`CreateVocabularyOutput`](crate::output::CreateVocabularyOutput) with field(s):
    ///   - [`vocabulary_arn(Option<String>)`](crate::output::CreateVocabularyOutput::vocabulary_arn): <p>The Amazon Resource Name (ARN) of the custom vocabulary.</p>
    ///   - [`vocabulary_id(Option<String>)`](crate::output::CreateVocabularyOutput::vocabulary_id): <p>The identifier of the custom vocabulary.</p>
    ///   - [`state(Option<VocabularyState>)`](crate::output::CreateVocabularyOutput::state): <p>The current state of the custom vocabulary.</p>
    /// - On failure, responds with [`SdkError<CreateVocabularyError>`](crate::error::CreateVocabularyError)
    pub fn create_vocabulary(&self) -> fluent_builders::CreateVocabulary {
        fluent_builders::CreateVocabulary::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteContactFlow`](crate::client::fluent_builders::DeleteContactFlow) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteContactFlow::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteContactFlow::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::DeleteContactFlow::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::DeleteContactFlow::set_contact_flow_id): <p>The identifier of the flow.</p>
    /// - On success, responds with [`DeleteContactFlowOutput`](crate::output::DeleteContactFlowOutput)

    /// - On failure, responds with [`SdkError<DeleteContactFlowError>`](crate::error::DeleteContactFlowError)
    pub fn delete_contact_flow(&self) -> fluent_builders::DeleteContactFlow {
        fluent_builders::DeleteContactFlow::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteContactFlowModule`](crate::client::fluent_builders::DeleteContactFlowModule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteContactFlowModule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteContactFlowModule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_module_id(impl Into<String>)`](crate::client::fluent_builders::DeleteContactFlowModule::contact_flow_module_id) / [`set_contact_flow_module_id(Option<String>)`](crate::client::fluent_builders::DeleteContactFlowModule::set_contact_flow_module_id): <p>The identifier of the flow module.</p>
    /// - On success, responds with [`DeleteContactFlowModuleOutput`](crate::output::DeleteContactFlowModuleOutput)

    /// - On failure, responds with [`SdkError<DeleteContactFlowModuleError>`](crate::error::DeleteContactFlowModuleError)
    pub fn delete_contact_flow_module(&self) -> fluent_builders::DeleteContactFlowModule {
        fluent_builders::DeleteContactFlowModule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteHoursOfOperation`](crate::client::fluent_builders::DeleteHoursOfOperation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteHoursOfOperation::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteHoursOfOperation::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`hours_of_operation_id(impl Into<String>)`](crate::client::fluent_builders::DeleteHoursOfOperation::hours_of_operation_id) / [`set_hours_of_operation_id(Option<String>)`](crate::client::fluent_builders::DeleteHoursOfOperation::set_hours_of_operation_id): <p>The identifier for the hours of operation.</p>
    /// - On success, responds with [`DeleteHoursOfOperationOutput`](crate::output::DeleteHoursOfOperationOutput)

    /// - On failure, responds with [`SdkError<DeleteHoursOfOperationError>`](crate::error::DeleteHoursOfOperationError)
    pub fn delete_hours_of_operation(&self) -> fluent_builders::DeleteHoursOfOperation {
        fluent_builders::DeleteHoursOfOperation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteInstance`](crate::client::fluent_builders::DeleteInstance) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteInstance::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteInstance::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DeleteInstanceOutput`](crate::output::DeleteInstanceOutput)

    /// - On failure, responds with [`SdkError<DeleteInstanceError>`](crate::error::DeleteInstanceError)
    pub fn delete_instance(&self) -> fluent_builders::DeleteInstance {
        fluent_builders::DeleteInstance::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteIntegrationAssociation`](crate::client::fluent_builders::DeleteIntegrationAssociation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteIntegrationAssociation::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteIntegrationAssociation::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`integration_association_id(impl Into<String>)`](crate::client::fluent_builders::DeleteIntegrationAssociation::integration_association_id) / [`set_integration_association_id(Option<String>)`](crate::client::fluent_builders::DeleteIntegrationAssociation::set_integration_association_id): <p>The identifier for the integration association.</p>
    /// - On success, responds with [`DeleteIntegrationAssociationOutput`](crate::output::DeleteIntegrationAssociationOutput)

    /// - On failure, responds with [`SdkError<DeleteIntegrationAssociationError>`](crate::error::DeleteIntegrationAssociationError)
    pub fn delete_integration_association(&self) -> fluent_builders::DeleteIntegrationAssociation {
        fluent_builders::DeleteIntegrationAssociation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteQuickConnect`](crate::client::fluent_builders::DeleteQuickConnect) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteQuickConnect::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteQuickConnect::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`quick_connect_id(impl Into<String>)`](crate::client::fluent_builders::DeleteQuickConnect::quick_connect_id) / [`set_quick_connect_id(Option<String>)`](crate::client::fluent_builders::DeleteQuickConnect::set_quick_connect_id): <p>The identifier for the quick connect.</p>
    /// - On success, responds with [`DeleteQuickConnectOutput`](crate::output::DeleteQuickConnectOutput)

    /// - On failure, responds with [`SdkError<DeleteQuickConnectError>`](crate::error::DeleteQuickConnectError)
    pub fn delete_quick_connect(&self) -> fluent_builders::DeleteQuickConnect {
        fluent_builders::DeleteQuickConnect::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteRule`](crate::client::fluent_builders::DeleteRule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteRule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteRule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`rule_id(impl Into<String>)`](crate::client::fluent_builders::DeleteRule::rule_id) / [`set_rule_id(Option<String>)`](crate::client::fluent_builders::DeleteRule::set_rule_id): <p>A unique identifier for the rule.</p>
    /// - On success, responds with [`DeleteRuleOutput`](crate::output::DeleteRuleOutput)

    /// - On failure, responds with [`SdkError<DeleteRuleError>`](crate::error::DeleteRuleError)
    pub fn delete_rule(&self) -> fluent_builders::DeleteRule {
        fluent_builders::DeleteRule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteSecurityProfile`](crate::client::fluent_builders::DeleteSecurityProfile) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteSecurityProfile::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteSecurityProfile::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`security_profile_id(impl Into<String>)`](crate::client::fluent_builders::DeleteSecurityProfile::security_profile_id) / [`set_security_profile_id(Option<String>)`](crate::client::fluent_builders::DeleteSecurityProfile::set_security_profile_id): <p>The identifier for the security profle.</p>
    /// - On success, responds with [`DeleteSecurityProfileOutput`](crate::output::DeleteSecurityProfileOutput)

    /// - On failure, responds with [`SdkError<DeleteSecurityProfileError>`](crate::error::DeleteSecurityProfileError)
    pub fn delete_security_profile(&self) -> fluent_builders::DeleteSecurityProfile {
        fluent_builders::DeleteSecurityProfile::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteTaskTemplate`](crate::client::fluent_builders::DeleteTaskTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteTaskTemplate::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteTaskTemplate::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`task_template_id(impl Into<String>)`](crate::client::fluent_builders::DeleteTaskTemplate::task_template_id) / [`set_task_template_id(Option<String>)`](crate::client::fluent_builders::DeleteTaskTemplate::set_task_template_id): <p>A unique identifier for the task template.</p>
    /// - On success, responds with [`DeleteTaskTemplateOutput`](crate::output::DeleteTaskTemplateOutput)

    /// - On failure, responds with [`SdkError<DeleteTaskTemplateError>`](crate::error::DeleteTaskTemplateError)
    pub fn delete_task_template(&self) -> fluent_builders::DeleteTaskTemplate {
        fluent_builders::DeleteTaskTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteTrafficDistributionGroup`](crate::client::fluent_builders::DeleteTrafficDistributionGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`traffic_distribution_group_id(impl Into<String>)`](crate::client::fluent_builders::DeleteTrafficDistributionGroup::traffic_distribution_group_id) / [`set_traffic_distribution_group_id(Option<String>)`](crate::client::fluent_builders::DeleteTrafficDistributionGroup::set_traffic_distribution_group_id): <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
    /// - On success, responds with [`DeleteTrafficDistributionGroupOutput`](crate::output::DeleteTrafficDistributionGroupOutput)

    /// - On failure, responds with [`SdkError<DeleteTrafficDistributionGroupError>`](crate::error::DeleteTrafficDistributionGroupError)
    pub fn delete_traffic_distribution_group(
        &self,
    ) -> fluent_builders::DeleteTrafficDistributionGroup {
        fluent_builders::DeleteTrafficDistributionGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteUseCase`](crate::client::fluent_builders::DeleteUseCase) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUseCase::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteUseCase::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`integration_association_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUseCase::integration_association_id) / [`set_integration_association_id(Option<String>)`](crate::client::fluent_builders::DeleteUseCase::set_integration_association_id): <p>The identifier for the integration association.</p>
    ///   - [`use_case_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUseCase::use_case_id) / [`set_use_case_id(Option<String>)`](crate::client::fluent_builders::DeleteUseCase::set_use_case_id): <p>The identifier for the use case.</p>
    /// - On success, responds with [`DeleteUseCaseOutput`](crate::output::DeleteUseCaseOutput)

    /// - On failure, responds with [`SdkError<DeleteUseCaseError>`](crate::error::DeleteUseCaseError)
    pub fn delete_use_case(&self) -> fluent_builders::DeleteUseCase {
        fluent_builders::DeleteUseCase::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteUser`](crate::client::fluent_builders::DeleteUser) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUser::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteUser::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUser::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::DeleteUser::set_user_id): <p>The identifier of the user.</p>
    /// - On success, responds with [`DeleteUserOutput`](crate::output::DeleteUserOutput)

    /// - On failure, responds with [`SdkError<DeleteUserError>`](crate::error::DeleteUserError)
    pub fn delete_user(&self) -> fluent_builders::DeleteUser {
        fluent_builders::DeleteUser::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteUserHierarchyGroup`](crate::client::fluent_builders::DeleteUserHierarchyGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`hierarchy_group_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUserHierarchyGroup::hierarchy_group_id) / [`set_hierarchy_group_id(Option<String>)`](crate::client::fluent_builders::DeleteUserHierarchyGroup::set_hierarchy_group_id): <p>The identifier of the hierarchy group.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUserHierarchyGroup::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteUserHierarchyGroup::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DeleteUserHierarchyGroupOutput`](crate::output::DeleteUserHierarchyGroupOutput)

    /// - On failure, responds with [`SdkError<DeleteUserHierarchyGroupError>`](crate::error::DeleteUserHierarchyGroupError)
    pub fn delete_user_hierarchy_group(&self) -> fluent_builders::DeleteUserHierarchyGroup {
        fluent_builders::DeleteUserHierarchyGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteVocabulary`](crate::client::fluent_builders::DeleteVocabulary) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DeleteVocabulary::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DeleteVocabulary::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`vocabulary_id(impl Into<String>)`](crate::client::fluent_builders::DeleteVocabulary::vocabulary_id) / [`set_vocabulary_id(Option<String>)`](crate::client::fluent_builders::DeleteVocabulary::set_vocabulary_id): <p>The identifier of the custom vocabulary.</p>
    /// - On success, responds with [`DeleteVocabularyOutput`](crate::output::DeleteVocabularyOutput) with field(s):
    ///   - [`vocabulary_arn(Option<String>)`](crate::output::DeleteVocabularyOutput::vocabulary_arn): <p>The Amazon Resource Name (ARN) of the custom vocabulary.</p>
    ///   - [`vocabulary_id(Option<String>)`](crate::output::DeleteVocabularyOutput::vocabulary_id): <p>The identifier of the custom vocabulary.</p>
    ///   - [`state(Option<VocabularyState>)`](crate::output::DeleteVocabularyOutput::state): <p>The current state of the custom vocabulary.</p>
    /// - On failure, responds with [`SdkError<DeleteVocabularyError>`](crate::error::DeleteVocabularyError)
    pub fn delete_vocabulary(&self) -> fluent_builders::DeleteVocabulary {
        fluent_builders::DeleteVocabulary::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeAgentStatus`](crate::client::fluent_builders::DescribeAgentStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeAgentStatus::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeAgentStatus::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`agent_status_id(impl Into<String>)`](crate::client::fluent_builders::DescribeAgentStatus::agent_status_id) / [`set_agent_status_id(Option<String>)`](crate::client::fluent_builders::DescribeAgentStatus::set_agent_status_id): <p>The identifier for the agent status.</p>
    /// - On success, responds with [`DescribeAgentStatusOutput`](crate::output::DescribeAgentStatusOutput) with field(s):
    ///   - [`agent_status(Option<AgentStatus>)`](crate::output::DescribeAgentStatusOutput::agent_status): <p>The agent status.</p>
    /// - On failure, responds with [`SdkError<DescribeAgentStatusError>`](crate::error::DescribeAgentStatusError)
    pub fn describe_agent_status(&self) -> fluent_builders::DescribeAgentStatus {
        fluent_builders::DescribeAgentStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeContact`](crate::client::fluent_builders::DescribeContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::DescribeContact::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::DescribeContact::set_contact_id): <p>The identifier of the contact.</p>
    /// - On success, responds with [`DescribeContactOutput`](crate::output::DescribeContactOutput) with field(s):
    ///   - [`contact(Option<Contact>)`](crate::output::DescribeContactOutput::contact): <p>Information about the contact.</p>
    /// - On failure, responds with [`SdkError<DescribeContactError>`](crate::error::DescribeContactError)
    pub fn describe_contact(&self) -> fluent_builders::DescribeContact {
        fluent_builders::DescribeContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeContactFlow`](crate::client::fluent_builders::DescribeContactFlow) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeContactFlow::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeContactFlow::set_instance_id): <p>The identifier of the Amazon Connect instance.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::DescribeContactFlow::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::DescribeContactFlow::set_contact_flow_id): <p>The identifier of the flow.</p>
    /// - On success, responds with [`DescribeContactFlowOutput`](crate::output::DescribeContactFlowOutput) with field(s):
    ///   - [`contact_flow(Option<ContactFlow>)`](crate::output::DescribeContactFlowOutput::contact_flow): <p>Information about the flow.</p>
    /// - On failure, responds with [`SdkError<DescribeContactFlowError>`](crate::error::DescribeContactFlowError)
    pub fn describe_contact_flow(&self) -> fluent_builders::DescribeContactFlow {
        fluent_builders::DescribeContactFlow::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeContactFlowModule`](crate::client::fluent_builders::DescribeContactFlowModule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeContactFlowModule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeContactFlowModule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_module_id(impl Into<String>)`](crate::client::fluent_builders::DescribeContactFlowModule::contact_flow_module_id) / [`set_contact_flow_module_id(Option<String>)`](crate::client::fluent_builders::DescribeContactFlowModule::set_contact_flow_module_id): <p>The identifier of the flow module.</p>
    /// - On success, responds with [`DescribeContactFlowModuleOutput`](crate::output::DescribeContactFlowModuleOutput) with field(s):
    ///   - [`contact_flow_module(Option<ContactFlowModule>)`](crate::output::DescribeContactFlowModuleOutput::contact_flow_module): <p>Information about the flow module.</p>
    /// - On failure, responds with [`SdkError<DescribeContactFlowModuleError>`](crate::error::DescribeContactFlowModuleError)
    pub fn describe_contact_flow_module(&self) -> fluent_builders::DescribeContactFlowModule {
        fluent_builders::DescribeContactFlowModule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeHoursOfOperation`](crate::client::fluent_builders::DescribeHoursOfOperation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeHoursOfOperation::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeHoursOfOperation::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`hours_of_operation_id(impl Into<String>)`](crate::client::fluent_builders::DescribeHoursOfOperation::hours_of_operation_id) / [`set_hours_of_operation_id(Option<String>)`](crate::client::fluent_builders::DescribeHoursOfOperation::set_hours_of_operation_id): <p>The identifier for the hours of operation.</p>
    /// - On success, responds with [`DescribeHoursOfOperationOutput`](crate::output::DescribeHoursOfOperationOutput) with field(s):
    ///   - [`hours_of_operation(Option<HoursOfOperation>)`](crate::output::DescribeHoursOfOperationOutput::hours_of_operation): <p>The hours of operation.</p>
    /// - On failure, responds with [`SdkError<DescribeHoursOfOperationError>`](crate::error::DescribeHoursOfOperationError)
    pub fn describe_hours_of_operation(&self) -> fluent_builders::DescribeHoursOfOperation {
        fluent_builders::DescribeHoursOfOperation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeInstance`](crate::client::fluent_builders::DescribeInstance) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeInstance::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeInstance::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DescribeInstanceOutput`](crate::output::DescribeInstanceOutput) with field(s):
    ///   - [`instance(Option<Instance>)`](crate::output::DescribeInstanceOutput::instance): <p>The name of the instance.</p>
    /// - On failure, responds with [`SdkError<DescribeInstanceError>`](crate::error::DescribeInstanceError)
    pub fn describe_instance(&self) -> fluent_builders::DescribeInstance {
        fluent_builders::DescribeInstance::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeInstanceAttribute`](crate::client::fluent_builders::DescribeInstanceAttribute) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeInstanceAttribute::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeInstanceAttribute::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`attribute_type(InstanceAttributeType)`](crate::client::fluent_builders::DescribeInstanceAttribute::attribute_type) / [`set_attribute_type(Option<InstanceAttributeType>)`](crate::client::fluent_builders::DescribeInstanceAttribute::set_attribute_type): <p>The type of attribute.</p>
    /// - On success, responds with [`DescribeInstanceAttributeOutput`](crate::output::DescribeInstanceAttributeOutput) with field(s):
    ///   - [`attribute(Option<Attribute>)`](crate::output::DescribeInstanceAttributeOutput::attribute): <p>The type of attribute.</p>
    /// - On failure, responds with [`SdkError<DescribeInstanceAttributeError>`](crate::error::DescribeInstanceAttributeError)
    pub fn describe_instance_attribute(&self) -> fluent_builders::DescribeInstanceAttribute {
        fluent_builders::DescribeInstanceAttribute::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeInstanceStorageConfig`](crate::client::fluent_builders::DescribeInstanceStorageConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeInstanceStorageConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeInstanceStorageConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`association_id(impl Into<String>)`](crate::client::fluent_builders::DescribeInstanceStorageConfig::association_id) / [`set_association_id(Option<String>)`](crate::client::fluent_builders::DescribeInstanceStorageConfig::set_association_id): <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
    ///   - [`resource_type(InstanceStorageResourceType)`](crate::client::fluent_builders::DescribeInstanceStorageConfig::resource_type) / [`set_resource_type(Option<InstanceStorageResourceType>)`](crate::client::fluent_builders::DescribeInstanceStorageConfig::set_resource_type): <p>A valid resource type.</p>
    /// - On success, responds with [`DescribeInstanceStorageConfigOutput`](crate::output::DescribeInstanceStorageConfigOutput) with field(s):
    ///   - [`storage_config(Option<InstanceStorageConfig>)`](crate::output::DescribeInstanceStorageConfigOutput::storage_config): <p>A valid storage type.</p>
    /// - On failure, responds with [`SdkError<DescribeInstanceStorageConfigError>`](crate::error::DescribeInstanceStorageConfigError)
    pub fn describe_instance_storage_config(
        &self,
    ) -> fluent_builders::DescribeInstanceStorageConfig {
        fluent_builders::DescribeInstanceStorageConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribePhoneNumber`](crate::client::fluent_builders::DescribePhoneNumber) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`phone_number_id(impl Into<String>)`](crate::client::fluent_builders::DescribePhoneNumber::phone_number_id) / [`set_phone_number_id(Option<String>)`](crate::client::fluent_builders::DescribePhoneNumber::set_phone_number_id): <p>A unique identifier for the phone number.</p>
    /// - On success, responds with [`DescribePhoneNumberOutput`](crate::output::DescribePhoneNumberOutput) with field(s):
    ///   - [`claimed_phone_number_summary(Option<ClaimedPhoneNumberSummary>)`](crate::output::DescribePhoneNumberOutput::claimed_phone_number_summary): <p>Information about a phone number that's been claimed to your Amazon Connect instance or traffic distribution group.</p>
    /// - On failure, responds with [`SdkError<DescribePhoneNumberError>`](crate::error::DescribePhoneNumberError)
    pub fn describe_phone_number(&self) -> fluent_builders::DescribePhoneNumber {
        fluent_builders::DescribePhoneNumber::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeQueue`](crate::client::fluent_builders::DescribeQueue) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeQueue::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeQueue::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::DescribeQueue::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::DescribeQueue::set_queue_id): <p>The identifier for the queue.</p>
    /// - On success, responds with [`DescribeQueueOutput`](crate::output::DescribeQueueOutput) with field(s):
    ///   - [`queue(Option<Queue>)`](crate::output::DescribeQueueOutput::queue): <p>The name of the queue.</p>
    /// - On failure, responds with [`SdkError<DescribeQueueError>`](crate::error::DescribeQueueError)
    pub fn describe_queue(&self) -> fluent_builders::DescribeQueue {
        fluent_builders::DescribeQueue::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeQuickConnect`](crate::client::fluent_builders::DescribeQuickConnect) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeQuickConnect::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeQuickConnect::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`quick_connect_id(impl Into<String>)`](crate::client::fluent_builders::DescribeQuickConnect::quick_connect_id) / [`set_quick_connect_id(Option<String>)`](crate::client::fluent_builders::DescribeQuickConnect::set_quick_connect_id): <p>The identifier for the quick connect.</p>
    /// - On success, responds with [`DescribeQuickConnectOutput`](crate::output::DescribeQuickConnectOutput) with field(s):
    ///   - [`quick_connect(Option<QuickConnect>)`](crate::output::DescribeQuickConnectOutput::quick_connect): <p>Information about the quick connect.</p>
    /// - On failure, responds with [`SdkError<DescribeQuickConnectError>`](crate::error::DescribeQuickConnectError)
    pub fn describe_quick_connect(&self) -> fluent_builders::DescribeQuickConnect {
        fluent_builders::DescribeQuickConnect::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeRoutingProfile`](crate::client::fluent_builders::DescribeRoutingProfile) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeRoutingProfile::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeRoutingProfile::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::DescribeRoutingProfile::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::DescribeRoutingProfile::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    /// - On success, responds with [`DescribeRoutingProfileOutput`](crate::output::DescribeRoutingProfileOutput) with field(s):
    ///   - [`routing_profile(Option<RoutingProfile>)`](crate::output::DescribeRoutingProfileOutput::routing_profile): <p>The routing profile.</p>
    /// - On failure, responds with [`SdkError<DescribeRoutingProfileError>`](crate::error::DescribeRoutingProfileError)
    pub fn describe_routing_profile(&self) -> fluent_builders::DescribeRoutingProfile {
        fluent_builders::DescribeRoutingProfile::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeRule`](crate::client::fluent_builders::DescribeRule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeRule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeRule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`rule_id(impl Into<String>)`](crate::client::fluent_builders::DescribeRule::rule_id) / [`set_rule_id(Option<String>)`](crate::client::fluent_builders::DescribeRule::set_rule_id): <p>A unique identifier for the rule.</p>
    /// - On success, responds with [`DescribeRuleOutput`](crate::output::DescribeRuleOutput) with field(s):
    ///   - [`rule(Option<Rule>)`](crate::output::DescribeRuleOutput::rule): <p>Information about the rule.</p>
    /// - On failure, responds with [`SdkError<DescribeRuleError>`](crate::error::DescribeRuleError)
    pub fn describe_rule(&self) -> fluent_builders::DescribeRule {
        fluent_builders::DescribeRule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeSecurityProfile`](crate::client::fluent_builders::DescribeSecurityProfile) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`security_profile_id(impl Into<String>)`](crate::client::fluent_builders::DescribeSecurityProfile::security_profile_id) / [`set_security_profile_id(Option<String>)`](crate::client::fluent_builders::DescribeSecurityProfile::set_security_profile_id): <p>The identifier for the security profle.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeSecurityProfile::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeSecurityProfile::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DescribeSecurityProfileOutput`](crate::output::DescribeSecurityProfileOutput) with field(s):
    ///   - [`security_profile(Option<SecurityProfile>)`](crate::output::DescribeSecurityProfileOutput::security_profile): <p>The security profile.</p>
    /// - On failure, responds with [`SdkError<DescribeSecurityProfileError>`](crate::error::DescribeSecurityProfileError)
    pub fn describe_security_profile(&self) -> fluent_builders::DescribeSecurityProfile {
        fluent_builders::DescribeSecurityProfile::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeTrafficDistributionGroup`](crate::client::fluent_builders::DescribeTrafficDistributionGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`traffic_distribution_group_id(impl Into<String>)`](crate::client::fluent_builders::DescribeTrafficDistributionGroup::traffic_distribution_group_id) / [`set_traffic_distribution_group_id(Option<String>)`](crate::client::fluent_builders::DescribeTrafficDistributionGroup::set_traffic_distribution_group_id): <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
    /// - On success, responds with [`DescribeTrafficDistributionGroupOutput`](crate::output::DescribeTrafficDistributionGroupOutput) with field(s):
    ///   - [`traffic_distribution_group(Option<TrafficDistributionGroup>)`](crate::output::DescribeTrafficDistributionGroupOutput::traffic_distribution_group): <p>Information about the traffic distribution group.</p>
    /// - On failure, responds with [`SdkError<DescribeTrafficDistributionGroupError>`](crate::error::DescribeTrafficDistributionGroupError)
    pub fn describe_traffic_distribution_group(
        &self,
    ) -> fluent_builders::DescribeTrafficDistributionGroup {
        fluent_builders::DescribeTrafficDistributionGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeUser`](crate::client::fluent_builders::DescribeUser) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::DescribeUser::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::DescribeUser::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeUser::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeUser::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DescribeUserOutput`](crate::output::DescribeUserOutput) with field(s):
    ///   - [`user(Option<User>)`](crate::output::DescribeUserOutput::user): <p>Information about the user account and configuration settings.</p>
    /// - On failure, responds with [`SdkError<DescribeUserError>`](crate::error::DescribeUserError)
    pub fn describe_user(&self) -> fluent_builders::DescribeUser {
        fluent_builders::DescribeUser::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeUserHierarchyGroup`](crate::client::fluent_builders::DescribeUserHierarchyGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`hierarchy_group_id(impl Into<String>)`](crate::client::fluent_builders::DescribeUserHierarchyGroup::hierarchy_group_id) / [`set_hierarchy_group_id(Option<String>)`](crate::client::fluent_builders::DescribeUserHierarchyGroup::set_hierarchy_group_id): <p>The identifier of the hierarchy group.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeUserHierarchyGroup::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeUserHierarchyGroup::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DescribeUserHierarchyGroupOutput`](crate::output::DescribeUserHierarchyGroupOutput) with field(s):
    ///   - [`hierarchy_group(Option<HierarchyGroup>)`](crate::output::DescribeUserHierarchyGroupOutput::hierarchy_group): <p>Information about the hierarchy group.</p>
    /// - On failure, responds with [`SdkError<DescribeUserHierarchyGroupError>`](crate::error::DescribeUserHierarchyGroupError)
    pub fn describe_user_hierarchy_group(&self) -> fluent_builders::DescribeUserHierarchyGroup {
        fluent_builders::DescribeUserHierarchyGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeUserHierarchyStructure`](crate::client::fluent_builders::DescribeUserHierarchyStructure) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeUserHierarchyStructure::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeUserHierarchyStructure::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DescribeUserHierarchyStructureOutput`](crate::output::DescribeUserHierarchyStructureOutput) with field(s):
    ///   - [`hierarchy_structure(Option<HierarchyStructure>)`](crate::output::DescribeUserHierarchyStructureOutput::hierarchy_structure): <p>Information about the hierarchy structure.</p>
    /// - On failure, responds with [`SdkError<DescribeUserHierarchyStructureError>`](crate::error::DescribeUserHierarchyStructureError)
    pub fn describe_user_hierarchy_structure(
        &self,
    ) -> fluent_builders::DescribeUserHierarchyStructure {
        fluent_builders::DescribeUserHierarchyStructure::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeVocabulary`](crate::client::fluent_builders::DescribeVocabulary) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DescribeVocabulary::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DescribeVocabulary::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`vocabulary_id(impl Into<String>)`](crate::client::fluent_builders::DescribeVocabulary::vocabulary_id) / [`set_vocabulary_id(Option<String>)`](crate::client::fluent_builders::DescribeVocabulary::set_vocabulary_id): <p>The identifier of the custom vocabulary.</p>
    /// - On success, responds with [`DescribeVocabularyOutput`](crate::output::DescribeVocabularyOutput) with field(s):
    ///   - [`vocabulary(Option<Vocabulary>)`](crate::output::DescribeVocabularyOutput::vocabulary): <p>A list of specific words that you want Contact Lens for Amazon Connect to recognize in your audio input. They are generally domain-specific words and phrases, words that Contact Lens is not recognizing, or proper nouns.</p>
    /// - On failure, responds with [`SdkError<DescribeVocabularyError>`](crate::error::DescribeVocabularyError)
    pub fn describe_vocabulary(&self) -> fluent_builders::DescribeVocabulary {
        fluent_builders::DescribeVocabulary::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateApprovedOrigin`](crate::client::fluent_builders::DisassociateApprovedOrigin) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateApprovedOrigin::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateApprovedOrigin::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`origin(impl Into<String>)`](crate::client::fluent_builders::DisassociateApprovedOrigin::origin) / [`set_origin(Option<String>)`](crate::client::fluent_builders::DisassociateApprovedOrigin::set_origin): <p>The domain URL of the integrated application.</p>
    /// - On success, responds with [`DisassociateApprovedOriginOutput`](crate::output::DisassociateApprovedOriginOutput)

    /// - On failure, responds with [`SdkError<DisassociateApprovedOriginError>`](crate::error::DisassociateApprovedOriginError)
    pub fn disassociate_approved_origin(&self) -> fluent_builders::DisassociateApprovedOrigin {
        fluent_builders::DisassociateApprovedOrigin::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateBot`](crate::client::fluent_builders::DisassociateBot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateBot::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateBot::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`lex_bot(LexBot)`](crate::client::fluent_builders::DisassociateBot::lex_bot) / [`set_lex_bot(Option<LexBot>)`](crate::client::fluent_builders::DisassociateBot::set_lex_bot): <p>Configuration information of an Amazon Lex bot.</p>
    ///   - [`lex_v2_bot(LexV2Bot)`](crate::client::fluent_builders::DisassociateBot::lex_v2_bot) / [`set_lex_v2_bot(Option<LexV2Bot>)`](crate::client::fluent_builders::DisassociateBot::set_lex_v2_bot): <p>The Amazon Lex V2 bot to disassociate from the instance.</p>
    /// - On success, responds with [`DisassociateBotOutput`](crate::output::DisassociateBotOutput)

    /// - On failure, responds with [`SdkError<DisassociateBotError>`](crate::error::DisassociateBotError)
    pub fn disassociate_bot(&self) -> fluent_builders::DisassociateBot {
        fluent_builders::DisassociateBot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateInstanceStorageConfig`](crate::client::fluent_builders::DisassociateInstanceStorageConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateInstanceStorageConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateInstanceStorageConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`association_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateInstanceStorageConfig::association_id) / [`set_association_id(Option<String>)`](crate::client::fluent_builders::DisassociateInstanceStorageConfig::set_association_id): <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
    ///   - [`resource_type(InstanceStorageResourceType)`](crate::client::fluent_builders::DisassociateInstanceStorageConfig::resource_type) / [`set_resource_type(Option<InstanceStorageResourceType>)`](crate::client::fluent_builders::DisassociateInstanceStorageConfig::set_resource_type): <p>A valid resource type.</p>
    /// - On success, responds with [`DisassociateInstanceStorageConfigOutput`](crate::output::DisassociateInstanceStorageConfigOutput)

    /// - On failure, responds with [`SdkError<DisassociateInstanceStorageConfigError>`](crate::error::DisassociateInstanceStorageConfigError)
    pub fn disassociate_instance_storage_config(
        &self,
    ) -> fluent_builders::DisassociateInstanceStorageConfig {
        fluent_builders::DisassociateInstanceStorageConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateLambdaFunction`](crate::client::fluent_builders::DisassociateLambdaFunction) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateLambdaFunction::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateLambdaFunction::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance..</p>
    ///   - [`function_arn(impl Into<String>)`](crate::client::fluent_builders::DisassociateLambdaFunction::function_arn) / [`set_function_arn(Option<String>)`](crate::client::fluent_builders::DisassociateLambdaFunction::set_function_arn): <p>The Amazon Resource Name (ARN) of the Lambda function being disassociated.</p>
    /// - On success, responds with [`DisassociateLambdaFunctionOutput`](crate::output::DisassociateLambdaFunctionOutput)

    /// - On failure, responds with [`SdkError<DisassociateLambdaFunctionError>`](crate::error::DisassociateLambdaFunctionError)
    pub fn disassociate_lambda_function(&self) -> fluent_builders::DisassociateLambdaFunction {
        fluent_builders::DisassociateLambdaFunction::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateLexBot`](crate::client::fluent_builders::DisassociateLexBot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateLexBot::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateLexBot::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`bot_name(impl Into<String>)`](crate::client::fluent_builders::DisassociateLexBot::bot_name) / [`set_bot_name(Option<String>)`](crate::client::fluent_builders::DisassociateLexBot::set_bot_name): <p>The name of the Amazon Lex bot. Maximum character limit of 50.</p>
    ///   - [`lex_region(impl Into<String>)`](crate::client::fluent_builders::DisassociateLexBot::lex_region) / [`set_lex_region(Option<String>)`](crate::client::fluent_builders::DisassociateLexBot::set_lex_region): <p>The Amazon Web Services Region in which the Amazon Lex bot has been created.</p>
    /// - On success, responds with [`DisassociateLexBotOutput`](crate::output::DisassociateLexBotOutput)

    /// - On failure, responds with [`SdkError<DisassociateLexBotError>`](crate::error::DisassociateLexBotError)
    pub fn disassociate_lex_bot(&self) -> fluent_builders::DisassociateLexBot {
        fluent_builders::DisassociateLexBot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociatePhoneNumberContactFlow`](crate::client::fluent_builders::DisassociatePhoneNumberContactFlow) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`phone_number_id(impl Into<String>)`](crate::client::fluent_builders::DisassociatePhoneNumberContactFlow::phone_number_id) / [`set_phone_number_id(Option<String>)`](crate::client::fluent_builders::DisassociatePhoneNumberContactFlow::set_phone_number_id): <p>A unique identifier for the phone number.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociatePhoneNumberContactFlow::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociatePhoneNumberContactFlow::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`DisassociatePhoneNumberContactFlowOutput`](crate::output::DisassociatePhoneNumberContactFlowOutput)

    /// - On failure, responds with [`SdkError<DisassociatePhoneNumberContactFlowError>`](crate::error::DisassociatePhoneNumberContactFlowError)
    pub fn disassociate_phone_number_contact_flow(
        &self,
    ) -> fluent_builders::DisassociatePhoneNumberContactFlow {
        fluent_builders::DisassociatePhoneNumberContactFlow::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateQueueQuickConnects`](crate::client::fluent_builders::DisassociateQueueQuickConnects) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateQueueQuickConnects::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateQueueQuickConnects::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateQueueQuickConnects::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::DisassociateQueueQuickConnects::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`quick_connect_ids(Vec<String>)`](crate::client::fluent_builders::DisassociateQueueQuickConnects::quick_connect_ids) / [`set_quick_connect_ids(Option<Vec<String>>)`](crate::client::fluent_builders::DisassociateQueueQuickConnects::set_quick_connect_ids): <p>The quick connects to disassociate from the queue.</p>
    /// - On success, responds with [`DisassociateQueueQuickConnectsOutput`](crate::output::DisassociateQueueQuickConnectsOutput)

    /// - On failure, responds with [`SdkError<DisassociateQueueQuickConnectsError>`](crate::error::DisassociateQueueQuickConnectsError)
    pub fn disassociate_queue_quick_connects(
        &self,
    ) -> fluent_builders::DisassociateQueueQuickConnects {
        fluent_builders::DisassociateQueueQuickConnects::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateRoutingProfileQueues`](crate::client::fluent_builders::DisassociateRoutingProfileQueues) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateRoutingProfileQueues::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateRoutingProfileQueues::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateRoutingProfileQueues::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::DisassociateRoutingProfileQueues::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    ///   - [`queue_references(Vec<RoutingProfileQueueReference>)`](crate::client::fluent_builders::DisassociateRoutingProfileQueues::queue_references) / [`set_queue_references(Option<Vec<RoutingProfileQueueReference>>)`](crate::client::fluent_builders::DisassociateRoutingProfileQueues::set_queue_references): <p>The queues to disassociate from this routing profile.</p>
    /// - On success, responds with [`DisassociateRoutingProfileQueuesOutput`](crate::output::DisassociateRoutingProfileQueuesOutput)

    /// - On failure, responds with [`SdkError<DisassociateRoutingProfileQueuesError>`](crate::error::DisassociateRoutingProfileQueuesError)
    pub fn disassociate_routing_profile_queues(
        &self,
    ) -> fluent_builders::DisassociateRoutingProfileQueues {
        fluent_builders::DisassociateRoutingProfileQueues::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DisassociateSecurityKey`](crate::client::fluent_builders::DisassociateSecurityKey) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateSecurityKey::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DisassociateSecurityKey::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`association_id(impl Into<String>)`](crate::client::fluent_builders::DisassociateSecurityKey::association_id) / [`set_association_id(Option<String>)`](crate::client::fluent_builders::DisassociateSecurityKey::set_association_id): <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
    /// - On success, responds with [`DisassociateSecurityKeyOutput`](crate::output::DisassociateSecurityKeyOutput)

    /// - On failure, responds with [`SdkError<DisassociateSecurityKeyError>`](crate::error::DisassociateSecurityKeyError)
    pub fn disassociate_security_key(&self) -> fluent_builders::DisassociateSecurityKey {
        fluent_builders::DisassociateSecurityKey::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DismissUserContact`](crate::client::fluent_builders::DismissUserContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::DismissUserContact::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::DismissUserContact::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::DismissUserContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::DismissUserContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::DismissUserContact::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::DismissUserContact::set_contact_id): <p>The identifier of the contact.</p>
    /// - On success, responds with [`DismissUserContactOutput`](crate::output::DismissUserContactOutput)

    /// - On failure, responds with [`SdkError<DismissUserContactError>`](crate::error::DismissUserContactError)
    pub fn dismiss_user_contact(&self) -> fluent_builders::DismissUserContact {
        fluent_builders::DismissUserContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetContactAttributes`](crate::client::fluent_builders::GetContactAttributes) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::GetContactAttributes::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::GetContactAttributes::set_instance_id): <p>The identifier of the Amazon Connect instance.</p>
    ///   - [`initial_contact_id(impl Into<String>)`](crate::client::fluent_builders::GetContactAttributes::initial_contact_id) / [`set_initial_contact_id(Option<String>)`](crate::client::fluent_builders::GetContactAttributes::set_initial_contact_id): <p>The identifier of the initial contact.</p>
    /// - On success, responds with [`GetContactAttributesOutput`](crate::output::GetContactAttributesOutput) with field(s):
    ///   - [`attributes(Option<HashMap<String, String>>)`](crate::output::GetContactAttributesOutput::attributes): <p>Information about the attributes.</p>
    /// - On failure, responds with [`SdkError<GetContactAttributesError>`](crate::error::GetContactAttributesError)
    pub fn get_contact_attributes(&self) -> fluent_builders::GetContactAttributes {
        fluent_builders::GetContactAttributes::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetCurrentMetricData`](crate::client::fluent_builders::GetCurrentMetricData) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::GetCurrentMetricData::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::GetCurrentMetricData::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::GetCurrentMetricData::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`filters(Filters)`](crate::client::fluent_builders::GetCurrentMetricData::filters) / [`set_filters(Option<Filters>)`](crate::client::fluent_builders::GetCurrentMetricData::set_filters): <p>The filters to apply to returned metrics. You can filter up to the following limits:</p>  <ul>   <li> <p>Queues: 100</p> </li>   <li> <p>Routing profiles: 100</p> </li>   <li> <p>Channels: 3 (VOICE, CHAT, and TASK channels are supported.)</p> </li>  </ul>  <p>Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request. </p>  <p>Currently tagging is only supported on the resources that are passed in the filter.</p>
    ///   - [`groupings(Vec<Grouping>)`](crate::client::fluent_builders::GetCurrentMetricData::groupings) / [`set_groupings(Option<Vec<Grouping>>)`](crate::client::fluent_builders::GetCurrentMetricData::set_groupings): <p>The grouping applied to the metrics returned. For example, when grouped by <code>QUEUE</code>, the metrics returned apply to each queue rather than aggregated for all queues. </p>  <ul>   <li> <p>If you group by <code>CHANNEL</code>, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.</p> </li>   <li> <p>If you group by <code>ROUTING_PROFILE</code>, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics <code>CONTACTS_SCHEDULED</code>, <code>CONTACTS_IN_QUEUE</code>, and <code> OLDEST_CONTACT_AGE</code>.</p> </li>   <li> <p>If no <code>Grouping</code> is included in the request, a summary of metrics is returned.</p> </li>  </ul>
    ///   - [`current_metrics(Vec<CurrentMetric>)`](crate::client::fluent_builders::GetCurrentMetricData::current_metrics) / [`set_current_metrics(Option<Vec<CurrentMetric>>)`](crate::client::fluent_builders::GetCurrentMetricData::set_current_metrics): <p>The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html">Real-time Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p>  <dl>   <dt>   AGENTS_AFTER_CONTACT_WORK  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#aftercallwork-real-time">ACW</a> </p>   </dd>   <dt>   AGENTS_AVAILABLE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#available-real-time">Available</a> </p>   </dd>   <dt>   AGENTS_ERROR  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#error-real-time">Error</a> </p>   </dd>   <dt>   AGENTS_NON_PRODUCTIVE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#non-productive-time-real-time">NPT (Non-Productive Time)</a> </p>   </dd>   <dt>   AGENTS_ON_CALL  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time">On contact</a> </p>   </dd>   <dt>   AGENTS_ON_CONTACT  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time">On contact</a> </p>   </dd>   <dt>   AGENTS_ONLINE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#online-real-time">Online</a> </p>   </dd>   <dt>   AGENTS_STAFFED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#staffed-real-time">Staffed</a> </p>   </dd>   <dt>   CONTACTS_IN_QUEUE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#in-queue-real-time">In queue</a> </p>   </dd>   <dt>   CONTACTS_SCHEDULED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#scheduled-real-time">Scheduled</a> </p>   </dd>   <dt>   OLDEST_CONTACT_AGE  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>When you use groupings, Unit says SECONDS and the Value is returned in SECONDS. </p>    <p>When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:</p>    <p> <code>{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 </code>}</p>    <p>The actual OLDEST_CONTACT_AGE is 24 seconds.</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#oldest-real-time">Oldest</a> </p>   </dd>   <dt>   SLOTS_ACTIVE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#active-real-time">Active</a> </p>   </dd>   <dt>   SLOTS_AVAILABLE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#availability-real-time">Availability</a> </p>   </dd>  </dl>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::GetCurrentMetricData::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::GetCurrentMetricData::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>  <p>The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::GetCurrentMetricData::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::GetCurrentMetricData::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`sort_criteria(Vec<CurrentMetricSortCriteria>)`](crate::client::fluent_builders::GetCurrentMetricData::sort_criteria) / [`set_sort_criteria(Option<Vec<CurrentMetricSortCriteria>>)`](crate::client::fluent_builders::GetCurrentMetricData::set_sort_criteria): <p>The way to sort the resulting response based on metrics. You can enter one sort criteria. By default resources are sorted based on <code>AGENTS_ONLINE</code>, <code>DESCENDING</code>. The metric collection is sorted based on the input metrics.</p>  <p>Note the following:</p>  <ul>   <li> <p>Sorting on <code>SLOTS_ACTIVE</code> and <code>SLOTS_AVAILABLE</code> is not supported.</p> </li>  </ul>
    /// - On success, responds with [`GetCurrentMetricDataOutput`](crate::output::GetCurrentMetricDataOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::GetCurrentMetricDataOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>  <p>The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.</p>
    ///   - [`metric_results(Option<Vec<CurrentMetricResult>>)`](crate::output::GetCurrentMetricDataOutput::metric_results): <p>Information about the real-time metrics.</p>
    ///   - [`data_snapshot_time(Option<DateTime>)`](crate::output::GetCurrentMetricDataOutput::data_snapshot_time): <p>The time at which the metrics were retrieved and cached for pagination.</p>
    ///   - [`approximate_total_count(Option<i64>)`](crate::output::GetCurrentMetricDataOutput::approximate_total_count): <p>The total count of the result, regardless of the current page size. </p>
    /// - On failure, responds with [`SdkError<GetCurrentMetricDataError>`](crate::error::GetCurrentMetricDataError)
    pub fn get_current_metric_data(&self) -> fluent_builders::GetCurrentMetricData {
        fluent_builders::GetCurrentMetricData::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetCurrentUserData`](crate::client::fluent_builders::GetCurrentUserData) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::GetCurrentUserData::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::GetCurrentUserData::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::GetCurrentUserData::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`filters(UserDataFilters)`](crate::client::fluent_builders::GetCurrentUserData::filters) / [`set_filters(Option<UserDataFilters>)`](crate::client::fluent_builders::GetCurrentUserData::set_filters): <p>The filters to apply to returned user data. You can filter up to the following limits:</p>  <ul>   <li> <p>Queues: 100</p> </li>   <li> <p>Routing profiles: 100</p> </li>   <li> <p>Agents: 100</p> </li>   <li> <p>Contact states: 9</p> </li>   <li> <p>User hierarchy groups: 1</p> </li>  </ul>  <p> The user data is retrieved for only the specified values/resources in the filter. A maximum of one filter can be passed from queues, routing profiles, agents, and user hierarchy groups. </p>  <p>Currently tagging is only supported on the resources that are passed in the filter.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::GetCurrentUserData::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::GetCurrentUserData::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::GetCurrentUserData::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::GetCurrentUserData::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`GetCurrentUserDataOutput`](crate::output::GetCurrentUserDataOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::GetCurrentUserDataOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`user_data_list(Option<Vec<UserData>>)`](crate::output::GetCurrentUserDataOutput::user_data_list): <p>A list of the user data that is returned.</p>
    ///   - [`approximate_total_count(Option<i64>)`](crate::output::GetCurrentUserDataOutput::approximate_total_count): <p>The total count of the result, regardless of the current page size.</p>
    /// - On failure, responds with [`SdkError<GetCurrentUserDataError>`](crate::error::GetCurrentUserDataError)
    pub fn get_current_user_data(&self) -> fluent_builders::GetCurrentUserData {
        fluent_builders::GetCurrentUserData::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetFederationToken`](crate::client::fluent_builders::GetFederationToken) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::GetFederationToken::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::GetFederationToken::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`GetFederationTokenOutput`](crate::output::GetFederationTokenOutput) with field(s):
    ///   - [`credentials(Option<Credentials>)`](crate::output::GetFederationTokenOutput::credentials): <p>The credentials to use for federation.</p>
    ///   - [`sign_in_url(Option<String>)`](crate::output::GetFederationTokenOutput::sign_in_url): <p>The URL to sign into the user's instance. </p>
    ///   - [`user_arn(Option<String>)`](crate::output::GetFederationTokenOutput::user_arn): <p>The Amazon Resource Name (ARN) of the user.</p>
    ///   - [`user_id(Option<String>)`](crate::output::GetFederationTokenOutput::user_id): <p>The identifier for the user.</p>
    /// - On failure, responds with [`SdkError<GetFederationTokenError>`](crate::error::GetFederationTokenError)
    pub fn get_federation_token(&self) -> fluent_builders::GetFederationToken {
        fluent_builders::GetFederationToken::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetMetricData`](crate::client::fluent_builders::GetMetricData) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::GetMetricData::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::GetMetricData::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::GetMetricData::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`start_time(DateTime)`](crate::client::fluent_builders::GetMetricData::start_time) / [`set_start_time(Option<DateTime>)`](crate::client::fluent_builders::GetMetricData::set_start_time): <p>The timestamp, in UNIX Epoch time format, at which to start the reporting interval for the retrieval of historical metrics data. The time must be specified using a multiple of 5 minutes, such as 10:05, 10:10, 10:15.</p>  <p>The start time cannot be earlier than 24 hours before the time of the request. Historical metrics are available only for 24 hours.</p>
    ///   - [`end_time(DateTime)`](crate::client::fluent_builders::GetMetricData::end_time) / [`set_end_time(Option<DateTime>)`](crate::client::fluent_builders::GetMetricData::set_end_time): <p>The timestamp, in UNIX Epoch time format, at which to end the reporting interval for the retrieval of historical metrics data. The time must be specified using an interval of 5 minutes, such as 11:00, 11:05, 11:10, and must be later than the start time timestamp.</p>  <p>The time range between the start and end time must be less than 24 hours.</p>
    ///   - [`filters(Filters)`](crate::client::fluent_builders::GetMetricData::filters) / [`set_filters(Option<Filters>)`](crate::client::fluent_builders::GetMetricData::set_filters): <p>The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.</p> <note>   <p>To filter by <code>Queues</code>, enter the queue ID/ARN, not the name of the queue.</p>  </note>
    ///   - [`groupings(Vec<Grouping>)`](crate::client::fluent_builders::GetMetricData::groupings) / [`set_groupings(Option<Vec<Grouping>>)`](crate::client::fluent_builders::GetMetricData::set_groupings): <p>The grouping applied to the metrics returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values returned apply to the metrics for each queue rather than aggregated for all queues.</p>  <p>If no grouping is specified, a summary of metrics for all queues is returned.</p>
    ///   - [`historical_metrics(Vec<HistoricalMetric>)`](crate::client::fluent_builders::GetMetricData::historical_metrics) / [`set_historical_metrics(Option<Vec<HistoricalMetric>>)`](crate::client::fluent_builders::GetMetricData::set_historical_metrics): <p>The metrics to retrieve. Specify the name, unit, and statistic for each metric. The following historical metrics are available. For a description of each metric, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html">Historical Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p> <note>   <p>This API does not support a contacts incoming metric (there's no CONTACTS_INCOMING metric missing from the documented list). </p>  </note>  <dl>   <dt>   ABANDON_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: AVG</p>   </dd>   <dt>   AFTER_CONTACT_WORK_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: AVG</p>   </dd>   <dt>   API_CONTACTS_HANDLED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CALLBACK_CONTACTS_HANDLED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_ABANDONED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_AGENT_HUNG_UP_FIRST  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_CONSULTED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_HANDLED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_HANDLED_INCOMING  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_HANDLED_OUTBOUND  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_HOLD_ABANDONS  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_MISSED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_QUEUED  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_TRANSFERRED_IN  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_TRANSFERRED_IN_FROM_QUEUE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_TRANSFERRED_OUT  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   CONTACTS_TRANSFERRED_OUT_FROM_QUEUE  </dt>   <dd>    <p>Unit: COUNT</p>    <p>Statistic: SUM</p>   </dd>   <dt>   HANDLE_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: AVG</p>   </dd>   <dt>   HOLD_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: AVG</p>   </dd>   <dt>   INTERACTION_AND_HOLD_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: AVG</p>   </dd>   <dt>   INTERACTION_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: AVG</p>   </dd>   <dt>   OCCUPANCY  </dt>   <dd>    <p>Unit: PERCENT</p>    <p>Statistic: AVG</p>   </dd>   <dt>   QUEUE_ANSWER_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: AVG</p>   </dd>   <dt>   QUEUED_TIME  </dt>   <dd>    <p>Unit: SECONDS</p>    <p>Statistic: MAX</p>   </dd>   <dt>   SERVICE_LEVEL  </dt>   <dd>    <p>You can include up to 20 SERVICE_LEVEL metrics in a request.</p>    <p>Unit: PERCENT</p>    <p>Statistic: AVG</p>    <p>Threshold: For <code>ThresholdValue</code>, enter any whole number from 1 to 604800 (inclusive), in seconds. For <code>Comparison</code>, you must enter <code>LT</code> (for "Less than"). </p>   </dd>  </dl>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::GetMetricData::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::GetMetricData::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::GetMetricData::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::GetMetricData::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`GetMetricDataOutput`](crate::output::GetMetricDataOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::GetMetricDataOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>  <p>The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.</p>
    ///   - [`metric_results(Option<Vec<HistoricalMetricResult>>)`](crate::output::GetMetricDataOutput::metric_results): <p>Information about the historical metrics.</p>  <p>If no grouping is specified, a summary of metric data is returned.</p>
    /// - On failure, responds with [`SdkError<GetMetricDataError>`](crate::error::GetMetricDataError)
    pub fn get_metric_data(&self) -> fluent_builders::GetMetricData {
        fluent_builders::GetMetricData::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetTaskTemplate`](crate::client::fluent_builders::GetTaskTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::GetTaskTemplate::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::GetTaskTemplate::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`task_template_id(impl Into<String>)`](crate::client::fluent_builders::GetTaskTemplate::task_template_id) / [`set_task_template_id(Option<String>)`](crate::client::fluent_builders::GetTaskTemplate::set_task_template_id): <p>A unique identifier for the task template.</p>
    ///   - [`snapshot_version(impl Into<String>)`](crate::client::fluent_builders::GetTaskTemplate::snapshot_version) / [`set_snapshot_version(Option<String>)`](crate::client::fluent_builders::GetTaskTemplate::set_snapshot_version): <p>The system generated version of a task template that is associated with a task, when the task is created.</p>
    /// - On success, responds with [`GetTaskTemplateOutput`](crate::output::GetTaskTemplateOutput) with field(s):
    ///   - [`instance_id(Option<String>)`](crate::output::GetTaskTemplateOutput::instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`id(Option<String>)`](crate::output::GetTaskTemplateOutput::id): <p>A unique identifier for the task template.</p>
    ///   - [`arn(Option<String>)`](crate::output::GetTaskTemplateOutput::arn): <p>The Amazon Resource Name (ARN).</p>
    ///   - [`name(Option<String>)`](crate::output::GetTaskTemplateOutput::name): <p>The name of the task template.</p>
    ///   - [`description(Option<String>)`](crate::output::GetTaskTemplateOutput::description): <p>The description of the task template.</p>
    ///   - [`contact_flow_id(Option<String>)`](crate::output::GetTaskTemplateOutput::contact_flow_id): <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
    ///   - [`constraints(Option<TaskTemplateConstraints>)`](crate::output::GetTaskTemplateOutput::constraints): <p>Constraints that are applicable to the fields listed.</p>
    ///   - [`defaults(Option<TaskTemplateDefaults>)`](crate::output::GetTaskTemplateOutput::defaults): <p>The default values for fields when a task is created by referencing this template.</p>
    ///   - [`fields(Option<Vec<TaskTemplateField>>)`](crate::output::GetTaskTemplateOutput::fields): <p>Fields that are part of the template.</p>
    ///   - [`status(Option<TaskTemplateStatus>)`](crate::output::GetTaskTemplateOutput::status): <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::GetTaskTemplateOutput::last_modified_time): <p>The timestamp when the task template was last modified.</p>
    ///   - [`created_time(Option<DateTime>)`](crate::output::GetTaskTemplateOutput::created_time): <p>The timestamp when the task template was created.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::GetTaskTemplateOutput::tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On failure, responds with [`SdkError<GetTaskTemplateError>`](crate::error::GetTaskTemplateError)
    pub fn get_task_template(&self) -> fluent_builders::GetTaskTemplate {
        fluent_builders::GetTaskTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetTrafficDistribution`](crate::client::fluent_builders::GetTrafficDistribution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`id(impl Into<String>)`](crate::client::fluent_builders::GetTrafficDistribution::id) / [`set_id(Option<String>)`](crate::client::fluent_builders::GetTrafficDistribution::set_id): <p>The identifier of the traffic distribution group.</p>
    /// - On success, responds with [`GetTrafficDistributionOutput`](crate::output::GetTrafficDistributionOutput) with field(s):
    ///   - [`telephony_config(Option<TelephonyConfig>)`](crate::output::GetTrafficDistributionOutput::telephony_config): <p>The distribution of traffic between the instance and its replicas.</p>
    ///   - [`id(Option<String>)`](crate::output::GetTrafficDistributionOutput::id): <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
    ///   - [`arn(Option<String>)`](crate::output::GetTrafficDistributionOutput::arn): <p>The Amazon Resource Name (ARN) of the traffic distribution group.</p>
    /// - On failure, responds with [`SdkError<GetTrafficDistributionError>`](crate::error::GetTrafficDistributionError)
    pub fn get_traffic_distribution(&self) -> fluent_builders::GetTrafficDistribution {
        fluent_builders::GetTrafficDistribution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListAgentStatuses`](crate::client::fluent_builders::ListAgentStatuses) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListAgentStatuses::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListAgentStatuses::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListAgentStatuses::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListAgentStatuses::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListAgentStatuses::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListAgentStatuses::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListAgentStatuses::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`agent_status_types(Vec<AgentStatusType>)`](crate::client::fluent_builders::ListAgentStatuses::agent_status_types) / [`set_agent_status_types(Option<Vec<AgentStatusType>>)`](crate::client::fluent_builders::ListAgentStatuses::set_agent_status_types): <p>Available agent status types.</p>
    /// - On success, responds with [`ListAgentStatusesOutput`](crate::output::ListAgentStatusesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListAgentStatusesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`agent_status_summary_list(Option<Vec<AgentStatusSummary>>)`](crate::output::ListAgentStatusesOutput::agent_status_summary_list): <p>A summary of agent statuses.</p>
    /// - On failure, responds with [`SdkError<ListAgentStatusesError>`](crate::error::ListAgentStatusesError)
    pub fn list_agent_statuses(&self) -> fluent_builders::ListAgentStatuses {
        fluent_builders::ListAgentStatuses::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListApprovedOrigins`](crate::client::fluent_builders::ListApprovedOrigins) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListApprovedOrigins::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListApprovedOrigins::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListApprovedOrigins::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListApprovedOrigins::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListApprovedOrigins::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListApprovedOrigins::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListApprovedOrigins::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListApprovedOriginsOutput`](crate::output::ListApprovedOriginsOutput) with field(s):
    ///   - [`origins(Option<Vec<String>>)`](crate::output::ListApprovedOriginsOutput::origins): <p>The approved origins.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListApprovedOriginsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListApprovedOriginsError>`](crate::error::ListApprovedOriginsError)
    pub fn list_approved_origins(&self) -> fluent_builders::ListApprovedOrigins {
        fluent_builders::ListApprovedOrigins::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListBots`](crate::client::fluent_builders::ListBots) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListBots::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListBots::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListBots::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListBots::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListBots::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListBots::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListBots::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`lex_version(LexVersion)`](crate::client::fluent_builders::ListBots::lex_version) / [`set_lex_version(Option<LexVersion>)`](crate::client::fluent_builders::ListBots::set_lex_version): <p>The version of Amazon Lex or Amazon Lex V2.</p>
    /// - On success, responds with [`ListBotsOutput`](crate::output::ListBotsOutput) with field(s):
    ///   - [`lex_bots(Option<Vec<LexBotConfig>>)`](crate::output::ListBotsOutput::lex_bots): <p>The names and Amazon Web Services Regions of the Amazon Lex or Amazon Lex V2 bots associated with the specified instance.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListBotsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListBotsError>`](crate::error::ListBotsError)
    pub fn list_bots(&self) -> fluent_builders::ListBots {
        fluent_builders::ListBots::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListContactFlowModules`](crate::client::fluent_builders::ListContactFlowModules) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListContactFlowModules::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListContactFlowModules::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListContactFlowModules::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListContactFlowModules::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListContactFlowModules::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListContactFlowModules::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListContactFlowModules::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`contact_flow_module_state(ContactFlowModuleState)`](crate::client::fluent_builders::ListContactFlowModules::contact_flow_module_state) / [`set_contact_flow_module_state(Option<ContactFlowModuleState>)`](crate::client::fluent_builders::ListContactFlowModules::set_contact_flow_module_state): <p>The state of the flow module.</p>
    /// - On success, responds with [`ListContactFlowModulesOutput`](crate::output::ListContactFlowModulesOutput) with field(s):
    ///   - [`contact_flow_modules_summary_list(Option<Vec<ContactFlowModuleSummary>>)`](crate::output::ListContactFlowModulesOutput::contact_flow_modules_summary_list): <p>Information about the flow module.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListContactFlowModulesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListContactFlowModulesError>`](crate::error::ListContactFlowModulesError)
    pub fn list_contact_flow_modules(&self) -> fluent_builders::ListContactFlowModules {
        fluent_builders::ListContactFlowModules::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListContactFlows`](crate::client::fluent_builders::ListContactFlows) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListContactFlows::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListContactFlows::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListContactFlows::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_types(Vec<ContactFlowType>)`](crate::client::fluent_builders::ListContactFlows::contact_flow_types) / [`set_contact_flow_types(Option<Vec<ContactFlowType>>)`](crate::client::fluent_builders::ListContactFlows::set_contact_flow_types): <p>The type of flow.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListContactFlows::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListContactFlows::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListContactFlows::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListContactFlows::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListContactFlowsOutput`](crate::output::ListContactFlowsOutput) with field(s):
    ///   - [`contact_flow_summary_list(Option<Vec<ContactFlowSummary>>)`](crate::output::ListContactFlowsOutput::contact_flow_summary_list): <p>Information about the flows.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListContactFlowsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListContactFlowsError>`](crate::error::ListContactFlowsError)
    pub fn list_contact_flows(&self) -> fluent_builders::ListContactFlows {
        fluent_builders::ListContactFlows::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListContactReferences`](crate::client::fluent_builders::ListContactReferences) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListContactReferences::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListContactReferences::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListContactReferences::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::ListContactReferences::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::ListContactReferences::set_contact_id): <p>The identifier of the initial contact.</p>
    ///   - [`reference_types(Vec<ReferenceType>)`](crate::client::fluent_builders::ListContactReferences::reference_types) / [`set_reference_types(Option<Vec<ReferenceType>>)`](crate::client::fluent_builders::ListContactReferences::set_reference_types): <p>The type of reference.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListContactReferences::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListContactReferences::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p> <important>   <p>This is not expected to be set, because the value returned in the previous response is always null.</p>  </important>
    /// - On success, responds with [`ListContactReferencesOutput`](crate::output::ListContactReferencesOutput) with field(s):
    ///   - [`reference_summary_list(Option<Vec<ReferenceSummary>>)`](crate::output::ListContactReferencesOutput::reference_summary_list): <p>Information about the flows.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListContactReferencesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p> <important>   <p>This is always returned as null in the response.</p>  </important>
    /// - On failure, responds with [`SdkError<ListContactReferencesError>`](crate::error::ListContactReferencesError)
    pub fn list_contact_references(&self) -> fluent_builders::ListContactReferences {
        fluent_builders::ListContactReferences::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDefaultVocabularies`](crate::client::fluent_builders::ListDefaultVocabularies) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDefaultVocabularies::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListDefaultVocabularies::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListDefaultVocabularies::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`language_code(VocabularyLanguageCode)`](crate::client::fluent_builders::ListDefaultVocabularies::language_code) / [`set_language_code(Option<VocabularyLanguageCode>)`](crate::client::fluent_builders::ListDefaultVocabularies::set_language_code): <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDefaultVocabularies::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListDefaultVocabularies::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDefaultVocabularies::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDefaultVocabularies::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    /// - On success, responds with [`ListDefaultVocabulariesOutput`](crate::output::ListDefaultVocabulariesOutput) with field(s):
    ///   - [`default_vocabulary_list(Option<Vec<DefaultVocabulary>>)`](crate::output::ListDefaultVocabulariesOutput::default_vocabulary_list): <p>A list of default vocabularies.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDefaultVocabulariesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListDefaultVocabulariesError>`](crate::error::ListDefaultVocabulariesError)
    pub fn list_default_vocabularies(&self) -> fluent_builders::ListDefaultVocabularies {
        fluent_builders::ListDefaultVocabularies::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListHoursOfOperations`](crate::client::fluent_builders::ListHoursOfOperations) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListHoursOfOperations::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListHoursOfOperations::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListHoursOfOperations::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListHoursOfOperations::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListHoursOfOperations::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListHoursOfOperations::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListHoursOfOperations::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListHoursOfOperationsOutput`](crate::output::ListHoursOfOperationsOutput) with field(s):
    ///   - [`hours_of_operation_summary_list(Option<Vec<HoursOfOperationSummary>>)`](crate::output::ListHoursOfOperationsOutput::hours_of_operation_summary_list): <p>Information about the hours of operation.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListHoursOfOperationsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListHoursOfOperationsError>`](crate::error::ListHoursOfOperationsError)
    pub fn list_hours_of_operations(&self) -> fluent_builders::ListHoursOfOperations {
        fluent_builders::ListHoursOfOperations::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListInstanceAttributes`](crate::client::fluent_builders::ListInstanceAttributes) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListInstanceAttributes::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListInstanceAttributes::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListInstanceAttributes::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListInstanceAttributes::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListInstanceAttributes::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListInstanceAttributes::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListInstanceAttributes::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListInstanceAttributesOutput`](crate::output::ListInstanceAttributesOutput) with field(s):
    ///   - [`attributes(Option<Vec<Attribute>>)`](crate::output::ListInstanceAttributesOutput::attributes): <p>The attribute types.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListInstanceAttributesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListInstanceAttributesError>`](crate::error::ListInstanceAttributesError)
    pub fn list_instance_attributes(&self) -> fluent_builders::ListInstanceAttributes {
        fluent_builders::ListInstanceAttributes::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListInstances`](crate::client::fluent_builders::ListInstances) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListInstances::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListInstances::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListInstances::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListInstances::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListInstances::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListInstancesOutput`](crate::output::ListInstancesOutput) with field(s):
    ///   - [`instance_summary_list(Option<Vec<InstanceSummary>>)`](crate::output::ListInstancesOutput::instance_summary_list): <p>Information about the instances.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListInstancesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListInstancesError>`](crate::error::ListInstancesError)
    pub fn list_instances(&self) -> fluent_builders::ListInstances {
        fluent_builders::ListInstances::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListInstanceStorageConfigs`](crate::client::fluent_builders::ListInstanceStorageConfigs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListInstanceStorageConfigs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListInstanceStorageConfigs::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListInstanceStorageConfigs::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`resource_type(InstanceStorageResourceType)`](crate::client::fluent_builders::ListInstanceStorageConfigs::resource_type) / [`set_resource_type(Option<InstanceStorageResourceType>)`](crate::client::fluent_builders::ListInstanceStorageConfigs::set_resource_type): <p>A valid resource type.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListInstanceStorageConfigs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListInstanceStorageConfigs::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListInstanceStorageConfigs::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListInstanceStorageConfigs::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListInstanceStorageConfigsOutput`](crate::output::ListInstanceStorageConfigsOutput) with field(s):
    ///   - [`storage_configs(Option<Vec<InstanceStorageConfig>>)`](crate::output::ListInstanceStorageConfigsOutput::storage_configs): <p>A valid storage type.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListInstanceStorageConfigsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListInstanceStorageConfigsError>`](crate::error::ListInstanceStorageConfigsError)
    pub fn list_instance_storage_configs(&self) -> fluent_builders::ListInstanceStorageConfigs {
        fluent_builders::ListInstanceStorageConfigs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListIntegrationAssociations`](crate::client::fluent_builders::ListIntegrationAssociations) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListIntegrationAssociations::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListIntegrationAssociations::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListIntegrationAssociations::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`integration_type(IntegrationType)`](crate::client::fluent_builders::ListIntegrationAssociations::integration_type) / [`set_integration_type(Option<IntegrationType>)`](crate::client::fluent_builders::ListIntegrationAssociations::set_integration_type): <p>The integration type.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListIntegrationAssociations::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListIntegrationAssociations::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListIntegrationAssociations::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListIntegrationAssociations::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListIntegrationAssociationsOutput`](crate::output::ListIntegrationAssociationsOutput) with field(s):
    ///   - [`integration_association_summary_list(Option<Vec<IntegrationAssociationSummary>>)`](crate::output::ListIntegrationAssociationsOutput::integration_association_summary_list): <p>The associations.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListIntegrationAssociationsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListIntegrationAssociationsError>`](crate::error::ListIntegrationAssociationsError)
    pub fn list_integration_associations(&self) -> fluent_builders::ListIntegrationAssociations {
        fluent_builders::ListIntegrationAssociations::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListLambdaFunctions`](crate::client::fluent_builders::ListLambdaFunctions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListLambdaFunctions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListLambdaFunctions::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListLambdaFunctions::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListLambdaFunctions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListLambdaFunctions::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListLambdaFunctions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListLambdaFunctions::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListLambdaFunctionsOutput`](crate::output::ListLambdaFunctionsOutput) with field(s):
    ///   - [`lambda_functions(Option<Vec<String>>)`](crate::output::ListLambdaFunctionsOutput::lambda_functions): <p>The Lambdafunction ARNs associated with the specified instance.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListLambdaFunctionsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListLambdaFunctionsError>`](crate::error::ListLambdaFunctionsError)
    pub fn list_lambda_functions(&self) -> fluent_builders::ListLambdaFunctions {
        fluent_builders::ListLambdaFunctions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListLexBots`](crate::client::fluent_builders::ListLexBots) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListLexBots::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListLexBots::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListLexBots::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListLexBots::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListLexBots::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListLexBots::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListLexBots::set_max_results): <p>The maximum number of results to return per page. If no value is specified, the default is 10. </p>
    /// - On success, responds with [`ListLexBotsOutput`](crate::output::ListLexBotsOutput) with field(s):
    ///   - [`lex_bots(Option<Vec<LexBot>>)`](crate::output::ListLexBotsOutput::lex_bots): <p>The names and Amazon Web Services Regions of the Amazon Lex bots associated with the specified instance.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListLexBotsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListLexBotsError>`](crate::error::ListLexBotsError)
    pub fn list_lex_bots(&self) -> fluent_builders::ListLexBots {
        fluent_builders::ListLexBots::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPhoneNumbers`](crate::client::fluent_builders::ListPhoneNumbers) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPhoneNumbers::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListPhoneNumbers::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListPhoneNumbers::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`phone_number_types(Vec<PhoneNumberType>)`](crate::client::fluent_builders::ListPhoneNumbers::phone_number_types) / [`set_phone_number_types(Option<Vec<PhoneNumberType>>)`](crate::client::fluent_builders::ListPhoneNumbers::set_phone_number_types): <p>The type of phone number.</p>
    ///   - [`phone_number_country_codes(Vec<PhoneNumberCountryCode>)`](crate::client::fluent_builders::ListPhoneNumbers::phone_number_country_codes) / [`set_phone_number_country_codes(Option<Vec<PhoneNumberCountryCode>>)`](crate::client::fluent_builders::ListPhoneNumbers::set_phone_number_country_codes): <p>The ISO country code.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPhoneNumbers::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPhoneNumbers::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPhoneNumbers::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListPhoneNumbers::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListPhoneNumbersOutput`](crate::output::ListPhoneNumbersOutput) with field(s):
    ///   - [`phone_number_summary_list(Option<Vec<PhoneNumberSummary>>)`](crate::output::ListPhoneNumbersOutput::phone_number_summary_list): <p>Information about the phone numbers.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPhoneNumbersOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListPhoneNumbersError>`](crate::error::ListPhoneNumbersError)
    pub fn list_phone_numbers(&self) -> fluent_builders::ListPhoneNumbers {
        fluent_builders::ListPhoneNumbers::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPhoneNumbersV2`](crate::client::fluent_builders::ListPhoneNumbersV2) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPhoneNumbersV2::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`target_arn(impl Into<String>)`](crate::client::fluent_builders::ListPhoneNumbersV2::target_arn) / [`set_target_arn(Option<String>)`](crate::client::fluent_builders::ListPhoneNumbersV2::set_target_arn): <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. If <code>TargetArn</code> input is not provided, this API lists numbers claimed to all the Amazon Connect instances belonging to your account in the same Amazon Web Services Region as the request.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPhoneNumbersV2::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListPhoneNumbersV2::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPhoneNumbersV2::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPhoneNumbersV2::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`phone_number_country_codes(Vec<PhoneNumberCountryCode>)`](crate::client::fluent_builders::ListPhoneNumbersV2::phone_number_country_codes) / [`set_phone_number_country_codes(Option<Vec<PhoneNumberCountryCode>>)`](crate::client::fluent_builders::ListPhoneNumbersV2::set_phone_number_country_codes): <p>The ISO country code.</p>
    ///   - [`phone_number_types(Vec<PhoneNumberType>)`](crate::client::fluent_builders::ListPhoneNumbersV2::phone_number_types) / [`set_phone_number_types(Option<Vec<PhoneNumberType>>)`](crate::client::fluent_builders::ListPhoneNumbersV2::set_phone_number_types): <p>The type of phone number.</p>
    ///   - [`phone_number_prefix(impl Into<String>)`](crate::client::fluent_builders::ListPhoneNumbersV2::phone_number_prefix) / [`set_phone_number_prefix(Option<String>)`](crate::client::fluent_builders::ListPhoneNumbersV2::set_phone_number_prefix): <p>The prefix of the phone number. If provided, it must contain <code>+</code> as part of the country code.</p>
    /// - On success, responds with [`ListPhoneNumbersV2Output`](crate::output::ListPhoneNumbersV2Output) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListPhoneNumbersV2Output::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`list_phone_numbers_summary_list(Option<Vec<ListPhoneNumbersSummary>>)`](crate::output::ListPhoneNumbersV2Output::list_phone_numbers_summary_list): <p>Information about phone numbers that have been claimed to your Amazon Connect instances or traffic distribution groups.</p>
    /// - On failure, responds with [`SdkError<ListPhoneNumbersV2Error>`](crate::error::ListPhoneNumbersV2Error)
    pub fn list_phone_numbers_v2(&self) -> fluent_builders::ListPhoneNumbersV2 {
        fluent_builders::ListPhoneNumbersV2::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListPrompts`](crate::client::fluent_builders::ListPrompts) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListPrompts::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListPrompts::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListPrompts::set_instance_id): <p>The identifier of the Amazon Connect instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListPrompts::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListPrompts::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListPrompts::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListPrompts::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListPromptsOutput`](crate::output::ListPromptsOutput) with field(s):
    ///   - [`prompt_summary_list(Option<Vec<PromptSummary>>)`](crate::output::ListPromptsOutput::prompt_summary_list): <p>Information about the prompts.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListPromptsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListPromptsError>`](crate::error::ListPromptsError)
    pub fn list_prompts(&self) -> fluent_builders::ListPrompts {
        fluent_builders::ListPrompts::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListQueueQuickConnects`](crate::client::fluent_builders::ListQueueQuickConnects) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListQueueQuickConnects::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListQueueQuickConnects::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListQueueQuickConnects::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::ListQueueQuickConnects::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::ListQueueQuickConnects::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListQueueQuickConnects::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListQueueQuickConnects::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListQueueQuickConnects::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListQueueQuickConnects::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListQueueQuickConnectsOutput`](crate::output::ListQueueQuickConnectsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListQueueQuickConnectsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`quick_connect_summary_list(Option<Vec<QuickConnectSummary>>)`](crate::output::ListQueueQuickConnectsOutput::quick_connect_summary_list): <p>Information about the quick connects.</p>
    /// - On failure, responds with [`SdkError<ListQueueQuickConnectsError>`](crate::error::ListQueueQuickConnectsError)
    pub fn list_queue_quick_connects(&self) -> fluent_builders::ListQueueQuickConnects {
        fluent_builders::ListQueueQuickConnects::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListQueues`](crate::client::fluent_builders::ListQueues) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListQueues::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListQueues::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListQueues::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_types(Vec<QueueType>)`](crate::client::fluent_builders::ListQueues::queue_types) / [`set_queue_types(Option<Vec<QueueType>>)`](crate::client::fluent_builders::ListQueues::set_queue_types): <p>The type of queue.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListQueues::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListQueues::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListQueues::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListQueues::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListQueuesOutput`](crate::output::ListQueuesOutput) with field(s):
    ///   - [`queue_summary_list(Option<Vec<QueueSummary>>)`](crate::output::ListQueuesOutput::queue_summary_list): <p>Information about the queues.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListQueuesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListQueuesError>`](crate::error::ListQueuesError)
    pub fn list_queues(&self) -> fluent_builders::ListQueues {
        fluent_builders::ListQueues::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListQuickConnects`](crate::client::fluent_builders::ListQuickConnects) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListQuickConnects::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListQuickConnects::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListQuickConnects::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListQuickConnects::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListQuickConnects::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListQuickConnects::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListQuickConnects::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    ///   - [`quick_connect_types(Vec<QuickConnectType>)`](crate::client::fluent_builders::ListQuickConnects::quick_connect_types) / [`set_quick_connect_types(Option<Vec<QuickConnectType>>)`](crate::client::fluent_builders::ListQuickConnects::set_quick_connect_types): <p>The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).</p>
    /// - On success, responds with [`ListQuickConnectsOutput`](crate::output::ListQuickConnectsOutput) with field(s):
    ///   - [`quick_connect_summary_list(Option<Vec<QuickConnectSummary>>)`](crate::output::ListQuickConnectsOutput::quick_connect_summary_list): <p>Information about the quick connects.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListQuickConnectsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListQuickConnectsError>`](crate::error::ListQuickConnectsError)
    pub fn list_quick_connects(&self) -> fluent_builders::ListQuickConnects {
        fluent_builders::ListQuickConnects::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRoutingProfileQueues`](crate::client::fluent_builders::ListRoutingProfileQueues) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRoutingProfileQueues::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListRoutingProfileQueues::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListRoutingProfileQueues::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::ListRoutingProfileQueues::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::ListRoutingProfileQueues::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRoutingProfileQueues::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRoutingProfileQueues::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRoutingProfileQueues::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRoutingProfileQueues::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListRoutingProfileQueuesOutput`](crate::output::ListRoutingProfileQueuesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListRoutingProfileQueuesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`routing_profile_queue_config_summary_list(Option<Vec<RoutingProfileQueueConfigSummary>>)`](crate::output::ListRoutingProfileQueuesOutput::routing_profile_queue_config_summary_list): <p>Information about the routing profiles.</p>
    /// - On failure, responds with [`SdkError<ListRoutingProfileQueuesError>`](crate::error::ListRoutingProfileQueuesError)
    pub fn list_routing_profile_queues(&self) -> fluent_builders::ListRoutingProfileQueues {
        fluent_builders::ListRoutingProfileQueues::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRoutingProfiles`](crate::client::fluent_builders::ListRoutingProfiles) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRoutingProfiles::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListRoutingProfiles::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListRoutingProfiles::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRoutingProfiles::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRoutingProfiles::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRoutingProfiles::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRoutingProfiles::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListRoutingProfilesOutput`](crate::output::ListRoutingProfilesOutput) with field(s):
    ///   - [`routing_profile_summary_list(Option<Vec<RoutingProfileSummary>>)`](crate::output::ListRoutingProfilesOutput::routing_profile_summary_list): <p>Information about the routing profiles.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRoutingProfilesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListRoutingProfilesError>`](crate::error::ListRoutingProfilesError)
    pub fn list_routing_profiles(&self) -> fluent_builders::ListRoutingProfiles {
        fluent_builders::ListRoutingProfiles::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRules`](crate::client::fluent_builders::ListRules) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRules::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListRules::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListRules::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`publish_status(RulePublishStatus)`](crate::client::fluent_builders::ListRules::publish_status) / [`set_publish_status(Option<RulePublishStatus>)`](crate::client::fluent_builders::ListRules::set_publish_status): <p>The publish status of the rule.</p>
    ///   - [`event_source_name(EventSourceName)`](crate::client::fluent_builders::ListRules::event_source_name) / [`set_event_source_name(Option<EventSourceName>)`](crate::client::fluent_builders::ListRules::set_event_source_name): <p>The name of the event source.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRules::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRules::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRules::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRules::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    /// - On success, responds with [`ListRulesOutput`](crate::output::ListRulesOutput) with field(s):
    ///   - [`rule_summary_list(Option<Vec<RuleSummary>>)`](crate::output::ListRulesOutput::rule_summary_list): <p>Summary information about a rule.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRulesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListRulesError>`](crate::error::ListRulesError)
    pub fn list_rules(&self) -> fluent_builders::ListRules {
        fluent_builders::ListRules::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSecurityKeys`](crate::client::fluent_builders::ListSecurityKeys) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSecurityKeys::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListSecurityKeys::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListSecurityKeys::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSecurityKeys::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSecurityKeys::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSecurityKeys::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListSecurityKeys::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListSecurityKeysOutput`](crate::output::ListSecurityKeysOutput) with field(s):
    ///   - [`security_keys(Option<Vec<SecurityKey>>)`](crate::output::ListSecurityKeysOutput::security_keys): <p>The security keys.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListSecurityKeysOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListSecurityKeysError>`](crate::error::ListSecurityKeysError)
    pub fn list_security_keys(&self) -> fluent_builders::ListSecurityKeys {
        fluent_builders::ListSecurityKeys::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSecurityProfilePermissions`](crate::client::fluent_builders::ListSecurityProfilePermissions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSecurityProfilePermissions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`security_profile_id(impl Into<String>)`](crate::client::fluent_builders::ListSecurityProfilePermissions::security_profile_id) / [`set_security_profile_id(Option<String>)`](crate::client::fluent_builders::ListSecurityProfilePermissions::set_security_profile_id): <p>The identifier for the security profle.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListSecurityProfilePermissions::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListSecurityProfilePermissions::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSecurityProfilePermissions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSecurityProfilePermissions::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSecurityProfilePermissions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListSecurityProfilePermissions::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListSecurityProfilePermissionsOutput`](crate::output::ListSecurityProfilePermissionsOutput) with field(s):
    ///   - [`permissions(Option<Vec<String>>)`](crate::output::ListSecurityProfilePermissionsOutput::permissions): <p>The permissions granted to the security profile. For a complete list of valid permissions, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html">List of security profile permissions</a>.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListSecurityProfilePermissionsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListSecurityProfilePermissionsError>`](crate::error::ListSecurityProfilePermissionsError)
    pub fn list_security_profile_permissions(
        &self,
    ) -> fluent_builders::ListSecurityProfilePermissions {
        fluent_builders::ListSecurityProfilePermissions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSecurityProfiles`](crate::client::fluent_builders::ListSecurityProfiles) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSecurityProfiles::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListSecurityProfiles::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListSecurityProfiles::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSecurityProfiles::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSecurityProfiles::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSecurityProfiles::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListSecurityProfiles::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListSecurityProfilesOutput`](crate::output::ListSecurityProfilesOutput) with field(s):
    ///   - [`security_profile_summary_list(Option<Vec<SecurityProfileSummary>>)`](crate::output::ListSecurityProfilesOutput::security_profile_summary_list): <p>Information about the security profiles.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListSecurityProfilesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListSecurityProfilesError>`](crate::error::ListSecurityProfilesError)
    pub fn list_security_profiles(&self) -> fluent_builders::ListSecurityProfiles {
        fluent_builders::ListSecurityProfiles::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTagsForResource`](crate::client::fluent_builders::ListTagsForResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::ListTagsForResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::ListTagsForResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::ListTagsForResourceOutput::tags): <p>Information about the tags.</p>
    /// - On failure, responds with [`SdkError<ListTagsForResourceError>`](crate::error::ListTagsForResourceError)
    pub fn list_tags_for_resource(&self) -> fluent_builders::ListTagsForResource {
        fluent_builders::ListTagsForResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTaskTemplates`](crate::client::fluent_builders::ListTaskTemplates) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListTaskTemplates::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListTaskTemplates::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListTaskTemplates::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListTaskTemplates::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListTaskTemplates::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p> <important>   <p>It is not expected that you set this because the value returned in the previous response is always null.</p>  </important>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListTaskTemplates::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListTaskTemplates::set_max_results): <p>The maximum number of results to return per page.</p> <important>   <p>It is not expected that you set this.</p>  </important>
    ///   - [`status(TaskTemplateStatus)`](crate::client::fluent_builders::ListTaskTemplates::status) / [`set_status(Option<TaskTemplateStatus>)`](crate::client::fluent_builders::ListTaskTemplates::set_status): <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::ListTaskTemplates::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::ListTaskTemplates::set_name): <p>The name of the task template.</p>
    /// - On success, responds with [`ListTaskTemplatesOutput`](crate::output::ListTaskTemplatesOutput) with field(s):
    ///   - [`task_templates(Option<Vec<TaskTemplateMetadata>>)`](crate::output::ListTaskTemplatesOutput::task_templates): <p>Provides details about a list of task templates belonging to an instance.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListTaskTemplatesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p> <important>   <p>This is always returned as a null in the response.</p>  </important>
    /// - On failure, responds with [`SdkError<ListTaskTemplatesError>`](crate::error::ListTaskTemplatesError)
    pub fn list_task_templates(&self) -> fluent_builders::ListTaskTemplates {
        fluent_builders::ListTaskTemplates::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTrafficDistributionGroups`](crate::client::fluent_builders::ListTrafficDistributionGroups) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListTrafficDistributionGroups::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListTrafficDistributionGroups::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::ListTrafficDistributionGroups::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListTrafficDistributionGroups::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListTrafficDistributionGroups::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListTrafficDistributionGroups::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListTrafficDistributionGroups::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`ListTrafficDistributionGroupsOutput`](crate::output::ListTrafficDistributionGroupsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListTrafficDistributionGroupsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`traffic_distribution_group_summary_list(Option<Vec<TrafficDistributionGroupSummary>>)`](crate::output::ListTrafficDistributionGroupsOutput::traffic_distribution_group_summary_list): <p>A list of traffic distribution groups.</p>
    /// - On failure, responds with [`SdkError<ListTrafficDistributionGroupsError>`](crate::error::ListTrafficDistributionGroupsError)
    pub fn list_traffic_distribution_groups(
        &self,
    ) -> fluent_builders::ListTrafficDistributionGroups {
        fluent_builders::ListTrafficDistributionGroups::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListUseCases`](crate::client::fluent_builders::ListUseCases) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListUseCases::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListUseCases::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListUseCases::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`integration_association_id(impl Into<String>)`](crate::client::fluent_builders::ListUseCases::integration_association_id) / [`set_integration_association_id(Option<String>)`](crate::client::fluent_builders::ListUseCases::set_integration_association_id): <p>The identifier for the integration association.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListUseCases::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListUseCases::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListUseCases::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListUseCases::set_max_results): <p>The maximum number of results to return per page.</p>
    /// - On success, responds with [`ListUseCasesOutput`](crate::output::ListUseCasesOutput) with field(s):
    ///   - [`use_case_summary_list(Option<Vec<UseCase>>)`](crate::output::ListUseCasesOutput::use_case_summary_list): <p>The use cases.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListUseCasesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListUseCasesError>`](crate::error::ListUseCasesError)
    pub fn list_use_cases(&self) -> fluent_builders::ListUseCases {
        fluent_builders::ListUseCases::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListUserHierarchyGroups`](crate::client::fluent_builders::ListUserHierarchyGroups) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListUserHierarchyGroups::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListUserHierarchyGroups::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListUserHierarchyGroups::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListUserHierarchyGroups::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListUserHierarchyGroups::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListUserHierarchyGroups::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListUserHierarchyGroups::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListUserHierarchyGroupsOutput`](crate::output::ListUserHierarchyGroupsOutput) with field(s):
    ///   - [`user_hierarchy_group_summary_list(Option<Vec<HierarchyGroupSummary>>)`](crate::output::ListUserHierarchyGroupsOutput::user_hierarchy_group_summary_list): <p>Information about the hierarchy groups.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListUserHierarchyGroupsOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListUserHierarchyGroupsError>`](crate::error::ListUserHierarchyGroupsError)
    pub fn list_user_hierarchy_groups(&self) -> fluent_builders::ListUserHierarchyGroups {
        fluent_builders::ListUserHierarchyGroups::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListUsers`](crate::client::fluent_builders::ListUsers) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListUsers::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ListUsers::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ListUsers::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListUsers::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListUsers::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListUsers::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListUsers::set_max_results): <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
    /// - On success, responds with [`ListUsersOutput`](crate::output::ListUsersOutput) with field(s):
    ///   - [`user_summary_list(Option<Vec<UserSummary>>)`](crate::output::ListUsersOutput::user_summary_list): <p>Information about the users.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListUsersOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<ListUsersError>`](crate::error::ListUsersError)
    pub fn list_users(&self) -> fluent_builders::ListUsers {
        fluent_builders::ListUsers::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`MonitorContact`](crate::client::fluent_builders::MonitorContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::MonitorContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::MonitorContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::MonitorContact::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::MonitorContact::set_contact_id): <p>The identifier of the contact.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::MonitorContact::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::MonitorContact::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`allowed_monitor_capabilities(Vec<MonitorCapability>)`](crate::client::fluent_builders::MonitorContact::allowed_monitor_capabilities) / [`set_allowed_monitor_capabilities(Option<Vec<MonitorCapability>>)`](crate::client::fluent_builders::MonitorContact::set_allowed_monitor_capabilities): <p>Specify which monitoring actions the user is allowed to take. For example, whether the user is allowed to escalate from silent monitoring to barge.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::MonitorContact::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::MonitorContact::set_client_token): <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>
    /// - On success, responds with [`MonitorContactOutput`](crate::output::MonitorContactOutput) with field(s):
    ///   - [`contact_id(Option<String>)`](crate::output::MonitorContactOutput::contact_id): <p>The identifier of the contact.</p>
    ///   - [`contact_arn(Option<String>)`](crate::output::MonitorContactOutput::contact_arn): <p>The ARN of the contact.</p>
    /// - On failure, responds with [`SdkError<MonitorContactError>`](crate::error::MonitorContactError)
    pub fn monitor_contact(&self) -> fluent_builders::MonitorContact {
        fluent_builders::MonitorContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutUserStatus`](crate::client::fluent_builders::PutUserStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::PutUserStatus::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::PutUserStatus::set_user_id): <p>The identifier of the user.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::PutUserStatus::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::PutUserStatus::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`agent_status_id(impl Into<String>)`](crate::client::fluent_builders::PutUserStatus::agent_status_id) / [`set_agent_status_id(Option<String>)`](crate::client::fluent_builders::PutUserStatus::set_agent_status_id): <p>The identifier of the agent status.</p>
    /// - On success, responds with [`PutUserStatusOutput`](crate::output::PutUserStatusOutput)

    /// - On failure, responds with [`SdkError<PutUserStatusError>`](crate::error::PutUserStatusError)
    pub fn put_user_status(&self) -> fluent_builders::PutUserStatus {
        fluent_builders::PutUserStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ReleasePhoneNumber`](crate::client::fluent_builders::ReleasePhoneNumber) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`phone_number_id(impl Into<String>)`](crate::client::fluent_builders::ReleasePhoneNumber::phone_number_id) / [`set_phone_number_id(Option<String>)`](crate::client::fluent_builders::ReleasePhoneNumber::set_phone_number_id): <p>A unique identifier for the phone number.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::ReleasePhoneNumber::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::ReleasePhoneNumber::set_client_token): <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>
    /// - On success, responds with [`ReleasePhoneNumberOutput`](crate::output::ReleasePhoneNumberOutput)

    /// - On failure, responds with [`SdkError<ReleasePhoneNumberError>`](crate::error::ReleasePhoneNumberError)
    pub fn release_phone_number(&self) -> fluent_builders::ReleasePhoneNumber {
        fluent_builders::ReleasePhoneNumber::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ReplicateInstance`](crate::client::fluent_builders::ReplicateInstance) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ReplicateInstance::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ReplicateInstance::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance. You can provide the <code>InstanceId</code>, or the entire ARN.</p>
    ///   - [`replica_region(impl Into<String>)`](crate::client::fluent_builders::ReplicateInstance::replica_region) / [`set_replica_region(Option<String>)`](crate::client::fluent_builders::ReplicateInstance::set_replica_region): <p>The Amazon Web Services Region where to replicate the Amazon Connect instance.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::ReplicateInstance::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::ReplicateInstance::set_client_token): <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>
    ///   - [`replica_alias(impl Into<String>)`](crate::client::fluent_builders::ReplicateInstance::replica_alias) / [`set_replica_alias(Option<String>)`](crate::client::fluent_builders::ReplicateInstance::set_replica_alias): <p>The alias for the replicated instance. The <code>ReplicaAlias</code> must be unique.</p>
    /// - On success, responds with [`ReplicateInstanceOutput`](crate::output::ReplicateInstanceOutput) with field(s):
    ///   - [`id(Option<String>)`](crate::output::ReplicateInstanceOutput::id): <p>The identifier of the replicated instance. You can find the <code>instanceId</code> in the ARN of the instance. The replicated instance has the same identifier as the instance it was replicated from.</p>
    ///   - [`arn(Option<String>)`](crate::output::ReplicateInstanceOutput::arn): <p>The Amazon Resource Name (ARN) of the replicated instance.</p>
    /// - On failure, responds with [`SdkError<ReplicateInstanceError>`](crate::error::ReplicateInstanceError)
    pub fn replicate_instance(&self) -> fluent_builders::ReplicateInstance {
        fluent_builders::ReplicateInstance::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ResumeContactRecording`](crate::client::fluent_builders::ResumeContactRecording) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::ResumeContactRecording::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::ResumeContactRecording::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::ResumeContactRecording::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::ResumeContactRecording::set_contact_id): <p>The identifier of the contact.</p>
    ///   - [`initial_contact_id(impl Into<String>)`](crate::client::fluent_builders::ResumeContactRecording::initial_contact_id) / [`set_initial_contact_id(Option<String>)`](crate::client::fluent_builders::ResumeContactRecording::set_initial_contact_id): <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
    /// - On success, responds with [`ResumeContactRecordingOutput`](crate::output::ResumeContactRecordingOutput)

    /// - On failure, responds with [`SdkError<ResumeContactRecordingError>`](crate::error::ResumeContactRecordingError)
    pub fn resume_contact_recording(&self) -> fluent_builders::ResumeContactRecording {
        fluent_builders::ResumeContactRecording::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`SearchAvailablePhoneNumbers`](crate::client::fluent_builders::SearchAvailablePhoneNumbers) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`target_arn(impl Into<String>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::target_arn) / [`set_target_arn(Option<String>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::set_target_arn): <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
    ///   - [`phone_number_country_code(PhoneNumberCountryCode)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::phone_number_country_code) / [`set_phone_number_country_code(Option<PhoneNumberCountryCode>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::set_phone_number_country_code): <p>The ISO country code.</p>
    ///   - [`phone_number_type(PhoneNumberType)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::phone_number_type) / [`set_phone_number_type(Option<PhoneNumberType>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::set_phone_number_type): <p>The type of phone number.</p>
    ///   - [`phone_number_prefix(impl Into<String>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::phone_number_prefix) / [`set_phone_number_prefix(Option<String>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::set_phone_number_prefix): <p>The prefix of the phone number. If provided, it must contain <code>+</code> as part of the country code.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::SearchAvailablePhoneNumbers::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    /// - On success, responds with [`SearchAvailablePhoneNumbersOutput`](crate::output::SearchAvailablePhoneNumbersOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::SearchAvailablePhoneNumbersOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`available_numbers_list(Option<Vec<AvailableNumberSummary>>)`](crate::output::SearchAvailablePhoneNumbersOutput::available_numbers_list): <p>A list of available phone numbers that you can claim to your Amazon Connect instance or traffic distribution group.</p>
    /// - On failure, responds with [`SdkError<SearchAvailablePhoneNumbersError>`](crate::error::SearchAvailablePhoneNumbersError)
    pub fn search_available_phone_numbers(&self) -> fluent_builders::SearchAvailablePhoneNumbers {
        fluent_builders::SearchAvailablePhoneNumbers::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`SearchQueues`](crate::client::fluent_builders::SearchQueues) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::SearchQueues::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::SearchQueues::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::SearchQueues::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::SearchQueues::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::SearchQueues::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::SearchQueues::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::SearchQueues::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`search_filter(QueueSearchFilter)`](crate::client::fluent_builders::SearchQueues::search_filter) / [`set_search_filter(Option<QueueSearchFilter>)`](crate::client::fluent_builders::SearchQueues::set_search_filter): <p>Filters to be applied to search results.</p>
    ///   - [`search_criteria(QueueSearchCriteria)`](crate::client::fluent_builders::SearchQueues::search_criteria) / [`set_search_criteria(Option<QueueSearchCriteria>)`](crate::client::fluent_builders::SearchQueues::set_search_criteria): <p>The search criteria to be used to return queues.</p> <note>   <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>  </note>
    /// - On success, responds with [`SearchQueuesOutput`](crate::output::SearchQueuesOutput) with field(s):
    ///   - [`queues(Option<Vec<Queue>>)`](crate::output::SearchQueuesOutput::queues): <p>Information about the queues.</p>
    ///   - [`next_token(Option<String>)`](crate::output::SearchQueuesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`approximate_total_count(Option<i64>)`](crate::output::SearchQueuesOutput::approximate_total_count): <p>The total number of queues which matched your search query.</p>
    /// - On failure, responds with [`SdkError<SearchQueuesError>`](crate::error::SearchQueuesError)
    pub fn search_queues(&self) -> fluent_builders::SearchQueues {
        fluent_builders::SearchQueues::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`SearchRoutingProfiles`](crate::client::fluent_builders::SearchRoutingProfiles) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::SearchRoutingProfiles::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::SearchRoutingProfiles::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::SearchRoutingProfiles::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::SearchRoutingProfiles::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::SearchRoutingProfiles::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::SearchRoutingProfiles::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::SearchRoutingProfiles::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`search_filter(RoutingProfileSearchFilter)`](crate::client::fluent_builders::SearchRoutingProfiles::search_filter) / [`set_search_filter(Option<RoutingProfileSearchFilter>)`](crate::client::fluent_builders::SearchRoutingProfiles::set_search_filter): <p>Filters to be applied to search results.</p>
    ///   - [`search_criteria(RoutingProfileSearchCriteria)`](crate::client::fluent_builders::SearchRoutingProfiles::search_criteria) / [`set_search_criteria(Option<RoutingProfileSearchCriteria>)`](crate::client::fluent_builders::SearchRoutingProfiles::set_search_criteria): <p>The search criteria to be used to return routing profiles.</p> <note>   <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>  </note>
    /// - On success, responds with [`SearchRoutingProfilesOutput`](crate::output::SearchRoutingProfilesOutput) with field(s):
    ///   - [`routing_profiles(Option<Vec<RoutingProfile>>)`](crate::output::SearchRoutingProfilesOutput::routing_profiles): <p>Information about the routing profiles.</p>
    ///   - [`next_token(Option<String>)`](crate::output::SearchRoutingProfilesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`approximate_total_count(Option<i64>)`](crate::output::SearchRoutingProfilesOutput::approximate_total_count): <p>The total number of routing profiles which matched your search query.</p>
    /// - On failure, responds with [`SdkError<SearchRoutingProfilesError>`](crate::error::SearchRoutingProfilesError)
    pub fn search_routing_profiles(&self) -> fluent_builders::SearchRoutingProfiles {
        fluent_builders::SearchRoutingProfiles::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`SearchSecurityProfiles`](crate::client::fluent_builders::SearchSecurityProfiles) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::SearchSecurityProfiles::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::SearchSecurityProfiles::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::SearchSecurityProfiles::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::SearchSecurityProfiles::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::SearchSecurityProfiles::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::SearchSecurityProfiles::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::SearchSecurityProfiles::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`search_criteria(SecurityProfileSearchCriteria)`](crate::client::fluent_builders::SearchSecurityProfiles::search_criteria) / [`set_search_criteria(Option<SecurityProfileSearchCriteria>)`](crate::client::fluent_builders::SearchSecurityProfiles::set_search_criteria): <p>The search criteria to be used to return security profiles. </p> <note>   <p>The <code>name</code> field support "contains" queries with a minimum of 2 characters and maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results.</p>  </note> <note>   <p>The currently supported value for <code>FieldName</code>: <code>name</code> </p>  </note>
    ///   - [`search_filter(SecurityProfilesSearchFilter)`](crate::client::fluent_builders::SearchSecurityProfiles::search_filter) / [`set_search_filter(Option<SecurityProfilesSearchFilter>)`](crate::client::fluent_builders::SearchSecurityProfiles::set_search_filter): <p>Filters to be applied to search results.</p>
    /// - On success, responds with [`SearchSecurityProfilesOutput`](crate::output::SearchSecurityProfilesOutput) with field(s):
    ///   - [`security_profiles(Option<Vec<SecurityProfileSearchSummary>>)`](crate::output::SearchSecurityProfilesOutput::security_profiles): <p>Information about the security profiles.</p>
    ///   - [`next_token(Option<String>)`](crate::output::SearchSecurityProfilesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`approximate_total_count(Option<i64>)`](crate::output::SearchSecurityProfilesOutput::approximate_total_count): <p>The total number of security profiles which matched your search query.</p>
    /// - On failure, responds with [`SdkError<SearchSecurityProfilesError>`](crate::error::SearchSecurityProfilesError)
    pub fn search_security_profiles(&self) -> fluent_builders::SearchSecurityProfiles {
        fluent_builders::SearchSecurityProfiles::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`SearchUsers`](crate::client::fluent_builders::SearchUsers) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::SearchUsers::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::SearchUsers::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::SearchUsers::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::SearchUsers::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::SearchUsers::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::SearchUsers::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::SearchUsers::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`search_filter(UserSearchFilter)`](crate::client::fluent_builders::SearchUsers::search_filter) / [`set_search_filter(Option<UserSearchFilter>)`](crate::client::fluent_builders::SearchUsers::set_search_filter): <p>Filters to be applied to search results.</p>
    ///   - [`search_criteria(UserSearchCriteria)`](crate::client::fluent_builders::SearchUsers::search_criteria) / [`set_search_criteria(Option<UserSearchCriteria>)`](crate::client::fluent_builders::SearchUsers::set_search_criteria): <p>The search criteria to be used to return users.</p> <note>   <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>  </note>
    /// - On success, responds with [`SearchUsersOutput`](crate::output::SearchUsersOutput) with field(s):
    ///   - [`users(Option<Vec<UserSearchSummary>>)`](crate::output::SearchUsersOutput::users): <p>Information about the users.</p>
    ///   - [`next_token(Option<String>)`](crate::output::SearchUsersOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    ///   - [`approximate_total_count(Option<i64>)`](crate::output::SearchUsersOutput::approximate_total_count): <p>The total number of users who matched your search query.</p>
    /// - On failure, responds with [`SdkError<SearchUsersError>`](crate::error::SearchUsersError)
    pub fn search_users(&self) -> fluent_builders::SearchUsers {
        fluent_builders::SearchUsers::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`SearchVocabularies`](crate::client::fluent_builders::SearchVocabularies) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::SearchVocabularies::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::SearchVocabularies::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::SearchVocabularies::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::SearchVocabularies::max_results) / [`set_max_results(i32)`](crate::client::fluent_builders::SearchVocabularies::set_max_results): <p>The maximum number of results to return per page.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::SearchVocabularies::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::SearchVocabularies::set_next_token): <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
    ///   - [`state(VocabularyState)`](crate::client::fluent_builders::SearchVocabularies::state) / [`set_state(Option<VocabularyState>)`](crate::client::fluent_builders::SearchVocabularies::set_state): <p>The current state of the custom vocabulary.</p>
    ///   - [`name_starts_with(impl Into<String>)`](crate::client::fluent_builders::SearchVocabularies::name_starts_with) / [`set_name_starts_with(Option<String>)`](crate::client::fluent_builders::SearchVocabularies::set_name_starts_with): <p>The starting pattern of the name of the vocabulary.</p>
    ///   - [`language_code(VocabularyLanguageCode)`](crate::client::fluent_builders::SearchVocabularies::language_code) / [`set_language_code(Option<VocabularyLanguageCode>)`](crate::client::fluent_builders::SearchVocabularies::set_language_code): <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
    /// - On success, responds with [`SearchVocabulariesOutput`](crate::output::SearchVocabulariesOutput) with field(s):
    ///   - [`vocabulary_summary_list(Option<Vec<VocabularySummary>>)`](crate::output::SearchVocabulariesOutput::vocabulary_summary_list): <p>The list of the available custom vocabularies.</p>
    ///   - [`next_token(Option<String>)`](crate::output::SearchVocabulariesOutput::next_token): <p>If there are additional results, this is the token for the next set of results.</p>
    /// - On failure, responds with [`SdkError<SearchVocabulariesError>`](crate::error::SearchVocabulariesError)
    pub fn search_vocabularies(&self) -> fluent_builders::SearchVocabularies {
        fluent_builders::SearchVocabularies::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartChatContact`](crate::client::fluent_builders::StartChatContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StartChatContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StartChatContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::StartChatContact::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::StartChatContact::set_contact_flow_id): <p>The identifier of the flow for initiating the chat. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>  <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
    ///   - [`attributes(HashMap<String, String>)`](crate::client::fluent_builders::StartChatContact::attributes) / [`set_attributes(Option<HashMap<String, String>>)`](crate::client::fluent_builders::StartChatContact::set_attributes): <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes. They can be accessed in flows just like any other contact attributes. </p>  <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
    ///   - [`participant_details(ParticipantDetails)`](crate::client::fluent_builders::StartChatContact::participant_details) / [`set_participant_details(Option<ParticipantDetails>)`](crate::client::fluent_builders::StartChatContact::set_participant_details): <p>Information identifying the participant.</p>
    ///   - [`initial_message(ChatMessage)`](crate::client::fluent_builders::StartChatContact::initial_message) / [`set_initial_message(Option<ChatMessage>)`](crate::client::fluent_builders::StartChatContact::set_initial_message): <p>The initial message to be sent to the newly created chat.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::StartChatContact::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::StartChatContact::set_client_token): <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>
    ///   - [`chat_duration_in_minutes(i32)`](crate::client::fluent_builders::StartChatContact::chat_duration_in_minutes) / [`set_chat_duration_in_minutes(Option<i32>)`](crate::client::fluent_builders::StartChatContact::set_chat_duration_in_minutes): <p>The total duration of the newly started chat session. If not specified, the chat session duration defaults to 25 hour. The minumum configurable time is 60 minutes. The maximum configurable time is 10,080 minutes (7 days).</p>
    ///   - [`supported_messaging_content_types(Vec<String>)`](crate::client::fluent_builders::StartChatContact::supported_messaging_content_types) / [`set_supported_messaging_content_types(Option<Vec<String>>)`](crate::client::fluent_builders::StartChatContact::set_supported_messaging_content_types): <p>The supported chat message content types. Content types must always contain <code>text/plain</code>. You can then put any other supported type in the list. For example, all the following lists are valid because they contain <code>text/plain</code>: <code>[text/plain, text/markdown, application/json]</code>, <code>[text/markdown, text/plain]</code>, <code>[text/plain, application/json]</code>.</p>
    ///   - [`persistent_chat(PersistentChat)`](crate::client::fluent_builders::StartChatContact::persistent_chat) / [`set_persistent_chat(Option<PersistentChat>)`](crate::client::fluent_builders::StartChatContact::set_persistent_chat): <p>Enable persistent chats. For more information about enabling persistent chat, and for example use cases and how to configure for them, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html">Enable persistent chat</a>.</p>
    /// - On success, responds with [`StartChatContactOutput`](crate::output::StartChatContactOutput) with field(s):
    ///   - [`contact_id(Option<String>)`](crate::output::StartChatContactOutput::contact_id): <p>The identifier of this contact within the Amazon Connect instance. </p>
    ///   - [`participant_id(Option<String>)`](crate::output::StartChatContactOutput::participant_id): <p>The identifier for a chat participant. The participantId for a chat participant is the same throughout the chat lifecycle.</p>
    ///   - [`participant_token(Option<String>)`](crate::output::StartChatContactOutput::participant_token): <p>The token used by the chat participant to call <a href="https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html">CreateParticipantConnection</a>. The participant token is valid for the lifetime of a chat participant.</p>
    ///   - [`continued_from_contact_id(Option<String>)`](crate::output::StartChatContactOutput::continued_from_contact_id): <p>The contactId from which a persistent chat session is started. This field is populated only for persistent chats.</p>
    /// - On failure, responds with [`SdkError<StartChatContactError>`](crate::error::StartChatContactError)
    pub fn start_chat_contact(&self) -> fluent_builders::StartChatContact {
        fluent_builders::StartChatContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartContactRecording`](crate::client::fluent_builders::StartContactRecording) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StartContactRecording::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StartContactRecording::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::StartContactRecording::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::StartContactRecording::set_contact_id): <p>The identifier of the contact.</p>
    ///   - [`initial_contact_id(impl Into<String>)`](crate::client::fluent_builders::StartContactRecording::initial_contact_id) / [`set_initial_contact_id(Option<String>)`](crate::client::fluent_builders::StartContactRecording::set_initial_contact_id): <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
    ///   - [`voice_recording_configuration(VoiceRecordingConfiguration)`](crate::client::fluent_builders::StartContactRecording::voice_recording_configuration) / [`set_voice_recording_configuration(Option<VoiceRecordingConfiguration>)`](crate::client::fluent_builders::StartContactRecording::set_voice_recording_configuration): <p>The person being recorded.</p>
    /// - On success, responds with [`StartContactRecordingOutput`](crate::output::StartContactRecordingOutput)

    /// - On failure, responds with [`SdkError<StartContactRecordingError>`](crate::error::StartContactRecordingError)
    pub fn start_contact_recording(&self) -> fluent_builders::StartContactRecording {
        fluent_builders::StartContactRecording::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartContactStreaming`](crate::client::fluent_builders::StartContactStreaming) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StartContactStreaming::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StartContactStreaming::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::StartContactStreaming::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::StartContactStreaming::set_contact_id): <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
    ///   - [`chat_streaming_configuration(ChatStreamingConfiguration)`](crate::client::fluent_builders::StartContactStreaming::chat_streaming_configuration) / [`set_chat_streaming_configuration(Option<ChatStreamingConfiguration>)`](crate::client::fluent_builders::StartContactStreaming::set_chat_streaming_configuration): <p>The streaming configuration, such as the Amazon SNS streaming endpoint.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::StartContactStreaming::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::StartContactStreaming::set_client_token): <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>
    /// - On success, responds with [`StartContactStreamingOutput`](crate::output::StartContactStreamingOutput) with field(s):
    ///   - [`streaming_id(Option<String>)`](crate::output::StartContactStreamingOutput::streaming_id): <p>The identifier of the streaming configuration enabled. </p>
    /// - On failure, responds with [`SdkError<StartContactStreamingError>`](crate::error::StartContactStreamingError)
    pub fn start_contact_streaming(&self) -> fluent_builders::StartContactStreaming {
        fluent_builders::StartContactStreaming::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartOutboundVoiceContact`](crate::client::fluent_builders::StartOutboundVoiceContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`destination_phone_number(impl Into<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::destination_phone_number) / [`set_destination_phone_number(Option<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_destination_phone_number): <p>The phone number of the customer, in E.164 format.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_contact_flow_id): <p>The identifier of the flow for the outbound call. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>  <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_client_token): <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>. The token is valid for 7 days after creation. If a contact is already started, the contact ID is returned. </p>
    ///   - [`source_phone_number(impl Into<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::source_phone_number) / [`set_source_phone_number(Option<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_source_phone_number): <p>The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_queue_id): <p>The queue for the call. If you specify a queue, the phone displayed for caller ID is the phone number specified in the queue. If you do not specify a queue, the queue defined in the flow is used. If you do not specify a queue, you must specify a source phone number.</p>
    ///   - [`attributes(HashMap<String, String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::attributes) / [`set_attributes(Option<HashMap<String, String>>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_attributes): <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes, and can be accessed in flows just like any other contact attributes.</p>  <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
    ///   - [`answer_machine_detection_config(AnswerMachineDetectionConfig)`](crate::client::fluent_builders::StartOutboundVoiceContact::answer_machine_detection_config) / [`set_answer_machine_detection_config(Option<AnswerMachineDetectionConfig>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_answer_machine_detection_config): <p>Configuration of the answering machine detection for this outbound call. </p>
    ///   - [`campaign_id(impl Into<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::campaign_id) / [`set_campaign_id(Option<String>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_campaign_id): <p>The campaign identifier of the outbound communication.</p>
    ///   - [`traffic_type(TrafficType)`](crate::client::fluent_builders::StartOutboundVoiceContact::traffic_type) / [`set_traffic_type(Option<TrafficType>)`](crate::client::fluent_builders::StartOutboundVoiceContact::set_traffic_type): <p>Denotes the class of traffic. Calls with different traffic types are handled differently by Amazon Connect. The default value is <code>GENERAL</code>. Use <code>CAMPAIGN</code> if <code>EnableAnswerMachineDetection</code> is set to <code>true</code>. For all other cases, use <code>GENERAL</code>. </p>
    /// - On success, responds with [`StartOutboundVoiceContactOutput`](crate::output::StartOutboundVoiceContactOutput) with field(s):
    ///   - [`contact_id(Option<String>)`](crate::output::StartOutboundVoiceContactOutput::contact_id): <p>The identifier of this contact within the Amazon Connect instance.</p>
    /// - On failure, responds with [`SdkError<StartOutboundVoiceContactError>`](crate::error::StartOutboundVoiceContactError)
    pub fn start_outbound_voice_contact(&self) -> fluent_builders::StartOutboundVoiceContact {
        fluent_builders::StartOutboundVoiceContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartTaskContact`](crate::client::fluent_builders::StartTaskContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`previous_contact_id(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::previous_contact_id) / [`set_previous_contact_id(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_previous_contact_id): <p>The identifier of the previous chat, voice, or task contact. </p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_contact_flow_id): <p>The identifier of the flow for initiating the tasks. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>  <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
    ///   - [`attributes(HashMap<String, String>)`](crate::client::fluent_builders::StartTaskContact::attributes) / [`set_attributes(Option<HashMap<String, String>>)`](crate::client::fluent_builders::StartTaskContact::set_attributes): <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes, and can be accessed in flows just like any other contact attributes.</p>  <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_name): <p>The name of a task that is shown to an agent in the Contact Control Panel (CCP).</p>
    ///   - [`references(HashMap<String, Reference>)`](crate::client::fluent_builders::StartTaskContact::references) / [`set_references(Option<HashMap<String, Reference>>)`](crate::client::fluent_builders::StartTaskContact::set_references): <p>A formatted URL that is shown to an agent in the Contact Control Panel (CCP).</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_description): <p>A description of the task that is shown to an agent in the Contact Control Panel (CCP).</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_client_token): <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>
    ///   - [`scheduled_time(DateTime)`](crate::client::fluent_builders::StartTaskContact::scheduled_time) / [`set_scheduled_time(Option<DateTime>)`](crate::client::fluent_builders::StartTaskContact::set_scheduled_time): <p>The timestamp, in Unix Epoch seconds format, at which to start running the inbound flow. The scheduled time cannot be in the past. It must be within up to 6 days in future. </p>
    ///   - [`task_template_id(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::task_template_id) / [`set_task_template_id(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_task_template_id): <p>A unique identifier for the task template.</p>
    ///   - [`quick_connect_id(impl Into<String>)`](crate::client::fluent_builders::StartTaskContact::quick_connect_id) / [`set_quick_connect_id(Option<String>)`](crate::client::fluent_builders::StartTaskContact::set_quick_connect_id): <p>The identifier for the quick connect.</p>
    /// - On success, responds with [`StartTaskContactOutput`](crate::output::StartTaskContactOutput) with field(s):
    ///   - [`contact_id(Option<String>)`](crate::output::StartTaskContactOutput::contact_id): <p>The identifier of this contact within the Amazon Connect instance.</p>
    /// - On failure, responds with [`SdkError<StartTaskContactError>`](crate::error::StartTaskContactError)
    pub fn start_task_contact(&self) -> fluent_builders::StartTaskContact {
        fluent_builders::StartTaskContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StopContact`](crate::client::fluent_builders::StopContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::StopContact::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::StopContact::set_contact_id): <p>The ID of the contact.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StopContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StopContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`StopContactOutput`](crate::output::StopContactOutput)

    /// - On failure, responds with [`SdkError<StopContactError>`](crate::error::StopContactError)
    pub fn stop_contact(&self) -> fluent_builders::StopContact {
        fluent_builders::StopContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StopContactRecording`](crate::client::fluent_builders::StopContactRecording) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StopContactRecording::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StopContactRecording::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::StopContactRecording::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::StopContactRecording::set_contact_id): <p>The identifier of the contact.</p>
    ///   - [`initial_contact_id(impl Into<String>)`](crate::client::fluent_builders::StopContactRecording::initial_contact_id) / [`set_initial_contact_id(Option<String>)`](crate::client::fluent_builders::StopContactRecording::set_initial_contact_id): <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
    /// - On success, responds with [`StopContactRecordingOutput`](crate::output::StopContactRecordingOutput)

    /// - On failure, responds with [`SdkError<StopContactRecordingError>`](crate::error::StopContactRecordingError)
    pub fn stop_contact_recording(&self) -> fluent_builders::StopContactRecording {
        fluent_builders::StopContactRecording::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StopContactStreaming`](crate::client::fluent_builders::StopContactStreaming) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::StopContactStreaming::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::StopContactStreaming::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::StopContactStreaming::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::StopContactStreaming::set_contact_id): <p>The identifier of the contact. This is the identifier of the contact that is associated with the first interaction with the contact center.</p>
    ///   - [`streaming_id(impl Into<String>)`](crate::client::fluent_builders::StopContactStreaming::streaming_id) / [`set_streaming_id(Option<String>)`](crate::client::fluent_builders::StopContactStreaming::set_streaming_id): <p>The identifier of the streaming configuration enabled. </p>
    /// - On success, responds with [`StopContactStreamingOutput`](crate::output::StopContactStreamingOutput)

    /// - On failure, responds with [`SdkError<StopContactStreamingError>`](crate::error::StopContactStreamingError)
    pub fn stop_contact_streaming(&self) -> fluent_builders::StopContactStreaming {
        fluent_builders::StopContactStreaming::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`SuspendContactRecording`](crate::client::fluent_builders::SuspendContactRecording) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::SuspendContactRecording::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::SuspendContactRecording::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::SuspendContactRecording::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::SuspendContactRecording::set_contact_id): <p>The identifier of the contact.</p>
    ///   - [`initial_contact_id(impl Into<String>)`](crate::client::fluent_builders::SuspendContactRecording::initial_contact_id) / [`set_initial_contact_id(Option<String>)`](crate::client::fluent_builders::SuspendContactRecording::set_initial_contact_id): <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
    /// - On success, responds with [`SuspendContactRecordingOutput`](crate::output::SuspendContactRecordingOutput)

    /// - On failure, responds with [`SdkError<SuspendContactRecordingError>`](crate::error::SuspendContactRecordingError)
    pub fn suspend_contact_recording(&self) -> fluent_builders::SuspendContactRecording {
        fluent_builders::SuspendContactRecording::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`TagResource`](crate::client::fluent_builders::TagResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::TagResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::TagResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::TagResource::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::TagResource::set_tags): <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
    /// - On success, responds with [`TagResourceOutput`](crate::output::TagResourceOutput)

    /// - On failure, responds with [`SdkError<TagResourceError>`](crate::error::TagResourceError)
    pub fn tag_resource(&self) -> fluent_builders::TagResource {
        fluent_builders::TagResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`TransferContact`](crate::client::fluent_builders::TransferContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::TransferContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::TransferContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::TransferContact::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::TransferContact::set_contact_id): <p>The identifier of the contact in this instance of Amazon Connect. </p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::TransferContact::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::TransferContact::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::TransferContact::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::TransferContact::set_user_id): <p>The identifier for the user.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::TransferContact::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::TransferContact::set_contact_flow_id): <p>The identifier of the flow.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::TransferContact::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::TransferContact::set_client_token): <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>
    /// - On success, responds with [`TransferContactOutput`](crate::output::TransferContactOutput) with field(s):
    ///   - [`contact_id(Option<String>)`](crate::output::TransferContactOutput::contact_id): <p>The identifier of the contact in this instance of Amazon Connect. </p>
    ///   - [`contact_arn(Option<String>)`](crate::output::TransferContactOutput::contact_arn): <p>The Amazon Resource Name (ARN) of the contact.</p>
    /// - On failure, responds with [`SdkError<TransferContactError>`](crate::error::TransferContactError)
    pub fn transfer_contact(&self) -> fluent_builders::TransferContact {
        fluent_builders::TransferContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UntagResource`](crate::client::fluent_builders::UntagResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::UntagResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::UntagResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource.</p>
    ///   - [`tag_keys(Vec<String>)`](crate::client::fluent_builders::UntagResource::tag_keys) / [`set_tag_keys(Option<Vec<String>>)`](crate::client::fluent_builders::UntagResource::set_tag_keys): <p>The tag keys.</p>
    /// - On success, responds with [`UntagResourceOutput`](crate::output::UntagResourceOutput)

    /// - On failure, responds with [`SdkError<UntagResourceError>`](crate::error::UntagResourceError)
    pub fn untag_resource(&self) -> fluent_builders::UntagResource {
        fluent_builders::UntagResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateAgentStatus`](crate::client::fluent_builders::UpdateAgentStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateAgentStatus::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateAgentStatus::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`agent_status_id(impl Into<String>)`](crate::client::fluent_builders::UpdateAgentStatus::agent_status_id) / [`set_agent_status_id(Option<String>)`](crate::client::fluent_builders::UpdateAgentStatus::set_agent_status_id): <p>The identifier of the agent status.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateAgentStatus::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateAgentStatus::set_name): <p>The name of the agent status.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateAgentStatus::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateAgentStatus::set_description): <p>The description of the agent status.</p>
    ///   - [`state(AgentStatusState)`](crate::client::fluent_builders::UpdateAgentStatus::state) / [`set_state(Option<AgentStatusState>)`](crate::client::fluent_builders::UpdateAgentStatus::set_state): <p>The state of the agent status.</p>
    ///   - [`display_order(i32)`](crate::client::fluent_builders::UpdateAgentStatus::display_order) / [`set_display_order(Option<i32>)`](crate::client::fluent_builders::UpdateAgentStatus::set_display_order): <p>The display order of the agent status.</p>
    ///   - [`reset_order_number(bool)`](crate::client::fluent_builders::UpdateAgentStatus::reset_order_number) / [`set_reset_order_number(bool)`](crate::client::fluent_builders::UpdateAgentStatus::set_reset_order_number): <p>A number indicating the reset order of the agent status.</p>
    /// - On success, responds with [`UpdateAgentStatusOutput`](crate::output::UpdateAgentStatusOutput)

    /// - On failure, responds with [`SdkError<UpdateAgentStatusError>`](crate::error::UpdateAgentStatusError)
    pub fn update_agent_status(&self) -> fluent_builders::UpdateAgentStatus {
        fluent_builders::UpdateAgentStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContact`](crate::client::fluent_builders::UpdateContact) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContact::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContact::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContact::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::UpdateContact::set_contact_id): <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with your contact center.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateContact::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateContact::set_name): <p>The name of the contact.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateContact::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateContact::set_description): <p>The description of the contact.</p>
    ///   - [`references(HashMap<String, Reference>)`](crate::client::fluent_builders::UpdateContact::references) / [`set_references(Option<HashMap<String, Reference>>)`](crate::client::fluent_builders::UpdateContact::set_references): <p>Well-formed data on contact, shown to agents on Contact Control Panel (CCP).</p>
    /// - On success, responds with [`UpdateContactOutput`](crate::output::UpdateContactOutput)

    /// - On failure, responds with [`SdkError<UpdateContactError>`](crate::error::UpdateContactError)
    pub fn update_contact(&self) -> fluent_builders::UpdateContact {
        fluent_builders::UpdateContact::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContactAttributes`](crate::client::fluent_builders::UpdateContactAttributes) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`initial_contact_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactAttributes::initial_contact_id) / [`set_initial_contact_id(Option<String>)`](crate::client::fluent_builders::UpdateContactAttributes::set_initial_contact_id): <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactAttributes::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContactAttributes::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`attributes(HashMap<String, String>)`](crate::client::fluent_builders::UpdateContactAttributes::attributes) / [`set_attributes(Option<HashMap<String, String>>)`](crate::client::fluent_builders::UpdateContactAttributes::set_attributes): <p>The Amazon Connect attributes. These attributes can be accessed in flows just like any other contact attributes.</p>  <p>You can have up to 32,768 UTF-8 bytes across all attributes for a contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
    /// - On success, responds with [`UpdateContactAttributesOutput`](crate::output::UpdateContactAttributesOutput)

    /// - On failure, responds with [`SdkError<UpdateContactAttributesError>`](crate::error::UpdateContactAttributesError)
    pub fn update_contact_attributes(&self) -> fluent_builders::UpdateContactAttributes {
        fluent_builders::UpdateContactAttributes::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContactFlowContent`](crate::client::fluent_builders::UpdateContactFlowContent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowContent::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowContent::set_instance_id): <p>The identifier of the Amazon Connect instance.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowContent::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowContent::set_contact_flow_id): <p>The identifier of the flow.</p>
    ///   - [`content(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowContent::content) / [`set_content(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowContent::set_content): <p>The JSON string that represents flow's content. For an example, see <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html">Example contact flow in Amazon Connect Flow language</a>. </p>
    /// - On success, responds with [`UpdateContactFlowContentOutput`](crate::output::UpdateContactFlowContentOutput)

    /// - On failure, responds with [`SdkError<UpdateContactFlowContentError>`](crate::error::UpdateContactFlowContentError)
    pub fn update_contact_flow_content(&self) -> fluent_builders::UpdateContactFlowContent {
        fluent_builders::UpdateContactFlowContent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContactFlowMetadata`](crate::client::fluent_builders::UpdateContactFlowMetadata) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::set_contact_flow_id): <p>The identifier of the flow.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::set_name): <p>The name of the flow.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::set_description): <p>The description of the flow.</p>
    ///   - [`contact_flow_state(ContactFlowState)`](crate::client::fluent_builders::UpdateContactFlowMetadata::contact_flow_state) / [`set_contact_flow_state(Option<ContactFlowState>)`](crate::client::fluent_builders::UpdateContactFlowMetadata::set_contact_flow_state): <p>The state of flow.</p>
    /// - On success, responds with [`UpdateContactFlowMetadataOutput`](crate::output::UpdateContactFlowMetadataOutput)

    /// - On failure, responds with [`SdkError<UpdateContactFlowMetadataError>`](crate::error::UpdateContactFlowMetadataError)
    pub fn update_contact_flow_metadata(&self) -> fluent_builders::UpdateContactFlowMetadata {
        fluent_builders::UpdateContactFlowMetadata::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContactFlowModuleContent`](crate::client::fluent_builders::UpdateContactFlowModuleContent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleContent::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleContent::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_module_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleContent::contact_flow_module_id) / [`set_contact_flow_module_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleContent::set_contact_flow_module_id): <p>The identifier of the flow module.</p>
    ///   - [`content(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleContent::content) / [`set_content(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleContent::set_content): <p>The content of the flow module.</p>
    /// - On success, responds with [`UpdateContactFlowModuleContentOutput`](crate::output::UpdateContactFlowModuleContentOutput)

    /// - On failure, responds with [`SdkError<UpdateContactFlowModuleContentError>`](crate::error::UpdateContactFlowModuleContentError)
    pub fn update_contact_flow_module_content(
        &self,
    ) -> fluent_builders::UpdateContactFlowModuleContent {
        fluent_builders::UpdateContactFlowModuleContent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContactFlowModuleMetadata`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_flow_module_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::contact_flow_module_id) / [`set_contact_flow_module_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::set_contact_flow_module_id): <p>The identifier of the flow module.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::set_name): <p>The name of the flow module.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::set_description): <p>The description of the flow module.</p>
    ///   - [`state(ContactFlowModuleState)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::state) / [`set_state(Option<ContactFlowModuleState>)`](crate::client::fluent_builders::UpdateContactFlowModuleMetadata::set_state): <p>The state of flow module.</p>
    /// - On success, responds with [`UpdateContactFlowModuleMetadataOutput`](crate::output::UpdateContactFlowModuleMetadataOutput)

    /// - On failure, responds with [`SdkError<UpdateContactFlowModuleMetadataError>`](crate::error::UpdateContactFlowModuleMetadataError)
    pub fn update_contact_flow_module_metadata(
        &self,
    ) -> fluent_builders::UpdateContactFlowModuleMetadata {
        fluent_builders::UpdateContactFlowModuleMetadata::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContactFlowName`](crate::client::fluent_builders::UpdateContactFlowName) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowName::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowName::set_instance_id): <p>The identifier of the Amazon Connect instance.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowName::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowName::set_contact_flow_id): <p>The identifier of the flow.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowName::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowName::set_name): <p>The name of the flow.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateContactFlowName::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateContactFlowName::set_description): <p>The description of the flow.</p>
    /// - On success, responds with [`UpdateContactFlowNameOutput`](crate::output::UpdateContactFlowNameOutput)

    /// - On failure, responds with [`SdkError<UpdateContactFlowNameError>`](crate::error::UpdateContactFlowNameError)
    pub fn update_contact_flow_name(&self) -> fluent_builders::UpdateContactFlowName {
        fluent_builders::UpdateContactFlowName::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateContactSchedule`](crate::client::fluent_builders::UpdateContactSchedule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactSchedule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateContactSchedule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::UpdateContactSchedule::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::UpdateContactSchedule::set_contact_id): <p>The identifier of the contact.</p>
    ///   - [`scheduled_time(DateTime)`](crate::client::fluent_builders::UpdateContactSchedule::scheduled_time) / [`set_scheduled_time(Option<DateTime>)`](crate::client::fluent_builders::UpdateContactSchedule::set_scheduled_time): <p>The timestamp, in Unix Epoch seconds format, at which to start running the inbound flow. The scheduled time cannot be in the past. It must be within up to 6 days in future. </p>
    /// - On success, responds with [`UpdateContactScheduleOutput`](crate::output::UpdateContactScheduleOutput)

    /// - On failure, responds with [`SdkError<UpdateContactScheduleError>`](crate::error::UpdateContactScheduleError)
    pub fn update_contact_schedule(&self) -> fluent_builders::UpdateContactSchedule {
        fluent_builders::UpdateContactSchedule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateHoursOfOperation`](crate::client::fluent_builders::UpdateHoursOfOperation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`hours_of_operation_id(impl Into<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::hours_of_operation_id) / [`set_hours_of_operation_id(Option<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::set_hours_of_operation_id): <p>The identifier of the hours of operation.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::set_name): <p>The name of the hours of operation.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::set_description): <p>The description of the hours of operation.</p>
    ///   - [`time_zone(impl Into<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::time_zone) / [`set_time_zone(Option<String>)`](crate::client::fluent_builders::UpdateHoursOfOperation::set_time_zone): <p>The time zone of the hours of operation.</p>
    ///   - [`config(Vec<HoursOfOperationConfig>)`](crate::client::fluent_builders::UpdateHoursOfOperation::config) / [`set_config(Option<Vec<HoursOfOperationConfig>>)`](crate::client::fluent_builders::UpdateHoursOfOperation::set_config): <p>Configuration information of the hours of operation.</p>
    /// - On success, responds with [`UpdateHoursOfOperationOutput`](crate::output::UpdateHoursOfOperationOutput)

    /// - On failure, responds with [`SdkError<UpdateHoursOfOperationError>`](crate::error::UpdateHoursOfOperationError)
    pub fn update_hours_of_operation(&self) -> fluent_builders::UpdateHoursOfOperation {
        fluent_builders::UpdateHoursOfOperation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateInstanceAttribute`](crate::client::fluent_builders::UpdateInstanceAttribute) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateInstanceAttribute::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateInstanceAttribute::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`attribute_type(InstanceAttributeType)`](crate::client::fluent_builders::UpdateInstanceAttribute::attribute_type) / [`set_attribute_type(Option<InstanceAttributeType>)`](crate::client::fluent_builders::UpdateInstanceAttribute::set_attribute_type): <p>The type of attribute.</p> <note>   <p>Only allowlisted customers can consume USE_CUSTOM_TTS_VOICES. To access this feature, contact Amazon Web Services Support for allowlisting.</p>  </note>
    ///   - [`value(impl Into<String>)`](crate::client::fluent_builders::UpdateInstanceAttribute::value) / [`set_value(Option<String>)`](crate::client::fluent_builders::UpdateInstanceAttribute::set_value): <p>The value for the attribute. Maximum character limit is 100. </p>
    /// - On success, responds with [`UpdateInstanceAttributeOutput`](crate::output::UpdateInstanceAttributeOutput)

    /// - On failure, responds with [`SdkError<UpdateInstanceAttributeError>`](crate::error::UpdateInstanceAttributeError)
    pub fn update_instance_attribute(&self) -> fluent_builders::UpdateInstanceAttribute {
        fluent_builders::UpdateInstanceAttribute::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateInstanceStorageConfig`](crate::client::fluent_builders::UpdateInstanceStorageConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`association_id(impl Into<String>)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::association_id) / [`set_association_id(Option<String>)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::set_association_id): <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
    ///   - [`resource_type(InstanceStorageResourceType)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::resource_type) / [`set_resource_type(Option<InstanceStorageResourceType>)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::set_resource_type): <p>A valid resource type.</p>
    ///   - [`storage_config(InstanceStorageConfig)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::storage_config) / [`set_storage_config(Option<InstanceStorageConfig>)`](crate::client::fluent_builders::UpdateInstanceStorageConfig::set_storage_config): <p>The storage configuration for the instance.</p>
    /// - On success, responds with [`UpdateInstanceStorageConfigOutput`](crate::output::UpdateInstanceStorageConfigOutput)

    /// - On failure, responds with [`SdkError<UpdateInstanceStorageConfigError>`](crate::error::UpdateInstanceStorageConfigError)
    pub fn update_instance_storage_config(&self) -> fluent_builders::UpdateInstanceStorageConfig {
        fluent_builders::UpdateInstanceStorageConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateParticipantRoleConfig`](crate::client::fluent_builders::UpdateParticipantRoleConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateParticipantRoleConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateParticipantRoleConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`contact_id(impl Into<String>)`](crate::client::fluent_builders::UpdateParticipantRoleConfig::contact_id) / [`set_contact_id(Option<String>)`](crate::client::fluent_builders::UpdateParticipantRoleConfig::set_contact_id): <p>The identifier of the contact in this instance of Amazon Connect. </p>
    ///   - [`channel_configuration(UpdateParticipantRoleConfigChannelInfo)`](crate::client::fluent_builders::UpdateParticipantRoleConfig::channel_configuration) / [`set_channel_configuration(Option<UpdateParticipantRoleConfigChannelInfo>)`](crate::client::fluent_builders::UpdateParticipantRoleConfig::set_channel_configuration): <p>The Amazon Connect channel you want to configure.</p>
    /// - On success, responds with [`UpdateParticipantRoleConfigOutput`](crate::output::UpdateParticipantRoleConfigOutput)

    /// - On failure, responds with [`SdkError<UpdateParticipantRoleConfigError>`](crate::error::UpdateParticipantRoleConfigError)
    pub fn update_participant_role_config(&self) -> fluent_builders::UpdateParticipantRoleConfig {
        fluent_builders::UpdateParticipantRoleConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdatePhoneNumber`](crate::client::fluent_builders::UpdatePhoneNumber) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`phone_number_id(impl Into<String>)`](crate::client::fluent_builders::UpdatePhoneNumber::phone_number_id) / [`set_phone_number_id(Option<String>)`](crate::client::fluent_builders::UpdatePhoneNumber::set_phone_number_id): <p>A unique identifier for the phone number.</p>
    ///   - [`target_arn(impl Into<String>)`](crate::client::fluent_builders::UpdatePhoneNumber::target_arn) / [`set_target_arn(Option<String>)`](crate::client::fluent_builders::UpdatePhoneNumber::set_target_arn): <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::UpdatePhoneNumber::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::UpdatePhoneNumber::set_client_token): <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>
    /// - On success, responds with [`UpdatePhoneNumberOutput`](crate::output::UpdatePhoneNumberOutput) with field(s):
    ///   - [`phone_number_id(Option<String>)`](crate::output::UpdatePhoneNumberOutput::phone_number_id): <p>A unique identifier for the phone number.</p>
    ///   - [`phone_number_arn(Option<String>)`](crate::output::UpdatePhoneNumberOutput::phone_number_arn): <p>The Amazon Resource Name (ARN) of the phone number.</p>
    /// - On failure, responds with [`SdkError<UpdatePhoneNumberError>`](crate::error::UpdatePhoneNumberError)
    pub fn update_phone_number(&self) -> fluent_builders::UpdatePhoneNumber {
        fluent_builders::UpdatePhoneNumber::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateQueueHoursOfOperation`](crate::client::fluent_builders::UpdateQueueHoursOfOperation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueHoursOfOperation::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueHoursOfOperation::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueHoursOfOperation::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueHoursOfOperation::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`hours_of_operation_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueHoursOfOperation::hours_of_operation_id) / [`set_hours_of_operation_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueHoursOfOperation::set_hours_of_operation_id): <p>The identifier for the hours of operation.</p>
    /// - On success, responds with [`UpdateQueueHoursOfOperationOutput`](crate::output::UpdateQueueHoursOfOperationOutput)

    /// - On failure, responds with [`SdkError<UpdateQueueHoursOfOperationError>`](crate::error::UpdateQueueHoursOfOperationError)
    pub fn update_queue_hours_of_operation(&self) -> fluent_builders::UpdateQueueHoursOfOperation {
        fluent_builders::UpdateQueueHoursOfOperation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateQueueMaxContacts`](crate::client::fluent_builders::UpdateQueueMaxContacts) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueMaxContacts::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueMaxContacts::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueMaxContacts::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueMaxContacts::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`max_contacts(i32)`](crate::client::fluent_builders::UpdateQueueMaxContacts::max_contacts) / [`set_max_contacts(Option<i32>)`](crate::client::fluent_builders::UpdateQueueMaxContacts::set_max_contacts): <p>The maximum number of contacts that can be in the queue before it is considered full.</p>
    /// - On success, responds with [`UpdateQueueMaxContactsOutput`](crate::output::UpdateQueueMaxContactsOutput)

    /// - On failure, responds with [`SdkError<UpdateQueueMaxContactsError>`](crate::error::UpdateQueueMaxContactsError)
    pub fn update_queue_max_contacts(&self) -> fluent_builders::UpdateQueueMaxContacts {
        fluent_builders::UpdateQueueMaxContacts::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateQueueName`](crate::client::fluent_builders::UpdateQueueName) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueName::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueName::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueName::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueName::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueName::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateQueueName::set_name): <p>The name of the queue.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueName::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateQueueName::set_description): <p>The description of the queue.</p>
    /// - On success, responds with [`UpdateQueueNameOutput`](crate::output::UpdateQueueNameOutput)

    /// - On failure, responds with [`SdkError<UpdateQueueNameError>`](crate::error::UpdateQueueNameError)
    pub fn update_queue_name(&self) -> fluent_builders::UpdateQueueName {
        fluent_builders::UpdateQueueName::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateQueueOutboundCallerConfig`](crate::client::fluent_builders::UpdateQueueOutboundCallerConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueOutboundCallerConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueOutboundCallerConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueOutboundCallerConfig::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueOutboundCallerConfig::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`outbound_caller_config(OutboundCallerConfig)`](crate::client::fluent_builders::UpdateQueueOutboundCallerConfig::outbound_caller_config) / [`set_outbound_caller_config(Option<OutboundCallerConfig>)`](crate::client::fluent_builders::UpdateQueueOutboundCallerConfig::set_outbound_caller_config): <p>The outbound caller ID name, number, and outbound whisper flow.</p>
    /// - On success, responds with [`UpdateQueueOutboundCallerConfigOutput`](crate::output::UpdateQueueOutboundCallerConfigOutput)

    /// - On failure, responds with [`SdkError<UpdateQueueOutboundCallerConfigError>`](crate::error::UpdateQueueOutboundCallerConfigError)
    pub fn update_queue_outbound_caller_config(
        &self,
    ) -> fluent_builders::UpdateQueueOutboundCallerConfig {
        fluent_builders::UpdateQueueOutboundCallerConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateQueueStatus`](crate::client::fluent_builders::UpdateQueueStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueStatus::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueStatus::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`queue_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQueueStatus::queue_id) / [`set_queue_id(Option<String>)`](crate::client::fluent_builders::UpdateQueueStatus::set_queue_id): <p>The identifier for the queue.</p>
    ///   - [`status(QueueStatus)`](crate::client::fluent_builders::UpdateQueueStatus::status) / [`set_status(Option<QueueStatus>)`](crate::client::fluent_builders::UpdateQueueStatus::set_status): <p>The status of the queue.</p>
    /// - On success, responds with [`UpdateQueueStatusOutput`](crate::output::UpdateQueueStatusOutput)

    /// - On failure, responds with [`SdkError<UpdateQueueStatusError>`](crate::error::UpdateQueueStatusError)
    pub fn update_queue_status(&self) -> fluent_builders::UpdateQueueStatus {
        fluent_builders::UpdateQueueStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateQuickConnectConfig`](crate::client::fluent_builders::UpdateQuickConnectConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQuickConnectConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateQuickConnectConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`quick_connect_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQuickConnectConfig::quick_connect_id) / [`set_quick_connect_id(Option<String>)`](crate::client::fluent_builders::UpdateQuickConnectConfig::set_quick_connect_id): <p>The identifier for the quick connect.</p>
    ///   - [`quick_connect_config(QuickConnectConfig)`](crate::client::fluent_builders::UpdateQuickConnectConfig::quick_connect_config) / [`set_quick_connect_config(Option<QuickConnectConfig>)`](crate::client::fluent_builders::UpdateQuickConnectConfig::set_quick_connect_config): <p>Information about the configuration settings for the quick connect.</p>
    /// - On success, responds with [`UpdateQuickConnectConfigOutput`](crate::output::UpdateQuickConnectConfigOutput)

    /// - On failure, responds with [`SdkError<UpdateQuickConnectConfigError>`](crate::error::UpdateQuickConnectConfigError)
    pub fn update_quick_connect_config(&self) -> fluent_builders::UpdateQuickConnectConfig {
        fluent_builders::UpdateQuickConnectConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateQuickConnectName`](crate::client::fluent_builders::UpdateQuickConnectName) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`quick_connect_id(impl Into<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::quick_connect_id) / [`set_quick_connect_id(Option<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::set_quick_connect_id): <p>The identifier for the quick connect.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::set_name): <p>The name of the quick connect.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateQuickConnectName::set_description): <p>The description of the quick connect.</p>
    /// - On success, responds with [`UpdateQuickConnectNameOutput`](crate::output::UpdateQuickConnectNameOutput)

    /// - On failure, responds with [`SdkError<UpdateQuickConnectNameError>`](crate::error::UpdateQuickConnectNameError)
    pub fn update_quick_connect_name(&self) -> fluent_builders::UpdateQuickConnectName {
        fluent_builders::UpdateQuickConnectName::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRoutingProfileConcurrency`](crate::client::fluent_builders::UpdateRoutingProfileConcurrency) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileConcurrency::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileConcurrency::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileConcurrency::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileConcurrency::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    ///   - [`media_concurrencies(Vec<MediaConcurrency>)`](crate::client::fluent_builders::UpdateRoutingProfileConcurrency::media_concurrencies) / [`set_media_concurrencies(Option<Vec<MediaConcurrency>>)`](crate::client::fluent_builders::UpdateRoutingProfileConcurrency::set_media_concurrencies): <p>The channels that agents can handle in the Contact Control Panel (CCP).</p>
    /// - On success, responds with [`UpdateRoutingProfileConcurrencyOutput`](crate::output::UpdateRoutingProfileConcurrencyOutput)

    /// - On failure, responds with [`SdkError<UpdateRoutingProfileConcurrencyError>`](crate::error::UpdateRoutingProfileConcurrencyError)
    pub fn update_routing_profile_concurrency(
        &self,
    ) -> fluent_builders::UpdateRoutingProfileConcurrency {
        fluent_builders::UpdateRoutingProfileConcurrency::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRoutingProfileDefaultOutboundQueue`](crate::client::fluent_builders::UpdateRoutingProfileDefaultOutboundQueue) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileDefaultOutboundQueue::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileDefaultOutboundQueue::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileDefaultOutboundQueue::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileDefaultOutboundQueue::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    ///   - [`default_outbound_queue_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileDefaultOutboundQueue::default_outbound_queue_id) / [`set_default_outbound_queue_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileDefaultOutboundQueue::set_default_outbound_queue_id): <p>The identifier for the default outbound queue.</p>
    /// - On success, responds with [`UpdateRoutingProfileDefaultOutboundQueueOutput`](crate::output::UpdateRoutingProfileDefaultOutboundQueueOutput)

    /// - On failure, responds with [`SdkError<UpdateRoutingProfileDefaultOutboundQueueError>`](crate::error::UpdateRoutingProfileDefaultOutboundQueueError)
    pub fn update_routing_profile_default_outbound_queue(
        &self,
    ) -> fluent_builders::UpdateRoutingProfileDefaultOutboundQueue {
        fluent_builders::UpdateRoutingProfileDefaultOutboundQueue::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRoutingProfileName`](crate::client::fluent_builders::UpdateRoutingProfileName) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::set_name): <p>The name of the routing profile. Must not be more than 127 characters.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileName::set_description): <p>The description of the routing profile. Must not be more than 250 characters.</p>
    /// - On success, responds with [`UpdateRoutingProfileNameOutput`](crate::output::UpdateRoutingProfileNameOutput)

    /// - On failure, responds with [`SdkError<UpdateRoutingProfileNameError>`](crate::error::UpdateRoutingProfileNameError)
    pub fn update_routing_profile_name(&self) -> fluent_builders::UpdateRoutingProfileName {
        fluent_builders::UpdateRoutingProfileName::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRoutingProfileQueues`](crate::client::fluent_builders::UpdateRoutingProfileQueues) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileQueues::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileQueues::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRoutingProfileQueues::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::UpdateRoutingProfileQueues::set_routing_profile_id): <p>The identifier of the routing profile.</p>
    ///   - [`queue_configs(Vec<RoutingProfileQueueConfig>)`](crate::client::fluent_builders::UpdateRoutingProfileQueues::queue_configs) / [`set_queue_configs(Option<Vec<RoutingProfileQueueConfig>>)`](crate::client::fluent_builders::UpdateRoutingProfileQueues::set_queue_configs): <p>The queues to be updated for this routing profile. Queues must first be associated to the routing profile. You can do this using AssociateRoutingProfileQueues.</p>
    /// - On success, responds with [`UpdateRoutingProfileQueuesOutput`](crate::output::UpdateRoutingProfileQueuesOutput)

    /// - On failure, responds with [`SdkError<UpdateRoutingProfileQueuesError>`](crate::error::UpdateRoutingProfileQueuesError)
    pub fn update_routing_profile_queues(&self) -> fluent_builders::UpdateRoutingProfileQueues {
        fluent_builders::UpdateRoutingProfileQueues::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRule`](crate::client::fluent_builders::UpdateRule) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`rule_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRule::rule_id) / [`set_rule_id(Option<String>)`](crate::client::fluent_builders::UpdateRule::set_rule_id): <p>A unique identifier for the rule.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateRule::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateRule::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateRule::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateRule::set_name): <p>The name of the rule. You can change the name only if <code>TriggerEventSource</code> is one of the following values: <code>OnZendeskTicketCreate</code> | <code>OnZendeskTicketStatusUpdate</code> | <code>OnSalesforceCaseCreate</code> </p>
    ///   - [`function(impl Into<String>)`](crate::client::fluent_builders::UpdateRule::function) / [`set_function(Option<String>)`](crate::client::fluent_builders::UpdateRule::set_function): <p>The conditions of the rule.</p>
    ///   - [`actions(Vec<RuleAction>)`](crate::client::fluent_builders::UpdateRule::actions) / [`set_actions(Option<Vec<RuleAction>>)`](crate::client::fluent_builders::UpdateRule::set_actions): <p>A list of actions to be run when the rule is triggered.</p>
    ///   - [`publish_status(RulePublishStatus)`](crate::client::fluent_builders::UpdateRule::publish_status) / [`set_publish_status(Option<RulePublishStatus>)`](crate::client::fluent_builders::UpdateRule::set_publish_status): <p>The publish status of the rule.</p>
    /// - On success, responds with [`UpdateRuleOutput`](crate::output::UpdateRuleOutput)

    /// - On failure, responds with [`SdkError<UpdateRuleError>`](crate::error::UpdateRuleError)
    pub fn update_rule(&self) -> fluent_builders::UpdateRule {
        fluent_builders::UpdateRule::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateSecurityProfile`](crate::client::fluent_builders::UpdateSecurityProfile) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::set_description): <p>The description of the security profile.</p>
    ///   - [`permissions(Vec<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::permissions) / [`set_permissions(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateSecurityProfile::set_permissions): <p>The permissions granted to a security profile. For a list of valid permissions, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html">List of security profile permissions</a>.</p>
    ///   - [`security_profile_id(impl Into<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::security_profile_id) / [`set_security_profile_id(Option<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::set_security_profile_id): <p>The identifier for the security profle.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`allowed_access_control_tags(HashMap<String, String>)`](crate::client::fluent_builders::UpdateSecurityProfile::allowed_access_control_tags) / [`set_allowed_access_control_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::UpdateSecurityProfile::set_allowed_access_control_tags): <p>The list of tags that a security profile uses to restrict access to resources in Amazon Connect.</p>
    ///   - [`tag_restricted_resources(Vec<String>)`](crate::client::fluent_builders::UpdateSecurityProfile::tag_restricted_resources) / [`set_tag_restricted_resources(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateSecurityProfile::set_tag_restricted_resources): <p>The list of resources that a security profile applies tag restrictions to in Amazon Connect.</p>
    /// - On success, responds with [`UpdateSecurityProfileOutput`](crate::output::UpdateSecurityProfileOutput)

    /// - On failure, responds with [`SdkError<UpdateSecurityProfileError>`](crate::error::UpdateSecurityProfileError)
    pub fn update_security_profile(&self) -> fluent_builders::UpdateSecurityProfile {
        fluent_builders::UpdateSecurityProfile::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateTaskTemplate`](crate::client::fluent_builders::UpdateTaskTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`task_template_id(impl Into<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::task_template_id) / [`set_task_template_id(Option<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_task_template_id): <p>A unique identifier for the task template.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_name): <p>The name of the task template.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_description): <p>The description of the task template.</p>
    ///   - [`contact_flow_id(impl Into<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::contact_flow_id) / [`set_contact_flow_id(Option<String>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_contact_flow_id): <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
    ///   - [`constraints(TaskTemplateConstraints)`](crate::client::fluent_builders::UpdateTaskTemplate::constraints) / [`set_constraints(Option<TaskTemplateConstraints>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_constraints): <p>Constraints that are applicable to the fields listed.</p>
    ///   - [`defaults(TaskTemplateDefaults)`](crate::client::fluent_builders::UpdateTaskTemplate::defaults) / [`set_defaults(Option<TaskTemplateDefaults>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_defaults): <p>The default values for fields when a task is created by referencing this template.</p>
    ///   - [`status(TaskTemplateStatus)`](crate::client::fluent_builders::UpdateTaskTemplate::status) / [`set_status(Option<TaskTemplateStatus>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_status): <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
    ///   - [`fields(Vec<TaskTemplateField>)`](crate::client::fluent_builders::UpdateTaskTemplate::fields) / [`set_fields(Option<Vec<TaskTemplateField>>)`](crate::client::fluent_builders::UpdateTaskTemplate::set_fields): <p>Fields that are part of the template.</p>
    /// - On success, responds with [`UpdateTaskTemplateOutput`](crate::output::UpdateTaskTemplateOutput) with field(s):
    ///   - [`instance_id(Option<String>)`](crate::output::UpdateTaskTemplateOutput::instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    ///   - [`id(Option<String>)`](crate::output::UpdateTaskTemplateOutput::id): <p>The identifier of the task template resource.</p>
    ///   - [`arn(Option<String>)`](crate::output::UpdateTaskTemplateOutput::arn): <p>The Amazon Resource Name (ARN) for the task template resource.</p>
    ///   - [`name(Option<String>)`](crate::output::UpdateTaskTemplateOutput::name): <p>The name of the task template.</p>
    ///   - [`description(Option<String>)`](crate::output::UpdateTaskTemplateOutput::description): <p>The description of the task template.</p>
    ///   - [`contact_flow_id(Option<String>)`](crate::output::UpdateTaskTemplateOutput::contact_flow_id): <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
    ///   - [`constraints(Option<TaskTemplateConstraints>)`](crate::output::UpdateTaskTemplateOutput::constraints): <p>Constraints that are applicable to the fields listed.</p>
    ///   - [`defaults(Option<TaskTemplateDefaults>)`](crate::output::UpdateTaskTemplateOutput::defaults): <p>The default values for fields when a task is created by referencing this template.</p>
    ///   - [`fields(Option<Vec<TaskTemplateField>>)`](crate::output::UpdateTaskTemplateOutput::fields): <p>Fields that are part of the template.</p>
    ///   - [`status(Option<TaskTemplateStatus>)`](crate::output::UpdateTaskTemplateOutput::status): <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
    ///   - [`last_modified_time(Option<DateTime>)`](crate::output::UpdateTaskTemplateOutput::last_modified_time): <p>The timestamp when the task template was last modified.</p>
    ///   - [`created_time(Option<DateTime>)`](crate::output::UpdateTaskTemplateOutput::created_time): <p>The timestamp when the task template was created.</p>
    /// - On failure, responds with [`SdkError<UpdateTaskTemplateError>`](crate::error::UpdateTaskTemplateError)
    pub fn update_task_template(&self) -> fluent_builders::UpdateTaskTemplate {
        fluent_builders::UpdateTaskTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateTrafficDistribution`](crate::client::fluent_builders::UpdateTrafficDistribution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`id(impl Into<String>)`](crate::client::fluent_builders::UpdateTrafficDistribution::id) / [`set_id(Option<String>)`](crate::client::fluent_builders::UpdateTrafficDistribution::set_id): <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
    ///   - [`telephony_config(TelephonyConfig)`](crate::client::fluent_builders::UpdateTrafficDistribution::telephony_config) / [`set_telephony_config(Option<TelephonyConfig>)`](crate::client::fluent_builders::UpdateTrafficDistribution::set_telephony_config): <p>The distribution of traffic between the instance and its replica(s).</p>
    /// - On success, responds with [`UpdateTrafficDistributionOutput`](crate::output::UpdateTrafficDistributionOutput)

    /// - On failure, responds with [`SdkError<UpdateTrafficDistributionError>`](crate::error::UpdateTrafficDistributionError)
    pub fn update_traffic_distribution(&self) -> fluent_builders::UpdateTrafficDistribution {
        fluent_builders::UpdateTrafficDistribution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUserHierarchy`](crate::client::fluent_builders::UpdateUserHierarchy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`hierarchy_group_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserHierarchy::hierarchy_group_id) / [`set_hierarchy_group_id(Option<String>)`](crate::client::fluent_builders::UpdateUserHierarchy::set_hierarchy_group_id): <p>The identifier of the hierarchy group.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserHierarchy::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::UpdateUserHierarchy::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserHierarchy::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateUserHierarchy::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`UpdateUserHierarchyOutput`](crate::output::UpdateUserHierarchyOutput)

    /// - On failure, responds with [`SdkError<UpdateUserHierarchyError>`](crate::error::UpdateUserHierarchyError)
    pub fn update_user_hierarchy(&self) -> fluent_builders::UpdateUserHierarchy {
        fluent_builders::UpdateUserHierarchy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUserHierarchyGroupName`](crate::client::fluent_builders::UpdateUserHierarchyGroupName) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateUserHierarchyGroupName::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateUserHierarchyGroupName::set_name): <p>The name of the hierarchy group. Must not be more than 100 characters.</p>
    ///   - [`hierarchy_group_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserHierarchyGroupName::hierarchy_group_id) / [`set_hierarchy_group_id(Option<String>)`](crate::client::fluent_builders::UpdateUserHierarchyGroupName::set_hierarchy_group_id): <p>The identifier of the hierarchy group.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserHierarchyGroupName::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateUserHierarchyGroupName::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`UpdateUserHierarchyGroupNameOutput`](crate::output::UpdateUserHierarchyGroupNameOutput)

    /// - On failure, responds with [`SdkError<UpdateUserHierarchyGroupNameError>`](crate::error::UpdateUserHierarchyGroupNameError)
    pub fn update_user_hierarchy_group_name(
        &self,
    ) -> fluent_builders::UpdateUserHierarchyGroupName {
        fluent_builders::UpdateUserHierarchyGroupName::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUserHierarchyStructure`](crate::client::fluent_builders::UpdateUserHierarchyStructure) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`hierarchy_structure(HierarchyStructureUpdate)`](crate::client::fluent_builders::UpdateUserHierarchyStructure::hierarchy_structure) / [`set_hierarchy_structure(Option<HierarchyStructureUpdate>)`](crate::client::fluent_builders::UpdateUserHierarchyStructure::set_hierarchy_structure): <p>The hierarchy levels to update.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserHierarchyStructure::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateUserHierarchyStructure::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`UpdateUserHierarchyStructureOutput`](crate::output::UpdateUserHierarchyStructureOutput)

    /// - On failure, responds with [`SdkError<UpdateUserHierarchyStructureError>`](crate::error::UpdateUserHierarchyStructureError)
    pub fn update_user_hierarchy_structure(&self) -> fluent_builders::UpdateUserHierarchyStructure {
        fluent_builders::UpdateUserHierarchyStructure::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUserIdentityInfo`](crate::client::fluent_builders::UpdateUserIdentityInfo) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`identity_info(UserIdentityInfo)`](crate::client::fluent_builders::UpdateUserIdentityInfo::identity_info) / [`set_identity_info(Option<UserIdentityInfo>)`](crate::client::fluent_builders::UpdateUserIdentityInfo::set_identity_info): <p>The identity information for the user.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserIdentityInfo::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::UpdateUserIdentityInfo::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserIdentityInfo::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateUserIdentityInfo::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`UpdateUserIdentityInfoOutput`](crate::output::UpdateUserIdentityInfoOutput)

    /// - On failure, responds with [`SdkError<UpdateUserIdentityInfoError>`](crate::error::UpdateUserIdentityInfoError)
    pub fn update_user_identity_info(&self) -> fluent_builders::UpdateUserIdentityInfo {
        fluent_builders::UpdateUserIdentityInfo::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUserPhoneConfig`](crate::client::fluent_builders::UpdateUserPhoneConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`phone_config(UserPhoneConfig)`](crate::client::fluent_builders::UpdateUserPhoneConfig::phone_config) / [`set_phone_config(Option<UserPhoneConfig>)`](crate::client::fluent_builders::UpdateUserPhoneConfig::set_phone_config): <p>Information about phone configuration settings for the user.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserPhoneConfig::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::UpdateUserPhoneConfig::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserPhoneConfig::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateUserPhoneConfig::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`UpdateUserPhoneConfigOutput`](crate::output::UpdateUserPhoneConfigOutput)

    /// - On failure, responds with [`SdkError<UpdateUserPhoneConfigError>`](crate::error::UpdateUserPhoneConfigError)
    pub fn update_user_phone_config(&self) -> fluent_builders::UpdateUserPhoneConfig {
        fluent_builders::UpdateUserPhoneConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUserRoutingProfile`](crate::client::fluent_builders::UpdateUserRoutingProfile) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`routing_profile_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserRoutingProfile::routing_profile_id) / [`set_routing_profile_id(Option<String>)`](crate::client::fluent_builders::UpdateUserRoutingProfile::set_routing_profile_id): <p>The identifier of the routing profile for the user.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserRoutingProfile::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::UpdateUserRoutingProfile::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserRoutingProfile::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateUserRoutingProfile::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`UpdateUserRoutingProfileOutput`](crate::output::UpdateUserRoutingProfileOutput)

    /// - On failure, responds with [`SdkError<UpdateUserRoutingProfileError>`](crate::error::UpdateUserRoutingProfileError)
    pub fn update_user_routing_profile(&self) -> fluent_builders::UpdateUserRoutingProfile {
        fluent_builders::UpdateUserRoutingProfile::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUserSecurityProfiles`](crate::client::fluent_builders::UpdateUserSecurityProfiles) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`security_profile_ids(Vec<String>)`](crate::client::fluent_builders::UpdateUserSecurityProfiles::security_profile_ids) / [`set_security_profile_ids(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateUserSecurityProfiles::set_security_profile_ids): <p>The identifiers of the security profiles for the user.</p>
    ///   - [`user_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserSecurityProfiles::user_id) / [`set_user_id(Option<String>)`](crate::client::fluent_builders::UpdateUserSecurityProfiles::set_user_id): <p>The identifier of the user account.</p>
    ///   - [`instance_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUserSecurityProfiles::instance_id) / [`set_instance_id(Option<String>)`](crate::client::fluent_builders::UpdateUserSecurityProfiles::set_instance_id): <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
    /// - On success, responds with [`UpdateUserSecurityProfilesOutput`](crate::output::UpdateUserSecurityProfilesOutput)

    /// - On failure, responds with [`SdkError<UpdateUserSecurityProfilesError>`](crate::error::UpdateUserSecurityProfilesError)
    pub fn update_user_security_profiles(&self) -> fluent_builders::UpdateUserSecurityProfiles {
        fluent_builders::UpdateUserSecurityProfiles::new(self.handle.clone())
    }
}
pub mod fluent_builders {

    //! Utilities to ergonomically construct a request to the service.
    //!
    //! Fluent builders are created through the [`Client`](crate::client::Client) by calling
    //! one if its operation methods. After parameters are set using the builder methods,
    //! the `send` method can be called to initiate the request.
    /// Fluent builder constructing a request to `AssociateApprovedOrigin`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Associates an approved origin to an Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateApprovedOrigin {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_approved_origin_input::Builder,
    }
    impl AssociateApprovedOrigin {
        /// Creates a new `AssociateApprovedOrigin`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateApprovedOrigin,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateApprovedOriginError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateApprovedOriginOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateApprovedOriginError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 domain to add to your allow list.</p>
        pub fn origin(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.origin(input.into());
            self
        }
        /// <p>The domain to add to your allow list.</p>
        pub fn set_origin(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_origin(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateBot`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Allows the specified Amazon Connect instance to access the specified Amazon Lex or Amazon Lex V2 bot.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateBot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_bot_input::Builder,
    }
    impl AssociateBot {
        /// Creates a new `AssociateBot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateBot,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateBotError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateBotOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateBotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>Configuration information of an Amazon Lex bot.</p>
        pub fn lex_bot(mut self, input: crate::model::LexBot) -> Self {
            self.inner = self.inner.lex_bot(input);
            self
        }
        /// <p>Configuration information of an Amazon Lex bot.</p>
        pub fn set_lex_bot(mut self, input: std::option::Option<crate::model::LexBot>) -> Self {
            self.inner = self.inner.set_lex_bot(input);
            self
        }
        /// <p>The Amazon Lex V2 bot to associate with the instance.</p>
        pub fn lex_v2_bot(mut self, input: crate::model::LexV2Bot) -> Self {
            self.inner = self.inner.lex_v2_bot(input);
            self
        }
        /// <p>The Amazon Lex V2 bot to associate with the instance.</p>
        pub fn set_lex_v2_bot(
            mut self,
            input: std::option::Option<crate::model::LexV2Bot>,
        ) -> Self {
            self.inner = self.inner.set_lex_v2_bot(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateDefaultVocabulary`.
    ///
    /// <p>Associates an existing vocabulary as the default. Contact Lens for Amazon Connect uses the vocabulary in post-call and real-time analysis sessions for the given language.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateDefaultVocabulary {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_default_vocabulary_input::Builder,
    }
    impl AssociateDefaultVocabulary {
        /// Creates a new `AssociateDefaultVocabulary`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateDefaultVocabulary,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateDefaultVocabularyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateDefaultVocabularyOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateDefaultVocabularyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn language_code(mut self, input: crate::model::VocabularyLanguageCode) -> Self {
            self.inner = self.inner.language_code(input);
            self
        }
        /// <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn set_language_code(
            mut self,
            input: std::option::Option<crate::model::VocabularyLanguageCode>,
        ) -> Self {
            self.inner = self.inner.set_language_code(input);
            self
        }
        /// <p>The identifier of the custom vocabulary. If this is empty, the default is set to none.</p>
        pub fn vocabulary_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vocabulary_id(input.into());
            self
        }
        /// <p>The identifier of the custom vocabulary. If this is empty, the default is set to none.</p>
        pub fn set_vocabulary_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vocabulary_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateInstanceStorageConfig`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Associates a storage resource type for the first time. You can only associate one type of storage configuration in a single call. This means, for example, that you can't define an instance with multiple S3 buckets for storing chat transcripts.</p>
    /// <p>This API does not create a resource that doesn't exist. It only associates it to the instance. Ensure that the resource being specified in the storage configuration, like an S3 bucket, exists when being used for association.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateInstanceStorageConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_instance_storage_config_input::Builder,
    }
    impl AssociateInstanceStorageConfig {
        /// Creates a new `AssociateInstanceStorageConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateInstanceStorageConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateInstanceStorageConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateInstanceStorageConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateInstanceStorageConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A valid resource type.</p>
        pub fn resource_type(mut self, input: crate::model::InstanceStorageResourceType) -> Self {
            self.inner = self.inner.resource_type(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn set_resource_type(
            mut self,
            input: std::option::Option<crate::model::InstanceStorageResourceType>,
        ) -> Self {
            self.inner = self.inner.set_resource_type(input);
            self
        }
        /// <p>A valid storage type.</p>
        pub fn storage_config(mut self, input: crate::model::InstanceStorageConfig) -> Self {
            self.inner = self.inner.storage_config(input);
            self
        }
        /// <p>A valid storage type.</p>
        pub fn set_storage_config(
            mut self,
            input: std::option::Option<crate::model::InstanceStorageConfig>,
        ) -> Self {
            self.inner = self.inner.set_storage_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateLambdaFunction`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Allows the specified Amazon Connect instance to access the specified Lambda function.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateLambdaFunction {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_lambda_function_input::Builder,
    }
    impl AssociateLambdaFunction {
        /// Creates a new `AssociateLambdaFunction`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateLambdaFunction,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateLambdaFunctionError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateLambdaFunctionOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateLambdaFunctionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 Amazon Resource Name (ARN) for the Lambda function being associated. Maximum number of characters allowed is 140.</p>
        pub fn function_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.function_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for the Lambda function being associated. Maximum number of characters allowed is 140.</p>
        pub fn set_function_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_function_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateLexBot`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Allows the specified Amazon Connect instance to access the specified Amazon Lex bot.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateLexBot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_lex_bot_input::Builder,
    }
    impl AssociateLexBot {
        /// Creates a new `AssociateLexBot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateLexBot,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateLexBotError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateLexBotOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateLexBotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 Amazon Lex bot to associate with the instance.</p>
        pub fn lex_bot(mut self, input: crate::model::LexBot) -> Self {
            self.inner = self.inner.lex_bot(input);
            self
        }
        /// <p>The Amazon Lex bot to associate with the instance.</p>
        pub fn set_lex_bot(mut self, input: std::option::Option<crate::model::LexBot>) -> Self {
            self.inner = self.inner.set_lex_bot(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociatePhoneNumberContactFlow`.
    ///
    /// <p>Associates a flow with a phone number claimed to your Amazon Connect instance.</p> <important>
    /// <p>If the number is claimed to a traffic distribution group, and you are calling this API using an instance in the Amazon Web Services Region where the traffic distribution group was created, you can use either a full phone number ARN or UUID value for the <code>PhoneNumberId</code> URI request parameter. However, if the number is claimed to a traffic distribution group and you are calling this API using an instance in the alternate Amazon Web Services Region associated with the traffic distribution group, you must provide a full phone number ARN. If a UUID is provided in this scenario, you will receive a <code>ResourceNotFoundException</code>.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociatePhoneNumberContactFlow {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_phone_number_contact_flow_input::Builder,
    }
    impl AssociatePhoneNumberContactFlow {
        /// Creates a new `AssociatePhoneNumberContactFlow`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociatePhoneNumberContactFlow,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociatePhoneNumberContactFlowError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociatePhoneNumberContactFlowOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociatePhoneNumberContactFlowError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn phone_number_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_id(input.into());
            self
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn set_phone_number_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateQueueQuickConnects`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Associates a set of quick connects with a queue.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateQueueQuickConnects {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_queue_quick_connects_input::Builder,
    }
    impl AssociateQueueQuickConnects {
        /// Creates a new `AssociateQueueQuickConnects`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateQueueQuickConnects,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateQueueQuickConnectsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateQueueQuickConnectsOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateQueueQuickConnectsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// Appends an item to `QuickConnectIds`.
        ///
        /// To override the contents of this collection use [`set_quick_connect_ids`](Self::set_quick_connect_ids).
        ///
        /// <p>The quick connects to associate with this queue.</p>
        pub fn quick_connect_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_ids(input.into());
            self
        }
        /// <p>The quick connects to associate with this queue.</p>
        pub fn set_quick_connect_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_ids(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateRoutingProfileQueues`.
    ///
    /// <p>Associates a set of queues with a routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateRoutingProfileQueues {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_routing_profile_queues_input::Builder,
    }
    impl AssociateRoutingProfileQueues {
        /// Creates a new `AssociateRoutingProfileQueues`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateRoutingProfileQueues,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateRoutingProfileQueuesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateRoutingProfileQueuesOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateRoutingProfileQueuesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// Appends an item to `QueueConfigs`.
        ///
        /// To override the contents of this collection use [`set_queue_configs`](Self::set_queue_configs).
        ///
        /// <p>The queues to associate with this routing profile.</p>
        pub fn queue_configs(mut self, input: crate::model::RoutingProfileQueueConfig) -> Self {
            self.inner = self.inner.queue_configs(input);
            self
        }
        /// <p>The queues to associate with this routing profile.</p>
        pub fn set_queue_configs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RoutingProfileQueueConfig>>,
        ) -> Self {
            self.inner = self.inner.set_queue_configs(input);
            self
        }
    }
    /// Fluent builder constructing a request to `AssociateSecurityKey`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Associates a security key to the instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AssociateSecurityKey {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::associate_security_key_input::Builder,
    }
    impl AssociateSecurityKey {
        /// Creates a new `AssociateSecurityKey`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::AssociateSecurityKey,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::AssociateSecurityKeyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::AssociateSecurityKeyOutput,
            aws_smithy_http::result::SdkError<crate::error::AssociateSecurityKeyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A valid security key in PEM format.</p>
        pub fn key(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.key(input.into());
            self
        }
        /// <p>A valid security key in PEM format.</p>
        pub fn set_key(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_key(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ClaimPhoneNumber`.
    ///
    /// <p>Claims an available phone number to your Amazon Connect instance or traffic distribution group. You can call this API only in the same Amazon Web Services Region where the Amazon Connect instance or traffic distribution group was created.</p>
    /// <p>For more information about how to use this operation, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-number.html">Claim a phone number in your country</a> and <a href="https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-numbers-traffic-distribution-groups.html">Claim phone numbers to traffic distribution groups</a> in the <i>Amazon Connect Administrator Guide</i>. </p> <important>
    /// <p>You can call the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_SearchAvailablePhoneNumbers.html">SearchAvailablePhoneNumbers</a> API for available phone numbers that you can claim. Call the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html">DescribePhoneNumber</a> API to verify the status of a previous <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html">ClaimPhoneNumber</a> operation.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ClaimPhoneNumber {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::claim_phone_number_input::Builder,
    }
    impl ClaimPhoneNumber {
        /// Creates a new `ClaimPhoneNumber`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ClaimPhoneNumber,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ClaimPhoneNumberError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ClaimPhoneNumberOutput,
            aws_smithy_http::result::SdkError<crate::error::ClaimPhoneNumberError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
        pub fn target_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.target_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
        pub fn set_target_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_target_arn(input);
            self
        }
        /// <p>The phone number you want to claim. Phone numbers are formatted <code>[+] [country code] [subscriber number including area code]</code>.</p>
        pub fn phone_number(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number(input.into());
            self
        }
        /// <p>The phone number you want to claim. Phone numbers are formatted <code>[+] [country code] [subscriber number including area code]</code>.</p>
        pub fn set_phone_number(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_phone_number(input);
            self
        }
        /// <p>The description of the phone number.</p>
        pub fn phone_number_description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_description(input.into());
            self
        }
        /// <p>The description of the phone number.</p>
        pub fn set_phone_number_description(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_description(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(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>
        /// <p>Pattern: <code>^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$</code> </p>
        pub fn client_token(mut self, input: impl 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>
        /// <p>Pattern: <code>^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$</code> </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
        }
    }
    /// Fluent builder constructing a request to `CreateAgentStatus`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Creates an agent status for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateAgentStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_agent_status_input::Builder,
    }
    impl CreateAgentStatus {
        /// Creates a new `CreateAgentStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateAgentStatus,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateAgentStatusError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateAgentStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateAgentStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the status.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the status.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the status.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the status.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The state of the status.</p>
        pub fn state(mut self, input: crate::model::AgentStatusState) -> Self {
            self.inner = self.inner.state(input);
            self
        }
        /// <p>The state of the status.</p>
        pub fn set_state(
            mut self,
            input: std::option::Option<crate::model::AgentStatusState>,
        ) -> Self {
            self.inner = self.inner.set_state(input);
            self
        }
        /// <p>The display order of the status.</p>
        pub fn display_order(mut self, input: i32) -> Self {
            self.inner = self.inner.display_order(input);
            self
        }
        /// <p>The display order of the status.</p>
        pub fn set_display_order(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_display_order(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateContactFlow`.
    ///
    /// <p>Creates a flow for the specified Amazon Connect instance.</p>
    /// <p>You can also create and update flows using the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html">Amazon Connect Flow language</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateContactFlow {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_contact_flow_input::Builder,
    }
    impl CreateContactFlow {
        /// Creates a new `CreateContactFlow`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateContactFlow,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateContactFlowError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateContactFlowOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateContactFlowError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect 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 name of the flow.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the flow.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The type of the flow. For descriptions of the available types, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/create-contact-flow.html#contact-flow-types">Choose a flow type</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
        pub fn r#type(mut self, input: crate::model::ContactFlowType) -> Self {
            self.inner = self.inner.r#type(input);
            self
        }
        /// <p>The type of the flow. For descriptions of the available types, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/create-contact-flow.html#contact-flow-types">Choose a flow type</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
        pub fn set_type(
            mut self,
            input: std::option::Option<crate::model::ContactFlowType>,
        ) -> Self {
            self.inner = self.inner.set_type(input);
            self
        }
        /// <p>The description of the flow. </p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the flow. </p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The content of the flow. </p>
        pub fn content(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.content(input.into());
            self
        }
        /// <p>The content of the flow. </p>
        pub fn set_content(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_content(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateContactFlowModule`.
    ///
    /// <p>Creates a flow module for the specified Amazon Connect instance. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateContactFlowModule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_contact_flow_module_input::Builder,
    }
    impl CreateContactFlowModule {
        /// Creates a new `CreateContactFlowModule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateContactFlowModule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateContactFlowModuleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateContactFlowModuleOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateContactFlowModuleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the flow module.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the flow module.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the flow module. </p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the flow module. </p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The content of the flow module.</p>
        pub fn content(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.content(input.into());
            self
        }
        /// <p>The content of the flow module.</p>
        pub fn set_content(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_content(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `CreateHoursOfOperation`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Creates hours of operation. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateHoursOfOperation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_hours_of_operation_input::Builder,
    }
    impl CreateHoursOfOperation {
        /// Creates a new `CreateHoursOfOperation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateHoursOfOperation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateHoursOfOperationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateHoursOfOperationOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateHoursOfOperationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the hours of operation.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the hours of operation.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the hours of operation.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the hours of operation.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The time zone of the hours of operation.</p>
        pub fn time_zone(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.time_zone(input.into());
            self
        }
        /// <p>The time zone of the hours of operation.</p>
        pub fn set_time_zone(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_time_zone(input);
            self
        }
        /// Appends an item to `Config`.
        ///
        /// To override the contents of this collection use [`set_config`](Self::set_config).
        ///
        /// <p>Configuration information for the hours of operation: day, start time, and end time.</p>
        pub fn config(mut self, input: crate::model::HoursOfOperationConfig) -> Self {
            self.inner = self.inner.config(input);
            self
        }
        /// <p>Configuration information for the hours of operation: day, start time, and end time.</p>
        pub fn set_config(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::HoursOfOperationConfig>>,
        ) -> Self {
            self.inner = self.inner.set_config(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateInstance`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Initiates an Amazon Connect instance with all the supported channels enabled. It does not attach any storage, such as Amazon Simple Storage Service (Amazon S3) or Amazon Kinesis. It also does not allow for any configurations on features, such as Contact Lens for Amazon Connect. </p>
    /// <p>Amazon Connect enforces a limit on the total number of instances that you can create or delete in 30 days. If you exceed this limit, you will get an error message indicating there has been an excessive number of attempts at creating or deleting instances. You must wait 30 days before you can restart creating and deleting instances in your account.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateInstance {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_instance_input::Builder,
    }
    impl CreateInstance {
        /// Creates a new `CreateInstance`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateInstance,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateInstanceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateInstanceOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateInstanceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The idempotency token.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>The idempotency token.</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>The type of identity management for your Amazon Connect users.</p>
        pub fn identity_management_type(mut self, input: crate::model::DirectoryType) -> Self {
            self.inner = self.inner.identity_management_type(input);
            self
        }
        /// <p>The type of identity management for your Amazon Connect users.</p>
        pub fn set_identity_management_type(
            mut self,
            input: std::option::Option<crate::model::DirectoryType>,
        ) -> Self {
            self.inner = self.inner.set_identity_management_type(input);
            self
        }
        /// <p>The name for your instance.</p>
        pub fn instance_alias(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_alias(input.into());
            self
        }
        /// <p>The name for your instance.</p>
        pub fn set_instance_alias(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_instance_alias(input);
            self
        }
        /// <p>The identifier for the directory.</p>
        pub fn directory_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.directory_id(input.into());
            self
        }
        /// <p>The identifier for the directory.</p>
        pub fn set_directory_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_directory_id(input);
            self
        }
        /// <p>Your contact center handles incoming contacts.</p>
        pub fn inbound_calls_enabled(mut self, input: bool) -> Self {
            self.inner = self.inner.inbound_calls_enabled(input);
            self
        }
        /// <p>Your contact center handles incoming contacts.</p>
        pub fn set_inbound_calls_enabled(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_inbound_calls_enabled(input);
            self
        }
        /// <p>Your contact center allows outbound calls.</p>
        pub fn outbound_calls_enabled(mut self, input: bool) -> Self {
            self.inner = self.inner.outbound_calls_enabled(input);
            self
        }
        /// <p>Your contact center allows outbound calls.</p>
        pub fn set_outbound_calls_enabled(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_outbound_calls_enabled(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateIntegrationAssociation`.
    ///
    /// <p>Creates an Amazon Web Services resource association with an Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateIntegrationAssociation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_integration_association_input::Builder,
    }
    impl CreateIntegrationAssociation {
        /// Creates a new `CreateIntegrationAssociation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateIntegrationAssociation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateIntegrationAssociationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateIntegrationAssociationOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateIntegrationAssociationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 type of information to be ingested.</p>
        pub fn integration_type(mut self, input: crate::model::IntegrationType) -> Self {
            self.inner = self.inner.integration_type(input);
            self
        }
        /// <p>The type of information to be ingested.</p>
        pub fn set_integration_type(
            mut self,
            input: std::option::Option<crate::model::IntegrationType>,
        ) -> Self {
            self.inner = self.inner.set_integration_type(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the integration.</p> <note>
        /// <p>When integrating with Amazon Pinpoint, the Amazon Connect and Amazon Pinpoint instances must be in the same account.</p>
        /// </note>
        pub fn integration_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.integration_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the integration.</p> <note>
        /// <p>When integrating with Amazon Pinpoint, the Amazon Connect and Amazon Pinpoint instances must be in the same account.</p>
        /// </note>
        pub fn set_integration_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_integration_arn(input);
            self
        }
        /// <p>The URL for the external application. This field is only required for the EVENT integration type.</p>
        pub fn source_application_url(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_application_url(input.into());
            self
        }
        /// <p>The URL for the external application. This field is only required for the EVENT integration type.</p>
        pub fn set_source_application_url(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_application_url(input);
            self
        }
        /// <p>The name of the external application. This field is only required for the EVENT integration type.</p>
        pub fn source_application_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_application_name(input.into());
            self
        }
        /// <p>The name of the external application. This field is only required for the EVENT integration type.</p>
        pub fn set_source_application_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_application_name(input);
            self
        }
        /// <p>The type of the data source. This field is only required for the EVENT integration type.</p>
        pub fn source_type(mut self, input: crate::model::SourceType) -> Self {
            self.inner = self.inner.source_type(input);
            self
        }
        /// <p>The type of the data source. This field is only required for the EVENT integration type.</p>
        pub fn set_source_type(
            mut self,
            input: std::option::Option<crate::model::SourceType>,
        ) -> Self {
            self.inner = self.inner.set_source_type(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateQueue`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Creates a new queue for the specified Amazon Connect instance.</p> <important>
    /// <p>If the number being used in the input is claimed to a traffic distribution group, and you are calling this API using an instance in the Amazon Web Services Region where the traffic distribution group was created, you can use either a full phone number ARN or UUID value for the <code>OutboundCallerIdNumberId</code> value of the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_OutboundCallerConfig">OutboundCallerConfig</a> request body parameter. However, if the number is claimed to a traffic distribution group and you are calling this API using an instance in the alternate Amazon Web Services Region associated with the traffic distribution group, you must provide a full phone number ARN. If a UUID is provided in this scenario, you will receive a <code>ResourceNotFoundException</code>.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateQueue {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_queue_input::Builder,
    }
    impl CreateQueue {
        /// Creates a new `CreateQueue`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateQueue,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateQueueError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateQueueOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateQueueError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the queue.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the queue.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the queue.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the queue.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The outbound caller ID name, number, and outbound whisper flow.</p>
        pub fn outbound_caller_config(mut self, input: crate::model::OutboundCallerConfig) -> Self {
            self.inner = self.inner.outbound_caller_config(input);
            self
        }
        /// <p>The outbound caller ID name, number, and outbound whisper flow.</p>
        pub fn set_outbound_caller_config(
            mut self,
            input: std::option::Option<crate::model::OutboundCallerConfig>,
        ) -> Self {
            self.inner = self.inner.set_outbound_caller_config(input);
            self
        }
        /// <p>The identifier for the hours of operation.</p>
        pub fn hours_of_operation_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hours_of_operation_id(input.into());
            self
        }
        /// <p>The identifier for the hours of operation.</p>
        pub fn set_hours_of_operation_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hours_of_operation_id(input);
            self
        }
        /// <p>The maximum number of contacts that can be in the queue before it is considered full.</p>
        pub fn max_contacts(mut self, input: i32) -> Self {
            self.inner = self.inner.max_contacts(input);
            self
        }
        /// <p>The maximum number of contacts that can be in the queue before it is considered full.</p>
        pub fn set_max_contacts(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_contacts(input);
            self
        }
        /// Appends an item to `QuickConnectIds`.
        ///
        /// To override the contents of this collection use [`set_quick_connect_ids`](Self::set_quick_connect_ids).
        ///
        /// <p>The quick connects available to agents who are working the queue.</p>
        pub fn quick_connect_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_ids(input.into());
            self
        }
        /// <p>The quick connects available to agents who are working the queue.</p>
        pub fn set_quick_connect_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_ids(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateQuickConnect`.
    ///
    /// <p>Creates a quick connect for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateQuickConnect {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_quick_connect_input::Builder,
    }
    impl CreateQuickConnect {
        /// Creates a new `CreateQuickConnect`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateQuickConnect,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateQuickConnectError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateQuickConnectOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateQuickConnectError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the quick connect.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the quick connect.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the quick connect.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the quick connect.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>Configuration settings for the quick connect.</p>
        pub fn quick_connect_config(mut self, input: crate::model::QuickConnectConfig) -> Self {
            self.inner = self.inner.quick_connect_config(input);
            self
        }
        /// <p>Configuration settings for the quick connect.</p>
        pub fn set_quick_connect_config(
            mut self,
            input: std::option::Option<crate::model::QuickConnectConfig>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_config(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateRoutingProfile`.
    ///
    /// <p>Creates a new routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateRoutingProfile {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_routing_profile_input::Builder,
    }
    impl CreateRoutingProfile {
        /// Creates a new `CreateRoutingProfile`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateRoutingProfile,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateRoutingProfileError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateRoutingProfileOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateRoutingProfileError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the routing profile. Must not be more than 127 characters.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the routing profile. Must not be more than 127 characters.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>Description of the routing profile. Must not be more than 250 characters.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>Description of the routing profile. Must not be more than 250 characters.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The default outbound queue for the routing profile.</p>
        pub fn default_outbound_queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.default_outbound_queue_id(input.into());
            self
        }
        /// <p>The default outbound queue for the routing profile.</p>
        pub fn set_default_outbound_queue_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_default_outbound_queue_id(input);
            self
        }
        /// Appends an item to `QueueConfigs`.
        ///
        /// To override the contents of this collection use [`set_queue_configs`](Self::set_queue_configs).
        ///
        /// <p>The inbound queues associated with the routing profile. If no queue is added, the agent can make only outbound calls.</p>
        pub fn queue_configs(mut self, input: crate::model::RoutingProfileQueueConfig) -> Self {
            self.inner = self.inner.queue_configs(input);
            self
        }
        /// <p>The inbound queues associated with the routing profile. If no queue is added, the agent can make only outbound calls.</p>
        pub fn set_queue_configs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RoutingProfileQueueConfig>>,
        ) -> Self {
            self.inner = self.inner.set_queue_configs(input);
            self
        }
        /// Appends an item to `MediaConcurrencies`.
        ///
        /// To override the contents of this collection use [`set_media_concurrencies`](Self::set_media_concurrencies).
        ///
        /// <p>The channels that agents can handle in the Contact Control Panel (CCP) for this routing profile.</p>
        pub fn media_concurrencies(mut self, input: crate::model::MediaConcurrency) -> Self {
            self.inner = self.inner.media_concurrencies(input);
            self
        }
        /// <p>The channels that agents can handle in the Contact Control Panel (CCP) for this routing profile.</p>
        pub fn set_media_concurrencies(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::MediaConcurrency>>,
        ) -> Self {
            self.inner = self.inner.set_media_concurrencies(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateRule`.
    ///
    /// <p>Creates a rule for the specified Amazon Connect instance.</p>
    /// <p>Use the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/connect-rules-language.html">Rules Function language</a> to code conditions for the rule. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateRule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_rule_input::Builder,
    }
    impl CreateRule {
        /// Creates a new `CreateRule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateRule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateRuleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateRuleOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateRuleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A unique name for the rule.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>A unique name for the rule.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The event source to trigger the rule.</p>
        pub fn trigger_event_source(mut self, input: crate::model::RuleTriggerEventSource) -> Self {
            self.inner = self.inner.trigger_event_source(input);
            self
        }
        /// <p>The event source to trigger the rule.</p>
        pub fn set_trigger_event_source(
            mut self,
            input: std::option::Option<crate::model::RuleTriggerEventSource>,
        ) -> Self {
            self.inner = self.inner.set_trigger_event_source(input);
            self
        }
        /// <p>The conditions of the rule.</p>
        pub fn function(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.function(input.into());
            self
        }
        /// <p>The conditions of the rule.</p>
        pub fn set_function(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_function(input);
            self
        }
        /// Appends an item to `Actions`.
        ///
        /// To override the contents of this collection use [`set_actions`](Self::set_actions).
        ///
        /// <p>A list of actions to be run when the rule is triggered.</p>
        pub fn actions(mut self, input: crate::model::RuleAction) -> Self {
            self.inner = self.inner.actions(input);
            self
        }
        /// <p>A list of actions to be run when the rule is triggered.</p>
        pub fn set_actions(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RuleAction>>,
        ) -> Self {
            self.inner = self.inner.set_actions(input);
            self
        }
        /// <p>The publish status of the rule.</p>
        pub fn publish_status(mut self, input: crate::model::RulePublishStatus) -> Self {
            self.inner = self.inner.publish_status(input);
            self
        }
        /// <p>The publish status of the rule.</p>
        pub fn set_publish_status(
            mut self,
            input: std::option::Option<crate::model::RulePublishStatus>,
        ) -> Self {
            self.inner = self.inner.set_publish_status(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `CreateSecurityProfile`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Creates a security profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateSecurityProfile {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_security_profile_input::Builder,
    }
    impl CreateSecurityProfile {
        /// Creates a new `CreateSecurityProfile`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateSecurityProfile,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateSecurityProfileError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateSecurityProfileOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateSecurityProfileError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the security profile.</p>
        pub fn security_profile_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_profile_name(input.into());
            self
        }
        /// <p>The name of the security profile.</p>
        pub fn set_security_profile_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_security_profile_name(input);
            self
        }
        /// <p>The description of the security profile.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the security profile.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// Appends an item to `Permissions`.
        ///
        /// To override the contents of this collection use [`set_permissions`](Self::set_permissions).
        ///
        /// <p>Permissions assigned to the security profile. For a list of valid permissions, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html">List of security profile permissions</a>. </p>
        pub fn permissions(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.permissions(input.into());
            self
        }
        /// <p>Permissions assigned to the security profile. For a list of valid permissions, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html">List of security profile permissions</a>. </p>
        pub fn set_permissions(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_permissions(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
        /// Adds a key-value pair to `AllowedAccessControlTags`.
        ///
        /// To override the contents of this collection use [`set_allowed_access_control_tags`](Self::set_allowed_access_control_tags).
        ///
        /// <p>The list of tags that a security profile uses to restrict access to resources in Amazon Connect.</p>
        pub fn allowed_access_control_tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.allowed_access_control_tags(k.into(), v.into());
            self
        }
        /// <p>The list of tags that a security profile uses to restrict access to resources in Amazon Connect.</p>
        pub fn set_allowed_access_control_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_allowed_access_control_tags(input);
            self
        }
        /// Appends an item to `TagRestrictedResources`.
        ///
        /// To override the contents of this collection use [`set_tag_restricted_resources`](Self::set_tag_restricted_resources).
        ///
        /// <p>The list of resources that a security profile applies tag restrictions to in Amazon Connect. Following are acceptable ResourceNames: <code>User</code> | <code>SecurityProfile</code> | <code>Queue</code> | <code>RoutingProfile</code> </p>
        pub fn tag_restricted_resources(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_restricted_resources(input.into());
            self
        }
        /// <p>The list of resources that a security profile applies tag restrictions to in Amazon Connect. Following are acceptable ResourceNames: <code>User</code> | <code>SecurityProfile</code> | <code>Queue</code> | <code>RoutingProfile</code> </p>
        pub fn set_tag_restricted_resources(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_tag_restricted_resources(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateTaskTemplate`.
    ///
    /// <p>Creates a new task template in the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateTaskTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_task_template_input::Builder,
    }
    impl CreateTaskTemplate {
        /// Creates a new `CreateTaskTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateTaskTemplate,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateTaskTemplateError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateTaskTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateTaskTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the task template.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the task template.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the task template.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the task template.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// <p>Constraints that are applicable to the fields listed.</p>
        pub fn constraints(mut self, input: crate::model::TaskTemplateConstraints) -> Self {
            self.inner = self.inner.constraints(input);
            self
        }
        /// <p>Constraints that are applicable to the fields listed.</p>
        pub fn set_constraints(
            mut self,
            input: std::option::Option<crate::model::TaskTemplateConstraints>,
        ) -> Self {
            self.inner = self.inner.set_constraints(input);
            self
        }
        /// <p>The default values for fields when a task is created by referencing this template.</p>
        pub fn defaults(mut self, input: crate::model::TaskTemplateDefaults) -> Self {
            self.inner = self.inner.defaults(input);
            self
        }
        /// <p>The default values for fields when a task is created by referencing this template.</p>
        pub fn set_defaults(
            mut self,
            input: std::option::Option<crate::model::TaskTemplateDefaults>,
        ) -> Self {
            self.inner = self.inner.set_defaults(input);
            self
        }
        /// <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created. </p>
        pub fn status(mut self, input: crate::model::TaskTemplateStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created. </p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::TaskTemplateStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// Appends an item to `Fields`.
        ///
        /// To override the contents of this collection use [`set_fields`](Self::set_fields).
        ///
        /// <p>Fields that are part of the template.</p>
        pub fn fields(mut self, input: crate::model::TaskTemplateField) -> Self {
            self.inner = self.inner.fields(input);
            self
        }
        /// <p>Fields that are part of the template.</p>
        pub fn set_fields(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::TaskTemplateField>>,
        ) -> Self {
            self.inner = self.inner.set_fields(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `CreateTrafficDistributionGroup`.
    ///
    /// <p>Creates a traffic distribution group given an Amazon Connect instance that has been replicated. </p>
    /// <p>For more information about creating traffic distribution groups, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/setup-traffic-distribution-groups.html">Set up traffic distribution groups</a> in the <i>Amazon Connect Administrator Guide</i>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateTrafficDistributionGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_traffic_distribution_group_input::Builder,
    }
    impl CreateTrafficDistributionGroup {
        /// Creates a new `CreateTrafficDistributionGroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateTrafficDistributionGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateTrafficDistributionGroupError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateTrafficDistributionGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateTrafficDistributionGroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name for the traffic distribution group. </p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name for the traffic distribution group. </p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>A description for the traffic distribution group.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description for the traffic distribution group.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance that has been replicated. You can find the <code>instanceId</code> in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance that has been replicated. You can find the <code>instanceId</code> in the 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>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 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
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateUseCase`.
    ///
    /// <p>Creates a use case for an integration association.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateUseCase {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_use_case_input::Builder,
    }
    impl CreateUseCase {
        /// Creates a new `CreateUseCase`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateUseCase,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateUseCaseError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateUseCaseOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateUseCaseError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the integration association.</p>
        pub fn integration_association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.integration_association_id(input.into());
            self
        }
        /// <p>The identifier for the integration association.</p>
        pub fn set_integration_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_integration_association_id(input);
            self
        }
        /// <p>The type of use case to associate to the integration association. Each integration association can have only one of each use case type.</p>
        pub fn use_case_type(mut self, input: crate::model::UseCaseType) -> Self {
            self.inner = self.inner.use_case_type(input);
            self
        }
        /// <p>The type of use case to associate to the integration association. Each integration association can have only one of each use case type.</p>
        pub fn set_use_case_type(
            mut self,
            input: std::option::Option<crate::model::UseCaseType>,
        ) -> Self {
            self.inner = self.inner.set_use_case_type(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateUser`.
    ///
    /// <p>Creates a user account for the specified Amazon Connect instance.</p>
    /// <p>For information about how to create user accounts using the Amazon Connect console, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/user-management.html">Add Users</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateUser {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_user_input::Builder,
    }
    impl CreateUser {
        /// Creates a new `CreateUser`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateUser,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateUserError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateUserOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateUserError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The user name for the account. For instances not using SAML for identity management, the user name can include up to 20 characters. If you are using SAML for identity management, the user name can include up to 64 characters from [a-zA-Z0-9_-.\@]+.</p>
        pub fn username(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.username(input.into());
            self
        }
        /// <p>The user name for the account. For instances not using SAML for identity management, the user name can include up to 20 characters. If you are using SAML for identity management, the user name can include up to 64 characters from [a-zA-Z0-9_-.\@]+.</p>
        pub fn set_username(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_username(input);
            self
        }
        /// <p>The password for the user account. A password is required if you are using Amazon Connect for identity management. Otherwise, it is an error to include a password.</p>
        pub fn password(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.password(input.into());
            self
        }
        /// <p>The password for the user account. A password is required if you are using Amazon Connect for identity management. Otherwise, it is an error to include a password.</p>
        pub fn set_password(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_password(input);
            self
        }
        /// <p>The information about the identity of the user.</p>
        pub fn identity_info(mut self, input: crate::model::UserIdentityInfo) -> Self {
            self.inner = self.inner.identity_info(input);
            self
        }
        /// <p>The information about the identity of the user.</p>
        pub fn set_identity_info(
            mut self,
            input: std::option::Option<crate::model::UserIdentityInfo>,
        ) -> Self {
            self.inner = self.inner.set_identity_info(input);
            self
        }
        /// <p>The phone settings for the user.</p>
        pub fn phone_config(mut self, input: crate::model::UserPhoneConfig) -> Self {
            self.inner = self.inner.phone_config(input);
            self
        }
        /// <p>The phone settings for the user.</p>
        pub fn set_phone_config(
            mut self,
            input: std::option::Option<crate::model::UserPhoneConfig>,
        ) -> Self {
            self.inner = self.inner.set_phone_config(input);
            self
        }
        /// <p>The identifier of the user account in the directory used for identity management. If Amazon Connect cannot access the directory, you can specify this identifier to authenticate users. If you include the identifier, we assume that Amazon Connect cannot access the directory. Otherwise, the identity information is used to authenticate users from your directory.</p>
        /// <p>This parameter is required if you are using an existing directory for identity management in Amazon Connect when Amazon Connect cannot access your directory to authenticate users. If you are using SAML for identity management and include this parameter, an error is returned.</p>
        pub fn directory_user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.directory_user_id(input.into());
            self
        }
        /// <p>The identifier of the user account in the directory used for identity management. If Amazon Connect cannot access the directory, you can specify this identifier to authenticate users. If you include the identifier, we assume that Amazon Connect cannot access the directory. Otherwise, the identity information is used to authenticate users from your directory.</p>
        /// <p>This parameter is required if you are using an existing directory for identity management in Amazon Connect when Amazon Connect cannot access your directory to authenticate users. If you are using SAML for identity management and include this parameter, an error is returned.</p>
        pub fn set_directory_user_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_directory_user_id(input);
            self
        }
        /// Appends an item to `SecurityProfileIds`.
        ///
        /// To override the contents of this collection use [`set_security_profile_ids`](Self::set_security_profile_ids).
        ///
        /// <p>The identifier of the security profile for the user.</p>
        pub fn security_profile_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_profile_ids(input.into());
            self
        }
        /// <p>The identifier of the security profile for the user.</p>
        pub fn set_security_profile_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_security_profile_ids(input);
            self
        }
        /// <p>The identifier of the routing profile for the user.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile for the user.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// <p>The identifier of the hierarchy group for the user.</p>
        pub fn hierarchy_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hierarchy_group_id(input.into());
            self
        }
        /// <p>The identifier of the hierarchy group for the user.</p>
        pub fn set_hierarchy_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hierarchy_group_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateUserHierarchyGroup`.
    ///
    /// <p>Creates a new user hierarchy group.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateUserHierarchyGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_user_hierarchy_group_input::Builder,
    }
    impl CreateUserHierarchyGroup {
        /// Creates a new `CreateUserHierarchyGroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateUserHierarchyGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateUserHierarchyGroupError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateUserHierarchyGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateUserHierarchyGroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the user hierarchy group. Must not be more than 100 characters.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the user hierarchy group. Must not be more than 100 characters.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The identifier for the parent hierarchy group. The user hierarchy is created at level one if the parent group ID is null.</p>
        pub fn parent_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.parent_group_id(input.into());
            self
        }
        /// <p>The identifier for the parent hierarchy group. The user hierarchy is created at level one if the parent group ID is null.</p>
        pub fn set_parent_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_parent_group_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateVocabulary`.
    ///
    /// <p>Creates a custom vocabulary associated with your Amazon Connect instance. You can set a custom vocabulary to be your default vocabulary for a given language. Contact Lens for Amazon Connect uses the default vocabulary in post-call and real-time contact analysis sessions for that language.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateVocabulary {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_vocabulary_input::Builder,
    }
    impl CreateVocabulary {
        /// Creates a new `CreateVocabulary`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::CreateVocabulary,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateVocabularyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::CreateVocabularyOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateVocabularyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <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>. If a create request is received more than once with same client token, subsequent requests return the previous response without creating a vocabulary again.</p>
        pub fn client_token(mut self, input: impl 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>. If a create request is received more than once with same client token, subsequent requests return the previous response without creating a vocabulary again.</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>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A unique name of the custom vocabulary.</p>
        pub fn vocabulary_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vocabulary_name(input.into());
            self
        }
        /// <p>A unique name of the custom vocabulary.</p>
        pub fn set_vocabulary_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vocabulary_name(input);
            self
        }
        /// <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn language_code(mut self, input: crate::model::VocabularyLanguageCode) -> Self {
            self.inner = self.inner.language_code(input);
            self
        }
        /// <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn set_language_code(
            mut self,
            input: std::option::Option<crate::model::VocabularyLanguageCode>,
        ) -> Self {
            self.inner = self.inner.set_language_code(input);
            self
        }
        /// <p>The content of the custom vocabulary in plain-text format with a table of values. Each row in the table represents a word or a phrase, described with <code>Phrase</code>, <code>IPA</code>, <code>SoundsLike</code>, and <code>DisplayAs</code> fields. Separate the fields with TAB characters. The size limit is 50KB. For more information, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/custom-vocabulary.html#create-vocabulary-table">Create a custom vocabulary using a table</a>.</p>
        pub fn content(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.content(input.into());
            self
        }
        /// <p>The content of the custom vocabulary in plain-text format with a table of values. Each row in the table represents a word or a phrase, described with <code>Phrase</code>, <code>IPA</code>, <code>SoundsLike</code>, and <code>DisplayAs</code> fields. Separate the fields with TAB characters. The size limit is 50KB. For more information, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/custom-vocabulary.html#create-vocabulary-table">Create a custom vocabulary using a table</a>.</p>
        pub fn set_content(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_content(input);
            self
        }
        /// Adds a key-value pair to `Tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteContactFlow`.
    ///
    /// <p>Deletes a flow for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteContactFlow {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_contact_flow_input::Builder,
    }
    impl DeleteContactFlow {
        /// Creates a new `DeleteContactFlow`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteContactFlow,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteContactFlowError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteContactFlowOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteContactFlowError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteContactFlowModule`.
    ///
    /// <p>Deletes the specified flow module.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteContactFlowModule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_contact_flow_module_input::Builder,
    }
    impl DeleteContactFlowModule {
        /// Creates a new `DeleteContactFlowModule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteContactFlowModule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteContactFlowModuleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteContactFlowModuleOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteContactFlowModuleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow module.</p>
        pub fn contact_flow_module_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_module_id(input.into());
            self
        }
        /// <p>The identifier of the flow module.</p>
        pub fn set_contact_flow_module_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_module_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteHoursOfOperation`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Deletes an hours of operation.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteHoursOfOperation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_hours_of_operation_input::Builder,
    }
    impl DeleteHoursOfOperation {
        /// Creates a new `DeleteHoursOfOperation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteHoursOfOperation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteHoursOfOperationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteHoursOfOperationOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteHoursOfOperationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the hours of operation.</p>
        pub fn hours_of_operation_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hours_of_operation_id(input.into());
            self
        }
        /// <p>The identifier for the hours of operation.</p>
        pub fn set_hours_of_operation_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hours_of_operation_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteInstance`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Deletes the Amazon Connect instance.</p>
    /// <p>Amazon Connect enforces a limit on the total number of instances that you can create or delete in 30 days. If you exceed this limit, you will get an error message indicating there has been an excessive number of attempts at creating or deleting instances. You must wait 30 days before you can restart creating and deleting instances in your account.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteInstance {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_instance_input::Builder,
    }
    impl DeleteInstance {
        /// Creates a new `DeleteInstance`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteInstance,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteInstanceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteInstanceOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteInstanceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DeleteIntegrationAssociation`.
    ///
    /// <p>Deletes an Amazon Web Services resource association from an Amazon Connect instance. The association must not have any use cases associated with it.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteIntegrationAssociation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_integration_association_input::Builder,
    }
    impl DeleteIntegrationAssociation {
        /// Creates a new `DeleteIntegrationAssociation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteIntegrationAssociation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteIntegrationAssociationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteIntegrationAssociationOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteIntegrationAssociationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the integration association.</p>
        pub fn integration_association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.integration_association_id(input.into());
            self
        }
        /// <p>The identifier for the integration association.</p>
        pub fn set_integration_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_integration_association_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteQuickConnect`.
    ///
    /// <p>Deletes a quick connect.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteQuickConnect {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_quick_connect_input::Builder,
    }
    impl DeleteQuickConnect {
        /// Creates a new `DeleteQuickConnect`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteQuickConnect,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteQuickConnectError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteQuickConnectOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteQuickConnectError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the quick connect.</p>
        pub fn quick_connect_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_id(input.into());
            self
        }
        /// <p>The identifier for the quick connect.</p>
        pub fn set_quick_connect_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteRule`.
    ///
    /// <p>Deletes a rule for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteRule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_rule_input::Builder,
    }
    impl DeleteRule {
        /// Creates a new `DeleteRule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteRule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteRuleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteRuleOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteRuleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A unique identifier for the rule.</p>
        pub fn rule_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.rule_id(input.into());
            self
        }
        /// <p>A unique identifier for the rule.</p>
        pub fn set_rule_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_rule_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteSecurityProfile`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Deletes a security profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteSecurityProfile {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_security_profile_input::Builder,
    }
    impl DeleteSecurityProfile {
        /// Creates a new `DeleteSecurityProfile`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteSecurityProfile,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteSecurityProfileError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteSecurityProfileOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteSecurityProfileError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the security profle.</p>
        pub fn security_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_profile_id(input.into());
            self
        }
        /// <p>The identifier for the security profle.</p>
        pub fn set_security_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_security_profile_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteTaskTemplate`.
    ///
    /// <p>Deletes the task template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteTaskTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_task_template_input::Builder,
    }
    impl DeleteTaskTemplate {
        /// Creates a new `DeleteTaskTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteTaskTemplate,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteTaskTemplateError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteTaskTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteTaskTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A unique identifier for the task template.</p>
        pub fn task_template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.task_template_id(input.into());
            self
        }
        /// <p>A unique identifier for the task template.</p>
        pub fn set_task_template_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_task_template_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteTrafficDistributionGroup`.
    ///
    /// <p>Deletes a traffic distribution group. This API can be called only in the Region where the traffic distribution group is created.</p>
    /// <p>For more information about deleting traffic distribution groups, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/delete-traffic-distribution-groups.html">Delete traffic distribution groups</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteTrafficDistributionGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_traffic_distribution_group_input::Builder,
    }
    impl DeleteTrafficDistributionGroup {
        /// Creates a new `DeleteTrafficDistributionGroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteTrafficDistributionGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteTrafficDistributionGroupError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteTrafficDistributionGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteTrafficDistributionGroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
        pub fn traffic_distribution_group_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.traffic_distribution_group_id(input.into());
            self
        }
        /// <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
        pub fn set_traffic_distribution_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_traffic_distribution_group_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteUseCase`.
    ///
    /// <p>Deletes a use case from an integration association.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteUseCase {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_use_case_input::Builder,
    }
    impl DeleteUseCase {
        /// Creates a new `DeleteUseCase`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteUseCase,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteUseCaseError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteUseCaseOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteUseCaseError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the integration association.</p>
        pub fn integration_association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.integration_association_id(input.into());
            self
        }
        /// <p>The identifier for the integration association.</p>
        pub fn set_integration_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_integration_association_id(input);
            self
        }
        /// <p>The identifier for the use case.</p>
        pub fn use_case_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.use_case_id(input.into());
            self
        }
        /// <p>The identifier for the use case.</p>
        pub fn set_use_case_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_use_case_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteUser`.
    ///
    /// <p>Deletes a user account from the specified Amazon Connect instance.</p>
    /// <p>For information about what happens to a user's data when their account is deleted, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/delete-users.html">Delete Users from Your Amazon Connect Instance</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteUser {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_user_input::Builder,
    }
    impl DeleteUser {
        /// Creates a new `DeleteUser`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteUser,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteUserError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteUserOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteUserError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 user.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteUserHierarchyGroup`.
    ///
    /// <p>Deletes an existing user hierarchy group. It must not be associated with any agents or have any active child groups.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteUserHierarchyGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_user_hierarchy_group_input::Builder,
    }
    impl DeleteUserHierarchyGroup {
        /// Creates a new `DeleteUserHierarchyGroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteUserHierarchyGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteUserHierarchyGroupError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteUserHierarchyGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteUserHierarchyGroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn hierarchy_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hierarchy_group_id(input.into());
            self
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn set_hierarchy_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hierarchy_group_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DeleteVocabulary`.
    ///
    /// <p>Deletes the vocabulary that has the given identifier.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteVocabulary {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_vocabulary_input::Builder,
    }
    impl DeleteVocabulary {
        /// Creates a new `DeleteVocabulary`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DeleteVocabulary,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteVocabularyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DeleteVocabularyOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteVocabularyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 custom vocabulary.</p>
        pub fn vocabulary_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vocabulary_id(input.into());
            self
        }
        /// <p>The identifier of the custom vocabulary.</p>
        pub fn set_vocabulary_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vocabulary_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeAgentStatus`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Describes an agent status.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeAgentStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_agent_status_input::Builder,
    }
    impl DescribeAgentStatus {
        /// Creates a new `DescribeAgentStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeAgentStatus,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeAgentStatusError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeAgentStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeAgentStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the agent status.</p>
        pub fn agent_status_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.agent_status_id(input.into());
            self
        }
        /// <p>The identifier for the agent status.</p>
        pub fn set_agent_status_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_agent_status_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeContact`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Describes the specified contact. </p> <important>
    /// <p>Contact information remains available in Amazon Connect for 24 months, and then it is deleted.</p>
    /// <p>Only data from November 12, 2021, and later is returned by this API.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_contact_input::Builder,
    }
    impl DescribeContact {
        /// Creates a new `DescribeContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeContactOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeContactFlow`.
    ///
    /// <p>Describes the specified flow.</p>
    /// <p>You can also create and update flows using the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html">Amazon Connect Flow language</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeContactFlow {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_contact_flow_input::Builder,
    }
    impl DescribeContactFlow {
        /// Creates a new `DescribeContactFlow`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeContactFlow,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeContactFlowError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeContactFlowOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeContactFlowError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect 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 flow.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeContactFlowModule`.
    ///
    /// <p>Describes the specified flow module.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeContactFlowModule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_contact_flow_module_input::Builder,
    }
    impl DescribeContactFlowModule {
        /// Creates a new `DescribeContactFlowModule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeContactFlowModule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeContactFlowModuleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeContactFlowModuleOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeContactFlowModuleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow module.</p>
        pub fn contact_flow_module_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_module_id(input.into());
            self
        }
        /// <p>The identifier of the flow module.</p>
        pub fn set_contact_flow_module_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_module_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeHoursOfOperation`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Describes the hours of operation.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeHoursOfOperation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_hours_of_operation_input::Builder,
    }
    impl DescribeHoursOfOperation {
        /// Creates a new `DescribeHoursOfOperation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeHoursOfOperation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeHoursOfOperationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeHoursOfOperationOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeHoursOfOperationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the hours of operation.</p>
        pub fn hours_of_operation_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hours_of_operation_id(input.into());
            self
        }
        /// <p>The identifier for the hours of operation.</p>
        pub fn set_hours_of_operation_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hours_of_operation_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeInstance`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Returns the current state of the specified instance identifier. It tracks the instance while it is being created and returns an error status, if applicable. </p>
    /// <p>If an instance is not created successfully, the instance status reason field returns details relevant to the reason. The instance in a failed state is returned only for 24 hours after the CreateInstance API was invoked.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeInstance {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_instance_input::Builder,
    }
    impl DescribeInstance {
        /// Creates a new `DescribeInstance`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeInstance,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeInstanceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeInstanceOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeInstanceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DescribeInstanceAttribute`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Describes the specified instance attribute.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeInstanceAttribute {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_instance_attribute_input::Builder,
    }
    impl DescribeInstanceAttribute {
        /// Creates a new `DescribeInstanceAttribute`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeInstanceAttribute,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeInstanceAttributeError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeInstanceAttributeOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeInstanceAttributeError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 type of attribute.</p>
        pub fn attribute_type(mut self, input: crate::model::InstanceAttributeType) -> Self {
            self.inner = self.inner.attribute_type(input);
            self
        }
        /// <p>The type of attribute.</p>
        pub fn set_attribute_type(
            mut self,
            input: std::option::Option<crate::model::InstanceAttributeType>,
        ) -> Self {
            self.inner = self.inner.set_attribute_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeInstanceStorageConfig`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Retrieves the current storage configurations for the specified resource type, association ID, and instance ID.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeInstanceStorageConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_instance_storage_config_input::Builder,
    }
    impl DescribeInstanceStorageConfig {
        /// Creates a new `DescribeInstanceStorageConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeInstanceStorageConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeInstanceStorageConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeInstanceStorageConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeInstanceStorageConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.association_id(input.into());
            self
        }
        /// <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn set_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_association_id(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn resource_type(mut self, input: crate::model::InstanceStorageResourceType) -> Self {
            self.inner = self.inner.resource_type(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn set_resource_type(
            mut self,
            input: std::option::Option<crate::model::InstanceStorageResourceType>,
        ) -> Self {
            self.inner = self.inner.set_resource_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribePhoneNumber`.
    ///
    /// <p>Gets details and status of a phone number that’s claimed to your Amazon Connect instance or traffic distribution group.</p> <important>
    /// <p>If the number is claimed to a traffic distribution group, and you are calling in the Amazon Web Services Region where the traffic distribution group was created, you can use either a phone number ARN or UUID value for the <code>PhoneNumberId</code> URI request parameter. However, if the number is claimed to a traffic distribution group and you are calling this API in the alternate Amazon Web Services Region associated with the traffic distribution group, you must provide a full phone number ARN. If a UUID is provided in this scenario, you will receive a <code>ResourceNotFoundException</code>.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribePhoneNumber {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_phone_number_input::Builder,
    }
    impl DescribePhoneNumber {
        /// Creates a new `DescribePhoneNumber`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribePhoneNumber,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribePhoneNumberError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribePhoneNumberOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribePhoneNumberError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn phone_number_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_id(input.into());
            self
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn set_phone_number_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeQueue`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Describes the specified queue.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeQueue {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_queue_input::Builder,
    }
    impl DescribeQueue {
        /// Creates a new `DescribeQueue`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeQueue,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeQueueError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeQueueOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeQueueError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeQuickConnect`.
    ///
    /// <p>Describes the quick connect.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeQuickConnect {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_quick_connect_input::Builder,
    }
    impl DescribeQuickConnect {
        /// Creates a new `DescribeQuickConnect`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeQuickConnect,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeQuickConnectError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeQuickConnectOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeQuickConnectError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the quick connect.</p>
        pub fn quick_connect_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_id(input.into());
            self
        }
        /// <p>The identifier for the quick connect.</p>
        pub fn set_quick_connect_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeRoutingProfile`.
    ///
    /// <p>Describes the specified routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeRoutingProfile {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_routing_profile_input::Builder,
    }
    impl DescribeRoutingProfile {
        /// Creates a new `DescribeRoutingProfile`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeRoutingProfile,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeRoutingProfileError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeRoutingProfileOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeRoutingProfileError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeRule`.
    ///
    /// <p>Describes a rule for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeRule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_rule_input::Builder,
    }
    impl DescribeRule {
        /// Creates a new `DescribeRule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeRule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeRuleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeRuleOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeRuleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A unique identifier for the rule.</p>
        pub fn rule_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.rule_id(input.into());
            self
        }
        /// <p>A unique identifier for the rule.</p>
        pub fn set_rule_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_rule_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeSecurityProfile`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Gets basic information about the security profle.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeSecurityProfile {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_security_profile_input::Builder,
    }
    impl DescribeSecurityProfile {
        /// Creates a new `DescribeSecurityProfile`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeSecurityProfile,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeSecurityProfileError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeSecurityProfileOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeSecurityProfileError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier for the security profle.</p>
        pub fn security_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_profile_id(input.into());
            self
        }
        /// <p>The identifier for the security profle.</p>
        pub fn set_security_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_security_profile_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DescribeTrafficDistributionGroup`.
    ///
    /// <p>Gets details and status of a traffic distribution group.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeTrafficDistributionGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_traffic_distribution_group_input::Builder,
    }
    impl DescribeTrafficDistributionGroup {
        /// Creates a new `DescribeTrafficDistributionGroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeTrafficDistributionGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeTrafficDistributionGroupError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeTrafficDistributionGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeTrafficDistributionGroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
        pub fn traffic_distribution_group_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.traffic_distribution_group_id(input.into());
            self
        }
        /// <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
        pub fn set_traffic_distribution_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_traffic_distribution_group_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeUser`.
    ///
    /// <p>Describes the specified user account. You can find the instance ID in the console (it’s the final part of the ARN). The console does not display the user IDs. Instead, list the users and note the IDs provided in the output.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeUser {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_user_input::Builder,
    }
    impl DescribeUser {
        /// Creates a new `DescribeUser`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeUser,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeUserError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeUserOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeUserError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DescribeUserHierarchyGroup`.
    ///
    /// <p>Describes the specified hierarchy group.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeUserHierarchyGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_user_hierarchy_group_input::Builder,
    }
    impl DescribeUserHierarchyGroup {
        /// Creates a new `DescribeUserHierarchyGroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeUserHierarchyGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeUserHierarchyGroupError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeUserHierarchyGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeUserHierarchyGroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn hierarchy_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hierarchy_group_id(input.into());
            self
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn set_hierarchy_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hierarchy_group_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DescribeUserHierarchyStructure`.
    ///
    /// <p>Describes the hierarchy structure of the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeUserHierarchyStructure {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_user_hierarchy_structure_input::Builder,
    }
    impl DescribeUserHierarchyStructure {
        /// Creates a new `DescribeUserHierarchyStructure`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeUserHierarchyStructure,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeUserHierarchyStructureError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeUserHierarchyStructureOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeUserHierarchyStructureError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DescribeVocabulary`.
    ///
    /// <p>Describes the specified vocabulary.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeVocabulary {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_vocabulary_input::Builder,
    }
    impl DescribeVocabulary {
        /// Creates a new `DescribeVocabulary`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DescribeVocabulary,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeVocabularyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DescribeVocabularyOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeVocabularyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 custom vocabulary.</p>
        pub fn vocabulary_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vocabulary_id(input.into());
            self
        }
        /// <p>The identifier of the custom vocabulary.</p>
        pub fn set_vocabulary_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_vocabulary_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateApprovedOrigin`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Revokes access to integrated applications from Amazon Connect.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateApprovedOrigin {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_approved_origin_input::Builder,
    }
    impl DisassociateApprovedOrigin {
        /// Creates a new `DisassociateApprovedOrigin`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateApprovedOrigin,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateApprovedOriginError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateApprovedOriginOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateApprovedOriginError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 domain URL of the integrated application.</p>
        pub fn origin(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.origin(input.into());
            self
        }
        /// <p>The domain URL of the integrated application.</p>
        pub fn set_origin(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_origin(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateBot`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Revokes authorization from the specified instance to access the specified Amazon Lex or Amazon Lex V2 bot. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateBot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_bot_input::Builder,
    }
    impl DisassociateBot {
        /// Creates a new `DisassociateBot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateBot,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateBotError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateBotOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateBotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>Configuration information of an Amazon Lex bot.</p>
        pub fn lex_bot(mut self, input: crate::model::LexBot) -> Self {
            self.inner = self.inner.lex_bot(input);
            self
        }
        /// <p>Configuration information of an Amazon Lex bot.</p>
        pub fn set_lex_bot(mut self, input: std::option::Option<crate::model::LexBot>) -> Self {
            self.inner = self.inner.set_lex_bot(input);
            self
        }
        /// <p>The Amazon Lex V2 bot to disassociate from the instance.</p>
        pub fn lex_v2_bot(mut self, input: crate::model::LexV2Bot) -> Self {
            self.inner = self.inner.lex_v2_bot(input);
            self
        }
        /// <p>The Amazon Lex V2 bot to disassociate from the instance.</p>
        pub fn set_lex_v2_bot(
            mut self,
            input: std::option::Option<crate::model::LexV2Bot>,
        ) -> Self {
            self.inner = self.inner.set_lex_v2_bot(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateInstanceStorageConfig`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Removes the storage type configurations for the specified resource type and association ID.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateInstanceStorageConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_instance_storage_config_input::Builder,
    }
    impl DisassociateInstanceStorageConfig {
        /// Creates a new `DisassociateInstanceStorageConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateInstanceStorageConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateInstanceStorageConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateInstanceStorageConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateInstanceStorageConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.association_id(input.into());
            self
        }
        /// <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn set_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_association_id(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn resource_type(mut self, input: crate::model::InstanceStorageResourceType) -> Self {
            self.inner = self.inner.resource_type(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn set_resource_type(
            mut self,
            input: std::option::Option<crate::model::InstanceStorageResourceType>,
        ) -> Self {
            self.inner = self.inner.set_resource_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateLambdaFunction`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Remove the Lambda function from the dropdown options available in the relevant flow blocks.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateLambdaFunction {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_lambda_function_input::Builder,
    }
    impl DisassociateLambdaFunction {
        /// Creates a new `DisassociateLambdaFunction`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateLambdaFunction,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateLambdaFunctionError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateLambdaFunctionOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateLambdaFunctionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance..</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 Amazon Resource Name (ARN) of the Lambda function being disassociated.</p>
        pub fn function_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.function_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Lambda function being disassociated.</p>
        pub fn set_function_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_function_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateLexBot`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Revokes authorization from the specified instance to access the specified Amazon Lex bot.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateLexBot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_lex_bot_input::Builder,
    }
    impl DisassociateLexBot {
        /// Creates a new `DisassociateLexBot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateLexBot,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateLexBotError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateLexBotOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateLexBotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the Amazon Lex bot. Maximum character limit of 50.</p>
        pub fn bot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.bot_name(input.into());
            self
        }
        /// <p>The name of the Amazon Lex bot. Maximum character limit of 50.</p>
        pub fn set_bot_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_bot_name(input);
            self
        }
        /// <p>The Amazon Web Services Region in which the Amazon Lex bot has been created.</p>
        pub fn lex_region(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.lex_region(input.into());
            self
        }
        /// <p>The Amazon Web Services Region in which the Amazon Lex bot has been created.</p>
        pub fn set_lex_region(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_lex_region(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociatePhoneNumberContactFlow`.
    ///
    /// <p>Removes the flow association from a phone number claimed to your Amazon Connect instance.</p> <important>
    /// <p>If the number is claimed to a traffic distribution group, and you are calling this API using an instance in the Amazon Web Services Region where the traffic distribution group was created, you can use either a full phone number ARN or UUID value for the <code>PhoneNumberId</code> URI request parameter. However, if the number is claimed to a traffic distribution group and you are calling this API using an instance in the alternate Amazon Web Services Region associated with the traffic distribution group, you must provide a full phone number ARN. If a UUID is provided in this scenario, you will receive a <code>ResourceNotFoundException</code>.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociatePhoneNumberContactFlow {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_phone_number_contact_flow_input::Builder,
    }
    impl DisassociatePhoneNumberContactFlow {
        /// Creates a new `DisassociatePhoneNumberContactFlow`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociatePhoneNumberContactFlow,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<
                crate::error::DisassociatePhoneNumberContactFlowError,
            >,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociatePhoneNumberContactFlowOutput,
            aws_smithy_http::result::SdkError<
                crate::error::DisassociatePhoneNumberContactFlowError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn phone_number_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_id(input.into());
            self
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn set_phone_number_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `DisassociateQueueQuickConnects`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Disassociates a set of quick connects from a queue.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateQueueQuickConnects {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_queue_quick_connects_input::Builder,
    }
    impl DisassociateQueueQuickConnects {
        /// Creates a new `DisassociateQueueQuickConnects`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateQueueQuickConnects,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateQueueQuickConnectsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateQueueQuickConnectsOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateQueueQuickConnectsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// Appends an item to `QuickConnectIds`.
        ///
        /// To override the contents of this collection use [`set_quick_connect_ids`](Self::set_quick_connect_ids).
        ///
        /// <p>The quick connects to disassociate from the queue.</p>
        pub fn quick_connect_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_ids(input.into());
            self
        }
        /// <p>The quick connects to disassociate from the queue.</p>
        pub fn set_quick_connect_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_ids(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateRoutingProfileQueues`.
    ///
    /// <p>Disassociates a set of queues from a routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateRoutingProfileQueues {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_routing_profile_queues_input::Builder,
    }
    impl DisassociateRoutingProfileQueues {
        /// Creates a new `DisassociateRoutingProfileQueues`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateRoutingProfileQueues,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateRoutingProfileQueuesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateRoutingProfileQueuesOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateRoutingProfileQueuesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// Appends an item to `QueueReferences`.
        ///
        /// To override the contents of this collection use [`set_queue_references`](Self::set_queue_references).
        ///
        /// <p>The queues to disassociate from this routing profile.</p>
        pub fn queue_references(
            mut self,
            input: crate::model::RoutingProfileQueueReference,
        ) -> Self {
            self.inner = self.inner.queue_references(input);
            self
        }
        /// <p>The queues to disassociate from this routing profile.</p>
        pub fn set_queue_references(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RoutingProfileQueueReference>>,
        ) -> Self {
            self.inner = self.inner.set_queue_references(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DisassociateSecurityKey`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Deletes the specified security key.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DisassociateSecurityKey {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::disassociate_security_key_input::Builder,
    }
    impl DisassociateSecurityKey {
        /// Creates a new `DisassociateSecurityKey`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DisassociateSecurityKey,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DisassociateSecurityKeyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DisassociateSecurityKeyOutput,
            aws_smithy_http::result::SdkError<crate::error::DisassociateSecurityKeyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.association_id(input.into());
            self
        }
        /// <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn set_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_association_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DismissUserContact`.
    ///
    /// <p>Dismisses contacts from an agent’s CCP and returns the agent to an available state, which allows the agent to receive a new routed contact. Contacts can only be dismissed if they are in a <code>MISSED</code>, <code>ERROR</code>, <code>ENDED</code>, or <code>REJECTED</code> state in the <a href="https://docs.aws.amazon.com/connect/latest/adminguide/about-contact-states.html">Agent Event Stream</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DismissUserContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::dismiss_user_contact_input::Builder,
    }
    impl DismissUserContact {
        /// Creates a new `DismissUserContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::DismissUserContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DismissUserContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::DismissUserContactOutput,
            aws_smithy_http::result::SdkError<crate::error::DismissUserContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetContactAttributes`.
    ///
    /// <p>Retrieves the contact attributes for the specified contact.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetContactAttributes {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_contact_attributes_input::Builder,
    }
    impl GetContactAttributes {
        /// Creates a new `GetContactAttributes`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetContactAttributes,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetContactAttributesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::GetContactAttributesOutput,
            aws_smithy_http::result::SdkError<crate::error::GetContactAttributesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect 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 initial contact.</p>
        pub fn initial_contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.initial_contact_id(input.into());
            self
        }
        /// <p>The identifier of the initial contact.</p>
        pub fn set_initial_contact_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_initial_contact_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetCurrentMetricData`.
    ///
    /// <p>Gets the real-time metric data from the specified Amazon Connect instance.</p>
    /// <p>For a description of each metric, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html">Real-time Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetCurrentMetricData {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_current_metric_data_input::Builder,
    }
    impl GetCurrentMetricData {
        /// Creates a new `GetCurrentMetricData`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetCurrentMetricData,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetCurrentMetricDataError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::GetCurrentMetricDataOutput,
            aws_smithy_http::result::SdkError<crate::error::GetCurrentMetricDataError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::GetCurrentMetricDataPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::GetCurrentMetricDataPaginator {
            crate::paginator::GetCurrentMetricDataPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 filters to apply to returned metrics. You can filter up to the following limits:</p>
        /// <ul>
        /// <li> <p>Queues: 100</p> </li>
        /// <li> <p>Routing profiles: 100</p> </li>
        /// <li> <p>Channels: 3 (VOICE, CHAT, and TASK channels are supported.)</p> </li>
        /// </ul>
        /// <p>Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request. </p>
        /// <p>Currently tagging is only supported on the resources that are passed in the filter.</p>
        pub fn filters(mut self, input: crate::model::Filters) -> Self {
            self.inner = self.inner.filters(input);
            self
        }
        /// <p>The filters to apply to returned metrics. You can filter up to the following limits:</p>
        /// <ul>
        /// <li> <p>Queues: 100</p> </li>
        /// <li> <p>Routing profiles: 100</p> </li>
        /// <li> <p>Channels: 3 (VOICE, CHAT, and TASK channels are supported.)</p> </li>
        /// </ul>
        /// <p>Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request. </p>
        /// <p>Currently tagging is only supported on the resources that are passed in the filter.</p>
        pub fn set_filters(mut self, input: std::option::Option<crate::model::Filters>) -> Self {
            self.inner = self.inner.set_filters(input);
            self
        }
        /// Appends an item to `Groupings`.
        ///
        /// To override the contents of this collection use [`set_groupings`](Self::set_groupings).
        ///
        /// <p>The grouping applied to the metrics returned. For example, when grouped by <code>QUEUE</code>, the metrics returned apply to each queue rather than aggregated for all queues. </p>
        /// <ul>
        /// <li> <p>If you group by <code>CHANNEL</code>, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.</p> </li>
        /// <li> <p>If you group by <code>ROUTING_PROFILE</code>, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics <code>CONTACTS_SCHEDULED</code>, <code>CONTACTS_IN_QUEUE</code>, and <code> OLDEST_CONTACT_AGE</code>.</p> </li>
        /// <li> <p>If no <code>Grouping</code> is included in the request, a summary of metrics is returned.</p> </li>
        /// </ul>
        pub fn groupings(mut self, input: crate::model::Grouping) -> Self {
            self.inner = self.inner.groupings(input);
            self
        }
        /// <p>The grouping applied to the metrics returned. For example, when grouped by <code>QUEUE</code>, the metrics returned apply to each queue rather than aggregated for all queues. </p>
        /// <ul>
        /// <li> <p>If you group by <code>CHANNEL</code>, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.</p> </li>
        /// <li> <p>If you group by <code>ROUTING_PROFILE</code>, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics <code>CONTACTS_SCHEDULED</code>, <code>CONTACTS_IN_QUEUE</code>, and <code> OLDEST_CONTACT_AGE</code>.</p> </li>
        /// <li> <p>If no <code>Grouping</code> is included in the request, a summary of metrics is returned.</p> </li>
        /// </ul>
        pub fn set_groupings(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Grouping>>,
        ) -> Self {
            self.inner = self.inner.set_groupings(input);
            self
        }
        /// Appends an item to `CurrentMetrics`.
        ///
        /// To override the contents of this collection use [`set_current_metrics`](Self::set_current_metrics).
        ///
        /// <p>The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html">Real-time Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
        /// <dl>
        /// <dt>
        /// AGENTS_AFTER_CONTACT_WORK
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#aftercallwork-real-time">ACW</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_AVAILABLE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#available-real-time">Available</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ERROR
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#error-real-time">Error</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_NON_PRODUCTIVE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#non-productive-time-real-time">NPT (Non-Productive Time)</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ON_CALL
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time">On contact</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ON_CONTACT
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time">On contact</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ONLINE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#online-real-time">Online</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_STAFFED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#staffed-real-time">Staffed</a> </p>
        /// </dd>
        /// <dt>
        /// CONTACTS_IN_QUEUE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#in-queue-real-time">In queue</a> </p>
        /// </dd>
        /// <dt>
        /// CONTACTS_SCHEDULED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#scheduled-real-time">Scheduled</a> </p>
        /// </dd>
        /// <dt>
        /// OLDEST_CONTACT_AGE
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>When you use groupings, Unit says SECONDS and the Value is returned in SECONDS. </p>
        /// <p>When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:</p>
        /// <p> <code>{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 </code>}</p>
        /// <p>The actual OLDEST_CONTACT_AGE is 24 seconds.</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#oldest-real-time">Oldest</a> </p>
        /// </dd>
        /// <dt>
        /// SLOTS_ACTIVE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#active-real-time">Active</a> </p>
        /// </dd>
        /// <dt>
        /// SLOTS_AVAILABLE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#availability-real-time">Availability</a> </p>
        /// </dd>
        /// </dl>
        pub fn current_metrics(mut self, input: crate::model::CurrentMetric) -> Self {
            self.inner = self.inner.current_metrics(input);
            self
        }
        /// <p>The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html">Real-time Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
        /// <dl>
        /// <dt>
        /// AGENTS_AFTER_CONTACT_WORK
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#aftercallwork-real-time">ACW</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_AVAILABLE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#available-real-time">Available</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ERROR
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#error-real-time">Error</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_NON_PRODUCTIVE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#non-productive-time-real-time">NPT (Non-Productive Time)</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ON_CALL
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time">On contact</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ON_CONTACT
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#on-call-real-time">On contact</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_ONLINE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#online-real-time">Online</a> </p>
        /// </dd>
        /// <dt>
        /// AGENTS_STAFFED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#staffed-real-time">Staffed</a> </p>
        /// </dd>
        /// <dt>
        /// CONTACTS_IN_QUEUE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#in-queue-real-time">In queue</a> </p>
        /// </dd>
        /// <dt>
        /// CONTACTS_SCHEDULED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#scheduled-real-time">Scheduled</a> </p>
        /// </dd>
        /// <dt>
        /// OLDEST_CONTACT_AGE
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>When you use groupings, Unit says SECONDS and the Value is returned in SECONDS. </p>
        /// <p>When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:</p>
        /// <p> <code>{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 </code>}</p>
        /// <p>The actual OLDEST_CONTACT_AGE is 24 seconds.</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#oldest-real-time">Oldest</a> </p>
        /// </dd>
        /// <dt>
        /// SLOTS_ACTIVE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#active-real-time">Active</a> </p>
        /// </dd>
        /// <dt>
        /// SLOTS_AVAILABLE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Name in real-time metrics report: <a href="https://docs.aws.amazon.com/connect/latest/adminguide/real-time-metrics-definitions.html#availability-real-time">Availability</a> </p>
        /// </dd>
        /// </dl>
        pub fn set_current_metrics(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::CurrentMetric>>,
        ) -> Self {
            self.inner = self.inner.set_current_metrics(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        /// <p>The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        /// <p>The token expires after 5 minutes from the time it is created. Subsequent requests that use the token must use the same request parameters as the request that generated the token.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// Appends an item to `SortCriteria`.
        ///
        /// To override the contents of this collection use [`set_sort_criteria`](Self::set_sort_criteria).
        ///
        /// <p>The way to sort the resulting response based on metrics. You can enter one sort criteria. By default resources are sorted based on <code>AGENTS_ONLINE</code>, <code>DESCENDING</code>. The metric collection is sorted based on the input metrics.</p>
        /// <p>Note the following:</p>
        /// <ul>
        /// <li> <p>Sorting on <code>SLOTS_ACTIVE</code> and <code>SLOTS_AVAILABLE</code> is not supported.</p> </li>
        /// </ul>
        pub fn sort_criteria(mut self, input: crate::model::CurrentMetricSortCriteria) -> Self {
            self.inner = self.inner.sort_criteria(input);
            self
        }
        /// <p>The way to sort the resulting response based on metrics. You can enter one sort criteria. By default resources are sorted based on <code>AGENTS_ONLINE</code>, <code>DESCENDING</code>. The metric collection is sorted based on the input metrics.</p>
        /// <p>Note the following:</p>
        /// <ul>
        /// <li> <p>Sorting on <code>SLOTS_ACTIVE</code> and <code>SLOTS_AVAILABLE</code> is not supported.</p> </li>
        /// </ul>
        pub fn set_sort_criteria(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::CurrentMetricSortCriteria>>,
        ) -> Self {
            self.inner = self.inner.set_sort_criteria(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetCurrentUserData`.
    ///
    /// <p>Gets the real-time active user data from the specified Amazon Connect instance. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetCurrentUserData {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_current_user_data_input::Builder,
    }
    impl GetCurrentUserData {
        /// Creates a new `GetCurrentUserData`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetCurrentUserData,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetCurrentUserDataError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::GetCurrentUserDataOutput,
            aws_smithy_http::result::SdkError<crate::error::GetCurrentUserDataError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::GetCurrentUserDataPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::GetCurrentUserDataPaginator {
            crate::paginator::GetCurrentUserDataPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 filters to apply to returned user data. You can filter up to the following limits:</p>
        /// <ul>
        /// <li> <p>Queues: 100</p> </li>
        /// <li> <p>Routing profiles: 100</p> </li>
        /// <li> <p>Agents: 100</p> </li>
        /// <li> <p>Contact states: 9</p> </li>
        /// <li> <p>User hierarchy groups: 1</p> </li>
        /// </ul>
        /// <p> The user data is retrieved for only the specified values/resources in the filter. A maximum of one filter can be passed from queues, routing profiles, agents, and user hierarchy groups. </p>
        /// <p>Currently tagging is only supported on the resources that are passed in the filter.</p>
        pub fn filters(mut self, input: crate::model::UserDataFilters) -> Self {
            self.inner = self.inner.filters(input);
            self
        }
        /// <p>The filters to apply to returned user data. You can filter up to the following limits:</p>
        /// <ul>
        /// <li> <p>Queues: 100</p> </li>
        /// <li> <p>Routing profiles: 100</p> </li>
        /// <li> <p>Agents: 100</p> </li>
        /// <li> <p>Contact states: 9</p> </li>
        /// <li> <p>User hierarchy groups: 1</p> </li>
        /// </ul>
        /// <p> The user data is retrieved for only the specified values/resources in the filter. A maximum of one filter can be passed from queues, routing profiles, agents, and user hierarchy groups. </p>
        /// <p>Currently tagging is only supported on the resources that are passed in the filter.</p>
        pub fn set_filters(
            mut self,
            input: std::option::Option<crate::model::UserDataFilters>,
        ) -> Self {
            self.inner = self.inner.set_filters(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetFederationToken`.
    ///
    /// <p>Retrieves a token for federation.</p> <note>
    /// <p>This API doesn't support root users. If you try to invoke GetFederationToken with root credentials, an error message similar to the following one appears: </p>
    /// <p> <code>Provided identity: Principal: .... User: .... cannot be used for federation with Amazon Connect</code> </p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetFederationToken {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_federation_token_input::Builder,
    }
    impl GetFederationToken {
        /// Creates a new `GetFederationToken`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetFederationToken,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetFederationTokenError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::GetFederationTokenOutput,
            aws_smithy_http::result::SdkError<crate::error::GetFederationTokenError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `GetMetricData`.
    ///
    /// <p>Gets historical metric data from the specified Amazon Connect instance.</p>
    /// <p>For a description of each historical metric, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html">Historical Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetMetricData {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_metric_data_input::Builder,
    }
    impl GetMetricData {
        /// Creates a new `GetMetricData`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetMetricData,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetMetricDataError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::GetMetricDataOutput,
            aws_smithy_http::result::SdkError<crate::error::GetMetricDataError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::GetMetricDataPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::GetMetricDataPaginator {
            crate::paginator::GetMetricDataPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 timestamp, in UNIX Epoch time format, at which to start the reporting interval for the retrieval of historical metrics data. The time must be specified using a multiple of 5 minutes, such as 10:05, 10:10, 10:15.</p>
        /// <p>The start time cannot be earlier than 24 hours before the time of the request. Historical metrics are available only for 24 hours.</p>
        pub fn start_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.start_time(input);
            self
        }
        /// <p>The timestamp, in UNIX Epoch time format, at which to start the reporting interval for the retrieval of historical metrics data. The time must be specified using a multiple of 5 minutes, such as 10:05, 10:10, 10:15.</p>
        /// <p>The start time cannot be earlier than 24 hours before the time of the request. Historical metrics are available only for 24 hours.</p>
        pub fn set_start_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_start_time(input);
            self
        }
        /// <p>The timestamp, in UNIX Epoch time format, at which to end the reporting interval for the retrieval of historical metrics data. The time must be specified using an interval of 5 minutes, such as 11:00, 11:05, 11:10, and must be later than the start time timestamp.</p>
        /// <p>The time range between the start and end time must be less than 24 hours.</p>
        pub fn end_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.end_time(input);
            self
        }
        /// <p>The timestamp, in UNIX Epoch time format, at which to end the reporting interval for the retrieval of historical metrics data. The time must be specified using an interval of 5 minutes, such as 11:00, 11:05, 11:10, and must be later than the start time timestamp.</p>
        /// <p>The time range between the start and end time must be less than 24 hours.</p>
        pub fn set_end_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_end_time(input);
            self
        }
        /// <p>The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.</p> <note>
        /// <p>To filter by <code>Queues</code>, enter the queue ID/ARN, not the name of the queue.</p>
        /// </note>
        pub fn filters(mut self, input: crate::model::Filters) -> Self {
            self.inner = self.inner.filters(input);
            self
        }
        /// <p>The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.</p> <note>
        /// <p>To filter by <code>Queues</code>, enter the queue ID/ARN, not the name of the queue.</p>
        /// </note>
        pub fn set_filters(mut self, input: std::option::Option<crate::model::Filters>) -> Self {
            self.inner = self.inner.set_filters(input);
            self
        }
        /// Appends an item to `Groupings`.
        ///
        /// To override the contents of this collection use [`set_groupings`](Self::set_groupings).
        ///
        /// <p>The grouping applied to the metrics returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values returned apply to the metrics for each queue rather than aggregated for all queues.</p>
        /// <p>If no grouping is specified, a summary of metrics for all queues is returned.</p>
        pub fn groupings(mut self, input: crate::model::Grouping) -> Self {
            self.inner = self.inner.groupings(input);
            self
        }
        /// <p>The grouping applied to the metrics returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values returned apply to the metrics for each queue rather than aggregated for all queues.</p>
        /// <p>If no grouping is specified, a summary of metrics for all queues is returned.</p>
        pub fn set_groupings(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Grouping>>,
        ) -> Self {
            self.inner = self.inner.set_groupings(input);
            self
        }
        /// Appends an item to `HistoricalMetrics`.
        ///
        /// To override the contents of this collection use [`set_historical_metrics`](Self::set_historical_metrics).
        ///
        /// <p>The metrics to retrieve. Specify the name, unit, and statistic for each metric. The following historical metrics are available. For a description of each metric, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html">Historical Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p> <note>
        /// <p>This API does not support a contacts incoming metric (there's no CONTACTS_INCOMING metric missing from the documented list). </p>
        /// </note>
        /// <dl>
        /// <dt>
        /// ABANDON_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// AFTER_CONTACT_WORK_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// API_CONTACTS_HANDLED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CALLBACK_CONTACTS_HANDLED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_ABANDONED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_AGENT_HUNG_UP_FIRST
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_CONSULTED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HANDLED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HANDLED_INCOMING
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HANDLED_OUTBOUND
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HOLD_ABANDONS
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_MISSED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_QUEUED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_IN
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_IN_FROM_QUEUE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_OUT
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_OUT_FROM_QUEUE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// HANDLE_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// HOLD_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// INTERACTION_AND_HOLD_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// INTERACTION_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// OCCUPANCY
        /// </dt>
        /// <dd>
        /// <p>Unit: PERCENT</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// QUEUE_ANSWER_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// QUEUED_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: MAX</p>
        /// </dd>
        /// <dt>
        /// SERVICE_LEVEL
        /// </dt>
        /// <dd>
        /// <p>You can include up to 20 SERVICE_LEVEL metrics in a request.</p>
        /// <p>Unit: PERCENT</p>
        /// <p>Statistic: AVG</p>
        /// <p>Threshold: For <code>ThresholdValue</code>, enter any whole number from 1 to 604800 (inclusive), in seconds. For <code>Comparison</code>, you must enter <code>LT</code> (for "Less than"). </p>
        /// </dd>
        /// </dl>
        pub fn historical_metrics(mut self, input: crate::model::HistoricalMetric) -> Self {
            self.inner = self.inner.historical_metrics(input);
            self
        }
        /// <p>The metrics to retrieve. Specify the name, unit, and statistic for each metric. The following historical metrics are available. For a description of each metric, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html">Historical Metrics Definitions</a> in the <i>Amazon Connect Administrator Guide</i>.</p> <note>
        /// <p>This API does not support a contacts incoming metric (there's no CONTACTS_INCOMING metric missing from the documented list). </p>
        /// </note>
        /// <dl>
        /// <dt>
        /// ABANDON_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// AFTER_CONTACT_WORK_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// API_CONTACTS_HANDLED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CALLBACK_CONTACTS_HANDLED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_ABANDONED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_AGENT_HUNG_UP_FIRST
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_CONSULTED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HANDLED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HANDLED_INCOMING
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HANDLED_OUTBOUND
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_HOLD_ABANDONS
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_MISSED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_QUEUED
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_IN
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_IN_FROM_QUEUE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_OUT
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// CONTACTS_TRANSFERRED_OUT_FROM_QUEUE
        /// </dt>
        /// <dd>
        /// <p>Unit: COUNT</p>
        /// <p>Statistic: SUM</p>
        /// </dd>
        /// <dt>
        /// HANDLE_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// HOLD_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// INTERACTION_AND_HOLD_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// INTERACTION_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// OCCUPANCY
        /// </dt>
        /// <dd>
        /// <p>Unit: PERCENT</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// QUEUE_ANSWER_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: AVG</p>
        /// </dd>
        /// <dt>
        /// QUEUED_TIME
        /// </dt>
        /// <dd>
        /// <p>Unit: SECONDS</p>
        /// <p>Statistic: MAX</p>
        /// </dd>
        /// <dt>
        /// SERVICE_LEVEL
        /// </dt>
        /// <dd>
        /// <p>You can include up to 20 SERVICE_LEVEL metrics in a request.</p>
        /// <p>Unit: PERCENT</p>
        /// <p>Statistic: AVG</p>
        /// <p>Threshold: For <code>ThresholdValue</code>, enter any whole number from 1 to 604800 (inclusive), in seconds. For <code>Comparison</code>, you must enter <code>LT</code> (for "Less than"). </p>
        /// </dd>
        /// </dl>
        pub fn set_historical_metrics(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::HistoricalMetric>>,
        ) -> Self {
            self.inner = self.inner.set_historical_metrics(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetTaskTemplate`.
    ///
    /// <p>Gets details about a specific task template in the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetTaskTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_task_template_input::Builder,
    }
    impl GetTaskTemplate {
        /// Creates a new `GetTaskTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetTaskTemplate,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetTaskTemplateError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::GetTaskTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::GetTaskTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A unique identifier for the task template.</p>
        pub fn task_template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.task_template_id(input.into());
            self
        }
        /// <p>A unique identifier for the task template.</p>
        pub fn set_task_template_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_task_template_id(input);
            self
        }
        /// <p>The system generated version of a task template that is associated with a task, when the task is created.</p>
        pub fn snapshot_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_version(input.into());
            self
        }
        /// <p>The system generated version of a task template that is associated with a task, when the task is created.</p>
        pub fn set_snapshot_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetTrafficDistribution`.
    ///
    /// <p>Retrieves the current traffic distribution for a given traffic distribution group.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetTrafficDistribution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_traffic_distribution_input::Builder,
    }
    impl GetTrafficDistribution {
        /// Creates a new `GetTrafficDistribution`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::GetTrafficDistribution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetTrafficDistributionError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::GetTrafficDistributionOutput,
            aws_smithy_http::result::SdkError<crate::error::GetTrafficDistributionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the traffic distribution group.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.id(input.into());
            self
        }
        /// <p>The identifier of the traffic distribution group.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListAgentStatuses`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Lists agent statuses.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListAgentStatuses {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_agent_statuses_input::Builder,
    }
    impl ListAgentStatuses {
        /// Creates a new `ListAgentStatuses`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListAgentStatuses,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListAgentStatusesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListAgentStatusesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListAgentStatusesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListAgentStatusesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListAgentStatusesPaginator {
            crate::paginator::ListAgentStatusesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// Appends an item to `AgentStatusTypes`.
        ///
        /// To override the contents of this collection use [`set_agent_status_types`](Self::set_agent_status_types).
        ///
        /// <p>Available agent status types.</p>
        pub fn agent_status_types(mut self, input: crate::model::AgentStatusType) -> Self {
            self.inner = self.inner.agent_status_types(input);
            self
        }
        /// <p>Available agent status types.</p>
        pub fn set_agent_status_types(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::AgentStatusType>>,
        ) -> Self {
            self.inner = self.inner.set_agent_status_types(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListApprovedOrigins`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Returns a paginated list of all approved origins associated with the instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListApprovedOrigins {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_approved_origins_input::Builder,
    }
    impl ListApprovedOrigins {
        /// Creates a new `ListApprovedOrigins`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListApprovedOrigins,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListApprovedOriginsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListApprovedOriginsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListApprovedOriginsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListApprovedOriginsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListApprovedOriginsPaginator {
            crate::paginator::ListApprovedOriginsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListBots`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>For the specified version of Amazon Lex, returns a paginated list of all the Amazon Lex bots currently associated with the instance. Use this API to returns both Amazon Lex V1 and V2 bots.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListBots {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_bots_input::Builder,
    }
    impl ListBots {
        /// Creates a new `ListBots`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListBots,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListBotsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListBotsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListBotsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListBotsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListBotsPaginator {
            crate::paginator::ListBotsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The version of Amazon Lex or Amazon Lex V2.</p>
        pub fn lex_version(mut self, input: crate::model::LexVersion) -> Self {
            self.inner = self.inner.lex_version(input);
            self
        }
        /// <p>The version of Amazon Lex or Amazon Lex V2.</p>
        pub fn set_lex_version(
            mut self,
            input: std::option::Option<crate::model::LexVersion>,
        ) -> Self {
            self.inner = self.inner.set_lex_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListContactFlowModules`.
    ///
    /// <p>Provides information about the flow modules for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListContactFlowModules {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_contact_flow_modules_input::Builder,
    }
    impl ListContactFlowModules {
        /// Creates a new `ListContactFlowModules`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListContactFlowModules,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListContactFlowModulesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListContactFlowModulesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListContactFlowModulesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListContactFlowModulesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListContactFlowModulesPaginator {
            crate::paginator::ListContactFlowModulesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The state of the flow module.</p>
        pub fn contact_flow_module_state(
            mut self,
            input: crate::model::ContactFlowModuleState,
        ) -> Self {
            self.inner = self.inner.contact_flow_module_state(input);
            self
        }
        /// <p>The state of the flow module.</p>
        pub fn set_contact_flow_module_state(
            mut self,
            input: std::option::Option<crate::model::ContactFlowModuleState>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_module_state(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListContactFlows`.
    ///
    /// <p>Provides information about the flows for the specified Amazon Connect instance.</p>
    /// <p>You can also create and update flows using the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html">Amazon Connect Flow language</a>.</p>
    /// <p>For more information about flows, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/concepts-contact-flows.html">Flows</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListContactFlows {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_contact_flows_input::Builder,
    }
    impl ListContactFlows {
        /// Creates a new `ListContactFlows`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListContactFlows,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListContactFlowsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListContactFlowsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListContactFlowsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListContactFlowsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListContactFlowsPaginator {
            crate::paginator::ListContactFlowsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Appends an item to `ContactFlowTypes`.
        ///
        /// To override the contents of this collection use [`set_contact_flow_types`](Self::set_contact_flow_types).
        ///
        /// <p>The type of flow.</p>
        pub fn contact_flow_types(mut self, input: crate::model::ContactFlowType) -> Self {
            self.inner = self.inner.contact_flow_types(input);
            self
        }
        /// <p>The type of flow.</p>
        pub fn set_contact_flow_types(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ContactFlowType>>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_types(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListContactReferences`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>For the specified <code>referenceTypes</code>, returns a list of references associated with the contact. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListContactReferences {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_contact_references_input::Builder,
    }
    impl ListContactReferences {
        /// Creates a new `ListContactReferences`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListContactReferences,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListContactReferencesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListContactReferencesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListContactReferencesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListContactReferencesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListContactReferencesPaginator {
            crate::paginator::ListContactReferencesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 initial contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the initial contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// Appends an item to `ReferenceTypes`.
        ///
        /// To override the contents of this collection use [`set_reference_types`](Self::set_reference_types).
        ///
        /// <p>The type of reference.</p>
        pub fn reference_types(mut self, input: crate::model::ReferenceType) -> Self {
            self.inner = self.inner.reference_types(input);
            self
        }
        /// <p>The type of reference.</p>
        pub fn set_reference_types(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ReferenceType>>,
        ) -> Self {
            self.inner = self.inner.set_reference_types(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p> <important>
        /// <p>This is not expected to be set, because the value returned in the previous response is always null.</p>
        /// </important>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p> <important>
        /// <p>This is not expected to be set, because the value returned in the previous response is always null.</p>
        /// </important>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListDefaultVocabularies`.
    ///
    /// <p>Lists the default vocabularies for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDefaultVocabularies {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_default_vocabularies_input::Builder,
    }
    impl ListDefaultVocabularies {
        /// Creates a new `ListDefaultVocabularies`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListDefaultVocabularies,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDefaultVocabulariesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListDefaultVocabulariesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDefaultVocabulariesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListDefaultVocabulariesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDefaultVocabulariesPaginator {
            crate::paginator::ListDefaultVocabulariesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn language_code(mut self, input: crate::model::VocabularyLanguageCode) -> Self {
            self.inner = self.inner.language_code(input);
            self
        }
        /// <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn set_language_code(
            mut self,
            input: std::option::Option<crate::model::VocabularyLanguageCode>,
        ) -> Self {
            self.inner = self.inner.set_language_code(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListHoursOfOperations`.
    ///
    /// <p>Provides information about the hours of operation for the specified Amazon Connect instance.</p>
    /// <p>For more information about hours of operation, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/set-hours-operation.html">Set the Hours of Operation for a Queue</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListHoursOfOperations {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_hours_of_operations_input::Builder,
    }
    impl ListHoursOfOperations {
        /// Creates a new `ListHoursOfOperations`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListHoursOfOperations,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListHoursOfOperationsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListHoursOfOperationsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListHoursOfOperationsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListHoursOfOperationsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListHoursOfOperationsPaginator {
            crate::paginator::ListHoursOfOperationsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListInstanceAttributes`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Returns a paginated list of all attribute types for the given instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListInstanceAttributes {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_instance_attributes_input::Builder,
    }
    impl ListInstanceAttributes {
        /// Creates a new `ListInstanceAttributes`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListInstanceAttributes,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListInstanceAttributesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListInstanceAttributesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListInstanceAttributesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListInstanceAttributesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListInstanceAttributesPaginator {
            crate::paginator::ListInstanceAttributesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListInstances`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Return a list of instances which are in active state, creation-in-progress state, and failed state. Instances that aren't successfully created (they are in a failed state) are returned only for 24 hours after the CreateInstance API was invoked.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListInstances {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_instances_input::Builder,
    }
    impl ListInstances {
        /// Creates a new `ListInstances`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListInstances,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListInstancesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListInstancesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListInstancesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListInstancesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListInstancesPaginator {
            crate::paginator::ListInstancesPaginator::new(self.handle, self.inner)
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListInstanceStorageConfigs`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Returns a paginated list of storage configs for the identified instance and resource type.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListInstanceStorageConfigs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_instance_storage_configs_input::Builder,
    }
    impl ListInstanceStorageConfigs {
        /// Creates a new `ListInstanceStorageConfigs`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListInstanceStorageConfigs,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListInstanceStorageConfigsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListInstanceStorageConfigsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListInstanceStorageConfigsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListInstanceStorageConfigsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListInstanceStorageConfigsPaginator {
            crate::paginator::ListInstanceStorageConfigsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>A valid resource type.</p>
        pub fn resource_type(mut self, input: crate::model::InstanceStorageResourceType) -> Self {
            self.inner = self.inner.resource_type(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn set_resource_type(
            mut self,
            input: std::option::Option<crate::model::InstanceStorageResourceType>,
        ) -> Self {
            self.inner = self.inner.set_resource_type(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListIntegrationAssociations`.
    ///
    /// <p>Provides summary information about the Amazon Web Services resource associations for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListIntegrationAssociations {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_integration_associations_input::Builder,
    }
    impl ListIntegrationAssociations {
        /// Creates a new `ListIntegrationAssociations`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListIntegrationAssociations,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListIntegrationAssociationsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListIntegrationAssociationsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListIntegrationAssociationsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListIntegrationAssociationsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListIntegrationAssociationsPaginator {
            crate::paginator::ListIntegrationAssociationsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 integration type.</p>
        pub fn integration_type(mut self, input: crate::model::IntegrationType) -> Self {
            self.inner = self.inner.integration_type(input);
            self
        }
        /// <p>The integration type.</p>
        pub fn set_integration_type(
            mut self,
            input: std::option::Option<crate::model::IntegrationType>,
        ) -> Self {
            self.inner = self.inner.set_integration_type(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListLambdaFunctions`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Returns a paginated list of all Lambda functions that display in the dropdown options in the relevant flow blocks.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListLambdaFunctions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_lambda_functions_input::Builder,
    }
    impl ListLambdaFunctions {
        /// Creates a new `ListLambdaFunctions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListLambdaFunctions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListLambdaFunctionsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListLambdaFunctionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListLambdaFunctionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListLambdaFunctionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListLambdaFunctionsPaginator {
            crate::paginator::ListLambdaFunctionsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListLexBots`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Returns a paginated list of all the Amazon Lex V1 bots currently associated with the instance. To return both Amazon Lex V1 and V2 bots, use the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_ListBots.html">ListBots</a> API. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListLexBots {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_lex_bots_input::Builder,
    }
    impl ListLexBots {
        /// Creates a new `ListLexBots`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListLexBots,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListLexBotsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListLexBotsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListLexBotsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListLexBotsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListLexBotsPaginator {
            crate::paginator::ListLexBotsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. If no value is specified, the default is 10. </p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. If no value is specified, the default is 10. </p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPhoneNumbers`.
    ///
    /// <p>Provides information about the phone numbers for the specified Amazon Connect instance. </p>
    /// <p>For more information about phone numbers, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/contact-center-phone-number.html">Set Up Phone Numbers for Your Contact Center</a> in the <i>Amazon Connect Administrator Guide</i>.</p> <important>
    /// <p>The phone number <code>Arn</code> value that is returned from each of the items in the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbers.html#connect-ListPhoneNumbers-response-PhoneNumberSummaryList">PhoneNumberSummaryList</a> cannot be used to tag phone number resources. It will fail with a <code>ResourceNotFoundException</code>. Instead, use the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_ListPhoneNumbersV2.html">ListPhoneNumbersV2</a> API. It returns the new phone number ARN that can be used to tag phone number resources.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPhoneNumbers {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_phone_numbers_input::Builder,
    }
    impl ListPhoneNumbers {
        /// Creates a new `ListPhoneNumbers`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPhoneNumbers,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPhoneNumbersError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListPhoneNumbersOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPhoneNumbersError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPhoneNumbersPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPhoneNumbersPaginator {
            crate::paginator::ListPhoneNumbersPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Appends an item to `PhoneNumberTypes`.
        ///
        /// To override the contents of this collection use [`set_phone_number_types`](Self::set_phone_number_types).
        ///
        /// <p>The type of phone number.</p>
        pub fn phone_number_types(mut self, input: crate::model::PhoneNumberType) -> Self {
            self.inner = self.inner.phone_number_types(input);
            self
        }
        /// <p>The type of phone number.</p>
        pub fn set_phone_number_types(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::PhoneNumberType>>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_types(input);
            self
        }
        /// Appends an item to `PhoneNumberCountryCodes`.
        ///
        /// To override the contents of this collection use [`set_phone_number_country_codes`](Self::set_phone_number_country_codes).
        ///
        /// <p>The ISO country code.</p>
        pub fn phone_number_country_codes(
            mut self,
            input: crate::model::PhoneNumberCountryCode,
        ) -> Self {
            self.inner = self.inner.phone_number_country_codes(input);
            self
        }
        /// <p>The ISO country code.</p>
        pub fn set_phone_number_country_codes(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::PhoneNumberCountryCode>>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_country_codes(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPhoneNumbersV2`.
    ///
    /// <p>Lists phone numbers claimed to your Amazon Connect instance or traffic distribution group. If the provided <code>TargetArn</code> is a traffic distribution group, you can call this API in both Amazon Web Services Regions associated with traffic distribution group.</p>
    /// <p>For more information about phone numbers, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/contact-center-phone-number.html">Set Up Phone Numbers for Your Contact Center</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPhoneNumbersV2 {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_phone_numbers_v2_input::Builder,
    }
    impl ListPhoneNumbersV2 {
        /// Creates a new `ListPhoneNumbersV2`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPhoneNumbersV2,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPhoneNumbersV2Error>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListPhoneNumbersV2Output,
            aws_smithy_http::result::SdkError<crate::error::ListPhoneNumbersV2Error>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPhoneNumbersV2Paginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPhoneNumbersV2Paginator {
            crate::paginator::ListPhoneNumbersV2Paginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. If <code>TargetArn</code> input is not provided, this API lists numbers claimed to all the Amazon Connect instances belonging to your account in the same Amazon Web Services Region as the request.</p>
        pub fn target_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.target_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. If <code>TargetArn</code> input is not provided, this API lists numbers claimed to all the Amazon Connect instances belonging to your account in the same Amazon Web Services Region as the request.</p>
        pub fn set_target_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_target_arn(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// Appends an item to `PhoneNumberCountryCodes`.
        ///
        /// To override the contents of this collection use [`set_phone_number_country_codes`](Self::set_phone_number_country_codes).
        ///
        /// <p>The ISO country code.</p>
        pub fn phone_number_country_codes(
            mut self,
            input: crate::model::PhoneNumberCountryCode,
        ) -> Self {
            self.inner = self.inner.phone_number_country_codes(input);
            self
        }
        /// <p>The ISO country code.</p>
        pub fn set_phone_number_country_codes(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::PhoneNumberCountryCode>>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_country_codes(input);
            self
        }
        /// Appends an item to `PhoneNumberTypes`.
        ///
        /// To override the contents of this collection use [`set_phone_number_types`](Self::set_phone_number_types).
        ///
        /// <p>The type of phone number.</p>
        pub fn phone_number_types(mut self, input: crate::model::PhoneNumberType) -> Self {
            self.inner = self.inner.phone_number_types(input);
            self
        }
        /// <p>The type of phone number.</p>
        pub fn set_phone_number_types(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::PhoneNumberType>>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_types(input);
            self
        }
        /// <p>The prefix of the phone number. If provided, it must contain <code>+</code> as part of the country code.</p>
        pub fn phone_number_prefix(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_prefix(input.into());
            self
        }
        /// <p>The prefix of the phone number. If provided, it must contain <code>+</code> as part of the country code.</p>
        pub fn set_phone_number_prefix(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_prefix(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListPrompts`.
    ///
    /// <p>Provides information about the prompts for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListPrompts {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_prompts_input::Builder,
    }
    impl ListPrompts {
        /// Creates a new `ListPrompts`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListPrompts,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListPromptsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListPromptsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListPromptsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListPromptsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListPromptsPaginator {
            crate::paginator::ListPromptsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListQueueQuickConnects`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Lists the quick connects associated with a queue.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListQueueQuickConnects {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_queue_quick_connects_input::Builder,
    }
    impl ListQueueQuickConnects {
        /// Creates a new `ListQueueQuickConnects`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListQueueQuickConnects,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListQueueQuickConnectsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListQueueQuickConnectsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListQueueQuickConnectsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListQueueQuickConnectsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListQueueQuickConnectsPaginator {
            crate::paginator::ListQueueQuickConnectsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListQueues`.
    ///
    /// <p>Provides information about the queues for the specified Amazon Connect instance.</p>
    /// <p>If you do not specify a <code>QueueTypes</code> parameter, both standard and agent queues are returned. This might cause an unexpected truncation of results if you have more than 1000 agents and you limit the number of results of the API call in code.</p>
    /// <p>For more information about queues, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/concepts-queues-standard-and-agent.html">Queues: Standard and Agent</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListQueues {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_queues_input::Builder,
    }
    impl ListQueues {
        /// Creates a new `ListQueues`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListQueues,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListQueuesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListQueuesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListQueuesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListQueuesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListQueuesPaginator {
            crate::paginator::ListQueuesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Appends an item to `QueueTypes`.
        ///
        /// To override the contents of this collection use [`set_queue_types`](Self::set_queue_types).
        ///
        /// <p>The type of queue.</p>
        pub fn queue_types(mut self, input: crate::model::QueueType) -> Self {
            self.inner = self.inner.queue_types(input);
            self
        }
        /// <p>The type of queue.</p>
        pub fn set_queue_types(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::QueueType>>,
        ) -> Self {
            self.inner = self.inner.set_queue_types(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListQuickConnects`.
    ///
    /// <p>Provides information about the quick connects for the specified Amazon Connect instance. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListQuickConnects {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_quick_connects_input::Builder,
    }
    impl ListQuickConnects {
        /// Creates a new `ListQuickConnects`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListQuickConnects,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListQuickConnectsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListQuickConnectsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListQuickConnectsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListQuickConnectsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListQuickConnectsPaginator {
            crate::paginator::ListQuickConnectsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// Appends an item to `QuickConnectTypes`.
        ///
        /// To override the contents of this collection use [`set_quick_connect_types`](Self::set_quick_connect_types).
        ///
        /// <p>The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).</p>
        pub fn quick_connect_types(mut self, input: crate::model::QuickConnectType) -> Self {
            self.inner = self.inner.quick_connect_types(input);
            self
        }
        /// <p>The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE).</p>
        pub fn set_quick_connect_types(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::QuickConnectType>>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_types(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRoutingProfileQueues`.
    ///
    /// <p>Lists the queues associated with a routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRoutingProfileQueues {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_routing_profile_queues_input::Builder,
    }
    impl ListRoutingProfileQueues {
        /// Creates a new `ListRoutingProfileQueues`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListRoutingProfileQueues,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListRoutingProfileQueuesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListRoutingProfileQueuesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRoutingProfileQueuesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListRoutingProfileQueuesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRoutingProfileQueuesPaginator {
            crate::paginator::ListRoutingProfileQueuesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRoutingProfiles`.
    ///
    /// <p>Provides summary information about the routing profiles for the specified Amazon Connect instance.</p>
    /// <p>For more information about routing profiles, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/concepts-routing.html">Routing Profiles</a> and <a href="https://docs.aws.amazon.com/connect/latest/adminguide/routing-profiles.html">Create a Routing Profile</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRoutingProfiles {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_routing_profiles_input::Builder,
    }
    impl ListRoutingProfiles {
        /// Creates a new `ListRoutingProfiles`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListRoutingProfiles,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListRoutingProfilesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListRoutingProfilesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRoutingProfilesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListRoutingProfilesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRoutingProfilesPaginator {
            crate::paginator::ListRoutingProfilesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRules`.
    ///
    /// <p>List all rules for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRules {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_rules_input::Builder,
    }
    impl ListRules {
        /// Creates a new `ListRules`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListRules,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListRulesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListRulesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRulesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListRulesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRulesPaginator {
            crate::paginator::ListRulesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 publish status of the rule.</p>
        pub fn publish_status(mut self, input: crate::model::RulePublishStatus) -> Self {
            self.inner = self.inner.publish_status(input);
            self
        }
        /// <p>The publish status of the rule.</p>
        pub fn set_publish_status(
            mut self,
            input: std::option::Option<crate::model::RulePublishStatus>,
        ) -> Self {
            self.inner = self.inner.set_publish_status(input);
            self
        }
        /// <p>The name of the event source.</p>
        pub fn event_source_name(mut self, input: crate::model::EventSourceName) -> Self {
            self.inner = self.inner.event_source_name(input);
            self
        }
        /// <p>The name of the event source.</p>
        pub fn set_event_source_name(
            mut self,
            input: std::option::Option<crate::model::EventSourceName>,
        ) -> Self {
            self.inner = self.inner.set_event_source_name(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListSecurityKeys`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Returns a paginated list of all security keys associated with the instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSecurityKeys {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_security_keys_input::Builder,
    }
    impl ListSecurityKeys {
        /// Creates a new `ListSecurityKeys`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListSecurityKeys,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListSecurityKeysError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListSecurityKeysOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSecurityKeysError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListSecurityKeysPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSecurityKeysPaginator {
            crate::paginator::ListSecurityKeysPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListSecurityProfilePermissions`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Lists the permissions granted to a security profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSecurityProfilePermissions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_security_profile_permissions_input::Builder,
    }
    impl ListSecurityProfilePermissions {
        /// Creates a new `ListSecurityProfilePermissions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListSecurityProfilePermissions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListSecurityProfilePermissionsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListSecurityProfilePermissionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSecurityProfilePermissionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListSecurityProfilePermissionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSecurityProfilePermissionsPaginator {
            crate::paginator::ListSecurityProfilePermissionsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier for the security profle.</p>
        pub fn security_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_profile_id(input.into());
            self
        }
        /// <p>The identifier for the security profle.</p>
        pub fn set_security_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_security_profile_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListSecurityProfiles`.
    ///
    /// <p>Provides summary information about the security profiles for the specified Amazon Connect instance.</p>
    /// <p>For more information about security profiles, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/connect-security-profiles.html">Security Profiles</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSecurityProfiles {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_security_profiles_input::Builder,
    }
    impl ListSecurityProfiles {
        /// Creates a new `ListSecurityProfiles`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListSecurityProfiles,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListSecurityProfilesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListSecurityProfilesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSecurityProfilesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListSecurityProfilesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSecurityProfilesPaginator {
            crate::paginator::ListSecurityProfilesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTagsForResource`.
    ///
    /// <p>Lists the tags for the specified resource.</p>
    /// <p>For sample policies that use tags, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_id-based-policy-examples.html">Amazon Connect Identity-Based Policy Examples</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTagsForResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_tags_for_resource_input::Builder,
    }
    impl ListTagsForResource {
        /// Creates a new `ListTagsForResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListTagsForResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListTagsForResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTaskTemplates`.
    ///
    /// <p>Lists task templates for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTaskTemplates {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_task_templates_input::Builder,
    }
    impl ListTaskTemplates {
        /// Creates a new `ListTaskTemplates`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListTaskTemplates,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListTaskTemplatesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListTaskTemplatesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTaskTemplatesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListTaskTemplatesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListTaskTemplatesPaginator {
            crate::paginator::ListTaskTemplatesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p> <important>
        /// <p>It is not expected that you set this because the value returned in the previous response is always null.</p>
        /// </important>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p> <important>
        /// <p>It is not expected that you set this because the value returned in the previous response is always null.</p>
        /// </important>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p> <important>
        /// <p>It is not expected that you set this.</p>
        /// </important>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p> <important>
        /// <p>It is not expected that you set this.</p>
        /// </important>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
        pub fn status(mut self, input: crate::model::TaskTemplateStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::TaskTemplateStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// <p>The name of the task template.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the task template.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTrafficDistributionGroups`.
    ///
    /// <p>Lists traffic distribution groups.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTrafficDistributionGroups {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_traffic_distribution_groups_input::Builder,
    }
    impl ListTrafficDistributionGroups {
        /// Creates a new `ListTrafficDistributionGroups`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListTrafficDistributionGroups,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListTrafficDistributionGroupsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListTrafficDistributionGroupsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTrafficDistributionGroupsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListTrafficDistributionGroupsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListTrafficDistributionGroupsPaginator {
            crate::paginator::ListTrafficDistributionGroupsPaginator::new(self.handle, self.inner)
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `ListUseCases`.
    ///
    /// <p>Lists the use cases for the integration association. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListUseCases {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_use_cases_input::Builder,
    }
    impl ListUseCases {
        /// Creates a new `ListUseCases`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListUseCases,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListUseCasesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListUseCasesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListUseCasesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListUseCasesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListUseCasesPaginator {
            crate::paginator::ListUseCasesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the integration association.</p>
        pub fn integration_association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.integration_association_id(input.into());
            self
        }
        /// <p>The identifier for the integration association.</p>
        pub fn set_integration_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_integration_association_id(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListUserHierarchyGroups`.
    ///
    /// <p>Provides summary information about the hierarchy groups for the specified Amazon Connect instance.</p>
    /// <p>For more information about agent hierarchies, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/agent-hierarchy.html">Set Up Agent Hierarchies</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListUserHierarchyGroups {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_user_hierarchy_groups_input::Builder,
    }
    impl ListUserHierarchyGroups {
        /// Creates a new `ListUserHierarchyGroups`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListUserHierarchyGroups,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListUserHierarchyGroupsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListUserHierarchyGroupsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListUserHierarchyGroupsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListUserHierarchyGroupsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListUserHierarchyGroupsPaginator {
            crate::paginator::ListUserHierarchyGroupsPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListUsers`.
    ///
    /// <p>Provides summary information about the users for the specified Amazon Connect instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListUsers {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_users_input::Builder,
    }
    impl ListUsers {
        /// Creates a new `ListUsers`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ListUsers,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListUsersError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ListUsersOutput,
            aws_smithy_http::result::SdkError<crate::error::ListUsersError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListUsersPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListUsersPaginator {
            crate::paginator::ListUsersPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page. The default MaxResult size is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `MonitorContact`.
    ///
    /// <p>Initiates silent monitoring of a contact. The Contact Control Panel (CCP) of the user specified by <i>userId</i> will be set to silent monitoring mode on the contact.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct MonitorContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::monitor_contact_input::Builder,
    }
    impl MonitorContact {
        /// Creates a new `MonitorContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::MonitorContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::MonitorContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::MonitorContactOutput,
            aws_smithy_http::result::SdkError<crate::error::MonitorContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// Appends an item to `AllowedMonitorCapabilities`.
        ///
        /// To override the contents of this collection use [`set_allowed_monitor_capabilities`](Self::set_allowed_monitor_capabilities).
        ///
        /// <p>Specify which monitoring actions the user is allowed to take. For example, whether the user is allowed to escalate from silent monitoring to barge.</p>
        pub fn allowed_monitor_capabilities(
            mut self,
            input: crate::model::MonitorCapability,
        ) -> Self {
            self.inner = self.inner.allowed_monitor_capabilities(input);
            self
        }
        /// <p>Specify which monitoring actions the user is allowed to take. For example, whether the user is allowed to escalate from silent monitoring to barge.</p>
        pub fn set_allowed_monitor_capabilities(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::MonitorCapability>>,
        ) -> Self {
            self.inner = self.inner.set_allowed_monitor_capabilities(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `PutUserStatus`.
    ///
    /// <p>Changes the current status of a user or agent in Amazon Connect. If the agent is currently handling a contact, this sets the agent's next status.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/metrics-agent-status.html">Agent status</a> and <a href="https://docs.aws.amazon.com/connect/latest/adminguide/set-next-status.html">Set your next status</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutUserStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_user_status_input::Builder,
    }
    impl PutUserStatus {
        /// Creates a new `PutUserStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::PutUserStatus,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::PutUserStatusError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::PutUserStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::PutUserStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the user.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 agent status.</p>
        pub fn agent_status_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.agent_status_id(input.into());
            self
        }
        /// <p>The identifier of the agent status.</p>
        pub fn set_agent_status_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_agent_status_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ReleasePhoneNumber`.
    ///
    /// <p>Releases a phone number previously claimed to an Amazon Connect instance or traffic distribution group. You can call this API only in the Amazon Web Services Region where the number was claimed.</p> <important>
    /// <p>To release phone numbers from a traffic distribution group, use the <code>ReleasePhoneNumber</code> API, not the Amazon Connect console.</p>
    /// <p>After releasing a phone number, the phone number enters into a cooldown period of 30 days. It cannot be searched for or claimed again until the period has ended. If you accidentally release a phone number, contact Amazon Web Services Support.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ReleasePhoneNumber {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::release_phone_number_input::Builder,
    }
    impl ReleasePhoneNumber {
        /// Creates a new `ReleasePhoneNumber`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ReleasePhoneNumber,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ReleasePhoneNumberError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ReleasePhoneNumberOutput,
            aws_smithy_http::result::SdkError<crate::error::ReleasePhoneNumberError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn phone_number_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_id(input.into());
            self
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn set_phone_number_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_id(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `ReplicateInstance`.
    ///
    /// <p>Replicates an Amazon Connect instance in the specified Amazon Web Services Region.</p>
    /// <p>For more information about replicating an Amazon Connect instance, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/create-replica-connect-instance.html">Create a replica of your existing Amazon Connect instance</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ReplicateInstance {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::replicate_instance_input::Builder,
    }
    impl ReplicateInstance {
        /// Creates a new `ReplicateInstance`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ReplicateInstance,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ReplicateInstanceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ReplicateInstanceOutput,
            aws_smithy_http::result::SdkError<crate::error::ReplicateInstanceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance. You can provide the <code>InstanceId</code>, or the entire ARN.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance. You can provide the <code>InstanceId</code>, or the entire ARN.</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 Amazon Web Services Region where to replicate the Amazon Connect instance.</p>
        pub fn replica_region(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.replica_region(input.into());
            self
        }
        /// <p>The Amazon Web Services Region where to replicate the Amazon Connect instance.</p>
        pub fn set_replica_region(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_replica_region(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 client_token(mut self, input: impl 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>The alias for the replicated instance. The <code>ReplicaAlias</code> must be unique.</p>
        pub fn replica_alias(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.replica_alias(input.into());
            self
        }
        /// <p>The alias for the replicated instance. The <code>ReplicaAlias</code> must be unique.</p>
        pub fn set_replica_alias(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_replica_alias(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ResumeContactRecording`.
    ///
    /// <p>When a contact is being recorded, and the recording has been suspended using SuspendContactRecording, this API resumes recording the call.</p>
    /// <p>Only voice recordings are supported at this time.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ResumeContactRecording {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::resume_contact_recording_input::Builder,
    }
    impl ResumeContactRecording {
        /// Creates a new `ResumeContactRecording`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::ResumeContactRecording,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ResumeContactRecordingError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::ResumeContactRecordingOutput,
            aws_smithy_http::result::SdkError<crate::error::ResumeContactRecordingError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn initial_contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.initial_contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn set_initial_contact_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_initial_contact_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `SearchAvailablePhoneNumbers`.
    ///
    /// <p>Searches for available phone numbers that you can claim to your Amazon Connect instance or traffic distribution group. If the provided <code>TargetArn</code> is a traffic distribution group, you can call this API in both Amazon Web Services Regions associated with the traffic distribution group.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct SearchAvailablePhoneNumbers {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::search_available_phone_numbers_input::Builder,
    }
    impl SearchAvailablePhoneNumbers {
        /// Creates a new `SearchAvailablePhoneNumbers`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::SearchAvailablePhoneNumbers,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::SearchAvailablePhoneNumbersError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::SearchAvailablePhoneNumbersOutput,
            aws_smithy_http::result::SdkError<crate::error::SearchAvailablePhoneNumbersError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::SearchAvailablePhoneNumbersPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::SearchAvailablePhoneNumbersPaginator {
            crate::paginator::SearchAvailablePhoneNumbersPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
        pub fn target_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.target_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
        pub fn set_target_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_target_arn(input);
            self
        }
        /// <p>The ISO country code.</p>
        pub fn phone_number_country_code(
            mut self,
            input: crate::model::PhoneNumberCountryCode,
        ) -> Self {
            self.inner = self.inner.phone_number_country_code(input);
            self
        }
        /// <p>The ISO country code.</p>
        pub fn set_phone_number_country_code(
            mut self,
            input: std::option::Option<crate::model::PhoneNumberCountryCode>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_country_code(input);
            self
        }
        /// <p>The type of phone number.</p>
        pub fn phone_number_type(mut self, input: crate::model::PhoneNumberType) -> Self {
            self.inner = self.inner.phone_number_type(input);
            self
        }
        /// <p>The type of phone number.</p>
        pub fn set_phone_number_type(
            mut self,
            input: std::option::Option<crate::model::PhoneNumberType>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_type(input);
            self
        }
        /// <p>The prefix of the phone number. If provided, it must contain <code>+</code> as part of the country code.</p>
        pub fn phone_number_prefix(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_prefix(input.into());
            self
        }
        /// <p>The prefix of the phone number. If provided, it must contain <code>+</code> as part of the country code.</p>
        pub fn set_phone_number_prefix(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_prefix(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `SearchQueues`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Searches queues in an Amazon Connect instance, with optional filtering.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct SearchQueues {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::search_queues_input::Builder,
    }
    impl SearchQueues {
        /// Creates a new `SearchQueues`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::SearchQueues,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::SearchQueuesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::SearchQueuesOutput,
            aws_smithy_http::result::SdkError<crate::error::SearchQueuesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::SearchQueuesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::SearchQueuesPaginator {
            crate::paginator::SearchQueuesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn search_filter(mut self, input: crate::model::QueueSearchFilter) -> Self {
            self.inner = self.inner.search_filter(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn set_search_filter(
            mut self,
            input: std::option::Option<crate::model::QueueSearchFilter>,
        ) -> Self {
            self.inner = self.inner.set_search_filter(input);
            self
        }
        /// <p>The search criteria to be used to return queues.</p> <note>
        /// <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>
        /// </note>
        pub fn search_criteria(mut self, input: crate::model::QueueSearchCriteria) -> Self {
            self.inner = self.inner.search_criteria(input);
            self
        }
        /// <p>The search criteria to be used to return queues.</p> <note>
        /// <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>
        /// </note>
        pub fn set_search_criteria(
            mut self,
            input: std::option::Option<crate::model::QueueSearchCriteria>,
        ) -> Self {
            self.inner = self.inner.set_search_criteria(input);
            self
        }
    }
    /// Fluent builder constructing a request to `SearchRoutingProfiles`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Searches routing profiles in an Amazon Connect instance, with optional filtering.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct SearchRoutingProfiles {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::search_routing_profiles_input::Builder,
    }
    impl SearchRoutingProfiles {
        /// Creates a new `SearchRoutingProfiles`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::SearchRoutingProfiles,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::SearchRoutingProfilesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::SearchRoutingProfilesOutput,
            aws_smithy_http::result::SdkError<crate::error::SearchRoutingProfilesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::SearchRoutingProfilesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::SearchRoutingProfilesPaginator {
            crate::paginator::SearchRoutingProfilesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn search_filter(mut self, input: crate::model::RoutingProfileSearchFilter) -> Self {
            self.inner = self.inner.search_filter(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn set_search_filter(
            mut self,
            input: std::option::Option<crate::model::RoutingProfileSearchFilter>,
        ) -> Self {
            self.inner = self.inner.set_search_filter(input);
            self
        }
        /// <p>The search criteria to be used to return routing profiles.</p> <note>
        /// <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>
        /// </note>
        pub fn search_criteria(
            mut self,
            input: crate::model::RoutingProfileSearchCriteria,
        ) -> Self {
            self.inner = self.inner.search_criteria(input);
            self
        }
        /// <p>The search criteria to be used to return routing profiles.</p> <note>
        /// <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>
        /// </note>
        pub fn set_search_criteria(
            mut self,
            input: std::option::Option<crate::model::RoutingProfileSearchCriteria>,
        ) -> Self {
            self.inner = self.inner.set_search_criteria(input);
            self
        }
    }
    /// Fluent builder constructing a request to `SearchSecurityProfiles`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Searches security profiles in an Amazon Connect instance, with optional filtering.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct SearchSecurityProfiles {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::search_security_profiles_input::Builder,
    }
    impl SearchSecurityProfiles {
        /// Creates a new `SearchSecurityProfiles`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::SearchSecurityProfiles,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::SearchSecurityProfilesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::SearchSecurityProfilesOutput,
            aws_smithy_http::result::SdkError<crate::error::SearchSecurityProfilesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::SearchSecurityProfilesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::SearchSecurityProfilesPaginator {
            crate::paginator::SearchSecurityProfilesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The search criteria to be used to return security profiles. </p> <note>
        /// <p>The <code>name</code> field support "contains" queries with a minimum of 2 characters and maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results.</p>
        /// </note> <note>
        /// <p>The currently supported value for <code>FieldName</code>: <code>name</code> </p>
        /// </note>
        pub fn search_criteria(
            mut self,
            input: crate::model::SecurityProfileSearchCriteria,
        ) -> Self {
            self.inner = self.inner.search_criteria(input);
            self
        }
        /// <p>The search criteria to be used to return security profiles. </p> <note>
        /// <p>The <code>name</code> field support "contains" queries with a minimum of 2 characters and maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results.</p>
        /// </note> <note>
        /// <p>The currently supported value for <code>FieldName</code>: <code>name</code> </p>
        /// </note>
        pub fn set_search_criteria(
            mut self,
            input: std::option::Option<crate::model::SecurityProfileSearchCriteria>,
        ) -> Self {
            self.inner = self.inner.set_search_criteria(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn search_filter(mut self, input: crate::model::SecurityProfilesSearchFilter) -> Self {
            self.inner = self.inner.search_filter(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn set_search_filter(
            mut self,
            input: std::option::Option<crate::model::SecurityProfilesSearchFilter>,
        ) -> Self {
            self.inner = self.inner.set_search_filter(input);
            self
        }
    }
    /// Fluent builder constructing a request to `SearchUsers`.
    ///
    /// <p>Searches users in an Amazon Connect instance, with optional filtering.</p> <note>
    /// <p> <code>AfterContactWorkTimeLimit</code> is returned in milliseconds. </p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct SearchUsers {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::search_users_input::Builder,
    }
    impl SearchUsers {
        /// Creates a new `SearchUsers`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::SearchUsers,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::SearchUsersError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::SearchUsersOutput,
            aws_smithy_http::result::SdkError<crate::error::SearchUsersError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::SearchUsersPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::SearchUsersPaginator {
            crate::paginator::SearchUsersPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn search_filter(mut self, input: crate::model::UserSearchFilter) -> Self {
            self.inner = self.inner.search_filter(input);
            self
        }
        /// <p>Filters to be applied to search results.</p>
        pub fn set_search_filter(
            mut self,
            input: std::option::Option<crate::model::UserSearchFilter>,
        ) -> Self {
            self.inner = self.inner.set_search_filter(input);
            self
        }
        /// <p>The search criteria to be used to return users.</p> <note>
        /// <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>
        /// </note>
        pub fn search_criteria(mut self, input: crate::model::UserSearchCriteria) -> Self {
            self.inner = self.inner.search_criteria(input);
            self
        }
        /// <p>The search criteria to be used to return users.</p> <note>
        /// <p>The <code>name</code> and <code>description</code> fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. </p>
        /// </note>
        pub fn set_search_criteria(
            mut self,
            input: std::option::Option<crate::model::UserSearchCriteria>,
        ) -> Self {
            self.inner = self.inner.set_search_criteria(input);
            self
        }
    }
    /// Fluent builder constructing a request to `SearchVocabularies`.
    ///
    /// <p>Searches for vocabularies within a specific Amazon Connect instance using <code>State</code>, <code>NameStartsWith</code>, and <code>LanguageCode</code>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct SearchVocabularies {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::search_vocabularies_input::Builder,
    }
    impl SearchVocabularies {
        /// Creates a new `SearchVocabularies`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::SearchVocabularies,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::SearchVocabulariesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::SearchVocabulariesOutput,
            aws_smithy_http::result::SdkError<crate::error::SearchVocabulariesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::SearchVocabulariesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::SearchVocabulariesPaginator {
            crate::paginator::SearchVocabulariesPaginator::new(self.handle, self.inner)
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 maximum number of results to return per page.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of results to return per page.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The current state of the custom vocabulary.</p>
        pub fn state(mut self, input: crate::model::VocabularyState) -> Self {
            self.inner = self.inner.state(input);
            self
        }
        /// <p>The current state of the custom vocabulary.</p>
        pub fn set_state(
            mut self,
            input: std::option::Option<crate::model::VocabularyState>,
        ) -> Self {
            self.inner = self.inner.set_state(input);
            self
        }
        /// <p>The starting pattern of the name of the vocabulary.</p>
        pub fn name_starts_with(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name_starts_with(input.into());
            self
        }
        /// <p>The starting pattern of the name of the vocabulary.</p>
        pub fn set_name_starts_with(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_name_starts_with(input);
            self
        }
        /// <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn language_code(mut self, input: crate::model::VocabularyLanguageCode) -> Self {
            self.inner = self.inner.language_code(input);
            self
        }
        /// <p>The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see <a href="https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html">What is Amazon Transcribe?</a> </p>
        pub fn set_language_code(
            mut self,
            input: std::option::Option<crate::model::VocabularyLanguageCode>,
        ) -> Self {
            self.inner = self.inner.set_language_code(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartChatContact`.
    ///
    /// <p>Initiates a flow to start a new chat for the customer. Response of this API provides a token required to obtain credentials from the <a href="https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html">CreateParticipantConnection</a> API in the Amazon Connect Participant Service.</p>
    /// <p>When a new chat contact is successfully created, clients must subscribe to the participant’s connection for the created chat within 5 minutes. This is achieved by invoking <a href="https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html">CreateParticipantConnection</a> with WEBSOCKET and CONNECTION_CREDENTIALS. </p>
    /// <p>A 429 error occurs in the following situations:</p>
    /// <ul>
    /// <li> <p>API rate limit is exceeded. API TPS throttling returns a <code>TooManyRequests</code> exception.</p> </li>
    /// <li> <p>The <a href="https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html">quota for concurrent active chats</a> is exceeded. Active chat throttling returns a <code>LimitExceededException</code>.</p> </li>
    /// </ul>
    /// <p>If you use the <code>ChatDurationInMinutes</code> parameter and receive a 400 error, your account may not support the ability to configure custom chat durations. For more information, contact Amazon Web Services Support. </p>
    /// <p>For more information about chat, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/chat.html">Chat</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartChatContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_chat_contact_input::Builder,
    }
    impl StartChatContact {
        /// Creates a new `StartChatContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StartChatContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartChatContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StartChatContactOutput,
            aws_smithy_http::result::SdkError<crate::error::StartChatContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow for initiating the chat. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>
        /// <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow for initiating the chat. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>
        /// <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// Adds a key-value pair to `Attributes`.
        ///
        /// To override the contents of this collection use [`set_attributes`](Self::set_attributes).
        ///
        /// <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes. They can be accessed in flows just like any other contact attributes. </p>
        /// <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn attributes(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.attributes(k.into(), v.into());
            self
        }
        /// <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes. They can be accessed in flows just like any other contact attributes. </p>
        /// <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn set_attributes(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_attributes(input);
            self
        }
        /// <p>Information identifying the participant.</p>
        pub fn participant_details(mut self, input: crate::model::ParticipantDetails) -> Self {
            self.inner = self.inner.participant_details(input);
            self
        }
        /// <p>Information identifying the participant.</p>
        pub fn set_participant_details(
            mut self,
            input: std::option::Option<crate::model::ParticipantDetails>,
        ) -> Self {
            self.inner = self.inner.set_participant_details(input);
            self
        }
        /// <p>The initial message to be sent to the newly created chat.</p>
        pub fn initial_message(mut self, input: crate::model::ChatMessage) -> Self {
            self.inner = self.inner.initial_message(input);
            self
        }
        /// <p>The initial message to be sent to the newly created chat.</p>
        pub fn set_initial_message(
            mut self,
            input: std::option::Option<crate::model::ChatMessage>,
        ) -> Self {
            self.inner = self.inner.set_initial_message(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 client_token(mut self, input: impl 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>The total duration of the newly started chat session. If not specified, the chat session duration defaults to 25 hour. The minumum configurable time is 60 minutes. The maximum configurable time is 10,080 minutes (7 days).</p>
        pub fn chat_duration_in_minutes(mut self, input: i32) -> Self {
            self.inner = self.inner.chat_duration_in_minutes(input);
            self
        }
        /// <p>The total duration of the newly started chat session. If not specified, the chat session duration defaults to 25 hour. The minumum configurable time is 60 minutes. The maximum configurable time is 10,080 minutes (7 days).</p>
        pub fn set_chat_duration_in_minutes(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_chat_duration_in_minutes(input);
            self
        }
        /// Appends an item to `SupportedMessagingContentTypes`.
        ///
        /// To override the contents of this collection use [`set_supported_messaging_content_types`](Self::set_supported_messaging_content_types).
        ///
        /// <p>The supported chat message content types. Content types must always contain <code>text/plain</code>. You can then put any other supported type in the list. For example, all the following lists are valid because they contain <code>text/plain</code>: <code>[text/plain, text/markdown, application/json]</code>, <code>[text/markdown, text/plain]</code>, <code>[text/plain, application/json]</code>.</p>
        pub fn supported_messaging_content_types(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.supported_messaging_content_types(input.into());
            self
        }
        /// <p>The supported chat message content types. Content types must always contain <code>text/plain</code>. You can then put any other supported type in the list. For example, all the following lists are valid because they contain <code>text/plain</code>: <code>[text/plain, text/markdown, application/json]</code>, <code>[text/markdown, text/plain]</code>, <code>[text/plain, application/json]</code>.</p>
        pub fn set_supported_messaging_content_types(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_supported_messaging_content_types(input);
            self
        }
        /// <p>Enable persistent chats. For more information about enabling persistent chat, and for example use cases and how to configure for them, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html">Enable persistent chat</a>.</p>
        pub fn persistent_chat(mut self, input: crate::model::PersistentChat) -> Self {
            self.inner = self.inner.persistent_chat(input);
            self
        }
        /// <p>Enable persistent chats. For more information about enabling persistent chat, and for example use cases and how to configure for them, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html">Enable persistent chat</a>.</p>
        pub fn set_persistent_chat(
            mut self,
            input: std::option::Option<crate::model::PersistentChat>,
        ) -> Self {
            self.inner = self.inner.set_persistent_chat(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartContactRecording`.
    ///
    /// <p>Starts recording the contact: </p>
    /// <ul>
    /// <li> <p>If the API is called <i>before</i> the agent joins the call, recording starts when the agent joins the call.</p> </li>
    /// <li> <p>If the API is called <i>after</i> the agent joins the call, recording starts at the time of the API call.</p> </li>
    /// </ul>
    /// <p>StartContactRecording is a one-time action. For example, if you use StopContactRecording to stop recording an ongoing call, you can't use StartContactRecording to restart it. For scenarios where the recording has started and you want to suspend and resume it, such as when collecting sensitive information (for example, a credit card number), use SuspendContactRecording and ResumeContactRecording.</p>
    /// <p>You can use this API to override the recording behavior configured in the <a href="https://docs.aws.amazon.com/connect/latest/adminguide/set-recording-behavior.html">Set recording behavior</a> block.</p>
    /// <p>Only voice recordings are supported at this time.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartContactRecording {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_contact_recording_input::Builder,
    }
    impl StartContactRecording {
        /// Creates a new `StartContactRecording`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StartContactRecording,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartContactRecordingError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StartContactRecordingOutput,
            aws_smithy_http::result::SdkError<crate::error::StartContactRecordingError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn initial_contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.initial_contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn set_initial_contact_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_initial_contact_id(input);
            self
        }
        /// <p>The person being recorded.</p>
        pub fn voice_recording_configuration(
            mut self,
            input: crate::model::VoiceRecordingConfiguration,
        ) -> Self {
            self.inner = self.inner.voice_recording_configuration(input);
            self
        }
        /// <p>The person being recorded.</p>
        pub fn set_voice_recording_configuration(
            mut self,
            input: std::option::Option<crate::model::VoiceRecordingConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_voice_recording_configuration(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartContactStreaming`.
    ///
    /// <p> Initiates real-time message streaming for a new chat contact.</p>
    /// <p> For more information about message streaming, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/chat-message-streaming.html">Enable real-time chat message streaming</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartContactStreaming {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_contact_streaming_input::Builder,
    }
    impl StartContactStreaming {
        /// Creates a new `StartContactStreaming`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StartContactStreaming,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartContactStreamingError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StartContactStreamingOutput,
            aws_smithy_http::result::SdkError<crate::error::StartContactStreamingError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The streaming configuration, such as the Amazon SNS streaming endpoint.</p>
        pub fn chat_streaming_configuration(
            mut self,
            input: crate::model::ChatStreamingConfiguration,
        ) -> Self {
            self.inner = self.inner.chat_streaming_configuration(input);
            self
        }
        /// <p>The streaming configuration, such as the Amazon SNS streaming endpoint.</p>
        pub fn set_chat_streaming_configuration(
            mut self,
            input: std::option::Option<crate::model::ChatStreamingConfiguration>,
        ) -> Self {
            self.inner = self.inner.set_chat_streaming_configuration(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `StartOutboundVoiceContact`.
    ///
    /// <p>Places an outbound call to a contact, and then initiates the flow. It performs the actions in the flow that's specified (in <code>ContactFlowId</code>).</p>
    /// <p>Agents do not initiate the outbound API, which means that they do not dial the contact. If the flow places an outbound call to a contact, and then puts the contact in queue, the call is then routed to the agent, like any other inbound case.</p>
    /// <p>There is a 60-second dialing timeout for this operation. If the call is not connected after 60 seconds, it fails.</p> <note>
    /// <p>UK numbers with a 447 prefix are not allowed by default. Before you can dial these UK mobile numbers, you must submit a service quota increase request. For more information, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html">Amazon Connect Service Quotas</a> in the <i>Amazon Connect Administrator Guide</i>. </p>
    /// </note> <note>
    /// <p>Campaign calls are not allowed by default. Before you can make a call with <code>TrafficType</code> = <code>CAMPAIGN</code>, you must submit a service quota increase request to the quota <a href="https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html#outbound-communications-quotas">Amazon Connect campaigns</a>. </p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartOutboundVoiceContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_outbound_voice_contact_input::Builder,
    }
    impl StartOutboundVoiceContact {
        /// Creates a new `StartOutboundVoiceContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StartOutboundVoiceContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartOutboundVoiceContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StartOutboundVoiceContactOutput,
            aws_smithy_http::result::SdkError<crate::error::StartOutboundVoiceContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The phone number of the customer, in E.164 format.</p>
        pub fn destination_phone_number(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.destination_phone_number(input.into());
            self
        }
        /// <p>The phone number of the customer, in E.164 format.</p>
        pub fn set_destination_phone_number(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_destination_phone_number(input);
            self
        }
        /// <p>The identifier of the flow for the outbound call. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>
        /// <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow for the outbound call. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>
        /// <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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>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>. The token is valid for 7 days after creation. If a contact is already started, the contact ID is returned. </p>
        pub fn client_token(mut self, input: impl 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>. The token is valid for 7 days after creation. If a contact is already started, the contact ID is returned. </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>The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue.</p>
        pub fn source_phone_number(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_phone_number(input.into());
            self
        }
        /// <p>The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue.</p>
        pub fn set_source_phone_number(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_phone_number(input);
            self
        }
        /// <p>The queue for the call. If you specify a queue, the phone displayed for caller ID is the phone number specified in the queue. If you do not specify a queue, the queue defined in the flow is used. If you do not specify a queue, you must specify a source phone number.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The queue for the call. If you specify a queue, the phone displayed for caller ID is the phone number specified in the queue. If you do not specify a queue, the queue defined in the flow is used. If you do not specify a queue, you must specify a source phone number.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// Adds a key-value pair to `Attributes`.
        ///
        /// To override the contents of this collection use [`set_attributes`](Self::set_attributes).
        ///
        /// <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes, and can be accessed in flows just like any other contact attributes.</p>
        /// <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn attributes(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.attributes(k.into(), v.into());
            self
        }
        /// <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes, and can be accessed in flows just like any other contact attributes.</p>
        /// <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn set_attributes(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_attributes(input);
            self
        }
        /// <p>Configuration of the answering machine detection for this outbound call. </p>
        pub fn answer_machine_detection_config(
            mut self,
            input: crate::model::AnswerMachineDetectionConfig,
        ) -> Self {
            self.inner = self.inner.answer_machine_detection_config(input);
            self
        }
        /// <p>Configuration of the answering machine detection for this outbound call. </p>
        pub fn set_answer_machine_detection_config(
            mut self,
            input: std::option::Option<crate::model::AnswerMachineDetectionConfig>,
        ) -> Self {
            self.inner = self.inner.set_answer_machine_detection_config(input);
            self
        }
        /// <p>The campaign identifier of the outbound communication.</p>
        pub fn campaign_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.campaign_id(input.into());
            self
        }
        /// <p>The campaign identifier of the outbound communication.</p>
        pub fn set_campaign_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_campaign_id(input);
            self
        }
        /// <p>Denotes the class of traffic. Calls with different traffic types are handled differently by Amazon Connect. The default value is <code>GENERAL</code>. Use <code>CAMPAIGN</code> if <code>EnableAnswerMachineDetection</code> is set to <code>true</code>. For all other cases, use <code>GENERAL</code>. </p>
        pub fn traffic_type(mut self, input: crate::model::TrafficType) -> Self {
            self.inner = self.inner.traffic_type(input);
            self
        }
        /// <p>Denotes the class of traffic. Calls with different traffic types are handled differently by Amazon Connect. The default value is <code>GENERAL</code>. Use <code>CAMPAIGN</code> if <code>EnableAnswerMachineDetection</code> is set to <code>true</code>. For all other cases, use <code>GENERAL</code>. </p>
        pub fn set_traffic_type(
            mut self,
            input: std::option::Option<crate::model::TrafficType>,
        ) -> Self {
            self.inner = self.inner.set_traffic_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartTaskContact`.
    ///
    /// <p>Initiates a flow to start a new task.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartTaskContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_task_contact_input::Builder,
    }
    impl StartTaskContact {
        /// Creates a new `StartTaskContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StartTaskContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartTaskContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StartTaskContactOutput,
            aws_smithy_http::result::SdkError<crate::error::StartTaskContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 previous chat, voice, or task contact. </p>
        pub fn previous_contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.previous_contact_id(input.into());
            self
        }
        /// <p>The identifier of the previous chat, voice, or task contact. </p>
        pub fn set_previous_contact_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_previous_contact_id(input);
            self
        }
        /// <p>The identifier of the flow for initiating the tasks. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>
        /// <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow for initiating the tasks. To see the ContactFlowId in the Amazon Connect console user interface, on the navigation menu go to <b>Routing</b>, <b>Contact Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p>
        /// <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// Adds a key-value pair to `Attributes`.
        ///
        /// To override the contents of this collection use [`set_attributes`](Self::set_attributes).
        ///
        /// <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes, and can be accessed in flows just like any other contact attributes.</p>
        /// <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn attributes(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.attributes(k.into(), v.into());
            self
        }
        /// <p>A custom key-value pair using an attribute map. The attributes are standard Amazon Connect attributes, and can be accessed in flows just like any other contact attributes.</p>
        /// <p>There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn set_attributes(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_attributes(input);
            self
        }
        /// <p>The name of a task that is shown to an agent in the Contact Control Panel (CCP).</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of a task that is shown to an agent in the Contact Control Panel (CCP).</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// Adds a key-value pair to `References`.
        ///
        /// To override the contents of this collection use [`set_references`](Self::set_references).
        ///
        /// <p>A formatted URL that is shown to an agent in the Contact Control Panel (CCP).</p>
        pub fn references(
            mut self,
            k: impl Into<std::string::String>,
            v: crate::model::Reference,
        ) -> Self {
            self.inner = self.inner.references(k.into(), v);
            self
        }
        /// <p>A formatted URL that is shown to an agent in the Contact Control Panel (CCP).</p>
        pub fn set_references(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, crate::model::Reference>,
            >,
        ) -> Self {
            self.inner = self.inner.set_references(input);
            self
        }
        /// <p>A description of the task that is shown to an agent in the Contact Control Panel (CCP).</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the task that is shown to an agent in the Contact Control Panel (CCP).</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(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 client_token(mut self, input: impl 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>The timestamp, in Unix Epoch seconds format, at which to start running the inbound flow. The scheduled time cannot be in the past. It must be within up to 6 days in future. </p>
        pub fn scheduled_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.scheduled_time(input);
            self
        }
        /// <p>The timestamp, in Unix Epoch seconds format, at which to start running the inbound flow. The scheduled time cannot be in the past. It must be within up to 6 days in future. </p>
        pub fn set_scheduled_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_scheduled_time(input);
            self
        }
        /// <p>A unique identifier for the task template.</p>
        pub fn task_template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.task_template_id(input.into());
            self
        }
        /// <p>A unique identifier for the task template.</p>
        pub fn set_task_template_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_task_template_id(input);
            self
        }
        /// <p>The identifier for the quick connect.</p>
        pub fn quick_connect_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_id(input.into());
            self
        }
        /// <p>The identifier for the quick connect.</p>
        pub fn set_quick_connect_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StopContact`.
    ///
    /// <p>Ends the specified contact. This call does not work for the following initiation methods:</p>
    /// <ul>
    /// <li> <p>DISCONNECT</p> </li>
    /// <li> <p>TRANSFER</p> </li>
    /// <li> <p>QUEUE_TRANSFER</p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StopContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::stop_contact_input::Builder,
    }
    impl StopContact {
        /// Creates a new `StopContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StopContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StopContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StopContactOutput,
            aws_smithy_http::result::SdkError<crate::error::StopContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The ID of the contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The ID of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `StopContactRecording`.
    ///
    /// <p>Stops recording a call when a contact is being recorded. StopContactRecording is a one-time action. If you use StopContactRecording to stop recording an ongoing call, you can't use StartContactRecording to restart it. For scenarios where the recording has started and you want to suspend it for sensitive information (for example, to collect a credit card number), and then restart it, use SuspendContactRecording and ResumeContactRecording.</p>
    /// <p>Only voice recordings are supported at this time.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StopContactRecording {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::stop_contact_recording_input::Builder,
    }
    impl StopContactRecording {
        /// Creates a new `StopContactRecording`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StopContactRecording,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StopContactRecordingError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StopContactRecordingOutput,
            aws_smithy_http::result::SdkError<crate::error::StopContactRecordingError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn initial_contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.initial_contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn set_initial_contact_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_initial_contact_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StopContactStreaming`.
    ///
    /// <p> Ends message streaming on a specified contact. To restart message streaming on that contact, call the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_StartContactStreaming.html">StartContactStreaming</a> API. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StopContactStreaming {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::stop_contact_streaming_input::Builder,
    }
    impl StopContactStreaming {
        /// Creates a new `StopContactStreaming`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::StopContactStreaming,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StopContactStreamingError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::StopContactStreamingOutput,
            aws_smithy_http::result::SdkError<crate::error::StopContactStreamingError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact. This is the identifier of the contact that is associated with the first interaction with the contact center.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact that is associated with the first interaction with the contact center.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier of the streaming configuration enabled. </p>
        pub fn streaming_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.streaming_id(input.into());
            self
        }
        /// <p>The identifier of the streaming configuration enabled. </p>
        pub fn set_streaming_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_streaming_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `SuspendContactRecording`.
    ///
    /// <p>When a contact is being recorded, this API suspends recording the call. For example, you might suspend the call recording while collecting sensitive information, such as a credit card number. Then use ResumeContactRecording to restart recording. </p>
    /// <p>The period of time that the recording is suspended is filled with silence in the final recording. </p>
    /// <p>Only voice recordings are supported at this time.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct SuspendContactRecording {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::suspend_contact_recording_input::Builder,
    }
    impl SuspendContactRecording {
        /// Creates a new `SuspendContactRecording`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::SuspendContactRecording,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::SuspendContactRecordingError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::SuspendContactRecordingOutput,
            aws_smithy_http::result::SdkError<crate::error::SuspendContactRecordingError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn initial_contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.initial_contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn set_initial_contact_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_initial_contact_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>Adds the specified tags to the specified resource.</p>
    /// <p>Some of the supported resource types are agents, routing profiles, queues, quick connects, contact flows, agent statuses, hours of operation, phone numbers, security profiles, and task templates. For a complete list, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/tagging.html">Tagging resources in Amazon Connect</a>.</p>
    /// <p>For sample policies that use tags, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_id-based-policy-examples.html">Amazon Connect Identity-Based Policy Examples</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct TagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::tag_resource_input::Builder,
    }
    impl TagResource {
        /// Creates a new `TagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::TagResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::TagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TransferContact`.
    ///
    /// <p>Transfers contacts from one agent or queue to another agent or queue at any point after a contact is created. You can transfer a contact to another queue by providing the flow which orchestrates the contact to the destination queue. This gives you more control over contact handling and helps you adhere to the service level agreement (SLA) guaranteed to your customers.</p>
    /// <p>Note the following requirements:</p>
    /// <ul>
    /// <li> <p>Transfer is supported for only <code>TASK</code> contacts.</p> </li>
    /// <li> <p>Do not use both <code>QueueId</code> and <code>UserId</code> in the same call.</p> </li>
    /// <li> <p>The following flow types are supported: Inbound flow, Transfer to agent flow, and Transfer to queue flow.</p> </li>
    /// <li> <p>The <code>TransferContact</code> API can be called only on active contacts.</p> </li>
    /// <li> <p>A contact cannot be transferred more than 11 times.</p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct TransferContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::transfer_contact_input::Builder,
    }
    impl TransferContact {
        /// Creates a new `TransferContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::TransferContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::TransferContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::TransferContactOutput,
            aws_smithy_http::result::SdkError<crate::error::TransferContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact in this instance of Amazon Connect. </p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact in this instance of Amazon Connect. </p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// <p>The identifier for the user.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier for the user.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `UntagResource`.
    ///
    /// <p>Removes the specified tags from the specified resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UntagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::untag_resource_input::Builder,
    }
    impl UntagResource {
        /// Creates a new `UntagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UntagResource,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UntagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Appends an item to `tagKeys`.
        ///
        /// To override the contents of this collection use [`set_tag_keys`](Self::set_tag_keys).
        ///
        /// <p>The tag keys.</p>
        pub fn tag_keys(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_keys(input.into());
            self
        }
        /// <p>The tag keys.</p>
        pub fn set_tag_keys(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_tag_keys(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateAgentStatus`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates agent status.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateAgentStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_agent_status_input::Builder,
    }
    impl UpdateAgentStatus {
        /// Creates a new `UpdateAgentStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateAgentStatus,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateAgentStatusError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateAgentStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateAgentStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 agent status.</p>
        pub fn agent_status_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.agent_status_id(input.into());
            self
        }
        /// <p>The identifier of the agent status.</p>
        pub fn set_agent_status_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_agent_status_id(input);
            self
        }
        /// <p>The name of the agent status.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the agent status.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the agent status.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the agent status.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The state of the agent status.</p>
        pub fn state(mut self, input: crate::model::AgentStatusState) -> Self {
            self.inner = self.inner.state(input);
            self
        }
        /// <p>The state of the agent status.</p>
        pub fn set_state(
            mut self,
            input: std::option::Option<crate::model::AgentStatusState>,
        ) -> Self {
            self.inner = self.inner.set_state(input);
            self
        }
        /// <p>The display order of the agent status.</p>
        pub fn display_order(mut self, input: i32) -> Self {
            self.inner = self.inner.display_order(input);
            self
        }
        /// <p>The display order of the agent status.</p>
        pub fn set_display_order(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_display_order(input);
            self
        }
        /// <p>A number indicating the reset order of the agent status.</p>
        pub fn reset_order_number(mut self, input: bool) -> Self {
            self.inner = self.inner.reset_order_number(input);
            self
        }
        /// <p>A number indicating the reset order of the agent status.</p>
        pub fn set_reset_order_number(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_reset_order_number(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContact`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Adds or updates user-defined contact information associated with the specified contact. At least one field to be updated must be present in the request.</p> <important>
    /// <p>You can add or update user-defined contact information for both ongoing and completed contacts.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContact {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_input::Builder,
    }
    impl UpdateContact {
        /// Creates a new `UpdateContact`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContact,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact. This is the identifier of the contact associated with the first interaction with your contact center.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with your contact center.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The name of the contact.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the contact.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the contact.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the contact.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// Adds a key-value pair to `References`.
        ///
        /// To override the contents of this collection use [`set_references`](Self::set_references).
        ///
        /// <p>Well-formed data on contact, shown to agents on Contact Control Panel (CCP).</p>
        pub fn references(
            mut self,
            k: impl Into<std::string::String>,
            v: crate::model::Reference,
        ) -> Self {
            self.inner = self.inner.references(k.into(), v);
            self
        }
        /// <p>Well-formed data on contact, shown to agents on Contact Control Panel (CCP).</p>
        pub fn set_references(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, crate::model::Reference>,
            >,
        ) -> Self {
            self.inner = self.inner.set_references(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContactAttributes`.
    ///
    /// <p>Creates or updates user-defined contact attributes associated with the specified contact.</p>
    /// <p>You can create or update user-defined attributes for both ongoing and completed contacts. For example, while the call is active, you can update the customer's name or the reason the customer called. You can add notes about steps that the agent took during the call that display to the next agent that takes the call. You can also update attributes for a contact using data from your CRM application and save the data with the contact in Amazon Connect. You could also flag calls for additional analysis, such as legal review or to identify abusive callers.</p>
    /// <p>Contact attributes are available in Amazon Connect for 24 months, and are then deleted. For information about contact record retention and the maximum size of the contact record attributes section, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html#feature-limits">Feature specifications</a> in the <i>Amazon Connect Administrator Guide</i>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContactAttributes {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_attributes_input::Builder,
    }
    impl UpdateContactAttributes {
        /// Creates a new `UpdateContactAttributes`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContactAttributes,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactAttributesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactAttributesOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactAttributesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn initial_contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.initial_contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact. This is the identifier of the contact associated with the first interaction with the contact center.</p>
        pub fn set_initial_contact_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_initial_contact_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Adds a key-value pair to `Attributes`.
        ///
        /// To override the contents of this collection use [`set_attributes`](Self::set_attributes).
        ///
        /// <p>The Amazon Connect attributes. These attributes can be accessed in flows just like any other contact attributes.</p>
        /// <p>You can have up to 32,768 UTF-8 bytes across all attributes for a contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn attributes(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.attributes(k.into(), v.into());
            self
        }
        /// <p>The Amazon Connect attributes. These attributes can be accessed in flows just like any other contact attributes.</p>
        /// <p>You can have up to 32,768 UTF-8 bytes across all attributes for a contact. Attribute keys can include only alphanumeric, dash, and underscore characters.</p>
        pub fn set_attributes(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_attributes(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContactFlowContent`.
    ///
    /// <p>Updates the specified flow.</p>
    /// <p>You can also create and update flows using the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html">Amazon Connect Flow language</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContactFlowContent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_flow_content_input::Builder,
    }
    impl UpdateContactFlowContent {
        /// Creates a new `UpdateContactFlowContent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContactFlowContent,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowContentError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactFlowContentOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowContentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect 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 flow.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// <p>The JSON string that represents flow's content. For an example, see <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html">Example contact flow in Amazon Connect Flow language</a>. </p>
        pub fn content(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.content(input.into());
            self
        }
        /// <p>The JSON string that represents flow's content. For an example, see <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language-example.html">Example contact flow in Amazon Connect Flow language</a>. </p>
        pub fn set_content(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_content(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContactFlowMetadata`.
    ///
    /// <p>Updates metadata about specified flow.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContactFlowMetadata {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_flow_metadata_input::Builder,
    }
    impl UpdateContactFlowMetadata {
        /// Creates a new `UpdateContactFlowMetadata`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContactFlowMetadata,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowMetadataError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactFlowMetadataOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowMetadataError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// <p>The name of the flow.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the flow.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the flow.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the flow.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The state of flow.</p>
        pub fn contact_flow_state(mut self, input: crate::model::ContactFlowState) -> Self {
            self.inner = self.inner.contact_flow_state(input);
            self
        }
        /// <p>The state of flow.</p>
        pub fn set_contact_flow_state(
            mut self,
            input: std::option::Option<crate::model::ContactFlowState>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_state(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContactFlowModuleContent`.
    ///
    /// <p>Updates specified flow module for the specified Amazon Connect instance. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContactFlowModuleContent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_flow_module_content_input::Builder,
    }
    impl UpdateContactFlowModuleContent {
        /// Creates a new `UpdateContactFlowModuleContent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContactFlowModuleContent,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowModuleContentError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactFlowModuleContentOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowModuleContentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow module.</p>
        pub fn contact_flow_module_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_module_id(input.into());
            self
        }
        /// <p>The identifier of the flow module.</p>
        pub fn set_contact_flow_module_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_module_id(input);
            self
        }
        /// <p>The content of the flow module.</p>
        pub fn content(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.content(input.into());
            self
        }
        /// <p>The content of the flow module.</p>
        pub fn set_content(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_content(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContactFlowModuleMetadata`.
    ///
    /// <p>Updates metadata about specified flow module.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContactFlowModuleMetadata {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_flow_module_metadata_input::Builder,
    }
    impl UpdateContactFlowModuleMetadata {
        /// Creates a new `UpdateContactFlowModuleMetadata`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContactFlowModuleMetadata,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowModuleMetadataError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactFlowModuleMetadataOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowModuleMetadataError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 flow module.</p>
        pub fn contact_flow_module_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_module_id(input.into());
            self
        }
        /// <p>The identifier of the flow module.</p>
        pub fn set_contact_flow_module_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_module_id(input);
            self
        }
        /// <p>The name of the flow module.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the flow module.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the flow module.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the flow module.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The state of flow module.</p>
        pub fn state(mut self, input: crate::model::ContactFlowModuleState) -> Self {
            self.inner = self.inner.state(input);
            self
        }
        /// <p>The state of flow module.</p>
        pub fn set_state(
            mut self,
            input: std::option::Option<crate::model::ContactFlowModuleState>,
        ) -> Self {
            self.inner = self.inner.set_state(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContactFlowName`.
    ///
    /// <p>The name of the flow.</p>
    /// <p>You can also create and update flows using the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/flow-language.html">Amazon Connect Flow language</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContactFlowName {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_flow_name_input::Builder,
    }
    impl UpdateContactFlowName {
        /// Creates a new `UpdateContactFlowName`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContactFlowName,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowNameError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactFlowNameOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactFlowNameError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect 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 flow.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// <p>The name of the flow.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the flow.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the flow.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the flow.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateContactSchedule`.
    ///
    /// <p>Updates the scheduled time of a task contact that is already scheduled.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateContactSchedule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_contact_schedule_input::Builder,
    }
    impl UpdateContactSchedule {
        /// Creates a new `UpdateContactSchedule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateContactSchedule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactScheduleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateContactScheduleOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateContactScheduleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact.</p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact.</p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The timestamp, in Unix Epoch seconds format, at which to start running the inbound flow. The scheduled time cannot be in the past. It must be within up to 6 days in future. </p>
        pub fn scheduled_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.scheduled_time(input);
            self
        }
        /// <p>The timestamp, in Unix Epoch seconds format, at which to start running the inbound flow. The scheduled time cannot be in the past. It must be within up to 6 days in future. </p>
        pub fn set_scheduled_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_scheduled_time(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateHoursOfOperation`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates the hours of operation.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateHoursOfOperation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_hours_of_operation_input::Builder,
    }
    impl UpdateHoursOfOperation {
        /// Creates a new `UpdateHoursOfOperation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateHoursOfOperation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateHoursOfOperationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateHoursOfOperationOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateHoursOfOperationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 hours of operation.</p>
        pub fn hours_of_operation_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hours_of_operation_id(input.into());
            self
        }
        /// <p>The identifier of the hours of operation.</p>
        pub fn set_hours_of_operation_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hours_of_operation_id(input);
            self
        }
        /// <p>The name of the hours of operation.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the hours of operation.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the hours of operation.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the hours of operation.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The time zone of the hours of operation.</p>
        pub fn time_zone(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.time_zone(input.into());
            self
        }
        /// <p>The time zone of the hours of operation.</p>
        pub fn set_time_zone(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_time_zone(input);
            self
        }
        /// Appends an item to `Config`.
        ///
        /// To override the contents of this collection use [`set_config`](Self::set_config).
        ///
        /// <p>Configuration information of the hours of operation.</p>
        pub fn config(mut self, input: crate::model::HoursOfOperationConfig) -> Self {
            self.inner = self.inner.config(input);
            self
        }
        /// <p>Configuration information of the hours of operation.</p>
        pub fn set_config(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::HoursOfOperationConfig>>,
        ) -> Self {
            self.inner = self.inner.set_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateInstanceAttribute`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates the value for the specified attribute type.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateInstanceAttribute {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_instance_attribute_input::Builder,
    }
    impl UpdateInstanceAttribute {
        /// Creates a new `UpdateInstanceAttribute`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateInstanceAttribute,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateInstanceAttributeError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateInstanceAttributeOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateInstanceAttributeError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 type of attribute.</p> <note>
        /// <p>Only allowlisted customers can consume USE_CUSTOM_TTS_VOICES. To access this feature, contact Amazon Web Services Support for allowlisting.</p>
        /// </note>
        pub fn attribute_type(mut self, input: crate::model::InstanceAttributeType) -> Self {
            self.inner = self.inner.attribute_type(input);
            self
        }
        /// <p>The type of attribute.</p> <note>
        /// <p>Only allowlisted customers can consume USE_CUSTOM_TTS_VOICES. To access this feature, contact Amazon Web Services Support for allowlisting.</p>
        /// </note>
        pub fn set_attribute_type(
            mut self,
            input: std::option::Option<crate::model::InstanceAttributeType>,
        ) -> Self {
            self.inner = self.inner.set_attribute_type(input);
            self
        }
        /// <p>The value for the attribute. Maximum character limit is 100. </p>
        pub fn value(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.value(input.into());
            self
        }
        /// <p>The value for the attribute. Maximum character limit is 100. </p>
        pub fn set_value(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_value(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateInstanceStorageConfig`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates an existing configuration for a resource type. This API is idempotent.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateInstanceStorageConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_instance_storage_config_input::Builder,
    }
    impl UpdateInstanceStorageConfig {
        /// Creates a new `UpdateInstanceStorageConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateInstanceStorageConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateInstanceStorageConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateInstanceStorageConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateInstanceStorageConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn association_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.association_id(input.into());
            self
        }
        /// <p>The existing association identifier that uniquely identifies the resource type and storage config for the given instance ID.</p>
        pub fn set_association_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_association_id(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn resource_type(mut self, input: crate::model::InstanceStorageResourceType) -> Self {
            self.inner = self.inner.resource_type(input);
            self
        }
        /// <p>A valid resource type.</p>
        pub fn set_resource_type(
            mut self,
            input: std::option::Option<crate::model::InstanceStorageResourceType>,
        ) -> Self {
            self.inner = self.inner.set_resource_type(input);
            self
        }
        /// <p>The storage configuration for the instance.</p>
        pub fn storage_config(mut self, input: crate::model::InstanceStorageConfig) -> Self {
            self.inner = self.inner.storage_config(input);
            self
        }
        /// <p>The storage configuration for the instance.</p>
        pub fn set_storage_config(
            mut self,
            input: std::option::Option<crate::model::InstanceStorageConfig>,
        ) -> Self {
            self.inner = self.inner.set_storage_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateParticipantRoleConfig`.
    ///
    /// <p>Updates timeouts for when human chat participants are to be considered idle, and when agents are automatically disconnected from a chat due to idleness. You can set four timers:</p>
    /// <ul>
    /// <li> <p>Customer idle timeout</p> </li>
    /// <li> <p>Customer auto-disconnect timeout</p> </li>
    /// <li> <p>Agent idle timeout</p> </li>
    /// <li> <p>Agent auto-disconnect timeout</p> </li>
    /// </ul>
    /// <p>For more information about how chat timeouts work, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/setup-chat-timeouts.html">Set up chat timeouts for human participants</a>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateParticipantRoleConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_participant_role_config_input::Builder,
    }
    impl UpdateParticipantRoleConfig {
        /// Creates a new `UpdateParticipantRoleConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateParticipantRoleConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateParticipantRoleConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateParticipantRoleConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateParticipantRoleConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 contact in this instance of Amazon Connect. </p>
        pub fn contact_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_id(input.into());
            self
        }
        /// <p>The identifier of the contact in this instance of Amazon Connect. </p>
        pub fn set_contact_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_contact_id(input);
            self
        }
        /// <p>The Amazon Connect channel you want to configure.</p>
        pub fn channel_configuration(
            mut self,
            input: crate::model::UpdateParticipantRoleConfigChannelInfo,
        ) -> Self {
            self.inner = self.inner.channel_configuration(input);
            self
        }
        /// <p>The Amazon Connect channel you want to configure.</p>
        pub fn set_channel_configuration(
            mut self,
            input: std::option::Option<crate::model::UpdateParticipantRoleConfigChannelInfo>,
        ) -> Self {
            self.inner = self.inner.set_channel_configuration(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdatePhoneNumber`.
    ///
    /// <p>Updates your claimed phone number from its current Amazon Connect instance or traffic distribution group to another Amazon Connect instance or traffic distribution group in the same Amazon Web Services Region.</p> <important>
    /// <p>You can call <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html">DescribePhoneNumber</a> API to verify the status of a previous <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdatePhoneNumber.html">UpdatePhoneNumber</a> operation.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdatePhoneNumber {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_phone_number_input::Builder,
    }
    impl UpdatePhoneNumber {
        /// Creates a new `UpdatePhoneNumber`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdatePhoneNumber,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdatePhoneNumberError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdatePhoneNumberOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdatePhoneNumberError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn phone_number_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.phone_number_id(input.into());
            self
        }
        /// <p>A unique identifier for the phone number.</p>
        pub fn set_phone_number_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_phone_number_id(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
        pub fn target_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.target_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to.</p>
        pub fn set_target_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_target_arn(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 client_token(mut self, input: impl 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
        }
    }
    /// Fluent builder constructing a request to `UpdateQueueHoursOfOperation`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates the hours of operation for the specified queue.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateQueueHoursOfOperation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_queue_hours_of_operation_input::Builder,
    }
    impl UpdateQueueHoursOfOperation {
        /// Creates a new `UpdateQueueHoursOfOperation`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateQueueHoursOfOperation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueHoursOfOperationError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateQueueHoursOfOperationOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueHoursOfOperationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// <p>The identifier for the hours of operation.</p>
        pub fn hours_of_operation_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hours_of_operation_id(input.into());
            self
        }
        /// <p>The identifier for the hours of operation.</p>
        pub fn set_hours_of_operation_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hours_of_operation_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateQueueMaxContacts`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates the maximum number of contacts allowed in a queue before it is considered full.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateQueueMaxContacts {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_queue_max_contacts_input::Builder,
    }
    impl UpdateQueueMaxContacts {
        /// Creates a new `UpdateQueueMaxContacts`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateQueueMaxContacts,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueMaxContactsError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateQueueMaxContactsOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueMaxContactsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// <p>The maximum number of contacts that can be in the queue before it is considered full.</p>
        pub fn max_contacts(mut self, input: i32) -> Self {
            self.inner = self.inner.max_contacts(input);
            self
        }
        /// <p>The maximum number of contacts that can be in the queue before it is considered full.</p>
        pub fn set_max_contacts(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_contacts(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateQueueName`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates the name and description of a queue. At least <code>Name</code> or <code>Description</code> must be provided.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateQueueName {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_queue_name_input::Builder,
    }
    impl UpdateQueueName {
        /// Creates a new `UpdateQueueName`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateQueueName,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueNameError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateQueueNameOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueNameError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// <p>The name of the queue.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the queue.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the queue.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the queue.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateQueueOutboundCallerConfig`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates the outbound caller ID name, number, and outbound whisper flow for a specified queue.</p> <important>
    /// <p>If the number being used in the input is claimed to a traffic distribution group, and you are calling this API using an instance in the Amazon Web Services Region where the traffic distribution group was created, you can use either a full phone number ARN or UUID value for the <code>OutboundCallerIdNumberId</code> value of the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_OutboundCallerConfig">OutboundCallerConfig</a> request body parameter. However, if the number is claimed to a traffic distribution group and you are calling this API using an instance in the alternate Amazon Web Services Region associated with the traffic distribution group, you must provide a full phone number ARN. If a UUID is provided in this scenario, you will receive a <code>ResourceNotFoundException</code>.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateQueueOutboundCallerConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_queue_outbound_caller_config_input::Builder,
    }
    impl UpdateQueueOutboundCallerConfig {
        /// Creates a new `UpdateQueueOutboundCallerConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateQueueOutboundCallerConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueOutboundCallerConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateQueueOutboundCallerConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueOutboundCallerConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// <p>The outbound caller ID name, number, and outbound whisper flow.</p>
        pub fn outbound_caller_config(mut self, input: crate::model::OutboundCallerConfig) -> Self {
            self.inner = self.inner.outbound_caller_config(input);
            self
        }
        /// <p>The outbound caller ID name, number, and outbound whisper flow.</p>
        pub fn set_outbound_caller_config(
            mut self,
            input: std::option::Option<crate::model::OutboundCallerConfig>,
        ) -> Self {
            self.inner = self.inner.set_outbound_caller_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateQueueStatus`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates the status of the queue.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateQueueStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_queue_status_input::Builder,
    }
    impl UpdateQueueStatus {
        /// Creates a new `UpdateQueueStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateQueueStatus,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueStatusError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateQueueStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateQueueStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the queue.</p>
        pub fn queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.queue_id(input.into());
            self
        }
        /// <p>The identifier for the queue.</p>
        pub fn set_queue_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_queue_id(input);
            self
        }
        /// <p>The status of the queue.</p>
        pub fn status(mut self, input: crate::model::QueueStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>The status of the queue.</p>
        pub fn set_status(mut self, input: std::option::Option<crate::model::QueueStatus>) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateQuickConnectConfig`.
    ///
    /// <p>Updates the configuration settings for the specified quick connect.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateQuickConnectConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_quick_connect_config_input::Builder,
    }
    impl UpdateQuickConnectConfig {
        /// Creates a new `UpdateQuickConnectConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateQuickConnectConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateQuickConnectConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateQuickConnectConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateQuickConnectConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the quick connect.</p>
        pub fn quick_connect_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_id(input.into());
            self
        }
        /// <p>The identifier for the quick connect.</p>
        pub fn set_quick_connect_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_id(input);
            self
        }
        /// <p>Information about the configuration settings for the quick connect.</p>
        pub fn quick_connect_config(mut self, input: crate::model::QuickConnectConfig) -> Self {
            self.inner = self.inner.quick_connect_config(input);
            self
        }
        /// <p>Information about the configuration settings for the quick connect.</p>
        pub fn set_quick_connect_config(
            mut self,
            input: std::option::Option<crate::model::QuickConnectConfig>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateQuickConnectName`.
    ///
    /// <p>Updates the name and description of a quick connect. The request accepts the following data in JSON format. At least <code>Name</code> or <code>Description</code> must be provided.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateQuickConnectName {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_quick_connect_name_input::Builder,
    }
    impl UpdateQuickConnectName {
        /// Creates a new `UpdateQuickConnectName`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateQuickConnectName,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateQuickConnectNameError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateQuickConnectNameOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateQuickConnectNameError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 for the quick connect.</p>
        pub fn quick_connect_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.quick_connect_id(input.into());
            self
        }
        /// <p>The identifier for the quick connect.</p>
        pub fn set_quick_connect_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_quick_connect_id(input);
            self
        }
        /// <p>The name of the quick connect.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the quick connect.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the quick connect.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the quick connect.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRoutingProfileConcurrency`.
    ///
    /// <p>Updates the channels that agents can handle in the Contact Control Panel (CCP) for a routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRoutingProfileConcurrency {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_routing_profile_concurrency_input::Builder,
    }
    impl UpdateRoutingProfileConcurrency {
        /// Creates a new `UpdateRoutingProfileConcurrency`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateRoutingProfileConcurrency,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateRoutingProfileConcurrencyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateRoutingProfileConcurrencyOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateRoutingProfileConcurrencyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// Appends an item to `MediaConcurrencies`.
        ///
        /// To override the contents of this collection use [`set_media_concurrencies`](Self::set_media_concurrencies).
        ///
        /// <p>The channels that agents can handle in the Contact Control Panel (CCP).</p>
        pub fn media_concurrencies(mut self, input: crate::model::MediaConcurrency) -> Self {
            self.inner = self.inner.media_concurrencies(input);
            self
        }
        /// <p>The channels that agents can handle in the Contact Control Panel (CCP).</p>
        pub fn set_media_concurrencies(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::MediaConcurrency>>,
        ) -> Self {
            self.inner = self.inner.set_media_concurrencies(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRoutingProfileDefaultOutboundQueue`.
    ///
    /// <p>Updates the default outbound queue of a routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRoutingProfileDefaultOutboundQueue {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_routing_profile_default_outbound_queue_input::Builder,
    }
    impl UpdateRoutingProfileDefaultOutboundQueue {
        /// Creates a new `UpdateRoutingProfileDefaultOutboundQueue`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateRoutingProfileDefaultOutboundQueue,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<
                crate::error::UpdateRoutingProfileDefaultOutboundQueueError,
            >,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateRoutingProfileDefaultOutboundQueueOutput,
            aws_smithy_http::result::SdkError<
                crate::error::UpdateRoutingProfileDefaultOutboundQueueError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// <p>The identifier for the default outbound queue.</p>
        pub fn default_outbound_queue_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.default_outbound_queue_id(input.into());
            self
        }
        /// <p>The identifier for the default outbound queue.</p>
        pub fn set_default_outbound_queue_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_default_outbound_queue_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRoutingProfileName`.
    ///
    /// <p>Updates the name and description of a routing profile. The request accepts the following data in JSON format. At least <code>Name</code> or <code>Description</code> must be provided.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRoutingProfileName {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_routing_profile_name_input::Builder,
    }
    impl UpdateRoutingProfileName {
        /// Creates a new `UpdateRoutingProfileName`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateRoutingProfileName,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateRoutingProfileNameError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateRoutingProfileNameOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateRoutingProfileNameError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// <p>The name of the routing profile. Must not be more than 127 characters.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the routing profile. Must not be more than 127 characters.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the routing profile. Must not be more than 250 characters.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the routing profile. Must not be more than 250 characters.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRoutingProfileQueues`.
    ///
    /// <p>Updates the properties associated with a set of queues for a routing profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRoutingProfileQueues {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_routing_profile_queues_input::Builder,
    }
    impl UpdateRoutingProfileQueues {
        /// Creates a new `UpdateRoutingProfileQueues`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateRoutingProfileQueues,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateRoutingProfileQueuesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateRoutingProfileQueuesOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateRoutingProfileQueuesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 routing profile.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// Appends an item to `QueueConfigs`.
        ///
        /// To override the contents of this collection use [`set_queue_configs`](Self::set_queue_configs).
        ///
        /// <p>The queues to be updated for this routing profile. Queues must first be associated to the routing profile. You can do this using AssociateRoutingProfileQueues.</p>
        pub fn queue_configs(mut self, input: crate::model::RoutingProfileQueueConfig) -> Self {
            self.inner = self.inner.queue_configs(input);
            self
        }
        /// <p>The queues to be updated for this routing profile. Queues must first be associated to the routing profile. You can do this using AssociateRoutingProfileQueues.</p>
        pub fn set_queue_configs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RoutingProfileQueueConfig>>,
        ) -> Self {
            self.inner = self.inner.set_queue_configs(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRule`.
    ///
    /// <p>Updates a rule for the specified Amazon Connect instance.</p>
    /// <p>Use the <a href="https://docs.aws.amazon.com/connect/latest/APIReference/connect-rules-language.html">Rules Function language</a> to code conditions for the rule. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRule {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_rule_input::Builder,
    }
    impl UpdateRule {
        /// Creates a new `UpdateRule`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateRule,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateRuleError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateRuleOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateRuleError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>A unique identifier for the rule.</p>
        pub fn rule_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.rule_id(input.into());
            self
        }
        /// <p>A unique identifier for the rule.</p>
        pub fn set_rule_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_rule_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the rule. You can change the name only if <code>TriggerEventSource</code> is one of the following values: <code>OnZendeskTicketCreate</code> | <code>OnZendeskTicketStatusUpdate</code> | <code>OnSalesforceCaseCreate</code> </p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the rule. You can change the name only if <code>TriggerEventSource</code> is one of the following values: <code>OnZendeskTicketCreate</code> | <code>OnZendeskTicketStatusUpdate</code> | <code>OnSalesforceCaseCreate</code> </p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The conditions of the rule.</p>
        pub fn function(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.function(input.into());
            self
        }
        /// <p>The conditions of the rule.</p>
        pub fn set_function(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_function(input);
            self
        }
        /// Appends an item to `Actions`.
        ///
        /// To override the contents of this collection use [`set_actions`](Self::set_actions).
        ///
        /// <p>A list of actions to be run when the rule is triggered.</p>
        pub fn actions(mut self, input: crate::model::RuleAction) -> Self {
            self.inner = self.inner.actions(input);
            self
        }
        /// <p>A list of actions to be run when the rule is triggered.</p>
        pub fn set_actions(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RuleAction>>,
        ) -> Self {
            self.inner = self.inner.set_actions(input);
            self
        }
        /// <p>The publish status of the rule.</p>
        pub fn publish_status(mut self, input: crate::model::RulePublishStatus) -> Self {
            self.inner = self.inner.publish_status(input);
            self
        }
        /// <p>The publish status of the rule.</p>
        pub fn set_publish_status(
            mut self,
            input: std::option::Option<crate::model::RulePublishStatus>,
        ) -> Self {
            self.inner = self.inner.set_publish_status(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateSecurityProfile`.
    ///
    /// <p>This API is in preview release for Amazon Connect and is subject to change.</p>
    /// <p>Updates a security profile.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateSecurityProfile {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_security_profile_input::Builder,
    }
    impl UpdateSecurityProfile {
        /// Creates a new `UpdateSecurityProfile`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateSecurityProfile,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateSecurityProfileError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateSecurityProfileOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateSecurityProfileError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The description of the security profile.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the security profile.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// Appends an item to `Permissions`.
        ///
        /// To override the contents of this collection use [`set_permissions`](Self::set_permissions).
        ///
        /// <p>The permissions granted to a security profile. For a list of valid permissions, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html">List of security profile permissions</a>.</p>
        pub fn permissions(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.permissions(input.into());
            self
        }
        /// <p>The permissions granted to a security profile. For a list of valid permissions, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html">List of security profile permissions</a>.</p>
        pub fn set_permissions(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_permissions(input);
            self
        }
        /// <p>The identifier for the security profle.</p>
        pub fn security_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_profile_id(input.into());
            self
        }
        /// <p>The identifier for the security profle.</p>
        pub fn set_security_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_security_profile_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
        /// Adds a key-value pair to `AllowedAccessControlTags`.
        ///
        /// To override the contents of this collection use [`set_allowed_access_control_tags`](Self::set_allowed_access_control_tags).
        ///
        /// <p>The list of tags that a security profile uses to restrict access to resources in Amazon Connect.</p>
        pub fn allowed_access_control_tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.allowed_access_control_tags(k.into(), v.into());
            self
        }
        /// <p>The list of tags that a security profile uses to restrict access to resources in Amazon Connect.</p>
        pub fn set_allowed_access_control_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_allowed_access_control_tags(input);
            self
        }
        /// Appends an item to `TagRestrictedResources`.
        ///
        /// To override the contents of this collection use [`set_tag_restricted_resources`](Self::set_tag_restricted_resources).
        ///
        /// <p>The list of resources that a security profile applies tag restrictions to in Amazon Connect.</p>
        pub fn tag_restricted_resources(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_restricted_resources(input.into());
            self
        }
        /// <p>The list of resources that a security profile applies tag restrictions to in Amazon Connect.</p>
        pub fn set_tag_restricted_resources(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_tag_restricted_resources(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateTaskTemplate`.
    ///
    /// <p>Updates details about a specific task template in the specified Amazon Connect instance. This operation does not support partial updates. Instead it does a full update of template content.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateTaskTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_task_template_input::Builder,
    }
    impl UpdateTaskTemplate {
        /// Creates a new `UpdateTaskTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateTaskTemplate,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateTaskTemplateError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateTaskTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateTaskTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>A unique identifier for the task template.</p>
        pub fn task_template_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.task_template_id(input.into());
            self
        }
        /// <p>A unique identifier for the task template.</p>
        pub fn set_task_template_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_task_template_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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 name of the task template.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the task template.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the task template.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the task template.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
        pub fn contact_flow_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.contact_flow_id(input.into());
            self
        }
        /// <p>The identifier of the flow that runs by default when a task is created by referencing this template.</p>
        pub fn set_contact_flow_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_contact_flow_id(input);
            self
        }
        /// <p>Constraints that are applicable to the fields listed.</p>
        pub fn constraints(mut self, input: crate::model::TaskTemplateConstraints) -> Self {
            self.inner = self.inner.constraints(input);
            self
        }
        /// <p>Constraints that are applicable to the fields listed.</p>
        pub fn set_constraints(
            mut self,
            input: std::option::Option<crate::model::TaskTemplateConstraints>,
        ) -> Self {
            self.inner = self.inner.set_constraints(input);
            self
        }
        /// <p>The default values for fields when a task is created by referencing this template.</p>
        pub fn defaults(mut self, input: crate::model::TaskTemplateDefaults) -> Self {
            self.inner = self.inner.defaults(input);
            self
        }
        /// <p>The default values for fields when a task is created by referencing this template.</p>
        pub fn set_defaults(
            mut self,
            input: std::option::Option<crate::model::TaskTemplateDefaults>,
        ) -> Self {
            self.inner = self.inner.set_defaults(input);
            self
        }
        /// <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
        pub fn status(mut self, input: crate::model::TaskTemplateStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>Marks a template as <code>ACTIVE</code> or <code>INACTIVE</code> for a task to refer to it. Tasks can only be created from <code>ACTIVE</code> templates. If a template is marked as <code>INACTIVE</code>, then a task that refers to this template cannot be created.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::TaskTemplateStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// Appends an item to `Fields`.
        ///
        /// To override the contents of this collection use [`set_fields`](Self::set_fields).
        ///
        /// <p>Fields that are part of the template.</p>
        pub fn fields(mut self, input: crate::model::TaskTemplateField) -> Self {
            self.inner = self.inner.fields(input);
            self
        }
        /// <p>Fields that are part of the template.</p>
        pub fn set_fields(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::TaskTemplateField>>,
        ) -> Self {
            self.inner = self.inner.set_fields(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateTrafficDistribution`.
    ///
    /// <p>Updates the traffic distribution for a given traffic distribution group. </p>
    /// <p>For more information about updating a traffic distribution group, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/update-telephony-traffic-distribution.html">Update telephony traffic distribution across Amazon Web Services Regions </a> in the <i>Amazon Connect Administrator Guide</i>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateTrafficDistribution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_traffic_distribution_input::Builder,
    }
    impl UpdateTrafficDistribution {
        /// Creates a new `UpdateTrafficDistribution`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateTrafficDistribution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateTrafficDistributionError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateTrafficDistributionOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateTrafficDistributionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.id(input.into());
            self
        }
        /// <p>The identifier of the traffic distribution group. This can be the ID or the ARN if the API is being called in the Region where the traffic distribution group was created. The ARN must be provided if the call is from the replicated Region.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_id(input);
            self
        }
        /// <p>The distribution of traffic between the instance and its replica(s).</p>
        pub fn telephony_config(mut self, input: crate::model::TelephonyConfig) -> Self {
            self.inner = self.inner.telephony_config(input);
            self
        }
        /// <p>The distribution of traffic between the instance and its replica(s).</p>
        pub fn set_telephony_config(
            mut self,
            input: std::option::Option<crate::model::TelephonyConfig>,
        ) -> Self {
            self.inner = self.inner.set_telephony_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateUserHierarchy`.
    ///
    /// <p>Assigns the specified hierarchy group to the specified user.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUserHierarchy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_user_hierarchy_input::Builder,
    }
    impl UpdateUserHierarchy {
        /// Creates a new `UpdateUserHierarchy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateUserHierarchy,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserHierarchyError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateUserHierarchyOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserHierarchyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn hierarchy_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hierarchy_group_id(input.into());
            self
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn set_hierarchy_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hierarchy_group_id(input);
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `UpdateUserHierarchyGroupName`.
    ///
    /// <p>Updates the name of the user hierarchy group. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUserHierarchyGroupName {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_user_hierarchy_group_name_input::Builder,
    }
    impl UpdateUserHierarchyGroupName {
        /// Creates a new `UpdateUserHierarchyGroupName`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateUserHierarchyGroupName,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserHierarchyGroupNameError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateUserHierarchyGroupNameOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserHierarchyGroupNameError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the hierarchy group. Must not be more than 100 characters.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the hierarchy group. Must not be more than 100 characters.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn hierarchy_group_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.hierarchy_group_id(input.into());
            self
        }
        /// <p>The identifier of the hierarchy group.</p>
        pub fn set_hierarchy_group_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_hierarchy_group_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `UpdateUserHierarchyStructure`.
    ///
    /// <p>Updates the user hierarchy structure: add, remove, and rename user hierarchy levels.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUserHierarchyStructure {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_user_hierarchy_structure_input::Builder,
    }
    impl UpdateUserHierarchyStructure {
        /// Creates a new `UpdateUserHierarchyStructure`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateUserHierarchyStructure,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserHierarchyStructureError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateUserHierarchyStructureOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserHierarchyStructureError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The hierarchy levels to update.</p>
        pub fn hierarchy_structure(
            mut self,
            input: crate::model::HierarchyStructureUpdate,
        ) -> Self {
            self.inner = self.inner.hierarchy_structure(input);
            self
        }
        /// <p>The hierarchy levels to update.</p>
        pub fn set_hierarchy_structure(
            mut self,
            input: std::option::Option<crate::model::HierarchyStructureUpdate>,
        ) -> Self {
            self.inner = self.inner.set_hierarchy_structure(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `UpdateUserIdentityInfo`.
    ///
    /// <p>Updates the identity information for the specified user.</p> <important>
    /// <p>We strongly recommend limiting who has the ability to invoke <code>UpdateUserIdentityInfo</code>. Someone with that ability can change the login credentials of other users by changing their email address. This poses a security risk to your organization. They can change the email address of a user to the attacker's email address, and then reset the password through email. For more information, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-best-practices.html">Best Practices for Security Profiles</a> in the <i>Amazon Connect Administrator Guide</i>.</p>
    /// </important>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUserIdentityInfo {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_user_identity_info_input::Builder,
    }
    impl UpdateUserIdentityInfo {
        /// Creates a new `UpdateUserIdentityInfo`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateUserIdentityInfo,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserIdentityInfoError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateUserIdentityInfoOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserIdentityInfoError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identity information for the user.</p>
        pub fn identity_info(mut self, input: crate::model::UserIdentityInfo) -> Self {
            self.inner = self.inner.identity_info(input);
            self
        }
        /// <p>The identity information for the user.</p>
        pub fn set_identity_info(
            mut self,
            input: std::option::Option<crate::model::UserIdentityInfo>,
        ) -> Self {
            self.inner = self.inner.set_identity_info(input);
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `UpdateUserPhoneConfig`.
    ///
    /// <p>Updates the phone configuration settings for the specified user.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUserPhoneConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_user_phone_config_input::Builder,
    }
    impl UpdateUserPhoneConfig {
        /// Creates a new `UpdateUserPhoneConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateUserPhoneConfig,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserPhoneConfigError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateUserPhoneConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserPhoneConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>Information about phone configuration settings for the user.</p>
        pub fn phone_config(mut self, input: crate::model::UserPhoneConfig) -> Self {
            self.inner = self.inner.phone_config(input);
            self
        }
        /// <p>Information about phone configuration settings for the user.</p>
        pub fn set_phone_config(
            mut self,
            input: std::option::Option<crate::model::UserPhoneConfig>,
        ) -> Self {
            self.inner = self.inner.set_phone_config(input);
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `UpdateUserRoutingProfile`.
    ///
    /// <p>Assigns the specified routing profile to the specified user.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUserRoutingProfile {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_user_routing_profile_input::Builder,
    }
    impl UpdateUserRoutingProfile {
        /// Creates a new `UpdateUserRoutingProfile`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateUserRoutingProfile,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserRoutingProfileError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateUserRoutingProfileOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserRoutingProfileError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the routing profile for the user.</p>
        pub fn routing_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.routing_profile_id(input.into());
            self
        }
        /// <p>The identifier of the routing profile for the user.</p>
        pub fn set_routing_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_routing_profile_id(input);
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
    /// Fluent builder constructing a request to `UpdateUserSecurityProfiles`.
    ///
    /// <p>Assigns the specified security profiles to the specified user.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUserSecurityProfiles {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_user_security_profiles_input::Builder,
    }
    impl UpdateUserSecurityProfiles {
        /// Creates a new `UpdateUserSecurityProfiles`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

        /// Consume this builder, creating a customizable operation that can be modified before being
        /// sent. The operation's inner [http::Request] can be modified as well.
        pub async fn customize(
            self,
        ) -> std::result::Result<
            crate::operation::customize::CustomizableOperation<
                crate::operation::UpdateUserSecurityProfiles,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserSecurityProfilesError>,
        > {
            let handle = self.handle.clone();
            let operation = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            Ok(crate::operation::customize::CustomizableOperation { handle, operation })
        }

        /// 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::output::UpdateUserSecurityProfilesOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUserSecurityProfilesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Appends an item to `SecurityProfileIds`.
        ///
        /// To override the contents of this collection use [`set_security_profile_ids`](Self::set_security_profile_ids).
        ///
        /// <p>The identifiers of the security profiles for the user.</p>
        pub fn security_profile_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_profile_ids(input.into());
            self
        }
        /// <p>The identifiers of the security profiles for the user.</p>
        pub fn set_security_profile_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_security_profile_ids(input);
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn user_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.user_id(input.into());
            self
        }
        /// <p>The identifier of the user account.</p>
        pub fn set_user_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_user_id(input);
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance.</p>
        pub fn instance_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_id(input.into());
            self
        }
        /// <p>The identifier of the Amazon Connect instance. You can find the instanceId in the 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
        }
    }
}

impl Client {
    /// Creates a new client from an [SDK Config](aws_types::sdk_config::SdkConfig).
    ///
    /// # Panics
    ///
    /// - This method will panic if the `sdk_config` is missing an async sleep implementation. If you experience this panic, set
    ///     the `sleep_impl` on the Config passed into this function to fix it.
    /// - This method will panic if the `sdk_config` is missing an HTTP connector. If you experience this panic, set the
    ///     `http_connector` on the Config passed into this function to fix it.
    pub fn new(sdk_config: &aws_types::sdk_config::SdkConfig) -> Self {
        Self::from_conf(sdk_config.into())
    }

    /// Creates a new client from the service [`Config`](crate::Config).
    ///
    /// # Panics
    ///
    /// - This method will panic if the `conf` is missing an async sleep implementation. If you experience this panic, set
    ///     the `sleep_impl` on the Config passed into this function to fix it.
    /// - This method will panic if the `conf` is missing an HTTP connector. If you experience this panic, set the
    ///     `http_connector` on the Config passed into this function to fix it.
    pub fn from_conf(conf: crate::Config) -> Self {
        let retry_config = conf
            .retry_config()
            .cloned()
            .unwrap_or_else(aws_smithy_types::retry::RetryConfig::disabled);
        let timeout_config = conf
            .timeout_config()
            .cloned()
            .unwrap_or_else(aws_smithy_types::timeout::TimeoutConfig::disabled);
        let sleep_impl = conf.sleep_impl();
        if (retry_config.has_retry() || timeout_config.has_timeouts()) && sleep_impl.is_none() {
            panic!("An async sleep implementation is required for retries or timeouts to work. \
                                    Set the `sleep_impl` on the Config passed into this function to fix this panic.");
        }

        let connector = conf.http_connector().and_then(|c| {
            let timeout_config = conf
                .timeout_config()
                .cloned()
                .unwrap_or_else(aws_smithy_types::timeout::TimeoutConfig::disabled);
            let connector_settings =
                aws_smithy_client::http_connector::ConnectorSettings::from_timeout_config(
                    &timeout_config,
                );
            c.connector(&connector_settings, conf.sleep_impl())
        });

        let builder = aws_smithy_client::Builder::new();

        let builder = match connector {
            // Use provided connector
            Some(c) => builder.connector(c),
            None => {
                #[cfg(any(feature = "rustls", feature = "native-tls"))]
                {
                    // Use default connector based on enabled features
                    builder.dyn_https_connector(
                        aws_smithy_client::http_connector::ConnectorSettings::from_timeout_config(
                            &timeout_config,
                        ),
                    )
                }
                #[cfg(not(any(feature = "rustls", feature = "native-tls")))]
                {
                    panic!("No HTTP connector was available. Enable the `rustls` or `native-tls` crate feature or set a connector to fix this.");
                }
            }
        };
        let mut builder = builder
            .middleware(aws_smithy_client::erase::DynMiddleware::new(
                crate::middleware::DefaultMiddleware::new(),
            ))
            .retry_config(retry_config.into())
            .operation_timeout_config(timeout_config.into());
        builder.set_sleep_impl(sleep_impl);
        let client = builder.build();

        Self {
            handle: std::sync::Arc::new(Handle { client, conf }),
        }
    }
}