aws-sdk-personalize 0.24.0

AWS SDK for Amazon Personalize
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 Personalize
///
/// Client for invoking operations on Amazon Personalize. Each operation on Amazon Personalize 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_personalize::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_personalize::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_personalize::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 [`CreateBatchInferenceJob`](crate::client::fluent_builders::CreateBatchInferenceJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`job_name(impl Into<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::job_name) / [`set_job_name(Option<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_job_name): <p>The name of the batch inference job to create.</p>
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version that will be used to generate the batch inference recommendations.</p>
    ///   - [`filter_arn(impl Into<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::filter_arn) / [`set_filter_arn(Option<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_filter_arn): <p>The ARN of the filter to apply to the batch inference job. For more information on using filters, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-batch.html">Filtering batch recommendations</a>.</p>
    ///   - [`num_results(i32)`](crate::client::fluent_builders::CreateBatchInferenceJob::num_results) / [`set_num_results(Option<i32>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_num_results): <p>The number of recommendations to retrieve.</p>
    ///   - [`job_input(BatchInferenceJobInput)`](crate::client::fluent_builders::CreateBatchInferenceJob::job_input) / [`set_job_input(Option<BatchInferenceJobInput>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_job_input): <p>The Amazon S3 path that leads to the input file to base your recommendations on. The input material must be in JSON format.</p>
    ///   - [`job_output(BatchInferenceJobOutput)`](crate::client::fluent_builders::CreateBatchInferenceJob::job_output) / [`set_job_output(Option<BatchInferenceJobOutput>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_job_output): <p>The path to the Amazon S3 bucket where the job's output will be stored.</p>
    ///   - [`role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::role_arn) / [`set_role_arn(Option<String>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_role_arn): <p>The ARN of the Amazon Identity and Access Management role that has permissions to read and write to your input and output Amazon S3 buckets respectively.</p>
    ///   - [`batch_inference_job_config(BatchInferenceJobConfig)`](crate::client::fluent_builders::CreateBatchInferenceJob::batch_inference_job_config) / [`set_batch_inference_job_config(Option<BatchInferenceJobConfig>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_batch_inference_job_config): <p>The configuration details of a batch inference job.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateBatchInferenceJob::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateBatchInferenceJob::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the batch inference job.</p>
    /// - On success, responds with [`CreateBatchInferenceJobOutput`](crate::output::CreateBatchInferenceJobOutput) with field(s):
    ///   - [`batch_inference_job_arn(Option<String>)`](crate::output::CreateBatchInferenceJobOutput::batch_inference_job_arn): <p>The ARN of the batch inference job.</p>
    /// - On failure, responds with [`SdkError<CreateBatchInferenceJobError>`](crate::error::CreateBatchInferenceJobError)
    pub fn create_batch_inference_job(&self) -> fluent_builders::CreateBatchInferenceJob {
        fluent_builders::CreateBatchInferenceJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateBatchSegmentJob`](crate::client::fluent_builders::CreateBatchSegmentJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`job_name(impl Into<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::job_name) / [`set_job_name(Option<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_job_name): <p>The name of the batch segment job to create.</p>
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version you want the batch segment job to use to generate batch segments.</p>
    ///   - [`filter_arn(impl Into<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::filter_arn) / [`set_filter_arn(Option<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_filter_arn): <p>The ARN of the filter to apply to the batch segment job. For more information on using filters, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-batch.html">Filtering batch recommendations</a>.</p>
    ///   - [`num_results(i32)`](crate::client::fluent_builders::CreateBatchSegmentJob::num_results) / [`set_num_results(Option<i32>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_num_results): <p>The number of predicted users generated by the batch segment job for each line of input data.</p>
    ///   - [`job_input(BatchSegmentJobInput)`](crate::client::fluent_builders::CreateBatchSegmentJob::job_input) / [`set_job_input(Option<BatchSegmentJobInput>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_job_input): <p>The Amazon S3 path for the input data used to generate the batch segment job.</p>
    ///   - [`job_output(BatchSegmentJobOutput)`](crate::client::fluent_builders::CreateBatchSegmentJob::job_output) / [`set_job_output(Option<BatchSegmentJobOutput>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_job_output): <p>The Amazon S3 path for the bucket where the job's output will be stored.</p>
    ///   - [`role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::role_arn) / [`set_role_arn(Option<String>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_role_arn): <p>The ARN of the Amazon Identity and Access Management role that has permissions to read and write to your input and output Amazon S3 buckets respectively.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateBatchSegmentJob::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateBatchSegmentJob::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the batch segment job.</p>
    /// - On success, responds with [`CreateBatchSegmentJobOutput`](crate::output::CreateBatchSegmentJobOutput) with field(s):
    ///   - [`batch_segment_job_arn(Option<String>)`](crate::output::CreateBatchSegmentJobOutput::batch_segment_job_arn): <p>The ARN of the batch segment job.</p>
    /// - On failure, responds with [`SdkError<CreateBatchSegmentJobError>`](crate::error::CreateBatchSegmentJobError)
    pub fn create_batch_segment_job(&self) -> fluent_builders::CreateBatchSegmentJob {
        fluent_builders::CreateBatchSegmentJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateCampaign`](crate::client::fluent_builders::CreateCampaign) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateCampaign::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateCampaign::set_name): <p>A name for the new campaign. The campaign name must be unique within your account.</p>
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::CreateCampaign::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::CreateCampaign::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version to deploy.</p>
    ///   - [`min_provisioned_tps(i32)`](crate::client::fluent_builders::CreateCampaign::min_provisioned_tps) / [`set_min_provisioned_tps(Option<i32>)`](crate::client::fluent_builders::CreateCampaign::set_min_provisioned_tps): <p>Specifies the requested minimum provisioned transactions (recommendations) per second that Amazon Personalize will support.</p>
    ///   - [`campaign_config(CampaignConfig)`](crate::client::fluent_builders::CreateCampaign::campaign_config) / [`set_campaign_config(Option<CampaignConfig>)`](crate::client::fluent_builders::CreateCampaign::set_campaign_config): <p>The configuration details of a campaign.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateCampaign::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateCampaign::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the campaign.</p>
    /// - On success, responds with [`CreateCampaignOutput`](crate::output::CreateCampaignOutput) with field(s):
    ///   - [`campaign_arn(Option<String>)`](crate::output::CreateCampaignOutput::campaign_arn): <p>The Amazon Resource Name (ARN) of the campaign.</p>
    /// - On failure, responds with [`SdkError<CreateCampaignError>`](crate::error::CreateCampaignError)
    pub fn create_campaign(&self) -> fluent_builders::CreateCampaign {
        fluent_builders::CreateCampaign::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateDataset`](crate::client::fluent_builders::CreateDataset) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateDataset::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateDataset::set_name): <p>The name for the dataset.</p>
    ///   - [`schema_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDataset::schema_arn) / [`set_schema_arn(Option<String>)`](crate::client::fluent_builders::CreateDataset::set_schema_arn): <p>The ARN of the schema to associate with the dataset. The schema defines the dataset fields.</p>
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDataset::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::CreateDataset::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the dataset group to add the dataset to.</p>
    ///   - [`dataset_type(impl Into<String>)`](crate::client::fluent_builders::CreateDataset::dataset_type) / [`set_dataset_type(Option<String>)`](crate::client::fluent_builders::CreateDataset::set_dataset_type): <p>The type of dataset.</p>  <p>One of the following (case insensitive) values:</p>  <ul>   <li> <p>Interactions</p> </li>   <li> <p>Items</p> </li>   <li> <p>Users</p> </li>  </ul>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateDataset::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateDataset::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset.</p>
    /// - On success, responds with [`CreateDatasetOutput`](crate::output::CreateDatasetOutput) with field(s):
    ///   - [`dataset_arn(Option<String>)`](crate::output::CreateDatasetOutput::dataset_arn): <p>The ARN of the dataset.</p>
    /// - On failure, responds with [`SdkError<CreateDatasetError>`](crate::error::CreateDatasetError)
    pub fn create_dataset(&self) -> fluent_builders::CreateDataset {
        fluent_builders::CreateDataset::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateDatasetExportJob`](crate::client::fluent_builders::CreateDatasetExportJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`job_name(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetExportJob::job_name) / [`set_job_name(Option<String>)`](crate::client::fluent_builders::CreateDatasetExportJob::set_job_name): <p>The name for the dataset export job.</p>
    ///   - [`dataset_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetExportJob::dataset_arn) / [`set_dataset_arn(Option<String>)`](crate::client::fluent_builders::CreateDatasetExportJob::set_dataset_arn): <p>The Amazon Resource Name (ARN) of the dataset that contains the data to export.</p>
    ///   - [`ingestion_mode(IngestionMode)`](crate::client::fluent_builders::CreateDatasetExportJob::ingestion_mode) / [`set_ingestion_mode(Option<IngestionMode>)`](crate::client::fluent_builders::CreateDatasetExportJob::set_ingestion_mode): <p>The data to export, based on how you imported the data. You can choose to export only <code>BULK</code> data that you imported using a dataset import job, only <code>PUT</code> data that you imported incrementally (using the console, PutEvents, PutUsers and PutItems operations), or <code>ALL</code> for both types. The default value is <code>PUT</code>. </p>
    ///   - [`role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetExportJob::role_arn) / [`set_role_arn(Option<String>)`](crate::client::fluent_builders::CreateDatasetExportJob::set_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that has permissions to add data to your output Amazon S3 bucket.</p>
    ///   - [`job_output(DatasetExportJobOutput)`](crate::client::fluent_builders::CreateDatasetExportJob::job_output) / [`set_job_output(Option<DatasetExportJobOutput>)`](crate::client::fluent_builders::CreateDatasetExportJob::set_job_output): <p>The path to the Amazon S3 bucket where the job's output is stored.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateDatasetExportJob::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateDatasetExportJob::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset export job.</p>
    /// - On success, responds with [`CreateDatasetExportJobOutput`](crate::output::CreateDatasetExportJobOutput) with field(s):
    ///   - [`dataset_export_job_arn(Option<String>)`](crate::output::CreateDatasetExportJobOutput::dataset_export_job_arn): <p>The Amazon Resource Name (ARN) of the dataset export job.</p>
    /// - On failure, responds with [`SdkError<CreateDatasetExportJobError>`](crate::error::CreateDatasetExportJobError)
    pub fn create_dataset_export_job(&self) -> fluent_builders::CreateDatasetExportJob {
        fluent_builders::CreateDatasetExportJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateDatasetGroup`](crate::client::fluent_builders::CreateDatasetGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetGroup::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateDatasetGroup::set_name): <p>The name for the new dataset group.</p>
    ///   - [`role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetGroup::role_arn) / [`set_role_arn(Option<String>)`](crate::client::fluent_builders::CreateDatasetGroup::set_role_arn): <p>The ARN of the Identity and Access Management (IAM) role that has permissions to access the Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.</p>
    ///   - [`kms_key_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetGroup::kms_key_arn) / [`set_kms_key_arn(Option<String>)`](crate::client::fluent_builders::CreateDatasetGroup::set_kms_key_arn): <p>The Amazon Resource Name (ARN) of a Key Management Service (KMS) key used to encrypt the datasets.</p>
    ///   - [`domain(Domain)`](crate::client::fluent_builders::CreateDatasetGroup::domain) / [`set_domain(Option<Domain>)`](crate::client::fluent_builders::CreateDatasetGroup::set_domain): <p>The domain of the dataset group. Specify a domain to create a Domain dataset group. The domain you specify determines the default schemas for datasets and the use cases available for recommenders. If you don't specify a domain, you create a Custom dataset group with solution versions that you deploy with a campaign. </p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateDatasetGroup::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateDatasetGroup::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset group.</p>
    /// - On success, responds with [`CreateDatasetGroupOutput`](crate::output::CreateDatasetGroupOutput) with field(s):
    ///   - [`dataset_group_arn(Option<String>)`](crate::output::CreateDatasetGroupOutput::dataset_group_arn): <p>The Amazon Resource Name (ARN) of the new dataset group.</p>
    ///   - [`domain(Option<Domain>)`](crate::output::CreateDatasetGroupOutput::domain): <p>The domain for the new Domain dataset group.</p>
    /// - On failure, responds with [`SdkError<CreateDatasetGroupError>`](crate::error::CreateDatasetGroupError)
    pub fn create_dataset_group(&self) -> fluent_builders::CreateDatasetGroup {
        fluent_builders::CreateDatasetGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateDatasetImportJob`](crate::client::fluent_builders::CreateDatasetImportJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`job_name(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetImportJob::job_name) / [`set_job_name(Option<String>)`](crate::client::fluent_builders::CreateDatasetImportJob::set_job_name): <p>The name for the dataset import job.</p>
    ///   - [`dataset_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetImportJob::dataset_arn) / [`set_dataset_arn(Option<String>)`](crate::client::fluent_builders::CreateDatasetImportJob::set_dataset_arn): <p>The ARN of the dataset that receives the imported data.</p>
    ///   - [`data_source(DataSource)`](crate::client::fluent_builders::CreateDatasetImportJob::data_source) / [`set_data_source(Option<DataSource>)`](crate::client::fluent_builders::CreateDatasetImportJob::set_data_source): <p>The Amazon S3 bucket that contains the training data to import.</p>
    ///   - [`role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateDatasetImportJob::role_arn) / [`set_role_arn(Option<String>)`](crate::client::fluent_builders::CreateDatasetImportJob::set_role_arn): <p>The ARN of the IAM role that has permissions to read from the Amazon S3 data source.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateDatasetImportJob::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateDatasetImportJob::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset import job.</p>
    ///   - [`import_mode(ImportMode)`](crate::client::fluent_builders::CreateDatasetImportJob::import_mode) / [`set_import_mode(Option<ImportMode>)`](crate::client::fluent_builders::CreateDatasetImportJob::set_import_mode): <p>Specify how to add the new records to an existing dataset. The default import mode is <code>FULL</code>. If you haven't imported bulk records into the dataset previously, you can only specify <code>FULL</code>.</p>  <ul>   <li> <p>Specify <code>FULL</code> to overwrite all existing bulk data in your dataset. Data you imported individually is not replaced.</p> </li>   <li> <p>Specify <code>INCREMENTAL</code> to append the new records to the existing data in your dataset. Amazon Personalize replaces any record with the same ID with the new one.</p> </li>  </ul>
    ///   - [`publish_attribution_metrics_to_s3(bool)`](crate::client::fluent_builders::CreateDatasetImportJob::publish_attribution_metrics_to_s3) / [`set_publish_attribution_metrics_to_s3(Option<bool>)`](crate::client::fluent_builders::CreateDatasetImportJob::set_publish_attribution_metrics_to_s3): <p>If you created a metric attribution, specify whether to publish metrics for this import job to Amazon S3</p>
    /// - On success, responds with [`CreateDatasetImportJobOutput`](crate::output::CreateDatasetImportJobOutput) with field(s):
    ///   - [`dataset_import_job_arn(Option<String>)`](crate::output::CreateDatasetImportJobOutput::dataset_import_job_arn): <p>The ARN of the dataset import job.</p>
    /// - On failure, responds with [`SdkError<CreateDatasetImportJobError>`](crate::error::CreateDatasetImportJobError)
    pub fn create_dataset_import_job(&self) -> fluent_builders::CreateDatasetImportJob {
        fluent_builders::CreateDatasetImportJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateEventTracker`](crate::client::fluent_builders::CreateEventTracker) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateEventTracker::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateEventTracker::set_name): <p>The name for the event tracker.</p>
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::CreateEventTracker::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::CreateEventTracker::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the dataset group that receives the event data.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateEventTracker::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateEventTracker::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the event tracker.</p>
    /// - On success, responds with [`CreateEventTrackerOutput`](crate::output::CreateEventTrackerOutput) with field(s):
    ///   - [`event_tracker_arn(Option<String>)`](crate::output::CreateEventTrackerOutput::event_tracker_arn): <p>The ARN of the event tracker.</p>
    ///   - [`tracking_id(Option<String>)`](crate::output::CreateEventTrackerOutput::tracking_id): <p>The ID of the event tracker. Include this ID in requests to the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_UBS_PutEvents.html">PutEvents</a> API.</p>
    /// - On failure, responds with [`SdkError<CreateEventTrackerError>`](crate::error::CreateEventTrackerError)
    pub fn create_event_tracker(&self) -> fluent_builders::CreateEventTracker {
        fluent_builders::CreateEventTracker::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateFilter`](crate::client::fluent_builders::CreateFilter) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateFilter::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateFilter::set_name): <p>The name of the filter to create.</p>
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::CreateFilter::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::CreateFilter::set_dataset_group_arn): <p>The ARN of the dataset group that the filter will belong to.</p>
    ///   - [`filter_expression(impl Into<String>)`](crate::client::fluent_builders::CreateFilter::filter_expression) / [`set_filter_expression(Option<String>)`](crate::client::fluent_builders::CreateFilter::set_filter_expression): <p>The filter expression defines which items are included or excluded from recommendations. Filter expression must follow specific format rules. For information about filter expression structure and syntax, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-expressions.html">Filter expressions</a>.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateFilter::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateFilter::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the filter.</p>
    /// - On success, responds with [`CreateFilterOutput`](crate::output::CreateFilterOutput) with field(s):
    ///   - [`filter_arn(Option<String>)`](crate::output::CreateFilterOutput::filter_arn): <p>The ARN of the new filter.</p>
    /// - On failure, responds with [`SdkError<CreateFilterError>`](crate::error::CreateFilterError)
    pub fn create_filter(&self) -> fluent_builders::CreateFilter {
        fluent_builders::CreateFilter::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateMetricAttribution`](crate::client::fluent_builders::CreateMetricAttribution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateMetricAttribution::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateMetricAttribution::set_name): <p>A name for the metric attribution.</p>
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::CreateMetricAttribution::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::CreateMetricAttribution::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the destination dataset group for the metric attribution.</p>
    ///   - [`metrics(Vec<MetricAttribute>)`](crate::client::fluent_builders::CreateMetricAttribution::metrics) / [`set_metrics(Option<Vec<MetricAttribute>>)`](crate::client::fluent_builders::CreateMetricAttribution::set_metrics): <p>A list of metric attributes for the metric attribution. Each metric attribute specifies an event type to track and a function. Available functions are <code>SUM()</code> or <code>SAMPLECOUNT()</code>. For SUM() functions, provide the dataset type (either Interactions or Items) and column to sum as a parameter. For example SUM(Items.PRICE).</p>
    ///   - [`metrics_output_config(MetricAttributionOutput)`](crate::client::fluent_builders::CreateMetricAttribution::metrics_output_config) / [`set_metrics_output_config(Option<MetricAttributionOutput>)`](crate::client::fluent_builders::CreateMetricAttribution::set_metrics_output_config): <p>The output configuration details for the metric attribution.</p>
    /// - On success, responds with [`CreateMetricAttributionOutput`](crate::output::CreateMetricAttributionOutput) with field(s):
    ///   - [`metric_attribution_arn(Option<String>)`](crate::output::CreateMetricAttributionOutput::metric_attribution_arn): <p>The Amazon Resource Name (ARN) for the new metric attribution.</p>
    /// - On failure, responds with [`SdkError<CreateMetricAttributionError>`](crate::error::CreateMetricAttributionError)
    pub fn create_metric_attribution(&self) -> fluent_builders::CreateMetricAttribution {
        fluent_builders::CreateMetricAttribution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateRecommender`](crate::client::fluent_builders::CreateRecommender) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateRecommender::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateRecommender::set_name): <p>The name of the recommender.</p>
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::CreateRecommender::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::CreateRecommender::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the destination domain dataset group for the recommender.</p>
    ///   - [`recipe_arn(impl Into<String>)`](crate::client::fluent_builders::CreateRecommender::recipe_arn) / [`set_recipe_arn(Option<String>)`](crate::client::fluent_builders::CreateRecommender::set_recipe_arn): <p>The Amazon Resource Name (ARN) of the recipe that the recommender will use. For a recommender, a recipe is a Domain dataset group use case. Only Domain dataset group use cases can be used to create a recommender. For information about use cases see <a href="https://docs.aws.amazon.com/personalize/latest/dg/domain-use-cases.html">Choosing recommender use cases</a>. </p>
    ///   - [`recommender_config(RecommenderConfig)`](crate::client::fluent_builders::CreateRecommender::recommender_config) / [`set_recommender_config(Option<RecommenderConfig>)`](crate::client::fluent_builders::CreateRecommender::set_recommender_config): <p>The configuration details of the recommender.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateRecommender::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateRecommender::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the recommender.</p>
    /// - On success, responds with [`CreateRecommenderOutput`](crate::output::CreateRecommenderOutput) with field(s):
    ///   - [`recommender_arn(Option<String>)`](crate::output::CreateRecommenderOutput::recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender.</p>
    /// - On failure, responds with [`SdkError<CreateRecommenderError>`](crate::error::CreateRecommenderError)
    pub fn create_recommender(&self) -> fluent_builders::CreateRecommender {
        fluent_builders::CreateRecommender::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateSchema`](crate::client::fluent_builders::CreateSchema) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateSchema::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateSchema::set_name): <p>The name for the schema.</p>
    ///   - [`schema(impl Into<String>)`](crate::client::fluent_builders::CreateSchema::schema) / [`set_schema(Option<String>)`](crate::client::fluent_builders::CreateSchema::set_schema): <p>A schema in Avro JSON format.</p>
    ///   - [`domain(Domain)`](crate::client::fluent_builders::CreateSchema::domain) / [`set_domain(Option<Domain>)`](crate::client::fluent_builders::CreateSchema::set_domain): <p>The domain for the schema. If you are creating a schema for a dataset in a Domain dataset group, specify the domain you chose when you created the Domain dataset group.</p>
    /// - On success, responds with [`CreateSchemaOutput`](crate::output::CreateSchemaOutput) with field(s):
    ///   - [`schema_arn(Option<String>)`](crate::output::CreateSchemaOutput::schema_arn): <p>The Amazon Resource Name (ARN) of the created schema.</p>
    /// - On failure, responds with [`SdkError<CreateSchemaError>`](crate::error::CreateSchemaError)
    pub fn create_schema(&self) -> fluent_builders::CreateSchema {
        fluent_builders::CreateSchema::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateSolution`](crate::client::fluent_builders::CreateSolution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateSolution::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateSolution::set_name): <p>The name for the solution.</p>
    ///   - [`perform_hpo(bool)`](crate::client::fluent_builders::CreateSolution::perform_hpo) / [`set_perform_hpo(Option<bool>)`](crate::client::fluent_builders::CreateSolution::set_perform_hpo): <p>Whether to perform hyperparameter optimization (HPO) on the specified or selected recipe. The default is <code>false</code>.</p>  <p>When performing AutoML, this parameter is always <code>true</code> and you should not set it to <code>false</code>.</p>
    ///   - [`perform_auto_ml(bool)`](crate::client::fluent_builders::CreateSolution::perform_auto_ml) / [`set_perform_auto_ml(bool)`](crate::client::fluent_builders::CreateSolution::set_perform_auto_ml): <p>Whether to perform automated machine learning (AutoML). The default is <code>false</code>. For this case, you must specify <code>recipeArn</code>.</p>  <p>When set to <code>true</code>, Amazon Personalize analyzes your training data and selects the optimal USER_PERSONALIZATION recipe and hyperparameters. In this case, you must omit <code>recipeArn</code>. Amazon Personalize determines the optimal recipe by running tests with different values for the hyperparameters. AutoML lengthens the training process as compared to selecting a specific recipe.</p>
    ///   - [`recipe_arn(impl Into<String>)`](crate::client::fluent_builders::CreateSolution::recipe_arn) / [`set_recipe_arn(Option<String>)`](crate::client::fluent_builders::CreateSolution::set_recipe_arn): <p>The ARN of the recipe to use for model training. Only specified when <code>performAutoML</code> is false.</p>
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::CreateSolution::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::CreateSolution::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the dataset group that provides the training data.</p>
    ///   - [`event_type(impl Into<String>)`](crate::client::fluent_builders::CreateSolution::event_type) / [`set_event_type(Option<String>)`](crate::client::fluent_builders::CreateSolution::set_event_type): <p>When your have multiple event types (using an <code>EVENT_TYPE</code> schema field), this parameter specifies which event type (for example, 'click' or 'like') is used for training the model.</p>  <p>If you do not provide an <code>eventType</code>, Amazon Personalize will use all interactions for training with equal weight regardless of type.</p>
    ///   - [`solution_config(SolutionConfig)`](crate::client::fluent_builders::CreateSolution::solution_config) / [`set_solution_config(Option<SolutionConfig>)`](crate::client::fluent_builders::CreateSolution::set_solution_config): <p>The configuration to use with the solution. When <code>performAutoML</code> is set to true, Amazon Personalize only evaluates the <code>autoMLConfig</code> section of the solution configuration.</p> <note>   <p>Amazon Personalize doesn't support configuring the <code>hpoObjective</code> at this time.</p>  </note>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateSolution::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateSolution::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the solution.</p>
    /// - On success, responds with [`CreateSolutionOutput`](crate::output::CreateSolutionOutput) with field(s):
    ///   - [`solution_arn(Option<String>)`](crate::output::CreateSolutionOutput::solution_arn): <p>The ARN of the solution.</p>
    /// - On failure, responds with [`SdkError<CreateSolutionError>`](crate::error::CreateSolutionError)
    pub fn create_solution(&self) -> fluent_builders::CreateSolution {
        fluent_builders::CreateSolution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateSolutionVersion`](crate::client::fluent_builders::CreateSolutionVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateSolutionVersion::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateSolutionVersion::set_name): <p>The name of the solution version.</p>
    ///   - [`solution_arn(impl Into<String>)`](crate::client::fluent_builders::CreateSolutionVersion::solution_arn) / [`set_solution_arn(Option<String>)`](crate::client::fluent_builders::CreateSolutionVersion::set_solution_arn): <p>The Amazon Resource Name (ARN) of the solution containing the training configuration information.</p>
    ///   - [`training_mode(TrainingMode)`](crate::client::fluent_builders::CreateSolutionVersion::training_mode) / [`set_training_mode(Option<TrainingMode>)`](crate::client::fluent_builders::CreateSolutionVersion::set_training_mode): <p>The scope of training to be performed when creating the solution version. The <code>FULL</code> option trains the solution version based on the entirety of the input solution's training data, while the <code>UPDATE</code> option processes only the data that has changed in comparison to the input solution. Choose <code>UPDATE</code> when you want to incrementally update your solution version instead of creating an entirely new one.</p> <important>   <p>The <code>UPDATE</code> option can only be used when you already have an active solution version created from the input solution using the <code>FULL</code> option and the input solution was trained with the <a href="https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html">User-Personalization</a> recipe or the <a href="https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-hrnn-coldstart.html">HRNN-Coldstart</a> recipe.</p>  </important>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateSolutionVersion::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateSolutionVersion::set_tags): <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the solution version.</p>
    /// - On success, responds with [`CreateSolutionVersionOutput`](crate::output::CreateSolutionVersionOutput) with field(s):
    ///   - [`solution_version_arn(Option<String>)`](crate::output::CreateSolutionVersionOutput::solution_version_arn): <p>The ARN of the new solution version.</p>
    /// - On failure, responds with [`SdkError<CreateSolutionVersionError>`](crate::error::CreateSolutionVersionError)
    pub fn create_solution_version(&self) -> fluent_builders::CreateSolutionVersion {
        fluent_builders::CreateSolutionVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteCampaign`](crate::client::fluent_builders::DeleteCampaign) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`campaign_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteCampaign::campaign_arn) / [`set_campaign_arn(Option<String>)`](crate::client::fluent_builders::DeleteCampaign::set_campaign_arn): <p>The Amazon Resource Name (ARN) of the campaign to delete.</p>
    /// - On success, responds with [`DeleteCampaignOutput`](crate::output::DeleteCampaignOutput)

    /// - On failure, responds with [`SdkError<DeleteCampaignError>`](crate::error::DeleteCampaignError)
    pub fn delete_campaign(&self) -> fluent_builders::DeleteCampaign {
        fluent_builders::DeleteCampaign::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteDataset`](crate::client::fluent_builders::DeleteDataset) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteDataset::dataset_arn) / [`set_dataset_arn(Option<String>)`](crate::client::fluent_builders::DeleteDataset::set_dataset_arn): <p>The Amazon Resource Name (ARN) of the dataset to delete.</p>
    /// - On success, responds with [`DeleteDatasetOutput`](crate::output::DeleteDatasetOutput)

    /// - On failure, responds with [`SdkError<DeleteDatasetError>`](crate::error::DeleteDatasetError)
    pub fn delete_dataset(&self) -> fluent_builders::DeleteDataset {
        fluent_builders::DeleteDataset::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteDatasetGroup`](crate::client::fluent_builders::DeleteDatasetGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteDatasetGroup::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::DeleteDatasetGroup::set_dataset_group_arn): <p>The ARN of the dataset group to delete.</p>
    /// - On success, responds with [`DeleteDatasetGroupOutput`](crate::output::DeleteDatasetGroupOutput)

    /// - On failure, responds with [`SdkError<DeleteDatasetGroupError>`](crate::error::DeleteDatasetGroupError)
    pub fn delete_dataset_group(&self) -> fluent_builders::DeleteDatasetGroup {
        fluent_builders::DeleteDatasetGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteEventTracker`](crate::client::fluent_builders::DeleteEventTracker) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`event_tracker_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteEventTracker::event_tracker_arn) / [`set_event_tracker_arn(Option<String>)`](crate::client::fluent_builders::DeleteEventTracker::set_event_tracker_arn): <p>The Amazon Resource Name (ARN) of the event tracker to delete.</p>
    /// - On success, responds with [`DeleteEventTrackerOutput`](crate::output::DeleteEventTrackerOutput)

    /// - On failure, responds with [`SdkError<DeleteEventTrackerError>`](crate::error::DeleteEventTrackerError)
    pub fn delete_event_tracker(&self) -> fluent_builders::DeleteEventTracker {
        fluent_builders::DeleteEventTracker::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteFilter`](crate::client::fluent_builders::DeleteFilter) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`filter_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteFilter::filter_arn) / [`set_filter_arn(Option<String>)`](crate::client::fluent_builders::DeleteFilter::set_filter_arn): <p>The ARN of the filter to delete.</p>
    /// - On success, responds with [`DeleteFilterOutput`](crate::output::DeleteFilterOutput)

    /// - On failure, responds with [`SdkError<DeleteFilterError>`](crate::error::DeleteFilterError)
    pub fn delete_filter(&self) -> fluent_builders::DeleteFilter {
        fluent_builders::DeleteFilter::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteMetricAttribution`](crate::client::fluent_builders::DeleteMetricAttribution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`metric_attribution_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteMetricAttribution::metric_attribution_arn) / [`set_metric_attribution_arn(Option<String>)`](crate::client::fluent_builders::DeleteMetricAttribution::set_metric_attribution_arn): <p>The metric attribution's Amazon Resource Name (ARN).</p>
    /// - On success, responds with [`DeleteMetricAttributionOutput`](crate::output::DeleteMetricAttributionOutput)

    /// - On failure, responds with [`SdkError<DeleteMetricAttributionError>`](crate::error::DeleteMetricAttributionError)
    pub fn delete_metric_attribution(&self) -> fluent_builders::DeleteMetricAttribution {
        fluent_builders::DeleteMetricAttribution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteRecommender`](crate::client::fluent_builders::DeleteRecommender) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recommender_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteRecommender::recommender_arn) / [`set_recommender_arn(Option<String>)`](crate::client::fluent_builders::DeleteRecommender::set_recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender to delete.</p>
    /// - On success, responds with [`DeleteRecommenderOutput`](crate::output::DeleteRecommenderOutput)

    /// - On failure, responds with [`SdkError<DeleteRecommenderError>`](crate::error::DeleteRecommenderError)
    pub fn delete_recommender(&self) -> fluent_builders::DeleteRecommender {
        fluent_builders::DeleteRecommender::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteSchema`](crate::client::fluent_builders::DeleteSchema) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`schema_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteSchema::schema_arn) / [`set_schema_arn(Option<String>)`](crate::client::fluent_builders::DeleteSchema::set_schema_arn): <p>The Amazon Resource Name (ARN) of the schema to delete.</p>
    /// - On success, responds with [`DeleteSchemaOutput`](crate::output::DeleteSchemaOutput)

    /// - On failure, responds with [`SdkError<DeleteSchemaError>`](crate::error::DeleteSchemaError)
    pub fn delete_schema(&self) -> fluent_builders::DeleteSchema {
        fluent_builders::DeleteSchema::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteSolution`](crate::client::fluent_builders::DeleteSolution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteSolution::solution_arn) / [`set_solution_arn(Option<String>)`](crate::client::fluent_builders::DeleteSolution::set_solution_arn): <p>The ARN of the solution to delete.</p>
    /// - On success, responds with [`DeleteSolutionOutput`](crate::output::DeleteSolutionOutput)

    /// - On failure, responds with [`SdkError<DeleteSolutionError>`](crate::error::DeleteSolutionError)
    pub fn delete_solution(&self) -> fluent_builders::DeleteSolution {
        fluent_builders::DeleteSolution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeAlgorithm`](crate::client::fluent_builders::DescribeAlgorithm) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`algorithm_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeAlgorithm::algorithm_arn) / [`set_algorithm_arn(Option<String>)`](crate::client::fluent_builders::DescribeAlgorithm::set_algorithm_arn): <p>The Amazon Resource Name (ARN) of the algorithm to describe.</p>
    /// - On success, responds with [`DescribeAlgorithmOutput`](crate::output::DescribeAlgorithmOutput) with field(s):
    ///   - [`algorithm(Option<Algorithm>)`](crate::output::DescribeAlgorithmOutput::algorithm): <p>A listing of the properties of the algorithm.</p>
    /// - On failure, responds with [`SdkError<DescribeAlgorithmError>`](crate::error::DescribeAlgorithmError)
    pub fn describe_algorithm(&self) -> fluent_builders::DescribeAlgorithm {
        fluent_builders::DescribeAlgorithm::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeBatchInferenceJob`](crate::client::fluent_builders::DescribeBatchInferenceJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`batch_inference_job_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeBatchInferenceJob::batch_inference_job_arn) / [`set_batch_inference_job_arn(Option<String>)`](crate::client::fluent_builders::DescribeBatchInferenceJob::set_batch_inference_job_arn): <p>The ARN of the batch inference job to describe.</p>
    /// - On success, responds with [`DescribeBatchInferenceJobOutput`](crate::output::DescribeBatchInferenceJobOutput) with field(s):
    ///   - [`batch_inference_job(Option<BatchInferenceJob>)`](crate::output::DescribeBatchInferenceJobOutput::batch_inference_job): <p>Information on the specified batch inference job.</p>
    /// - On failure, responds with [`SdkError<DescribeBatchInferenceJobError>`](crate::error::DescribeBatchInferenceJobError)
    pub fn describe_batch_inference_job(&self) -> fluent_builders::DescribeBatchInferenceJob {
        fluent_builders::DescribeBatchInferenceJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeBatchSegmentJob`](crate::client::fluent_builders::DescribeBatchSegmentJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`batch_segment_job_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeBatchSegmentJob::batch_segment_job_arn) / [`set_batch_segment_job_arn(Option<String>)`](crate::client::fluent_builders::DescribeBatchSegmentJob::set_batch_segment_job_arn): <p>The ARN of the batch segment job to describe.</p>
    /// - On success, responds with [`DescribeBatchSegmentJobOutput`](crate::output::DescribeBatchSegmentJobOutput) with field(s):
    ///   - [`batch_segment_job(Option<BatchSegmentJob>)`](crate::output::DescribeBatchSegmentJobOutput::batch_segment_job): <p>Information on the specified batch segment job.</p>
    /// - On failure, responds with [`SdkError<DescribeBatchSegmentJobError>`](crate::error::DescribeBatchSegmentJobError)
    pub fn describe_batch_segment_job(&self) -> fluent_builders::DescribeBatchSegmentJob {
        fluent_builders::DescribeBatchSegmentJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeCampaign`](crate::client::fluent_builders::DescribeCampaign) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`campaign_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeCampaign::campaign_arn) / [`set_campaign_arn(Option<String>)`](crate::client::fluent_builders::DescribeCampaign::set_campaign_arn): <p>The Amazon Resource Name (ARN) of the campaign.</p>
    /// - On success, responds with [`DescribeCampaignOutput`](crate::output::DescribeCampaignOutput) with field(s):
    ///   - [`campaign(Option<Campaign>)`](crate::output::DescribeCampaignOutput::campaign): <p>The properties of the campaign.</p>
    /// - On failure, responds with [`SdkError<DescribeCampaignError>`](crate::error::DescribeCampaignError)
    pub fn describe_campaign(&self) -> fluent_builders::DescribeCampaign {
        fluent_builders::DescribeCampaign::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeDataset`](crate::client::fluent_builders::DescribeDataset) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeDataset::dataset_arn) / [`set_dataset_arn(Option<String>)`](crate::client::fluent_builders::DescribeDataset::set_dataset_arn): <p>The Amazon Resource Name (ARN) of the dataset to describe.</p>
    /// - On success, responds with [`DescribeDatasetOutput`](crate::output::DescribeDatasetOutput) with field(s):
    ///   - [`dataset(Option<Dataset>)`](crate::output::DescribeDatasetOutput::dataset): <p>A listing of the dataset's properties.</p>
    /// - On failure, responds with [`SdkError<DescribeDatasetError>`](crate::error::DescribeDatasetError)
    pub fn describe_dataset(&self) -> fluent_builders::DescribeDataset {
        fluent_builders::DescribeDataset::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeDatasetExportJob`](crate::client::fluent_builders::DescribeDatasetExportJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_export_job_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeDatasetExportJob::dataset_export_job_arn) / [`set_dataset_export_job_arn(Option<String>)`](crate::client::fluent_builders::DescribeDatasetExportJob::set_dataset_export_job_arn): <p>The Amazon Resource Name (ARN) of the dataset export job to describe.</p>
    /// - On success, responds with [`DescribeDatasetExportJobOutput`](crate::output::DescribeDatasetExportJobOutput) with field(s):
    ///   - [`dataset_export_job(Option<DatasetExportJob>)`](crate::output::DescribeDatasetExportJobOutput::dataset_export_job): <p>Information about the dataset export job, including the status.</p>  <p>The status is one of the following values:</p>  <ul>   <li> <p>CREATE PENDING</p> </li>   <li> <p>CREATE IN_PROGRESS</p> </li>   <li> <p>ACTIVE</p> </li>   <li> <p>CREATE FAILED</p> </li>  </ul>
    /// - On failure, responds with [`SdkError<DescribeDatasetExportJobError>`](crate::error::DescribeDatasetExportJobError)
    pub fn describe_dataset_export_job(&self) -> fluent_builders::DescribeDatasetExportJob {
        fluent_builders::DescribeDatasetExportJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeDatasetGroup`](crate::client::fluent_builders::DescribeDatasetGroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeDatasetGroup::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::DescribeDatasetGroup::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the dataset group to describe.</p>
    /// - On success, responds with [`DescribeDatasetGroupOutput`](crate::output::DescribeDatasetGroupOutput) with field(s):
    ///   - [`dataset_group(Option<DatasetGroup>)`](crate::output::DescribeDatasetGroupOutput::dataset_group): <p>A listing of the dataset group's properties.</p>
    /// - On failure, responds with [`SdkError<DescribeDatasetGroupError>`](crate::error::DescribeDatasetGroupError)
    pub fn describe_dataset_group(&self) -> fluent_builders::DescribeDatasetGroup {
        fluent_builders::DescribeDatasetGroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeDatasetImportJob`](crate::client::fluent_builders::DescribeDatasetImportJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_import_job_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeDatasetImportJob::dataset_import_job_arn) / [`set_dataset_import_job_arn(Option<String>)`](crate::client::fluent_builders::DescribeDatasetImportJob::set_dataset_import_job_arn): <p>The Amazon Resource Name (ARN) of the dataset import job to describe.</p>
    /// - On success, responds with [`DescribeDatasetImportJobOutput`](crate::output::DescribeDatasetImportJobOutput) with field(s):
    ///   - [`dataset_import_job(Option<DatasetImportJob>)`](crate::output::DescribeDatasetImportJobOutput::dataset_import_job): <p>Information about the dataset import job, including the status.</p>  <p>The status is one of the following values:</p>  <ul>   <li> <p>CREATE PENDING</p> </li>   <li> <p>CREATE IN_PROGRESS</p> </li>   <li> <p>ACTIVE</p> </li>   <li> <p>CREATE FAILED</p> </li>  </ul>
    /// - On failure, responds with [`SdkError<DescribeDatasetImportJobError>`](crate::error::DescribeDatasetImportJobError)
    pub fn describe_dataset_import_job(&self) -> fluent_builders::DescribeDatasetImportJob {
        fluent_builders::DescribeDatasetImportJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeEventTracker`](crate::client::fluent_builders::DescribeEventTracker) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`event_tracker_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeEventTracker::event_tracker_arn) / [`set_event_tracker_arn(Option<String>)`](crate::client::fluent_builders::DescribeEventTracker::set_event_tracker_arn): <p>The Amazon Resource Name (ARN) of the event tracker to describe.</p>
    /// - On success, responds with [`DescribeEventTrackerOutput`](crate::output::DescribeEventTrackerOutput) with field(s):
    ///   - [`event_tracker(Option<EventTracker>)`](crate::output::DescribeEventTrackerOutput::event_tracker): <p>An object that describes the event tracker.</p>
    /// - On failure, responds with [`SdkError<DescribeEventTrackerError>`](crate::error::DescribeEventTrackerError)
    pub fn describe_event_tracker(&self) -> fluent_builders::DescribeEventTracker {
        fluent_builders::DescribeEventTracker::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeFeatureTransformation`](crate::client::fluent_builders::DescribeFeatureTransformation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`feature_transformation_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeFeatureTransformation::feature_transformation_arn) / [`set_feature_transformation_arn(Option<String>)`](crate::client::fluent_builders::DescribeFeatureTransformation::set_feature_transformation_arn): <p>The Amazon Resource Name (ARN) of the feature transformation to describe.</p>
    /// - On success, responds with [`DescribeFeatureTransformationOutput`](crate::output::DescribeFeatureTransformationOutput) with field(s):
    ///   - [`feature_transformation(Option<FeatureTransformation>)`](crate::output::DescribeFeatureTransformationOutput::feature_transformation): <p>A listing of the FeatureTransformation properties.</p>
    /// - On failure, responds with [`SdkError<DescribeFeatureTransformationError>`](crate::error::DescribeFeatureTransformationError)
    pub fn describe_feature_transformation(
        &self,
    ) -> fluent_builders::DescribeFeatureTransformation {
        fluent_builders::DescribeFeatureTransformation::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeFilter`](crate::client::fluent_builders::DescribeFilter) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`filter_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeFilter::filter_arn) / [`set_filter_arn(Option<String>)`](crate::client::fluent_builders::DescribeFilter::set_filter_arn): <p>The ARN of the filter to describe.</p>
    /// - On success, responds with [`DescribeFilterOutput`](crate::output::DescribeFilterOutput) with field(s):
    ///   - [`filter(Option<Filter>)`](crate::output::DescribeFilterOutput::filter): <p>The filter's details.</p>
    /// - On failure, responds with [`SdkError<DescribeFilterError>`](crate::error::DescribeFilterError)
    pub fn describe_filter(&self) -> fluent_builders::DescribeFilter {
        fluent_builders::DescribeFilter::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeMetricAttribution`](crate::client::fluent_builders::DescribeMetricAttribution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`metric_attribution_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeMetricAttribution::metric_attribution_arn) / [`set_metric_attribution_arn(Option<String>)`](crate::client::fluent_builders::DescribeMetricAttribution::set_metric_attribution_arn): <p>The metric attribution's Amazon Resource Name (ARN).</p>
    /// - On success, responds with [`DescribeMetricAttributionOutput`](crate::output::DescribeMetricAttributionOutput) with field(s):
    ///   - [`metric_attribution(Option<MetricAttribution>)`](crate::output::DescribeMetricAttributionOutput::metric_attribution): <p>The details of the metric attribution.</p>
    /// - On failure, responds with [`SdkError<DescribeMetricAttributionError>`](crate::error::DescribeMetricAttributionError)
    pub fn describe_metric_attribution(&self) -> fluent_builders::DescribeMetricAttribution {
        fluent_builders::DescribeMetricAttribution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeRecipe`](crate::client::fluent_builders::DescribeRecipe) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recipe_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeRecipe::recipe_arn) / [`set_recipe_arn(Option<String>)`](crate::client::fluent_builders::DescribeRecipe::set_recipe_arn): <p>The Amazon Resource Name (ARN) of the recipe to describe.</p>
    /// - On success, responds with [`DescribeRecipeOutput`](crate::output::DescribeRecipeOutput) with field(s):
    ///   - [`recipe(Option<Recipe>)`](crate::output::DescribeRecipeOutput::recipe): <p>An object that describes the recipe.</p>
    /// - On failure, responds with [`SdkError<DescribeRecipeError>`](crate::error::DescribeRecipeError)
    pub fn describe_recipe(&self) -> fluent_builders::DescribeRecipe {
        fluent_builders::DescribeRecipe::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeRecommender`](crate::client::fluent_builders::DescribeRecommender) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recommender_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeRecommender::recommender_arn) / [`set_recommender_arn(Option<String>)`](crate::client::fluent_builders::DescribeRecommender::set_recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender to describe.</p>
    /// - On success, responds with [`DescribeRecommenderOutput`](crate::output::DescribeRecommenderOutput) with field(s):
    ///   - [`recommender(Option<Recommender>)`](crate::output::DescribeRecommenderOutput::recommender): <p>The properties of the recommender.</p>
    /// - On failure, responds with [`SdkError<DescribeRecommenderError>`](crate::error::DescribeRecommenderError)
    pub fn describe_recommender(&self) -> fluent_builders::DescribeRecommender {
        fluent_builders::DescribeRecommender::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeSchema`](crate::client::fluent_builders::DescribeSchema) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`schema_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeSchema::schema_arn) / [`set_schema_arn(Option<String>)`](crate::client::fluent_builders::DescribeSchema::set_schema_arn): <p>The Amazon Resource Name (ARN) of the schema to retrieve.</p>
    /// - On success, responds with [`DescribeSchemaOutput`](crate::output::DescribeSchemaOutput) with field(s):
    ///   - [`schema(Option<DatasetSchema>)`](crate::output::DescribeSchemaOutput::schema): <p>The requested schema.</p>
    /// - On failure, responds with [`SdkError<DescribeSchemaError>`](crate::error::DescribeSchemaError)
    pub fn describe_schema(&self) -> fluent_builders::DescribeSchema {
        fluent_builders::DescribeSchema::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeSolution`](crate::client::fluent_builders::DescribeSolution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeSolution::solution_arn) / [`set_solution_arn(Option<String>)`](crate::client::fluent_builders::DescribeSolution::set_solution_arn): <p>The Amazon Resource Name (ARN) of the solution to describe.</p>
    /// - On success, responds with [`DescribeSolutionOutput`](crate::output::DescribeSolutionOutput) with field(s):
    ///   - [`solution(Option<Solution>)`](crate::output::DescribeSolutionOutput::solution): <p>An object that describes the solution.</p>
    /// - On failure, responds with [`SdkError<DescribeSolutionError>`](crate::error::DescribeSolutionError)
    pub fn describe_solution(&self) -> fluent_builders::DescribeSolution {
        fluent_builders::DescribeSolution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DescribeSolutionVersion`](crate::client::fluent_builders::DescribeSolutionVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::DescribeSolutionVersion::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::DescribeSolutionVersion::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version.</p>
    /// - On success, responds with [`DescribeSolutionVersionOutput`](crate::output::DescribeSolutionVersionOutput) with field(s):
    ///   - [`solution_version(Option<SolutionVersion>)`](crate::output::DescribeSolutionVersionOutput::solution_version): <p>The solution version.</p>
    /// - On failure, responds with [`SdkError<DescribeSolutionVersionError>`](crate::error::DescribeSolutionVersionError)
    pub fn describe_solution_version(&self) -> fluent_builders::DescribeSolutionVersion {
        fluent_builders::DescribeSolutionVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetSolutionMetrics`](crate::client::fluent_builders::GetSolutionMetrics) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::GetSolutionMetrics::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::GetSolutionMetrics::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version for which to get metrics.</p>
    /// - On success, responds with [`GetSolutionMetricsOutput`](crate::output::GetSolutionMetricsOutput) with field(s):
    ///   - [`solution_version_arn(Option<String>)`](crate::output::GetSolutionMetricsOutput::solution_version_arn): <p>The same solution version ARN as specified in the request.</p>
    ///   - [`metrics(Option<HashMap<String, f64>>)`](crate::output::GetSolutionMetricsOutput::metrics): <p>The metrics for the solution version. For more information, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/working-with-training-metrics.html"> Evaluating a solution version with metrics </a>.</p>
    /// - On failure, responds with [`SdkError<GetSolutionMetricsError>`](crate::error::GetSolutionMetricsError)
    pub fn get_solution_metrics(&self) -> fluent_builders::GetSolutionMetrics {
        fluent_builders::GetSolutionMetrics::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListBatchInferenceJobs`](crate::client::fluent_builders::ListBatchInferenceJobs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListBatchInferenceJobs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::ListBatchInferenceJobs::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::ListBatchInferenceJobs::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version from which the batch inference jobs were created.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListBatchInferenceJobs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListBatchInferenceJobs::set_next_token): <p>The token to request the next page of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListBatchInferenceJobs::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListBatchInferenceJobs::set_max_results): <p>The maximum number of batch inference job results to return in each page. The default value is 100.</p>
    /// - On success, responds with [`ListBatchInferenceJobsOutput`](crate::output::ListBatchInferenceJobsOutput) with field(s):
    ///   - [`batch_inference_jobs(Option<Vec<BatchInferenceJobSummary>>)`](crate::output::ListBatchInferenceJobsOutput::batch_inference_jobs): <p>A list containing information on each job that is returned.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListBatchInferenceJobsOutput::next_token): <p>The token to use to retrieve the next page of results. The value is <code>null</code> when there are no more results to return.</p>
    /// - On failure, responds with [`SdkError<ListBatchInferenceJobsError>`](crate::error::ListBatchInferenceJobsError)
    pub fn list_batch_inference_jobs(&self) -> fluent_builders::ListBatchInferenceJobs {
        fluent_builders::ListBatchInferenceJobs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListBatchSegmentJobs`](crate::client::fluent_builders::ListBatchSegmentJobs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListBatchSegmentJobs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::ListBatchSegmentJobs::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::ListBatchSegmentJobs::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version that the batch segment jobs used to generate batch segments.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListBatchSegmentJobs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListBatchSegmentJobs::set_next_token): <p>The token to request the next page of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListBatchSegmentJobs::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListBatchSegmentJobs::set_max_results): <p>The maximum number of batch segment job results to return in each page. The default value is 100.</p>
    /// - On success, responds with [`ListBatchSegmentJobsOutput`](crate::output::ListBatchSegmentJobsOutput) with field(s):
    ///   - [`batch_segment_jobs(Option<Vec<BatchSegmentJobSummary>>)`](crate::output::ListBatchSegmentJobsOutput::batch_segment_jobs): <p>A list containing information on each job that is returned.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListBatchSegmentJobsOutput::next_token): <p>The token to use to retrieve the next page of results. The value is <code>null</code> when there are no more results to return.</p>
    /// - On failure, responds with [`SdkError<ListBatchSegmentJobsError>`](crate::error::ListBatchSegmentJobsError)
    pub fn list_batch_segment_jobs(&self) -> fluent_builders::ListBatchSegmentJobs {
        fluent_builders::ListBatchSegmentJobs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListCampaigns`](crate::client::fluent_builders::ListCampaigns) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListCampaigns::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_arn(impl Into<String>)`](crate::client::fluent_builders::ListCampaigns::solution_arn) / [`set_solution_arn(Option<String>)`](crate::client::fluent_builders::ListCampaigns::set_solution_arn): <p>The Amazon Resource Name (ARN) of the solution to list the campaigns for. When a solution is not specified, all the campaigns associated with the account are listed.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListCampaigns::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListCampaigns::set_next_token): <p>A token returned from the previous call to <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListCampaigns.html">ListCampaigns</a> for getting the next set of campaigns (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListCampaigns::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListCampaigns::set_max_results): <p>The maximum number of campaigns to return.</p>
    /// - On success, responds with [`ListCampaignsOutput`](crate::output::ListCampaignsOutput) with field(s):
    ///   - [`campaigns(Option<Vec<CampaignSummary>>)`](crate::output::ListCampaignsOutput::campaigns): <p>A list of the campaigns.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListCampaignsOutput::next_token): <p>A token for getting the next set of campaigns (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListCampaignsError>`](crate::error::ListCampaignsError)
    pub fn list_campaigns(&self) -> fluent_builders::ListCampaigns {
        fluent_builders::ListCampaigns::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDatasetExportJobs`](crate::client::fluent_builders::ListDatasetExportJobs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDatasetExportJobs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_arn(impl Into<String>)`](crate::client::fluent_builders::ListDatasetExportJobs::dataset_arn) / [`set_dataset_arn(Option<String>)`](crate::client::fluent_builders::ListDatasetExportJobs::set_dataset_arn): <p>The Amazon Resource Name (ARN) of the dataset to list the dataset export jobs for.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDatasetExportJobs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDatasetExportJobs::set_next_token): <p>A token returned from the previous call to <code>ListDatasetExportJobs</code> for getting the next set of dataset export jobs (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDatasetExportJobs::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListDatasetExportJobs::set_max_results): <p>The maximum number of dataset export jobs to return.</p>
    /// - On success, responds with [`ListDatasetExportJobsOutput`](crate::output::ListDatasetExportJobsOutput) with field(s):
    ///   - [`dataset_export_jobs(Option<Vec<DatasetExportJobSummary>>)`](crate::output::ListDatasetExportJobsOutput::dataset_export_jobs): <p>The list of dataset export jobs.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDatasetExportJobsOutput::next_token): <p>A token for getting the next set of dataset export jobs (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListDatasetExportJobsError>`](crate::error::ListDatasetExportJobsError)
    pub fn list_dataset_export_jobs(&self) -> fluent_builders::ListDatasetExportJobs {
        fluent_builders::ListDatasetExportJobs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDatasetGroups`](crate::client::fluent_builders::ListDatasetGroups) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDatasetGroups::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDatasetGroups::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDatasetGroups::set_next_token): <p>A token returned from the previous call to <code>ListDatasetGroups</code> for getting the next set of dataset groups (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDatasetGroups::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListDatasetGroups::set_max_results): <p>The maximum number of dataset groups to return.</p>
    /// - On success, responds with [`ListDatasetGroupsOutput`](crate::output::ListDatasetGroupsOutput) with field(s):
    ///   - [`dataset_groups(Option<Vec<DatasetGroupSummary>>)`](crate::output::ListDatasetGroupsOutput::dataset_groups): <p>The list of your dataset groups.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDatasetGroupsOutput::next_token): <p>A token for getting the next set of dataset groups (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListDatasetGroupsError>`](crate::error::ListDatasetGroupsError)
    pub fn list_dataset_groups(&self) -> fluent_builders::ListDatasetGroups {
        fluent_builders::ListDatasetGroups::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDatasetImportJobs`](crate::client::fluent_builders::ListDatasetImportJobs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDatasetImportJobs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_arn(impl Into<String>)`](crate::client::fluent_builders::ListDatasetImportJobs::dataset_arn) / [`set_dataset_arn(Option<String>)`](crate::client::fluent_builders::ListDatasetImportJobs::set_dataset_arn): <p>The Amazon Resource Name (ARN) of the dataset to list the dataset import jobs for.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDatasetImportJobs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDatasetImportJobs::set_next_token): <p>A token returned from the previous call to <code>ListDatasetImportJobs</code> for getting the next set of dataset import jobs (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDatasetImportJobs::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListDatasetImportJobs::set_max_results): <p>The maximum number of dataset import jobs to return.</p>
    /// - On success, responds with [`ListDatasetImportJobsOutput`](crate::output::ListDatasetImportJobsOutput) with field(s):
    ///   - [`dataset_import_jobs(Option<Vec<DatasetImportJobSummary>>)`](crate::output::ListDatasetImportJobsOutput::dataset_import_jobs): <p>The list of dataset import jobs.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDatasetImportJobsOutput::next_token): <p>A token for getting the next set of dataset import jobs (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListDatasetImportJobsError>`](crate::error::ListDatasetImportJobsError)
    pub fn list_dataset_import_jobs(&self) -> fluent_builders::ListDatasetImportJobs {
        fluent_builders::ListDatasetImportJobs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDatasets`](crate::client::fluent_builders::ListDatasets) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDatasets::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::ListDatasets::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::ListDatasets::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the dataset group that contains the datasets to list.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDatasets::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDatasets::set_next_token): <p>A token returned from the previous call to <code>ListDatasetImportJobs</code> for getting the next set of dataset import jobs (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDatasets::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListDatasets::set_max_results): <p>The maximum number of datasets to return.</p>
    /// - On success, responds with [`ListDatasetsOutput`](crate::output::ListDatasetsOutput) with field(s):
    ///   - [`datasets(Option<Vec<DatasetSummary>>)`](crate::output::ListDatasetsOutput::datasets): <p>An array of <code>Dataset</code> objects. Each object provides metadata information.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDatasetsOutput::next_token): <p>A token for getting the next set of datasets (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListDatasetsError>`](crate::error::ListDatasetsError)
    pub fn list_datasets(&self) -> fluent_builders::ListDatasets {
        fluent_builders::ListDatasets::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEventTrackers`](crate::client::fluent_builders::ListEventTrackers) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEventTrackers::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::ListEventTrackers::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::ListEventTrackers::set_dataset_group_arn): <p>The ARN of a dataset group used to filter the response.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEventTrackers::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEventTrackers::set_next_token): <p>A token returned from the previous call to <code>ListEventTrackers</code> for getting the next set of event trackers (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEventTrackers::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEventTrackers::set_max_results): <p>The maximum number of event trackers to return.</p>
    /// - On success, responds with [`ListEventTrackersOutput`](crate::output::ListEventTrackersOutput) with field(s):
    ///   - [`event_trackers(Option<Vec<EventTrackerSummary>>)`](crate::output::ListEventTrackersOutput::event_trackers): <p>A list of event trackers.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListEventTrackersOutput::next_token): <p>A token for getting the next set of event trackers (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListEventTrackersError>`](crate::error::ListEventTrackersError)
    pub fn list_event_trackers(&self) -> fluent_builders::ListEventTrackers {
        fluent_builders::ListEventTrackers::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListFilters`](crate::client::fluent_builders::ListFilters) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListFilters::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::ListFilters::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::ListFilters::set_dataset_group_arn): <p>The ARN of the dataset group that contains the filters.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListFilters::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListFilters::set_next_token): <p>A token returned from the previous call to <code>ListFilters</code> for getting the next set of filters (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListFilters::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListFilters::set_max_results): <p>The maximum number of filters to return.</p>
    /// - On success, responds with [`ListFiltersOutput`](crate::output::ListFiltersOutput) with field(s):
    ///   - [`filters(Option<Vec<FilterSummary>>)`](crate::output::ListFiltersOutput::filters): <p>A list of returned filters.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListFiltersOutput::next_token): <p>A token for getting the next set of filters (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListFiltersError>`](crate::error::ListFiltersError)
    pub fn list_filters(&self) -> fluent_builders::ListFilters {
        fluent_builders::ListFilters::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListMetricAttributionMetrics`](crate::client::fluent_builders::ListMetricAttributionMetrics) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListMetricAttributionMetrics::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`metric_attribution_arn(impl Into<String>)`](crate::client::fluent_builders::ListMetricAttributionMetrics::metric_attribution_arn) / [`set_metric_attribution_arn(Option<String>)`](crate::client::fluent_builders::ListMetricAttributionMetrics::set_metric_attribution_arn): <p>The Amazon Resource Name (ARN) of the metric attribution to retrieve attributes for.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListMetricAttributionMetrics::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListMetricAttributionMetrics::set_next_token): <p>Specify the pagination token from a previous request to retrieve the next page of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListMetricAttributionMetrics::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListMetricAttributionMetrics::set_max_results): <p>The maximum number of metrics to return in one page of results.</p>
    /// - On success, responds with [`ListMetricAttributionMetricsOutput`](crate::output::ListMetricAttributionMetricsOutput) with field(s):
    ///   - [`metrics(Option<Vec<MetricAttribute>>)`](crate::output::ListMetricAttributionMetricsOutput::metrics): <p>The metrics for the specified metric attribution.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListMetricAttributionMetricsOutput::next_token): <p>Specify the pagination token from a previous <code>ListMetricAttributionMetricsResponse</code> request to retrieve the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListMetricAttributionMetricsError>`](crate::error::ListMetricAttributionMetricsError)
    pub fn list_metric_attribution_metrics(&self) -> fluent_builders::ListMetricAttributionMetrics {
        fluent_builders::ListMetricAttributionMetrics::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListMetricAttributions`](crate::client::fluent_builders::ListMetricAttributions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListMetricAttributions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::ListMetricAttributions::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::ListMetricAttributions::set_dataset_group_arn): <p>The metric attributions' dataset group Amazon Resource Name (ARN).</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListMetricAttributions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListMetricAttributions::set_next_token): <p>Specify the pagination token from a previous request to retrieve the next page of results.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListMetricAttributions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListMetricAttributions::set_max_results): <p>The maximum number of metric attributions to return in one page of results.</p>
    /// - On success, responds with [`ListMetricAttributionsOutput`](crate::output::ListMetricAttributionsOutput) with field(s):
    ///   - [`metric_attributions(Option<Vec<MetricAttributionSummary>>)`](crate::output::ListMetricAttributionsOutput::metric_attributions): <p>The list of metric attributions.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListMetricAttributionsOutput::next_token): <p>Specify the pagination token from a previous request to retrieve the next page of results.</p>
    /// - On failure, responds with [`SdkError<ListMetricAttributionsError>`](crate::error::ListMetricAttributionsError)
    pub fn list_metric_attributions(&self) -> fluent_builders::ListMetricAttributions {
        fluent_builders::ListMetricAttributions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRecipes`](crate::client::fluent_builders::ListRecipes) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRecipes::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`recipe_provider(RecipeProvider)`](crate::client::fluent_builders::ListRecipes::recipe_provider) / [`set_recipe_provider(Option<RecipeProvider>)`](crate::client::fluent_builders::ListRecipes::set_recipe_provider): <p>The default is <code>SERVICE</code>.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRecipes::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRecipes::set_next_token): <p>A token returned from the previous call to <code>ListRecipes</code> for getting the next set of recipes (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRecipes::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRecipes::set_max_results): <p>The maximum number of recipes to return.</p>
    ///   - [`domain(Domain)`](crate::client::fluent_builders::ListRecipes::domain) / [`set_domain(Option<Domain>)`](crate::client::fluent_builders::ListRecipes::set_domain): <p> Filters returned recipes by domain for a Domain dataset group. Only recipes (Domain dataset group use cases) for this domain are included in the response. If you don't specify a domain, all recipes are returned. </p>
    /// - On success, responds with [`ListRecipesOutput`](crate::output::ListRecipesOutput) with field(s):
    ///   - [`recipes(Option<Vec<RecipeSummary>>)`](crate::output::ListRecipesOutput::recipes): <p>The list of available recipes.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRecipesOutput::next_token): <p>A token for getting the next set of recipes.</p>
    /// - On failure, responds with [`SdkError<ListRecipesError>`](crate::error::ListRecipesError)
    pub fn list_recipes(&self) -> fluent_builders::ListRecipes {
        fluent_builders::ListRecipes::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRecommenders`](crate::client::fluent_builders::ListRecommenders) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRecommenders::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::ListRecommenders::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::ListRecommenders::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the Domain dataset group to list the recommenders for. When a Domain dataset group is not specified, all the recommenders associated with the account are listed.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRecommenders::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRecommenders::set_next_token): <p>A token returned from the previous call to <code>ListRecommenders</code> for getting the next set of recommenders (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRecommenders::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRecommenders::set_max_results): <p>The maximum number of recommenders to return.</p>
    /// - On success, responds with [`ListRecommendersOutput`](crate::output::ListRecommendersOutput) with field(s):
    ///   - [`recommenders(Option<Vec<RecommenderSummary>>)`](crate::output::ListRecommendersOutput::recommenders): <p>A list of the recommenders.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRecommendersOutput::next_token): <p>A token for getting the next set of recommenders (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListRecommendersError>`](crate::error::ListRecommendersError)
    pub fn list_recommenders(&self) -> fluent_builders::ListRecommenders {
        fluent_builders::ListRecommenders::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSchemas`](crate::client::fluent_builders::ListSchemas) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSchemas::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSchemas::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSchemas::set_next_token): <p>A token returned from the previous call to <code>ListSchemas</code> for getting the next set of schemas (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSchemas::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListSchemas::set_max_results): <p>The maximum number of schemas to return.</p>
    /// - On success, responds with [`ListSchemasOutput`](crate::output::ListSchemasOutput) with field(s):
    ///   - [`schemas(Option<Vec<DatasetSchemaSummary>>)`](crate::output::ListSchemasOutput::schemas): <p>A list of schemas.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListSchemasOutput::next_token): <p>A token used to get the next set of schemas (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListSchemasError>`](crate::error::ListSchemasError)
    pub fn list_schemas(&self) -> fluent_builders::ListSchemas {
        fluent_builders::ListSchemas::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSolutions`](crate::client::fluent_builders::ListSolutions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSolutions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`dataset_group_arn(impl Into<String>)`](crate::client::fluent_builders::ListSolutions::dataset_group_arn) / [`set_dataset_group_arn(Option<String>)`](crate::client::fluent_builders::ListSolutions::set_dataset_group_arn): <p>The Amazon Resource Name (ARN) of the dataset group.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSolutions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSolutions::set_next_token): <p>A token returned from the previous call to <code>ListSolutions</code> for getting the next set of solutions (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSolutions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListSolutions::set_max_results): <p>The maximum number of solutions to return.</p>
    /// - On success, responds with [`ListSolutionsOutput`](crate::output::ListSolutionsOutput) with field(s):
    ///   - [`solutions(Option<Vec<SolutionSummary>>)`](crate::output::ListSolutionsOutput::solutions): <p>A list of the current solutions.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListSolutionsOutput::next_token): <p>A token for getting the next set of solutions (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListSolutionsError>`](crate::error::ListSolutionsError)
    pub fn list_solutions(&self) -> fluent_builders::ListSolutions {
        fluent_builders::ListSolutions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSolutionVersions`](crate::client::fluent_builders::ListSolutionVersions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSolutionVersions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_arn(impl Into<String>)`](crate::client::fluent_builders::ListSolutionVersions::solution_arn) / [`set_solution_arn(Option<String>)`](crate::client::fluent_builders::ListSolutionVersions::set_solution_arn): <p>The Amazon Resource Name (ARN) of the solution.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSolutionVersions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSolutionVersions::set_next_token): <p>A token returned from the previous call to <code>ListSolutionVersions</code> for getting the next set of solution versions (if they exist).</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSolutionVersions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListSolutionVersions::set_max_results): <p>The maximum number of solution versions to return.</p>
    /// - On success, responds with [`ListSolutionVersionsOutput`](crate::output::ListSolutionVersionsOutput) with field(s):
    ///   - [`solution_versions(Option<Vec<SolutionVersionSummary>>)`](crate::output::ListSolutionVersionsOutput::solution_versions): <p>A list of solution versions describing the version properties.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListSolutionVersionsOutput::next_token): <p>A token for getting the next set of solution versions (if they exist).</p>
    /// - On failure, responds with [`SdkError<ListSolutionVersionsError>`](crate::error::ListSolutionVersionsError)
    pub fn list_solution_versions(&self) -> fluent_builders::ListSolutionVersions {
        fluent_builders::ListSolutionVersions::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 resource's Amazon Resource Name.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<Vec<Tag>>)`](crate::output::ListTagsForResourceOutput::tags): <p>The resource's 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 [`StartRecommender`](crate::client::fluent_builders::StartRecommender) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recommender_arn(impl Into<String>)`](crate::client::fluent_builders::StartRecommender::recommender_arn) / [`set_recommender_arn(Option<String>)`](crate::client::fluent_builders::StartRecommender::set_recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender to start.</p>
    /// - On success, responds with [`StartRecommenderOutput`](crate::output::StartRecommenderOutput) with field(s):
    ///   - [`recommender_arn(Option<String>)`](crate::output::StartRecommenderOutput::recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender you started.</p>
    /// - On failure, responds with [`SdkError<StartRecommenderError>`](crate::error::StartRecommenderError)
    pub fn start_recommender(&self) -> fluent_builders::StartRecommender {
        fluent_builders::StartRecommender::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StopRecommender`](crate::client::fluent_builders::StopRecommender) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recommender_arn(impl Into<String>)`](crate::client::fluent_builders::StopRecommender::recommender_arn) / [`set_recommender_arn(Option<String>)`](crate::client::fluent_builders::StopRecommender::set_recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender to stop.</p>
    /// - On success, responds with [`StopRecommenderOutput`](crate::output::StopRecommenderOutput) with field(s):
    ///   - [`recommender_arn(Option<String>)`](crate::output::StopRecommenderOutput::recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender you stopped.</p>
    /// - On failure, responds with [`SdkError<StopRecommenderError>`](crate::error::StopRecommenderError)
    pub fn stop_recommender(&self) -> fluent_builders::StopRecommender {
        fluent_builders::StopRecommender::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StopSolutionVersionCreation`](crate::client::fluent_builders::StopSolutionVersionCreation) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::StopSolutionVersionCreation::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::StopSolutionVersionCreation::set_solution_version_arn): <p>The Amazon Resource Name (ARN) of the solution version you want to stop creating.</p>
    /// - On success, responds with [`StopSolutionVersionCreationOutput`](crate::output::StopSolutionVersionCreationOutput)

    /// - On failure, responds with [`SdkError<StopSolutionVersionCreationError>`](crate::error::StopSolutionVersionCreationError)
    pub fn stop_solution_version_creation(&self) -> fluent_builders::StopSolutionVersionCreation {
        fluent_builders::StopSolutionVersionCreation::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 resource's Amazon Resource Name (ARN).</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::TagResource::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::TagResource::set_tags): <p>Tags to apply to the resource. For more information see <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">Tagging Personalize resources</a>.</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 [`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 resource's Amazon Resource Name (ARN).</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>Keys to remove from the resource's tags.</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 [`UpdateCampaign`](crate::client::fluent_builders::UpdateCampaign) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`campaign_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateCampaign::campaign_arn) / [`set_campaign_arn(Option<String>)`](crate::client::fluent_builders::UpdateCampaign::set_campaign_arn): <p>The Amazon Resource Name (ARN) of the campaign.</p>
    ///   - [`solution_version_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateCampaign::solution_version_arn) / [`set_solution_version_arn(Option<String>)`](crate::client::fluent_builders::UpdateCampaign::set_solution_version_arn): <p>The ARN of a new solution version to deploy.</p>
    ///   - [`min_provisioned_tps(i32)`](crate::client::fluent_builders::UpdateCampaign::min_provisioned_tps) / [`set_min_provisioned_tps(Option<i32>)`](crate::client::fluent_builders::UpdateCampaign::set_min_provisioned_tps): <p>Specifies the requested minimum provisioned transactions (recommendations) per second that Amazon Personalize will support.</p>
    ///   - [`campaign_config(CampaignConfig)`](crate::client::fluent_builders::UpdateCampaign::campaign_config) / [`set_campaign_config(Option<CampaignConfig>)`](crate::client::fluent_builders::UpdateCampaign::set_campaign_config): <p>The configuration details of a campaign.</p>
    /// - On success, responds with [`UpdateCampaignOutput`](crate::output::UpdateCampaignOutput) with field(s):
    ///   - [`campaign_arn(Option<String>)`](crate::output::UpdateCampaignOutput::campaign_arn): <p>The same campaign ARN as given in the request.</p>
    /// - On failure, responds with [`SdkError<UpdateCampaignError>`](crate::error::UpdateCampaignError)
    pub fn update_campaign(&self) -> fluent_builders::UpdateCampaign {
        fluent_builders::UpdateCampaign::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateMetricAttribution`](crate::client::fluent_builders::UpdateMetricAttribution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`add_metrics(Vec<MetricAttribute>)`](crate::client::fluent_builders::UpdateMetricAttribution::add_metrics) / [`set_add_metrics(Option<Vec<MetricAttribute>>)`](crate::client::fluent_builders::UpdateMetricAttribution::set_add_metrics): <p>Add new metric attributes to the metric attribution.</p>
    ///   - [`remove_metrics(Vec<String>)`](crate::client::fluent_builders::UpdateMetricAttribution::remove_metrics) / [`set_remove_metrics(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateMetricAttribution::set_remove_metrics): <p>Remove metric attributes from the metric attribution.</p>
    ///   - [`metrics_output_config(MetricAttributionOutput)`](crate::client::fluent_builders::UpdateMetricAttribution::metrics_output_config) / [`set_metrics_output_config(Option<MetricAttributionOutput>)`](crate::client::fluent_builders::UpdateMetricAttribution::set_metrics_output_config): <p>An output config for the metric attribution.</p>
    ///   - [`metric_attribution_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateMetricAttribution::metric_attribution_arn) / [`set_metric_attribution_arn(Option<String>)`](crate::client::fluent_builders::UpdateMetricAttribution::set_metric_attribution_arn): <p>The Amazon Resource Name (ARN) for the metric attribution to update.</p>
    /// - On success, responds with [`UpdateMetricAttributionOutput`](crate::output::UpdateMetricAttributionOutput) with field(s):
    ///   - [`metric_attribution_arn(Option<String>)`](crate::output::UpdateMetricAttributionOutput::metric_attribution_arn): <p>The Amazon Resource Name (ARN) for the metric attribution that you updated.</p>
    /// - On failure, responds with [`SdkError<UpdateMetricAttributionError>`](crate::error::UpdateMetricAttributionError)
    pub fn update_metric_attribution(&self) -> fluent_builders::UpdateMetricAttribution {
        fluent_builders::UpdateMetricAttribution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateRecommender`](crate::client::fluent_builders::UpdateRecommender) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recommender_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateRecommender::recommender_arn) / [`set_recommender_arn(Option<String>)`](crate::client::fluent_builders::UpdateRecommender::set_recommender_arn): <p>The Amazon Resource Name (ARN) of the recommender to modify.</p>
    ///   - [`recommender_config(RecommenderConfig)`](crate::client::fluent_builders::UpdateRecommender::recommender_config) / [`set_recommender_config(Option<RecommenderConfig>)`](crate::client::fluent_builders::UpdateRecommender::set_recommender_config): <p>The configuration details of the recommender.</p>
    /// - On success, responds with [`UpdateRecommenderOutput`](crate::output::UpdateRecommenderOutput) with field(s):
    ///   - [`recommender_arn(Option<String>)`](crate::output::UpdateRecommenderOutput::recommender_arn): <p>The same recommender Amazon Resource Name (ARN) as given in the request.</p>
    /// - On failure, responds with [`SdkError<UpdateRecommenderError>`](crate::error::UpdateRecommenderError)
    pub fn update_recommender(&self) -> fluent_builders::UpdateRecommender {
        fluent_builders::UpdateRecommender::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 `CreateBatchInferenceJob`.
    ///
    /// <p>Creates a batch inference job. The operation can handle up to 50 million records and the input file must be in JSON format. For more information, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/creating-batch-inference-job.html">Creating a batch inference job</a>. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateBatchInferenceJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_batch_inference_job_input::Builder,
    }
    impl CreateBatchInferenceJob {
        /// Creates a new `CreateBatchInferenceJob`.
        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::CreateBatchInferenceJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateBatchInferenceJobError>,
        > {
            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::CreateBatchInferenceJobOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateBatchInferenceJobError>,
        > {
            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 batch inference job to create.</p>
        pub fn job_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.job_name(input.into());
            self
        }
        /// <p>The name of the batch inference job to create.</p>
        pub fn set_job_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_job_name(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version that will be used to generate the batch inference recommendations.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version that will be used to generate the batch inference recommendations.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
        /// <p>The ARN of the filter to apply to the batch inference job. For more information on using filters, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-batch.html">Filtering batch recommendations</a>.</p>
        pub fn filter_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.filter_arn(input.into());
            self
        }
        /// <p>The ARN of the filter to apply to the batch inference job. For more information on using filters, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-batch.html">Filtering batch recommendations</a>.</p>
        pub fn set_filter_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_filter_arn(input);
            self
        }
        /// <p>The number of recommendations to retrieve.</p>
        pub fn num_results(mut self, input: i32) -> Self {
            self.inner = self.inner.num_results(input);
            self
        }
        /// <p>The number of recommendations to retrieve.</p>
        pub fn set_num_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_num_results(input);
            self
        }
        /// <p>The Amazon S3 path that leads to the input file to base your recommendations on. The input material must be in JSON format.</p>
        pub fn job_input(mut self, input: crate::model::BatchInferenceJobInput) -> Self {
            self.inner = self.inner.job_input(input);
            self
        }
        /// <p>The Amazon S3 path that leads to the input file to base your recommendations on. The input material must be in JSON format.</p>
        pub fn set_job_input(
            mut self,
            input: std::option::Option<crate::model::BatchInferenceJobInput>,
        ) -> Self {
            self.inner = self.inner.set_job_input(input);
            self
        }
        /// <p>The path to the Amazon S3 bucket where the job's output will be stored.</p>
        pub fn job_output(mut self, input: crate::model::BatchInferenceJobOutput) -> Self {
            self.inner = self.inner.job_output(input);
            self
        }
        /// <p>The path to the Amazon S3 bucket where the job's output will be stored.</p>
        pub fn set_job_output(
            mut self,
            input: std::option::Option<crate::model::BatchInferenceJobOutput>,
        ) -> Self {
            self.inner = self.inner.set_job_output(input);
            self
        }
        /// <p>The ARN of the Amazon Identity and Access Management role that has permissions to read and write to your input and output Amazon S3 buckets respectively.</p>
        pub fn role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.role_arn(input.into());
            self
        }
        /// <p>The ARN of the Amazon Identity and Access Management role that has permissions to read and write to your input and output Amazon S3 buckets respectively.</p>
        pub fn set_role_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_role_arn(input);
            self
        }
        /// <p>The configuration details of a batch inference job.</p>
        pub fn batch_inference_job_config(
            mut self,
            input: crate::model::BatchInferenceJobConfig,
        ) -> Self {
            self.inner = self.inner.batch_inference_job_config(input);
            self
        }
        /// <p>The configuration details of a batch inference job.</p>
        pub fn set_batch_inference_job_config(
            mut self,
            input: std::option::Option<crate::model::BatchInferenceJobConfig>,
        ) -> Self {
            self.inner = self.inner.set_batch_inference_job_config(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the batch inference job.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the batch inference job.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateBatchSegmentJob`.
    ///
    /// <p>Creates a batch segment job. The operation can handle up to 50 million records and the input file must be in JSON format. For more information, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/recommendations-batch.html">Getting batch recommendations and user segments</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateBatchSegmentJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_batch_segment_job_input::Builder,
    }
    impl CreateBatchSegmentJob {
        /// Creates a new `CreateBatchSegmentJob`.
        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::CreateBatchSegmentJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateBatchSegmentJobError>,
        > {
            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::CreateBatchSegmentJobOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateBatchSegmentJobError>,
        > {
            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 batch segment job to create.</p>
        pub fn job_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.job_name(input.into());
            self
        }
        /// <p>The name of the batch segment job to create.</p>
        pub fn set_job_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_job_name(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version you want the batch segment job to use to generate batch segments.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version you want the batch segment job to use to generate batch segments.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
        /// <p>The ARN of the filter to apply to the batch segment job. For more information on using filters, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-batch.html">Filtering batch recommendations</a>.</p>
        pub fn filter_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.filter_arn(input.into());
            self
        }
        /// <p>The ARN of the filter to apply to the batch segment job. For more information on using filters, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-batch.html">Filtering batch recommendations</a>.</p>
        pub fn set_filter_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_filter_arn(input);
            self
        }
        /// <p>The number of predicted users generated by the batch segment job for each line of input data.</p>
        pub fn num_results(mut self, input: i32) -> Self {
            self.inner = self.inner.num_results(input);
            self
        }
        /// <p>The number of predicted users generated by the batch segment job for each line of input data.</p>
        pub fn set_num_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_num_results(input);
            self
        }
        /// <p>The Amazon S3 path for the input data used to generate the batch segment job.</p>
        pub fn job_input(mut self, input: crate::model::BatchSegmentJobInput) -> Self {
            self.inner = self.inner.job_input(input);
            self
        }
        /// <p>The Amazon S3 path for the input data used to generate the batch segment job.</p>
        pub fn set_job_input(
            mut self,
            input: std::option::Option<crate::model::BatchSegmentJobInput>,
        ) -> Self {
            self.inner = self.inner.set_job_input(input);
            self
        }
        /// <p>The Amazon S3 path for the bucket where the job's output will be stored.</p>
        pub fn job_output(mut self, input: crate::model::BatchSegmentJobOutput) -> Self {
            self.inner = self.inner.job_output(input);
            self
        }
        /// <p>The Amazon S3 path for the bucket where the job's output will be stored.</p>
        pub fn set_job_output(
            mut self,
            input: std::option::Option<crate::model::BatchSegmentJobOutput>,
        ) -> Self {
            self.inner = self.inner.set_job_output(input);
            self
        }
        /// <p>The ARN of the Amazon Identity and Access Management role that has permissions to read and write to your input and output Amazon S3 buckets respectively.</p>
        pub fn role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.role_arn(input.into());
            self
        }
        /// <p>The ARN of the Amazon Identity and Access Management role that has permissions to read and write to your input and output Amazon S3 buckets respectively.</p>
        pub fn set_role_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_role_arn(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the batch segment job.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the batch segment job.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateCampaign`.
    ///
    /// <p>Creates a campaign that deploys a solution version. When a client calls the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html">GetRecommendations</a> and <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetPersonalizedRanking.html">GetPersonalizedRanking</a> APIs, a campaign is specified in the request.</p>
    /// <p> <b>Minimum Provisioned TPS and Auto-Scaling</b> </p>
    /// <p>A transaction is a single <code>GetRecommendations</code> or <code>GetPersonalizedRanking</code> call. Transactions per second (TPS) is the throughput and unit of billing for Amazon Personalize. The minimum provisioned TPS (<code>minProvisionedTPS</code>) specifies the baseline throughput provisioned by Amazon Personalize, and thus, the minimum billing charge. </p>
    /// <p> If your TPS increases beyond <code>minProvisionedTPS</code>, Amazon Personalize auto-scales the provisioned capacity up and down, but never below <code>minProvisionedTPS</code>. There's a short time delay while the capacity is increased that might cause loss of transactions.</p>
    /// <p>The actual TPS used is calculated as the average requests/second within a 5-minute window. You pay for maximum of either the minimum provisioned TPS or the actual TPS. We recommend starting with a low <code>minProvisionedTPS</code>, track your usage using Amazon CloudWatch metrics, and then increase the <code>minProvisionedTPS</code> as necessary.</p>
    /// <p> <b>Status</b> </p>
    /// <p>A campaign can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>DELETE PENDING &gt; DELETE IN_PROGRESS</p> </li>
    /// </ul>
    /// <p>To get the campaign status, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeCampaign.html">DescribeCampaign</a>.</p> <note>
    /// <p>Wait until the <code>status</code> of the campaign is <code>ACTIVE</code> before asking the campaign for recommendations.</p>
    /// </note>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListCampaigns.html">ListCampaigns</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeCampaign.html">DescribeCampaign</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_UpdateCampaign.html">UpdateCampaign</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteCampaign.html">DeleteCampaign</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateCampaign {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_campaign_input::Builder,
    }
    impl CreateCampaign {
        /// Creates a new `CreateCampaign`.
        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::CreateCampaign,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateCampaignError>,
        > {
            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::CreateCampaignOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateCampaignError>,
        > {
            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 name for the new campaign. The campaign name must be unique within your account.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>A name for the new campaign. The campaign name must be unique within your account.</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 Amazon Resource Name (ARN) of the solution version to deploy.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version to deploy.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
        /// <p>Specifies the requested minimum provisioned transactions (recommendations) per second that Amazon Personalize will support.</p>
        pub fn min_provisioned_tps(mut self, input: i32) -> Self {
            self.inner = self.inner.min_provisioned_tps(input);
            self
        }
        /// <p>Specifies the requested minimum provisioned transactions (recommendations) per second that Amazon Personalize will support.</p>
        pub fn set_min_provisioned_tps(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_min_provisioned_tps(input);
            self
        }
        /// <p>The configuration details of a campaign.</p>
        pub fn campaign_config(mut self, input: crate::model::CampaignConfig) -> Self {
            self.inner = self.inner.campaign_config(input);
            self
        }
        /// <p>The configuration details of a campaign.</p>
        pub fn set_campaign_config(
            mut self,
            input: std::option::Option<crate::model::CampaignConfig>,
        ) -> Self {
            self.inner = self.inner.set_campaign_config(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the campaign.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the campaign.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateDataset`.
    ///
    /// <p>Creates an empty dataset and adds it to the specified dataset group. Use <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetImportJob.html">CreateDatasetImportJob</a> to import your training data to a dataset.</p>
    /// <p>There are three types of datasets:</p>
    /// <ul>
    /// <li> <p>Interactions</p> </li>
    /// <li> <p>Items</p> </li>
    /// <li> <p>Users</p> </li>
    /// </ul>
    /// <p>Each dataset type has an associated schema with required field types. Only the <code>Interactions</code> dataset is required in order to train a model (also referred to as creating a solution).</p>
    /// <p>A dataset can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>DELETE PENDING &gt; DELETE IN_PROGRESS</p> </li>
    /// </ul>
    /// <p>To get the status of the dataset, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDataset.html">DescribeDataset</a>.</p>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetGroup.html">CreateDatasetGroup</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListDatasets.html">ListDatasets</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDataset.html">DescribeDataset</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteDataset.html">DeleteDataset</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateDataset {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_dataset_input::Builder,
    }
    impl CreateDataset {
        /// Creates a new `CreateDataset`.
        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::CreateDataset,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetError>,
        > {
            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::CreateDatasetOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetError>,
        > {
            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 dataset.</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 dataset.</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 ARN of the schema to associate with the dataset. The schema defines the dataset fields.</p>
        pub fn schema_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.schema_arn(input.into());
            self
        }
        /// <p>The ARN of the schema to associate with the dataset. The schema defines the dataset fields.</p>
        pub fn set_schema_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_schema_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group to add the dataset to.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group to add the dataset to.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>The type of dataset.</p>
        /// <p>One of the following (case insensitive) values:</p>
        /// <ul>
        /// <li> <p>Interactions</p> </li>
        /// <li> <p>Items</p> </li>
        /// <li> <p>Users</p> </li>
        /// </ul>
        pub fn dataset_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_type(input.into());
            self
        }
        /// <p>The type of dataset.</p>
        /// <p>One of the following (case insensitive) values:</p>
        /// <ul>
        /// <li> <p>Interactions</p> </li>
        /// <li> <p>Items</p> </li>
        /// <li> <p>Users</p> </li>
        /// </ul>
        pub fn set_dataset_type(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_dataset_type(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateDatasetExportJob`.
    ///
    /// <p> Creates a job that exports data from your dataset to an Amazon S3 bucket. To allow Amazon Personalize to export the training data, you must specify an service-linked IAM role that gives Amazon Personalize <code>PutObject</code> permissions for your Amazon S3 bucket. For information, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/export-data.html">Exporting a dataset</a> in the Amazon Personalize developer guide. </p>
    /// <p> <b>Status</b> </p>
    /// <p>A dataset export job can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// </ul>
    /// <p> To get the status of the export job, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDatasetExportJob.html">DescribeDatasetExportJob</a>, and specify the Amazon Resource Name (ARN) of the dataset export job. The dataset export is complete when the status shows as ACTIVE. If the status shows as CREATE FAILED, the response includes a <code>failureReason</code> key, which describes why the job failed. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateDatasetExportJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_dataset_export_job_input::Builder,
    }
    impl CreateDatasetExportJob {
        /// Creates a new `CreateDatasetExportJob`.
        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::CreateDatasetExportJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetExportJobError>,
        > {
            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::CreateDatasetExportJobOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetExportJobError>,
        > {
            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 dataset export job.</p>
        pub fn job_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.job_name(input.into());
            self
        }
        /// <p>The name for the dataset export job.</p>
        pub fn set_job_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_job_name(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset that contains the data to export.</p>
        pub fn dataset_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset that contains the data to export.</p>
        pub fn set_dataset_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_dataset_arn(input);
            self
        }
        /// <p>The data to export, based on how you imported the data. You can choose to export only <code>BULK</code> data that you imported using a dataset import job, only <code>PUT</code> data that you imported incrementally (using the console, PutEvents, PutUsers and PutItems operations), or <code>ALL</code> for both types. The default value is <code>PUT</code>. </p>
        pub fn ingestion_mode(mut self, input: crate::model::IngestionMode) -> Self {
            self.inner = self.inner.ingestion_mode(input);
            self
        }
        /// <p>The data to export, based on how you imported the data. You can choose to export only <code>BULK</code> data that you imported using a dataset import job, only <code>PUT</code> data that you imported incrementally (using the console, PutEvents, PutUsers and PutItems operations), or <code>ALL</code> for both types. The default value is <code>PUT</code>. </p>
        pub fn set_ingestion_mode(
            mut self,
            input: std::option::Option<crate::model::IngestionMode>,
        ) -> Self {
            self.inner = self.inner.set_ingestion_mode(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that has permissions to add data to your output Amazon S3 bucket.</p>
        pub fn role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that has permissions to add data to your output Amazon S3 bucket.</p>
        pub fn set_role_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_role_arn(input);
            self
        }
        /// <p>The path to the Amazon S3 bucket where the job's output is stored.</p>
        pub fn job_output(mut self, input: crate::model::DatasetExportJobOutput) -> Self {
            self.inner = self.inner.job_output(input);
            self
        }
        /// <p>The path to the Amazon S3 bucket where the job's output is stored.</p>
        pub fn set_job_output(
            mut self,
            input: std::option::Option<crate::model::DatasetExportJobOutput>,
        ) -> Self {
            self.inner = self.inner.set_job_output(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset export job.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset export job.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateDatasetGroup`.
    ///
    /// <p>Creates an empty dataset group. A dataset group is a container for Amazon Personalize resources. A dataset group can contain at most three datasets, one for each type of dataset:</p>
    /// <ul>
    /// <li> <p>Interactions</p> </li>
    /// <li> <p>Items</p> </li>
    /// <li> <p>Users</p> </li>
    /// </ul>
    /// <p> A dataset group can be a Domain dataset group, where you specify a domain and use pre-configured resources like recommenders, or a Custom dataset group, where you use custom resources, such as a solution with a solution version, that you deploy with a campaign. If you start with a Domain dataset group, you can still add custom resources such as solutions and solution versions trained with recipes for custom use cases and deployed with campaigns. </p>
    /// <p>A dataset group can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>DELETE PENDING</p> </li>
    /// </ul>
    /// <p>To get the status of the dataset group, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDatasetGroup.html">DescribeDatasetGroup</a>. If the status shows as CREATE FAILED, the response includes a <code>failureReason</code> key, which describes why the creation failed.</p> <note>
    /// <p>You must wait until the <code>status</code> of the dataset group is <code>ACTIVE</code> before adding a dataset to the group.</p>
    /// </note>
    /// <p>You can specify an Key Management Service (KMS) key to encrypt the datasets in the group. If you specify a KMS key, you must also include an Identity and Access Management (IAM) role that has permission to access the key.</p>
    /// <p class="title"> <b>APIs that require a dataset group ARN in the request</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDataset.html">CreateDataset</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateEventTracker.html">CreateEventTracker</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a> </p> </li>
    /// </ul>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListDatasetGroups.html">ListDatasetGroups</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDatasetGroup.html">DescribeDatasetGroup</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteDatasetGroup.html">DeleteDatasetGroup</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateDatasetGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_dataset_group_input::Builder,
    }
    impl CreateDatasetGroup {
        /// Creates a new `CreateDatasetGroup`.
        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::CreateDatasetGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetGroupError>,
        > {
            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::CreateDatasetGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetGroupError>,
        > {
            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 new dataset 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 new dataset 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>The ARN of the Identity and Access Management (IAM) role that has permissions to access the Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.</p>
        pub fn role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.role_arn(input.into());
            self
        }
        /// <p>The ARN of the Identity and Access Management (IAM) role that has permissions to access the Key Management Service (KMS) key. Supplying an IAM role is only valid when also specifying a KMS key.</p>
        pub fn set_role_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_role_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of a Key Management Service (KMS) key used to encrypt the datasets.</p>
        pub fn kms_key_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.kms_key_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of a Key Management Service (KMS) key used to encrypt the datasets.</p>
        pub fn set_kms_key_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_kms_key_arn(input);
            self
        }
        /// <p>The domain of the dataset group. Specify a domain to create a Domain dataset group. The domain you specify determines the default schemas for datasets and the use cases available for recommenders. If you don't specify a domain, you create a Custom dataset group with solution versions that you deploy with a campaign. </p>
        pub fn domain(mut self, input: crate::model::Domain) -> Self {
            self.inner = self.inner.domain(input);
            self
        }
        /// <p>The domain of the dataset group. Specify a domain to create a Domain dataset group. The domain you specify determines the default schemas for datasets and the use cases available for recommenders. If you don't specify a domain, you create a Custom dataset group with solution versions that you deploy with a campaign. </p>
        pub fn set_domain(mut self, input: std::option::Option<crate::model::Domain>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset group.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset group.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateDatasetImportJob`.
    ///
    /// <p>Creates a job that imports training data from your data source (an Amazon S3 bucket) to an Amazon Personalize dataset. To allow Amazon Personalize to import the training data, you must specify an IAM service role that has permission to read from the data source, as Amazon Personalize makes a copy of your data and processes it internally. For information on granting access to your Amazon S3 bucket, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/granting-personalize-s3-access.html">Giving Amazon Personalize Access to Amazon S3 Resources</a>. </p> <important>
    /// <p>By default, a dataset import job replaces any existing data in the dataset that you imported in bulk. To add new records without replacing existing data, specify INCREMENTAL for the import mode in the CreateDatasetImportJob operation.</p>
    /// </important>
    /// <p> <b>Status</b> </p>
    /// <p>A dataset import job can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// </ul>
    /// <p>To get the status of the import job, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDatasetImportJob.html">DescribeDatasetImportJob</a>, providing the Amazon Resource Name (ARN) of the dataset import job. The dataset import is complete when the status shows as ACTIVE. If the status shows as CREATE FAILED, the response includes a <code>failureReason</code> key, which describes why the job failed.</p> <note>
    /// <p>Importing takes time. You must wait until the status shows as ACTIVE before training a model using the dataset.</p>
    /// </note>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListDatasetImportJobs.html">ListDatasetImportJobs</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeDatasetImportJob.html">DescribeDatasetImportJob</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateDatasetImportJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_dataset_import_job_input::Builder,
    }
    impl CreateDatasetImportJob {
        /// Creates a new `CreateDatasetImportJob`.
        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::CreateDatasetImportJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetImportJobError>,
        > {
            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::CreateDatasetImportJobOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateDatasetImportJobError>,
        > {
            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 dataset import job.</p>
        pub fn job_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.job_name(input.into());
            self
        }
        /// <p>The name for the dataset import job.</p>
        pub fn set_job_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_job_name(input);
            self
        }
        /// <p>The ARN of the dataset that receives the imported data.</p>
        pub fn dataset_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_arn(input.into());
            self
        }
        /// <p>The ARN of the dataset that receives the imported data.</p>
        pub fn set_dataset_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_dataset_arn(input);
            self
        }
        /// <p>The Amazon S3 bucket that contains the training data to import.</p>
        pub fn data_source(mut self, input: crate::model::DataSource) -> Self {
            self.inner = self.inner.data_source(input);
            self
        }
        /// <p>The Amazon S3 bucket that contains the training data to import.</p>
        pub fn set_data_source(
            mut self,
            input: std::option::Option<crate::model::DataSource>,
        ) -> Self {
            self.inner = self.inner.set_data_source(input);
            self
        }
        /// <p>The ARN of the IAM role that has permissions to read from the Amazon S3 data source.</p>
        pub fn role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.role_arn(input.into());
            self
        }
        /// <p>The ARN of the IAM role that has permissions to read from the Amazon S3 data source.</p>
        pub fn set_role_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_role_arn(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset import job.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the dataset import job.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
        /// <p>Specify how to add the new records to an existing dataset. The default import mode is <code>FULL</code>. If you haven't imported bulk records into the dataset previously, you can only specify <code>FULL</code>.</p>
        /// <ul>
        /// <li> <p>Specify <code>FULL</code> to overwrite all existing bulk data in your dataset. Data you imported individually is not replaced.</p> </li>
        /// <li> <p>Specify <code>INCREMENTAL</code> to append the new records to the existing data in your dataset. Amazon Personalize replaces any record with the same ID with the new one.</p> </li>
        /// </ul>
        pub fn import_mode(mut self, input: crate::model::ImportMode) -> Self {
            self.inner = self.inner.import_mode(input);
            self
        }
        /// <p>Specify how to add the new records to an existing dataset. The default import mode is <code>FULL</code>. If you haven't imported bulk records into the dataset previously, you can only specify <code>FULL</code>.</p>
        /// <ul>
        /// <li> <p>Specify <code>FULL</code> to overwrite all existing bulk data in your dataset. Data you imported individually is not replaced.</p> </li>
        /// <li> <p>Specify <code>INCREMENTAL</code> to append the new records to the existing data in your dataset. Amazon Personalize replaces any record with the same ID with the new one.</p> </li>
        /// </ul>
        pub fn set_import_mode(
            mut self,
            input: std::option::Option<crate::model::ImportMode>,
        ) -> Self {
            self.inner = self.inner.set_import_mode(input);
            self
        }
        /// <p>If you created a metric attribution, specify whether to publish metrics for this import job to Amazon S3</p>
        pub fn publish_attribution_metrics_to_s3(mut self, input: bool) -> Self {
            self.inner = self.inner.publish_attribution_metrics_to_s3(input);
            self
        }
        /// <p>If you created a metric attribution, specify whether to publish metrics for this import job to Amazon S3</p>
        pub fn set_publish_attribution_metrics_to_s3(
            mut self,
            input: std::option::Option<bool>,
        ) -> Self {
            self.inner = self.inner.set_publish_attribution_metrics_to_s3(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateEventTracker`.
    ///
    /// <p>Creates an event tracker that you use when adding event data to a specified dataset group using the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_UBS_PutEvents.html">PutEvents</a> API.</p> <note>
    /// <p>Only one event tracker can be associated with a dataset group. You will get an error if you call <code>CreateEventTracker</code> using the same dataset group as an existing event tracker.</p>
    /// </note>
    /// <p>When you create an event tracker, the response includes a tracking ID, which you pass as a parameter when you use the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_UBS_PutEvents.html">PutEvents</a> operation. Amazon Personalize then appends the event data to the Interactions dataset of the dataset group you specify in your event tracker. </p>
    /// <p>The event tracker can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>DELETE PENDING &gt; DELETE IN_PROGRESS</p> </li>
    /// </ul>
    /// <p>To get the status of the event tracker, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeEventTracker.html">DescribeEventTracker</a>.</p> <note>
    /// <p>The event tracker must be in the ACTIVE state before using the tracking ID.</p>
    /// </note>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListEventTrackers.html">ListEventTrackers</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeEventTracker.html">DescribeEventTracker</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteEventTracker.html">DeleteEventTracker</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateEventTracker {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_event_tracker_input::Builder,
    }
    impl CreateEventTracker {
        /// Creates a new `CreateEventTracker`.
        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::CreateEventTracker,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateEventTrackerError>,
        > {
            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::CreateEventTrackerOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateEventTrackerError>,
        > {
            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 event tracker.</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 event tracker.</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 Amazon Resource Name (ARN) of the dataset group that receives the event data.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group that receives the event data.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the event tracker.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the event tracker.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateFilter`.
    ///
    /// <p>Creates a recommendation filter. For more information, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter.html">Filtering recommendations and user segments</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateFilter {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_filter_input::Builder,
    }
    impl CreateFilter {
        /// Creates a new `CreateFilter`.
        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::CreateFilter,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateFilterError>,
        > {
            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::CreateFilterOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateFilterError>,
        > {
            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 filter to create.</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 filter to create.</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 ARN of the dataset group that the filter will belong to.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The ARN of the dataset group that the filter will belong to.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>The filter expression defines which items are included or excluded from recommendations. Filter expression must follow specific format rules. For information about filter expression structure and syntax, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-expressions.html">Filter expressions</a>.</p>
        pub fn filter_expression(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.filter_expression(input.into());
            self
        }
        /// <p>The filter expression defines which items are included or excluded from recommendations. Filter expression must follow specific format rules. For information about filter expression structure and syntax, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/filter-expressions.html">Filter expressions</a>.</p>
        pub fn set_filter_expression(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_filter_expression(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the filter.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the filter.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateMetricAttribution`.
    ///
    /// <p>Creates a metric attribution. A metric attribution creates reports on the data that you import into Amazon Personalize. Depending on how you imported the data, you can view reports in Amazon CloudWatch or Amazon S3. For more information, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/measuring-recommendation-impact.html">Measuring impact of recommendations</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateMetricAttribution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_metric_attribution_input::Builder,
    }
    impl CreateMetricAttribution {
        /// Creates a new `CreateMetricAttribution`.
        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::CreateMetricAttribution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateMetricAttributionError>,
        > {
            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::CreateMetricAttributionOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateMetricAttributionError>,
        > {
            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 name for the metric attribution.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>A name for the metric attribution.</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 Amazon Resource Name (ARN) of the destination dataset group for the metric attribution.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the destination dataset group for the metric attribution.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// Appends an item to `metrics`.
        ///
        /// To override the contents of this collection use [`set_metrics`](Self::set_metrics).
        ///
        /// <p>A list of metric attributes for the metric attribution. Each metric attribute specifies an event type to track and a function. Available functions are <code>SUM()</code> or <code>SAMPLECOUNT()</code>. For SUM() functions, provide the dataset type (either Interactions or Items) and column to sum as a parameter. For example SUM(Items.PRICE).</p>
        pub fn metrics(mut self, input: crate::model::MetricAttribute) -> Self {
            self.inner = self.inner.metrics(input);
            self
        }
        /// <p>A list of metric attributes for the metric attribution. Each metric attribute specifies an event type to track and a function. Available functions are <code>SUM()</code> or <code>SAMPLECOUNT()</code>. For SUM() functions, provide the dataset type (either Interactions or Items) and column to sum as a parameter. For example SUM(Items.PRICE).</p>
        pub fn set_metrics(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::MetricAttribute>>,
        ) -> Self {
            self.inner = self.inner.set_metrics(input);
            self
        }
        /// <p>The output configuration details for the metric attribution.</p>
        pub fn metrics_output_config(
            mut self,
            input: crate::model::MetricAttributionOutput,
        ) -> Self {
            self.inner = self.inner.metrics_output_config(input);
            self
        }
        /// <p>The output configuration details for the metric attribution.</p>
        pub fn set_metrics_output_config(
            mut self,
            input: std::option::Option<crate::model::MetricAttributionOutput>,
        ) -> Self {
            self.inner = self.inner.set_metrics_output_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateRecommender`.
    ///
    /// <p>Creates a recommender with the recipe (a Domain dataset group use case) you specify. You create recommenders for a Domain dataset group and specify the recommender's Amazon Resource Name (ARN) when you make a <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html">GetRecommendations</a> request. </p>
    /// <p> <b>Minimum recommendation requests per second</b> </p>
    /// <p>When you create a recommender, you can configure the recommender's minimum recommendation requests per second. The minimum recommendation requests per second (<code>minRecommendationRequestsPerSecond</code>) specifies the baseline recommendation request throughput provisioned by Amazon Personalize. The default minRecommendationRequestsPerSecond is <code>1</code>. A recommendation request is a single <code>GetRecommendations</code> operation. Request throughput is measured in requests per second and Amazon Personalize uses your requests per second to derive your requests per hour and the price of your recommender usage. </p>
    /// <p> If your requests per second increases beyond <code>minRecommendationRequestsPerSecond</code>, Amazon Personalize auto-scales the provisioned capacity up and down, but never below <code>minRecommendationRequestsPerSecond</code>. There's a short time delay while the capacity is increased that might cause loss of requests.</p>
    /// <p> Your bill is the greater of either the minimum requests per hour (based on minRecommendationRequestsPerSecond) or the actual number of requests. The actual request throughput used is calculated as the average requests/second within a one-hour window. We recommend starting with the default <code>minRecommendationRequestsPerSecond</code>, track your usage using Amazon CloudWatch metrics, and then increase the <code>minRecommendationRequestsPerSecond</code> as necessary. </p>
    /// <p> <b>Status</b> </p>
    /// <p>A recommender can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>STOP PENDING &gt; STOP IN_PROGRESS &gt; INACTIVE &gt; START PENDING &gt; START IN_PROGRESS &gt; ACTIVE</p> </li>
    /// <li> <p>DELETE PENDING &gt; DELETE IN_PROGRESS</p> </li>
    /// </ul>
    /// <p>To get the recommender status, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeRecommender.html">DescribeRecommender</a>.</p> <note>
    /// <p>Wait until the <code>status</code> of the recommender is <code>ACTIVE</code> before asking the recommender for recommendations.</p>
    /// </note>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListRecommenders.html">ListRecommenders</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeRecommender.html">DescribeRecommender</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_UpdateRecommender.html">UpdateRecommender</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteRecommender.html">DeleteRecommender</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateRecommender {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_recommender_input::Builder,
    }
    impl CreateRecommender {
        /// Creates a new `CreateRecommender`.
        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::CreateRecommender,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateRecommenderError>,
        > {
            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::CreateRecommenderOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateRecommenderError>,
        > {
            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 recommender.</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 recommender.</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 Amazon Resource Name (ARN) of the destination domain dataset group for the recommender.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the destination domain dataset group for the recommender.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recipe that the recommender will use. For a recommender, a recipe is a Domain dataset group use case. Only Domain dataset group use cases can be used to create a recommender. For information about use cases see <a href="https://docs.aws.amazon.com/personalize/latest/dg/domain-use-cases.html">Choosing recommender use cases</a>. </p>
        pub fn recipe_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recipe_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recipe that the recommender will use. For a recommender, a recipe is a Domain dataset group use case. Only Domain dataset group use cases can be used to create a recommender. For information about use cases see <a href="https://docs.aws.amazon.com/personalize/latest/dg/domain-use-cases.html">Choosing recommender use cases</a>. </p>
        pub fn set_recipe_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_recipe_arn(input);
            self
        }
        /// <p>The configuration details of the recommender.</p>
        pub fn recommender_config(mut self, input: crate::model::RecommenderConfig) -> Self {
            self.inner = self.inner.recommender_config(input);
            self
        }
        /// <p>The configuration details of the recommender.</p>
        pub fn set_recommender_config(
            mut self,
            input: std::option::Option<crate::model::RecommenderConfig>,
        ) -> Self {
            self.inner = self.inner.set_recommender_config(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the recommender.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the recommender.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateSchema`.
    ///
    /// <p>Creates an Amazon Personalize schema from the specified schema string. The schema you create must be in Avro JSON format.</p>
    /// <p>Amazon Personalize recognizes three schema variants. Each schema is associated with a dataset type and has a set of required field and keywords. If you are creating a schema for a dataset in a Domain dataset group, you provide the domain of the Domain dataset group. You specify a schema when you call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDataset.html">CreateDataset</a>.</p>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListSchemas.html">ListSchemas</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSchema.html">DescribeSchema</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteSchema.html">DeleteSchema</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateSchema {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_schema_input::Builder,
    }
    impl CreateSchema {
        /// Creates a new `CreateSchema`.
        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::CreateSchema,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateSchemaError>,
        > {
            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::CreateSchemaOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateSchemaError>,
        > {
            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 schema.</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 schema.</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 schema in Avro JSON format.</p>
        pub fn schema(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.schema(input.into());
            self
        }
        /// <p>A schema in Avro JSON format.</p>
        pub fn set_schema(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_schema(input);
            self
        }
        /// <p>The domain for the schema. If you are creating a schema for a dataset in a Domain dataset group, specify the domain you chose when you created the Domain dataset group.</p>
        pub fn domain(mut self, input: crate::model::Domain) -> Self {
            self.inner = self.inner.domain(input);
            self
        }
        /// <p>The domain for the schema. If you are creating a schema for a dataset in a Domain dataset group, specify the domain you chose when you created the Domain dataset group.</p>
        pub fn set_domain(mut self, input: std::option::Option<crate::model::Domain>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateSolution`.
    ///
    /// <p>Creates the configuration for training a model. A trained model is known as a solution. After the configuration is created, you train the model (create a solution) by calling the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolutionVersion.html">CreateSolutionVersion</a> operation. Every time you call <code>CreateSolutionVersion</code>, a new version of the solution is created.</p>
    /// <p>After creating a solution version, you check its accuracy by calling <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_GetSolutionMetrics.html">GetSolutionMetrics</a>. When you are satisfied with the version, you deploy it using <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateCampaign.html">CreateCampaign</a>. The campaign provides recommendations to a client through the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html">GetRecommendations</a> API.</p>
    /// <p>To train a model, Amazon Personalize requires training data and a recipe. The training data comes from the dataset group that you provide in the request. A recipe specifies the training algorithm and a feature transformation. You can specify one of the predefined recipes provided by Amazon Personalize. Alternatively, you can specify <code>performAutoML</code> and Amazon Personalize will analyze your data and select the optimum USER_PERSONALIZATION recipe for you.</p> <note>
    /// <p>Amazon Personalize doesn't support configuring the <code>hpoObjective</code> for solution hyperparameter optimization at this time.</p>
    /// </note>
    /// <p> <b>Status</b> </p>
    /// <p>A solution can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>DELETE PENDING &gt; DELETE IN_PROGRESS</p> </li>
    /// </ul>
    /// <p>To get the status of the solution, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolution.html">DescribeSolution</a>. Wait until the status shows as ACTIVE before calling <code>CreateSolutionVersion</code>.</p>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutions.html">ListSolutions</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolutionVersion.html">CreateSolutionVersion</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolution.html">DescribeSolution</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteSolution.html">DeleteSolution</a> </p> </li>
    /// </ul>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html">ListSolutionVersions</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html">DescribeSolutionVersion</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateSolution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_solution_input::Builder,
    }
    impl CreateSolution {
        /// Creates a new `CreateSolution`.
        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::CreateSolution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateSolutionError>,
        > {
            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::CreateSolutionOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateSolutionError>,
        > {
            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 solution.</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 solution.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>Whether to perform hyperparameter optimization (HPO) on the specified or selected recipe. The default is <code>false</code>.</p>
        /// <p>When performing AutoML, this parameter is always <code>true</code> and you should not set it to <code>false</code>.</p>
        pub fn perform_hpo(mut self, input: bool) -> Self {
            self.inner = self.inner.perform_hpo(input);
            self
        }
        /// <p>Whether to perform hyperparameter optimization (HPO) on the specified or selected recipe. The default is <code>false</code>.</p>
        /// <p>When performing AutoML, this parameter is always <code>true</code> and you should not set it to <code>false</code>.</p>
        pub fn set_perform_hpo(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_perform_hpo(input);
            self
        }
        /// <p>Whether to perform automated machine learning (AutoML). The default is <code>false</code>. For this case, you must specify <code>recipeArn</code>.</p>
        /// <p>When set to <code>true</code>, Amazon Personalize analyzes your training data and selects the optimal USER_PERSONALIZATION recipe and hyperparameters. In this case, you must omit <code>recipeArn</code>. Amazon Personalize determines the optimal recipe by running tests with different values for the hyperparameters. AutoML lengthens the training process as compared to selecting a specific recipe.</p>
        pub fn perform_auto_ml(mut self, input: bool) -> Self {
            self.inner = self.inner.perform_auto_ml(input);
            self
        }
        /// <p>Whether to perform automated machine learning (AutoML). The default is <code>false</code>. For this case, you must specify <code>recipeArn</code>.</p>
        /// <p>When set to <code>true</code>, Amazon Personalize analyzes your training data and selects the optimal USER_PERSONALIZATION recipe and hyperparameters. In this case, you must omit <code>recipeArn</code>. Amazon Personalize determines the optimal recipe by running tests with different values for the hyperparameters. AutoML lengthens the training process as compared to selecting a specific recipe.</p>
        pub fn set_perform_auto_ml(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_perform_auto_ml(input);
            self
        }
        /// <p>The ARN of the recipe to use for model training. Only specified when <code>performAutoML</code> is false.</p>
        pub fn recipe_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recipe_arn(input.into());
            self
        }
        /// <p>The ARN of the recipe to use for model training. Only specified when <code>performAutoML</code> is false.</p>
        pub fn set_recipe_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_recipe_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group that provides the training data.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group that provides the training data.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>When your have multiple event types (using an <code>EVENT_TYPE</code> schema field), this parameter specifies which event type (for example, 'click' or 'like') is used for training the model.</p>
        /// <p>If you do not provide an <code>eventType</code>, Amazon Personalize will use all interactions for training with equal weight regardless of type.</p>
        pub fn event_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_type(input.into());
            self
        }
        /// <p>When your have multiple event types (using an <code>EVENT_TYPE</code> schema field), this parameter specifies which event type (for example, 'click' or 'like') is used for training the model.</p>
        /// <p>If you do not provide an <code>eventType</code>, Amazon Personalize will use all interactions for training with equal weight regardless of type.</p>
        pub fn set_event_type(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_event_type(input);
            self
        }
        /// <p>The configuration to use with the solution. When <code>performAutoML</code> is set to true, Amazon Personalize only evaluates the <code>autoMLConfig</code> section of the solution configuration.</p> <note>
        /// <p>Amazon Personalize doesn't support configuring the <code>hpoObjective</code> at this time.</p>
        /// </note>
        pub fn solution_config(mut self, input: crate::model::SolutionConfig) -> Self {
            self.inner = self.inner.solution_config(input);
            self
        }
        /// <p>The configuration to use with the solution. When <code>performAutoML</code> is set to true, Amazon Personalize only evaluates the <code>autoMLConfig</code> section of the solution configuration.</p> <note>
        /// <p>Amazon Personalize doesn't support configuring the <code>hpoObjective</code> at this time.</p>
        /// </note>
        pub fn set_solution_config(
            mut self,
            input: std::option::Option<crate::model::SolutionConfig>,
        ) -> Self {
            self.inner = self.inner.set_solution_config(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the solution.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the solution.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateSolutionVersion`.
    ///
    /// <p>Trains or retrains an active solution in a Custom dataset group. A solution is created using the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a> operation and must be in the ACTIVE state before calling <code>CreateSolutionVersion</code>. A new version of the solution is created every time you call this operation.</p>
    /// <p> <b>Status</b> </p>
    /// <p>A solution version can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING</p> </li>
    /// <li> <p>CREATE IN_PROGRESS</p> </li>
    /// <li> <p>ACTIVE</p> </li>
    /// <li> <p>CREATE FAILED</p> </li>
    /// <li> <p>CREATE STOPPING</p> </li>
    /// <li> <p>CREATE STOPPED</p> </li>
    /// </ul>
    /// <p>To get the status of the version, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html">DescribeSolutionVersion</a>. Wait until the status shows as ACTIVE before calling <code>CreateCampaign</code>.</p>
    /// <p>If the status shows as CREATE FAILED, the response includes a <code>failureReason</code> key, which describes why the job failed.</p>
    /// <p class="title"> <b>Related APIs</b> </p>
    /// <ul>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html">ListSolutionVersions</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html">DescribeSolutionVersion</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutions.html">ListSolutions</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolution.html">DescribeSolution</a> </p> </li>
    /// <li> <p> <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DeleteSolution.html">DeleteSolution</a> </p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateSolutionVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_solution_version_input::Builder,
    }
    impl CreateSolutionVersion {
        /// Creates a new `CreateSolutionVersion`.
        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::CreateSolutionVersion,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateSolutionVersionError>,
        > {
            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::CreateSolutionVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateSolutionVersionError>,
        > {
            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 solution version.</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 solution version.</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 Amazon Resource Name (ARN) of the solution containing the training configuration information.</p>
        pub fn solution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution containing the training configuration information.</p>
        pub fn set_solution_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_solution_arn(input);
            self
        }
        /// <p>The scope of training to be performed when creating the solution version. The <code>FULL</code> option trains the solution version based on the entirety of the input solution's training data, while the <code>UPDATE</code> option processes only the data that has changed in comparison to the input solution. Choose <code>UPDATE</code> when you want to incrementally update your solution version instead of creating an entirely new one.</p> <important>
        /// <p>The <code>UPDATE</code> option can only be used when you already have an active solution version created from the input solution using the <code>FULL</code> option and the input solution was trained with the <a href="https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html">User-Personalization</a> recipe or the <a href="https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-hrnn-coldstart.html">HRNN-Coldstart</a> recipe.</p>
        /// </important>
        pub fn training_mode(mut self, input: crate::model::TrainingMode) -> Self {
            self.inner = self.inner.training_mode(input);
            self
        }
        /// <p>The scope of training to be performed when creating the solution version. The <code>FULL</code> option trains the solution version based on the entirety of the input solution's training data, while the <code>UPDATE</code> option processes only the data that has changed in comparison to the input solution. Choose <code>UPDATE</code> when you want to incrementally update your solution version instead of creating an entirely new one.</p> <important>
        /// <p>The <code>UPDATE</code> option can only be used when you already have an active solution version created from the input solution using the <code>FULL</code> option and the input solution was trained with the <a href="https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html">User-Personalization</a> recipe or the <a href="https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-hrnn-coldstart.html">HRNN-Coldstart</a> recipe.</p>
        /// </important>
        pub fn set_training_mode(
            mut self,
            input: std::option::Option<crate::model::TrainingMode>,
        ) -> Self {
            self.inner = self.inner.set_training_mode(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the solution version.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> to apply to the solution version.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteCampaign`.
    ///
    /// <p>Removes a campaign by deleting the solution deployment. The solution that the campaign is based on is not deleted and can be redeployed when needed. A deleted campaign can no longer be specified in a <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html">GetRecommendations</a> request. For information on creating campaigns, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateCampaign.html">CreateCampaign</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteCampaign {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_campaign_input::Builder,
    }
    impl DeleteCampaign {
        /// Creates a new `DeleteCampaign`.
        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::DeleteCampaign,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteCampaignError>,
        > {
            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::DeleteCampaignOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteCampaignError>,
        > {
            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 campaign to delete.</p>
        pub fn campaign_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.campaign_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the campaign to delete.</p>
        pub fn set_campaign_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_campaign_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteDataset`.
    ///
    /// <p>Deletes a dataset. You can't delete a dataset if an associated <code>DatasetImportJob</code> or <code>SolutionVersion</code> is in the CREATE PENDING or IN PROGRESS state. For more information on datasets, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDataset.html">CreateDataset</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteDataset {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_dataset_input::Builder,
    }
    impl DeleteDataset {
        /// Creates a new `DeleteDataset`.
        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::DeleteDataset,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteDatasetError>,
        > {
            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::DeleteDatasetOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteDatasetError>,
        > {
            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 dataset to delete.</p>
        pub fn dataset_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset to delete.</p>
        pub fn set_dataset_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_dataset_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteDatasetGroup`.
    ///
    /// <p>Deletes a dataset group. Before you delete a dataset group, you must delete the following:</p>
    /// <ul>
    /// <li> <p>All associated event trackers.</p> </li>
    /// <li> <p>All associated solutions.</p> </li>
    /// <li> <p>All datasets in the dataset group.</p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteDatasetGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_dataset_group_input::Builder,
    }
    impl DeleteDatasetGroup {
        /// Creates a new `DeleteDatasetGroup`.
        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::DeleteDatasetGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteDatasetGroupError>,
        > {
            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::DeleteDatasetGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteDatasetGroupError>,
        > {
            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 ARN of the dataset group to delete.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The ARN of the dataset group to delete.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteEventTracker`.
    ///
    /// <p>Deletes the event tracker. Does not delete the event-interactions dataset from the associated dataset group. For more information on event trackers, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateEventTracker.html">CreateEventTracker</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteEventTracker {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_event_tracker_input::Builder,
    }
    impl DeleteEventTracker {
        /// Creates a new `DeleteEventTracker`.
        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::DeleteEventTracker,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteEventTrackerError>,
        > {
            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::DeleteEventTrackerOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteEventTrackerError>,
        > {
            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 event tracker to delete.</p>
        pub fn event_tracker_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_tracker_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the event tracker to delete.</p>
        pub fn set_event_tracker_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_event_tracker_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteFilter`.
    ///
    /// <p>Deletes a filter.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteFilter {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_filter_input::Builder,
    }
    impl DeleteFilter {
        /// Creates a new `DeleteFilter`.
        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::DeleteFilter,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteFilterError>,
        > {
            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::DeleteFilterOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteFilterError>,
        > {
            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 ARN of the filter to delete.</p>
        pub fn filter_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.filter_arn(input.into());
            self
        }
        /// <p>The ARN of the filter to delete.</p>
        pub fn set_filter_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_filter_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteMetricAttribution`.
    ///
    /// <p>Deletes a metric attribution.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteMetricAttribution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_metric_attribution_input::Builder,
    }
    impl DeleteMetricAttribution {
        /// Creates a new `DeleteMetricAttribution`.
        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::DeleteMetricAttribution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteMetricAttributionError>,
        > {
            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::DeleteMetricAttributionOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteMetricAttributionError>,
        > {
            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 metric attribution's Amazon Resource Name (ARN).</p>
        pub fn metric_attribution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.metric_attribution_arn(input.into());
            self
        }
        /// <p>The metric attribution's Amazon Resource Name (ARN).</p>
        pub fn set_metric_attribution_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_metric_attribution_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteRecommender`.
    ///
    /// <p>Deactivates and removes a recommender. A deleted recommender can no longer be specified in a <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html">GetRecommendations</a> request.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteRecommender {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_recommender_input::Builder,
    }
    impl DeleteRecommender {
        /// Creates a new `DeleteRecommender`.
        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::DeleteRecommender,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteRecommenderError>,
        > {
            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::DeleteRecommenderOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteRecommenderError>,
        > {
            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 recommender to delete.</p>
        pub fn recommender_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recommender_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recommender to delete.</p>
        pub fn set_recommender_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recommender_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteSchema`.
    ///
    /// <p>Deletes a schema. Before deleting a schema, you must delete all datasets referencing the schema. For more information on schemas, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSchema.html">CreateSchema</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteSchema {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_schema_input::Builder,
    }
    impl DeleteSchema {
        /// Creates a new `DeleteSchema`.
        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::DeleteSchema,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteSchemaError>,
        > {
            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::DeleteSchemaOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteSchemaError>,
        > {
            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 schema to delete.</p>
        pub fn schema_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.schema_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the schema to delete.</p>
        pub fn set_schema_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_schema_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteSolution`.
    ///
    /// <p>Deletes all versions of a solution and the <code>Solution</code> object itself. Before deleting a solution, you must delete all campaigns based on the solution. To determine what campaigns are using the solution, call <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListCampaigns.html">ListCampaigns</a> and supply the Amazon Resource Name (ARN) of the solution. You can't delete a solution if an associated <code>SolutionVersion</code> is in the CREATE PENDING or IN PROGRESS state. For more information on solutions, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteSolution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_solution_input::Builder,
    }
    impl DeleteSolution {
        /// Creates a new `DeleteSolution`.
        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::DeleteSolution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteSolutionError>,
        > {
            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::DeleteSolutionOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteSolutionError>,
        > {
            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 ARN of the solution to delete.</p>
        pub fn solution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_arn(input.into());
            self
        }
        /// <p>The ARN of the solution to delete.</p>
        pub fn set_solution_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_solution_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeAlgorithm`.
    ///
    /// <p>Describes the given algorithm.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeAlgorithm {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_algorithm_input::Builder,
    }
    impl DescribeAlgorithm {
        /// Creates a new `DescribeAlgorithm`.
        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::DescribeAlgorithm,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeAlgorithmError>,
        > {
            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::DescribeAlgorithmOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeAlgorithmError>,
        > {
            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 algorithm to describe.</p>
        pub fn algorithm_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.algorithm_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the algorithm to describe.</p>
        pub fn set_algorithm_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_algorithm_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeBatchInferenceJob`.
    ///
    /// <p>Gets the properties of a batch inference job including name, Amazon Resource Name (ARN), status, input and output configurations, and the ARN of the solution version used to generate the recommendations.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeBatchInferenceJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_batch_inference_job_input::Builder,
    }
    impl DescribeBatchInferenceJob {
        /// Creates a new `DescribeBatchInferenceJob`.
        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::DescribeBatchInferenceJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeBatchInferenceJobError>,
        > {
            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::DescribeBatchInferenceJobOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeBatchInferenceJobError>,
        > {
            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 ARN of the batch inference job to describe.</p>
        pub fn batch_inference_job_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.batch_inference_job_arn(input.into());
            self
        }
        /// <p>The ARN of the batch inference job to describe.</p>
        pub fn set_batch_inference_job_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_batch_inference_job_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeBatchSegmentJob`.
    ///
    /// <p>Gets the properties of a batch segment job including name, Amazon Resource Name (ARN), status, input and output configurations, and the ARN of the solution version used to generate segments.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeBatchSegmentJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_batch_segment_job_input::Builder,
    }
    impl DescribeBatchSegmentJob {
        /// Creates a new `DescribeBatchSegmentJob`.
        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::DescribeBatchSegmentJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeBatchSegmentJobError>,
        > {
            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::DescribeBatchSegmentJobOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeBatchSegmentJobError>,
        > {
            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 ARN of the batch segment job to describe.</p>
        pub fn batch_segment_job_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.batch_segment_job_arn(input.into());
            self
        }
        /// <p>The ARN of the batch segment job to describe.</p>
        pub fn set_batch_segment_job_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_batch_segment_job_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeCampaign`.
    ///
    /// <p>Describes the given campaign, including its status.</p>
    /// <p>A campaign can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>DELETE PENDING &gt; DELETE IN_PROGRESS</p> </li>
    /// </ul>
    /// <p>When the <code>status</code> is <code>CREATE FAILED</code>, the response includes the <code>failureReason</code> key, which describes why.</p>
    /// <p>For more information on campaigns, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateCampaign.html">CreateCampaign</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeCampaign {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_campaign_input::Builder,
    }
    impl DescribeCampaign {
        /// Creates a new `DescribeCampaign`.
        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::DescribeCampaign,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeCampaignError>,
        > {
            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::DescribeCampaignOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeCampaignError>,
        > {
            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 campaign.</p>
        pub fn campaign_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.campaign_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the campaign.</p>
        pub fn set_campaign_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_campaign_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeDataset`.
    ///
    /// <p>Describes the given dataset. For more information on datasets, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDataset.html">CreateDataset</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeDataset {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_dataset_input::Builder,
    }
    impl DescribeDataset {
        /// Creates a new `DescribeDataset`.
        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::DescribeDataset,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetError>,
        > {
            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::DescribeDatasetOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetError>,
        > {
            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 dataset to describe.</p>
        pub fn dataset_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset to describe.</p>
        pub fn set_dataset_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_dataset_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeDatasetExportJob`.
    ///
    /// <p>Describes the dataset export job created by <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetExportJob.html">CreateDatasetExportJob</a>, including the export job status.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeDatasetExportJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_dataset_export_job_input::Builder,
    }
    impl DescribeDatasetExportJob {
        /// Creates a new `DescribeDatasetExportJob`.
        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::DescribeDatasetExportJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetExportJobError>,
        > {
            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::DescribeDatasetExportJobOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetExportJobError>,
        > {
            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 dataset export job to describe.</p>
        pub fn dataset_export_job_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_export_job_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset export job to describe.</p>
        pub fn set_dataset_export_job_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_export_job_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeDatasetGroup`.
    ///
    /// <p>Describes the given dataset group. For more information on dataset groups, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetGroup.html">CreateDatasetGroup</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeDatasetGroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_dataset_group_input::Builder,
    }
    impl DescribeDatasetGroup {
        /// Creates a new `DescribeDatasetGroup`.
        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::DescribeDatasetGroup,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetGroupError>,
        > {
            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::DescribeDatasetGroupOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetGroupError>,
        > {
            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 dataset group to describe.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group to describe.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeDatasetImportJob`.
    ///
    /// <p>Describes the dataset import job created by <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetImportJob.html">CreateDatasetImportJob</a>, including the import job status.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeDatasetImportJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_dataset_import_job_input::Builder,
    }
    impl DescribeDatasetImportJob {
        /// Creates a new `DescribeDatasetImportJob`.
        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::DescribeDatasetImportJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetImportJobError>,
        > {
            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::DescribeDatasetImportJobOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeDatasetImportJobError>,
        > {
            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 dataset import job to describe.</p>
        pub fn dataset_import_job_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_import_job_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset import job to describe.</p>
        pub fn set_dataset_import_job_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_import_job_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeEventTracker`.
    ///
    /// <p>Describes an event tracker. The response includes the <code>trackingId</code> and <code>status</code> of the event tracker. For more information on event trackers, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateEventTracker.html">CreateEventTracker</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeEventTracker {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_event_tracker_input::Builder,
    }
    impl DescribeEventTracker {
        /// Creates a new `DescribeEventTracker`.
        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::DescribeEventTracker,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeEventTrackerError>,
        > {
            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::DescribeEventTrackerOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeEventTrackerError>,
        > {
            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 event tracker to describe.</p>
        pub fn event_tracker_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.event_tracker_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the event tracker to describe.</p>
        pub fn set_event_tracker_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_event_tracker_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeFeatureTransformation`.
    ///
    /// <p>Describes the given feature transformation.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeFeatureTransformation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_feature_transformation_input::Builder,
    }
    impl DescribeFeatureTransformation {
        /// Creates a new `DescribeFeatureTransformation`.
        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::DescribeFeatureTransformation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeFeatureTransformationError>,
        > {
            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::DescribeFeatureTransformationOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeFeatureTransformationError>,
        > {
            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 feature transformation to describe.</p>
        pub fn feature_transformation_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.feature_transformation_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the feature transformation to describe.</p>
        pub fn set_feature_transformation_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_feature_transformation_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeFilter`.
    ///
    /// <p>Describes a filter's properties.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeFilter {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_filter_input::Builder,
    }
    impl DescribeFilter {
        /// Creates a new `DescribeFilter`.
        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::DescribeFilter,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeFilterError>,
        > {
            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::DescribeFilterOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeFilterError>,
        > {
            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 ARN of the filter to describe.</p>
        pub fn filter_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.filter_arn(input.into());
            self
        }
        /// <p>The ARN of the filter to describe.</p>
        pub fn set_filter_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_filter_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeMetricAttribution`.
    ///
    /// <p>Describes a metric attribution.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeMetricAttribution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_metric_attribution_input::Builder,
    }
    impl DescribeMetricAttribution {
        /// Creates a new `DescribeMetricAttribution`.
        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::DescribeMetricAttribution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeMetricAttributionError>,
        > {
            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::DescribeMetricAttributionOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeMetricAttributionError>,
        > {
            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 metric attribution's Amazon Resource Name (ARN).</p>
        pub fn metric_attribution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.metric_attribution_arn(input.into());
            self
        }
        /// <p>The metric attribution's Amazon Resource Name (ARN).</p>
        pub fn set_metric_attribution_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_metric_attribution_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeRecipe`.
    ///
    /// <p>Describes a recipe.</p>
    /// <p>A recipe contains three items:</p>
    /// <ul>
    /// <li> <p>An algorithm that trains a model.</p> </li>
    /// <li> <p>Hyperparameters that govern the training.</p> </li>
    /// <li> <p>Feature transformation information for modifying the input data before training.</p> </li>
    /// </ul>
    /// <p>Amazon Personalize provides a set of predefined recipes. You specify a recipe when you create a solution with the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a> API. <code>CreateSolution</code> trains a model by using the algorithm in the specified recipe and a training dataset. The solution, when deployed as a campaign, can provide recommendations using the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html">GetRecommendations</a> API.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeRecipe {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_recipe_input::Builder,
    }
    impl DescribeRecipe {
        /// Creates a new `DescribeRecipe`.
        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::DescribeRecipe,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeRecipeError>,
        > {
            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::DescribeRecipeOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeRecipeError>,
        > {
            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 recipe to describe.</p>
        pub fn recipe_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recipe_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recipe to describe.</p>
        pub fn set_recipe_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_recipe_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeRecommender`.
    ///
    /// <p>Describes the given recommender, including its status.</p>
    /// <p>A recommender can be in one of the following states:</p>
    /// <ul>
    /// <li> <p>CREATE PENDING &gt; CREATE IN_PROGRESS &gt; ACTIVE -or- CREATE FAILED</p> </li>
    /// <li> <p>STOP PENDING &gt; STOP IN_PROGRESS &gt; INACTIVE &gt; START PENDING &gt; START IN_PROGRESS &gt; ACTIVE</p> </li>
    /// <li> <p>DELETE PENDING &gt; DELETE IN_PROGRESS</p> </li>
    /// </ul>
    /// <p>When the <code>status</code> is <code>CREATE FAILED</code>, the response includes the <code>failureReason</code> key, which describes why.</p>
    /// <p>The <code>modelMetrics</code> key is null when the recommender is being created or deleted.</p>
    /// <p>For more information on recommenders, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateRecommender.html">CreateRecommender</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeRecommender {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_recommender_input::Builder,
    }
    impl DescribeRecommender {
        /// Creates a new `DescribeRecommender`.
        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::DescribeRecommender,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeRecommenderError>,
        > {
            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::DescribeRecommenderOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeRecommenderError>,
        > {
            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 recommender to describe.</p>
        pub fn recommender_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recommender_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recommender to describe.</p>
        pub fn set_recommender_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recommender_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeSchema`.
    ///
    /// <p>Describes a schema. For more information on schemas, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSchema.html">CreateSchema</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeSchema {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_schema_input::Builder,
    }
    impl DescribeSchema {
        /// Creates a new `DescribeSchema`.
        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::DescribeSchema,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeSchemaError>,
        > {
            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::DescribeSchemaOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeSchemaError>,
        > {
            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 schema to retrieve.</p>
        pub fn schema_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.schema_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the schema to retrieve.</p>
        pub fn set_schema_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_schema_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeSolution`.
    ///
    /// <p>Describes a solution. For more information on solutions, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeSolution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_solution_input::Builder,
    }
    impl DescribeSolution {
        /// Creates a new `DescribeSolution`.
        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::DescribeSolution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeSolutionError>,
        > {
            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::DescribeSolutionOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeSolutionError>,
        > {
            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 solution to describe.</p>
        pub fn solution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution to describe.</p>
        pub fn set_solution_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_solution_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DescribeSolutionVersion`.
    ///
    /// <p>Describes a specific version of a solution. For more information on solutions, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a> </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DescribeSolutionVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::describe_solution_version_input::Builder,
    }
    impl DescribeSolutionVersion {
        /// Creates a new `DescribeSolutionVersion`.
        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::DescribeSolutionVersion,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DescribeSolutionVersionError>,
        > {
            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::DescribeSolutionVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::DescribeSolutionVersionError>,
        > {
            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 solution version.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetSolutionMetrics`.
    ///
    /// <p>Gets the metrics for the specified solution version.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetSolutionMetrics {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_solution_metrics_input::Builder,
    }
    impl GetSolutionMetrics {
        /// Creates a new `GetSolutionMetrics`.
        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::GetSolutionMetrics,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetSolutionMetricsError>,
        > {
            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::GetSolutionMetricsOutput,
            aws_smithy_http::result::SdkError<crate::error::GetSolutionMetricsError>,
        > {
            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 solution version for which to get metrics.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version for which to get metrics.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListBatchInferenceJobs`.
    ///
    /// <p>Gets a list of the batch inference jobs that have been performed off of a solution version.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListBatchInferenceJobs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_batch_inference_jobs_input::Builder,
    }
    impl ListBatchInferenceJobs {
        /// Creates a new `ListBatchInferenceJobs`.
        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::ListBatchInferenceJobs,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListBatchInferenceJobsError>,
        > {
            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::ListBatchInferenceJobsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListBatchInferenceJobsError>,
        > {
            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::ListBatchInferenceJobsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListBatchInferenceJobsPaginator {
            crate::paginator::ListBatchInferenceJobsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version from which the batch inference jobs were created.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version from which the batch inference jobs were created.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
        /// <p>The token to request the next page 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 to request the next page 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 batch inference job results to return in each page. The default value 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 batch inference job results to return in each page. The default value 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 `ListBatchSegmentJobs`.
    ///
    /// <p>Gets a list of the batch segment jobs that have been performed off of a solution version that you specify.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListBatchSegmentJobs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_batch_segment_jobs_input::Builder,
    }
    impl ListBatchSegmentJobs {
        /// Creates a new `ListBatchSegmentJobs`.
        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::ListBatchSegmentJobs,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListBatchSegmentJobsError>,
        > {
            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::ListBatchSegmentJobsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListBatchSegmentJobsError>,
        > {
            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::ListBatchSegmentJobsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListBatchSegmentJobsPaginator {
            crate::paginator::ListBatchSegmentJobsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version that the batch segment jobs used to generate batch segments.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version that the batch segment jobs used to generate batch segments.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
        /// <p>The token to request the next page 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 to request the next page 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 batch segment job results to return in each page. The default value 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 batch segment job results to return in each page. The default value 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 `ListCampaigns`.
    ///
    /// <p>Returns a list of campaigns that use the given solution. When a solution is not specified, all the campaigns associated with the account are listed. The response provides the properties for each campaign, including the Amazon Resource Name (ARN). For more information on campaigns, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateCampaign.html">CreateCampaign</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListCampaigns {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_campaigns_input::Builder,
    }
    impl ListCampaigns {
        /// Creates a new `ListCampaigns`.
        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::ListCampaigns,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListCampaignsError>,
        > {
            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::ListCampaignsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListCampaignsError>,
        > {
            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::ListCampaignsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListCampaignsPaginator {
            crate::paginator::ListCampaignsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the solution to list the campaigns for. When a solution is not specified, all the campaigns associated with the account are listed.</p>
        pub fn solution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution to list the campaigns for. When a solution is not specified, all the campaigns associated with the account are listed.</p>
        pub fn set_solution_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_solution_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListCampaigns.html">ListCampaigns</a> for getting the next set of campaigns (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_ListCampaigns.html">ListCampaigns</a> for getting the next set of campaigns (if they exist).</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 campaigns to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of campaigns to return.</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 `ListDatasetExportJobs`.
    ///
    /// <p>Returns a list of dataset export jobs that use the given dataset. When a dataset is not specified, all the dataset export jobs associated with the account are listed. The response provides the properties for each dataset export job, including the Amazon Resource Name (ARN). For more information on dataset export jobs, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetExportJob.html">CreateDatasetExportJob</a>. For more information on datasets, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDataset.html">CreateDataset</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDatasetExportJobs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_dataset_export_jobs_input::Builder,
    }
    impl ListDatasetExportJobs {
        /// Creates a new `ListDatasetExportJobs`.
        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::ListDatasetExportJobs,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetExportJobsError>,
        > {
            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::ListDatasetExportJobsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetExportJobsError>,
        > {
            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::ListDatasetExportJobsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDatasetExportJobsPaginator {
            crate::paginator::ListDatasetExportJobsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset to list the dataset export jobs for.</p>
        pub fn dataset_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset to list the dataset export jobs for.</p>
        pub fn set_dataset_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_dataset_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListDatasetExportJobs</code> for getting the next set of dataset export jobs (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListDatasetExportJobs</code> for getting the next set of dataset export jobs (if they exist).</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 dataset export jobs to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of dataset export jobs to return.</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 `ListDatasetGroups`.
    ///
    /// <p>Returns a list of dataset groups. The response provides the properties for each dataset group, including the Amazon Resource Name (ARN). For more information on dataset groups, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetGroup.html">CreateDatasetGroup</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDatasetGroups {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_dataset_groups_input::Builder,
    }
    impl ListDatasetGroups {
        /// Creates a new `ListDatasetGroups`.
        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::ListDatasetGroups,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetGroupsError>,
        > {
            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::ListDatasetGroupsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetGroupsError>,
        > {
            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::ListDatasetGroupsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDatasetGroupsPaginator {
            crate::paginator::ListDatasetGroupsPaginator::new(self.handle, self.inner)
        }
        /// <p>A token returned from the previous call to <code>ListDatasetGroups</code> for getting the next set of dataset groups (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListDatasetGroups</code> for getting the next set of dataset groups (if they exist).</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 dataset groups to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of dataset groups to return.</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 `ListDatasetImportJobs`.
    ///
    /// <p>Returns a list of dataset import jobs that use the given dataset. When a dataset is not specified, all the dataset import jobs associated with the account are listed. The response provides the properties for each dataset import job, including the Amazon Resource Name (ARN). For more information on dataset import jobs, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDatasetImportJob.html">CreateDatasetImportJob</a>. For more information on datasets, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDataset.html">CreateDataset</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDatasetImportJobs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_dataset_import_jobs_input::Builder,
    }
    impl ListDatasetImportJobs {
        /// Creates a new `ListDatasetImportJobs`.
        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::ListDatasetImportJobs,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetImportJobsError>,
        > {
            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::ListDatasetImportJobsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetImportJobsError>,
        > {
            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::ListDatasetImportJobsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDatasetImportJobsPaginator {
            crate::paginator::ListDatasetImportJobsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset to list the dataset import jobs for.</p>
        pub fn dataset_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset to list the dataset import jobs for.</p>
        pub fn set_dataset_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_dataset_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListDatasetImportJobs</code> for getting the next set of dataset import jobs (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListDatasetImportJobs</code> for getting the next set of dataset import jobs (if they exist).</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 dataset import jobs to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of dataset import jobs to return.</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 `ListDatasets`.
    ///
    /// <p>Returns the list of datasets contained in the given dataset group. The response provides the properties for each dataset, including the Amazon Resource Name (ARN). For more information on datasets, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateDataset.html">CreateDataset</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDatasets {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_datasets_input::Builder,
    }
    impl ListDatasets {
        /// Creates a new `ListDatasets`.
        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::ListDatasets,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetsError>,
        > {
            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::ListDatasetsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDatasetsError>,
        > {
            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::ListDatasetsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDatasetsPaginator {
            crate::paginator::ListDatasetsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group that contains the datasets to list.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group that contains the datasets to list.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListDatasetImportJobs</code> for getting the next set of dataset import jobs (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListDatasetImportJobs</code> for getting the next set of dataset import jobs (if they exist).</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 datasets to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of datasets to return.</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 `ListEventTrackers`.
    ///
    /// <p>Returns the list of event trackers associated with the account. The response provides the properties for each event tracker, including the Amazon Resource Name (ARN) and tracking ID. For more information on event trackers, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateEventTracker.html">CreateEventTracker</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEventTrackers {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_event_trackers_input::Builder,
    }
    impl ListEventTrackers {
        /// Creates a new `ListEventTrackers`.
        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::ListEventTrackers,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListEventTrackersError>,
        > {
            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::ListEventTrackersOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEventTrackersError>,
        > {
            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::ListEventTrackersPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEventTrackersPaginator {
            crate::paginator::ListEventTrackersPaginator::new(self.handle, self.inner)
        }
        /// <p>The ARN of a dataset group used to filter the response.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The ARN of a dataset group used to filter the response.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListEventTrackers</code> for getting the next set of event trackers (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListEventTrackers</code> for getting the next set of event trackers (if they exist).</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 event trackers to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of event trackers to return.</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 `ListFilters`.
    ///
    /// <p>Lists all filters that belong to a given dataset group.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListFilters {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_filters_input::Builder,
    }
    impl ListFilters {
        /// Creates a new `ListFilters`.
        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::ListFilters,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListFiltersError>,
        > {
            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::ListFiltersOutput,
            aws_smithy_http::result::SdkError<crate::error::ListFiltersError>,
        > {
            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::ListFiltersPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListFiltersPaginator {
            crate::paginator::ListFiltersPaginator::new(self.handle, self.inner)
        }
        /// <p>The ARN of the dataset group that contains the filters.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The ARN of the dataset group that contains the filters.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListFilters</code> for getting the next set of filters (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListFilters</code> for getting the next set of filters (if they exist).</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 filters to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of filters to return.</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 `ListMetricAttributionMetrics`.
    ///
    /// <p>Lists the metrics for the metric attribution.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListMetricAttributionMetrics {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_metric_attribution_metrics_input::Builder,
    }
    impl ListMetricAttributionMetrics {
        /// Creates a new `ListMetricAttributionMetrics`.
        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::ListMetricAttributionMetrics,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListMetricAttributionMetricsError>,
        > {
            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::ListMetricAttributionMetricsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListMetricAttributionMetricsError>,
        > {
            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::ListMetricAttributionMetricsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListMetricAttributionMetricsPaginator {
            crate::paginator::ListMetricAttributionMetricsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the metric attribution to retrieve attributes for.</p>
        pub fn metric_attribution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.metric_attribution_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the metric attribution to retrieve attributes for.</p>
        pub fn set_metric_attribution_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_metric_attribution_arn(input);
            self
        }
        /// <p>Specify the pagination token from a previous request to retrieve the next page 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>Specify the pagination token from a previous request to retrieve the next page 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 metrics to return in one page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of metrics to return in one page of results.</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 `ListMetricAttributions`.
    ///
    /// <p>Lists metric attributions.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListMetricAttributions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_metric_attributions_input::Builder,
    }
    impl ListMetricAttributions {
        /// Creates a new `ListMetricAttributions`.
        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::ListMetricAttributions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListMetricAttributionsError>,
        > {
            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::ListMetricAttributionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListMetricAttributionsError>,
        > {
            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::ListMetricAttributionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListMetricAttributionsPaginator {
            crate::paginator::ListMetricAttributionsPaginator::new(self.handle, self.inner)
        }
        /// <p>The metric attributions' dataset group Amazon Resource Name (ARN).</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The metric attributions' dataset group Amazon Resource Name (ARN).</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>Specify the pagination token from a previous request to retrieve the next page 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>Specify the pagination token from a previous request to retrieve the next page 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 metric attributions to return in one page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of metric attributions to return in one page of results.</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 `ListRecipes`.
    ///
    /// <p>Returns a list of available recipes. The response provides the properties for each recipe, including the recipe's Amazon Resource Name (ARN).</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRecipes {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_recipes_input::Builder,
    }
    impl ListRecipes {
        /// Creates a new `ListRecipes`.
        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::ListRecipes,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListRecipesError>,
        > {
            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::ListRecipesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRecipesError>,
        > {
            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::ListRecipesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRecipesPaginator {
            crate::paginator::ListRecipesPaginator::new(self.handle, self.inner)
        }
        /// <p>The default is <code>SERVICE</code>.</p>
        pub fn recipe_provider(mut self, input: crate::model::RecipeProvider) -> Self {
            self.inner = self.inner.recipe_provider(input);
            self
        }
        /// <p>The default is <code>SERVICE</code>.</p>
        pub fn set_recipe_provider(
            mut self,
            input: std::option::Option<crate::model::RecipeProvider>,
        ) -> Self {
            self.inner = self.inner.set_recipe_provider(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListRecipes</code> for getting the next set of recipes (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListRecipes</code> for getting the next set of recipes (if they exist).</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 recipes to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of recipes to return.</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 returned recipes by domain for a Domain dataset group. Only recipes (Domain dataset group use cases) for this domain are included in the response. If you don't specify a domain, all recipes are returned. </p>
        pub fn domain(mut self, input: crate::model::Domain) -> Self {
            self.inner = self.inner.domain(input);
            self
        }
        /// <p> Filters returned recipes by domain for a Domain dataset group. Only recipes (Domain dataset group use cases) for this domain are included in the response. If you don't specify a domain, all recipes are returned. </p>
        pub fn set_domain(mut self, input: std::option::Option<crate::model::Domain>) -> Self {
            self.inner = self.inner.set_domain(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRecommenders`.
    ///
    /// <p>Returns a list of recommenders in a given Domain dataset group. When a Domain dataset group is not specified, all the recommenders associated with the account are listed. The response provides the properties for each recommender, including the Amazon Resource Name (ARN). For more information on recommenders, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateRecommender.html">CreateRecommender</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRecommenders {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_recommenders_input::Builder,
    }
    impl ListRecommenders {
        /// Creates a new `ListRecommenders`.
        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::ListRecommenders,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListRecommendersError>,
        > {
            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::ListRecommendersOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRecommendersError>,
        > {
            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::ListRecommendersPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRecommendersPaginator {
            crate::paginator::ListRecommendersPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the Domain dataset group to list the recommenders for. When a Domain dataset group is not specified, all the recommenders associated with the account are listed.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Domain dataset group to list the recommenders for. When a Domain dataset group is not specified, all the recommenders associated with the account are listed.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListRecommenders</code> for getting the next set of recommenders (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListRecommenders</code> for getting the next set of recommenders (if they exist).</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 recommenders to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of recommenders to return.</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 `ListSchemas`.
    ///
    /// <p>Returns the list of schemas associated with the account. The response provides the properties for each schema, including the Amazon Resource Name (ARN). For more information on schemas, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSchema.html">CreateSchema</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSchemas {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_schemas_input::Builder,
    }
    impl ListSchemas {
        /// Creates a new `ListSchemas`.
        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::ListSchemas,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListSchemasError>,
        > {
            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::ListSchemasOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSchemasError>,
        > {
            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::ListSchemasPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSchemasPaginator {
            crate::paginator::ListSchemasPaginator::new(self.handle, self.inner)
        }
        /// <p>A token returned from the previous call to <code>ListSchemas</code> for getting the next set of schemas (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListSchemas</code> for getting the next set of schemas (if they exist).</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 schemas to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of schemas to return.</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 `ListSolutions`.
    ///
    /// <p>Returns a list of solutions that use the given dataset group. When a dataset group is not specified, all the solutions associated with the account are listed. The response provides the properties for each solution, including the Amazon Resource Name (ARN). For more information on solutions, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateSolution.html">CreateSolution</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSolutions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_solutions_input::Builder,
    }
    impl ListSolutions {
        /// Creates a new `ListSolutions`.
        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::ListSolutions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListSolutionsError>,
        > {
            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::ListSolutionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSolutionsError>,
        > {
            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::ListSolutionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSolutionsPaginator {
            crate::paginator::ListSolutionsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group.</p>
        pub fn dataset_group_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.dataset_group_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the dataset group.</p>
        pub fn set_dataset_group_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_dataset_group_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListSolutions</code> for getting the next set of solutions (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListSolutions</code> for getting the next set of solutions (if they exist).</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 solutions to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of solutions to return.</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 `ListSolutionVersions`.
    ///
    /// <p>Returns a list of solution versions for the given solution. When a solution is not specified, all the solution versions associated with the account are listed. The response provides the properties for each solution version, including the Amazon Resource Name (ARN).</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSolutionVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_solution_versions_input::Builder,
    }
    impl ListSolutionVersions {
        /// Creates a new `ListSolutionVersions`.
        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::ListSolutionVersions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListSolutionVersionsError>,
        > {
            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::ListSolutionVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSolutionVersionsError>,
        > {
            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::ListSolutionVersionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSolutionVersionsPaginator {
            crate::paginator::ListSolutionVersionsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the solution.</p>
        pub fn solution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution.</p>
        pub fn set_solution_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_solution_arn(input);
            self
        }
        /// <p>A token returned from the previous call to <code>ListSolutionVersions</code> for getting the next set of solution versions (if they exist).</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token returned from the previous call to <code>ListSolutionVersions</code> for getting the next set of solution versions (if they exist).</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 solution versions to return.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of solution versions to return.</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>Get a list of <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> attached to a resource.</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 resource's Amazon Resource Name.</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 resource's Amazon Resource Name.</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 `StartRecommender`.
    ///
    /// <p>Starts a recommender that is INACTIVE. Starting a recommender does not create any new models, but resumes billing and automatic retraining for the recommender.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartRecommender {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_recommender_input::Builder,
    }
    impl StartRecommender {
        /// Creates a new `StartRecommender`.
        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::StartRecommender,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartRecommenderError>,
        > {
            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::StartRecommenderOutput,
            aws_smithy_http::result::SdkError<crate::error::StartRecommenderError>,
        > {
            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 recommender to start.</p>
        pub fn recommender_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recommender_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recommender to start.</p>
        pub fn set_recommender_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recommender_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StopRecommender`.
    ///
    /// <p>Stops a recommender that is ACTIVE. Stopping a recommender halts billing and automatic retraining for the recommender.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StopRecommender {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::stop_recommender_input::Builder,
    }
    impl StopRecommender {
        /// Creates a new `StopRecommender`.
        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::StopRecommender,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StopRecommenderError>,
        > {
            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::StopRecommenderOutput,
            aws_smithy_http::result::SdkError<crate::error::StopRecommenderError>,
        > {
            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 recommender to stop.</p>
        pub fn recommender_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recommender_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recommender to stop.</p>
        pub fn set_recommender_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recommender_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StopSolutionVersionCreation`.
    ///
    /// <p>Stops creating a solution version that is in a state of CREATE_PENDING or CREATE IN_PROGRESS. </p>
    /// <p>Depending on the current state of the solution version, the solution version state changes as follows:</p>
    /// <ul>
    /// <li> <p>CREATE_PENDING &gt; CREATE_STOPPED</p> <p>or</p> </li>
    /// <li> <p>CREATE_IN_PROGRESS &gt; CREATE_STOPPING &gt; CREATE_STOPPED</p> </li>
    /// </ul>
    /// <p>You are billed for all of the training completed up until you stop the solution version creation. You cannot resume creating a solution version once it has been stopped.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StopSolutionVersionCreation {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::stop_solution_version_creation_input::Builder,
    }
    impl StopSolutionVersionCreation {
        /// Creates a new `StopSolutionVersionCreation`.
        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::StopSolutionVersionCreation,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StopSolutionVersionCreationError>,
        > {
            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::StopSolutionVersionCreationOutput,
            aws_smithy_http::result::SdkError<crate::error::StopSolutionVersionCreationError>,
        > {
            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 solution version you want to stop creating.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the solution version you want to stop creating.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>Add a list of tags to a resource.</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 resource's Amazon Resource Name (ARN).</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 resource's Amazon Resource Name (ARN).</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 `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>Tags to apply to the resource. For more information see <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">Tagging Personalize resources</a>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>Tags to apply to the resource. For more information see <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">Tagging Personalize resources</a>.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UntagResource`.
    ///
    /// <p>Remove <a href="https://docs.aws.amazon.com/personalize/latest/dev/tagging-resources.html">tags</a> that are attached to a 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 resource's Amazon Resource Name (ARN).</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 resource's Amazon Resource Name (ARN).</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>Keys to remove from the resource's tags.</p>
        pub fn tag_keys(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_keys(input.into());
            self
        }
        /// <p>Keys to remove from the resource's tags.</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 `UpdateCampaign`.
    ///
    /// <p>Updates a campaign by either deploying a new solution or changing the value of the campaign's <code>minProvisionedTPS</code> parameter.</p>
    /// <p>To update a campaign, the campaign status must be ACTIVE or CREATE FAILED. Check the campaign status using the <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeCampaign.html">DescribeCampaign</a> operation.</p> <note>
    /// <p>You can still get recommendations from a campaign while an update is in progress. The campaign will use the previous solution version and campaign configuration to generate recommendations until the latest campaign update status is <code>Active</code>. </p>
    /// </note>
    /// <p>For more information on campaigns, see <a href="https://docs.aws.amazon.com/personalize/latest/dg/API_CreateCampaign.html">CreateCampaign</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateCampaign {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_campaign_input::Builder,
    }
    impl UpdateCampaign {
        /// Creates a new `UpdateCampaign`.
        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::UpdateCampaign,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateCampaignError>,
        > {
            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::UpdateCampaignOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateCampaignError>,
        > {
            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 campaign.</p>
        pub fn campaign_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.campaign_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the campaign.</p>
        pub fn set_campaign_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_campaign_arn(input);
            self
        }
        /// <p>The ARN of a new solution version to deploy.</p>
        pub fn solution_version_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.solution_version_arn(input.into());
            self
        }
        /// <p>The ARN of a new solution version to deploy.</p>
        pub fn set_solution_version_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_solution_version_arn(input);
            self
        }
        /// <p>Specifies the requested minimum provisioned transactions (recommendations) per second that Amazon Personalize will support.</p>
        pub fn min_provisioned_tps(mut self, input: i32) -> Self {
            self.inner = self.inner.min_provisioned_tps(input);
            self
        }
        /// <p>Specifies the requested minimum provisioned transactions (recommendations) per second that Amazon Personalize will support.</p>
        pub fn set_min_provisioned_tps(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_min_provisioned_tps(input);
            self
        }
        /// <p>The configuration details of a campaign.</p>
        pub fn campaign_config(mut self, input: crate::model::CampaignConfig) -> Self {
            self.inner = self.inner.campaign_config(input);
            self
        }
        /// <p>The configuration details of a campaign.</p>
        pub fn set_campaign_config(
            mut self,
            input: std::option::Option<crate::model::CampaignConfig>,
        ) -> Self {
            self.inner = self.inner.set_campaign_config(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateMetricAttribution`.
    ///
    /// <p>Updates a metric attribution.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateMetricAttribution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_metric_attribution_input::Builder,
    }
    impl UpdateMetricAttribution {
        /// Creates a new `UpdateMetricAttribution`.
        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::UpdateMetricAttribution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateMetricAttributionError>,
        > {
            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::UpdateMetricAttributionOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateMetricAttributionError>,
        > {
            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 `addMetrics`.
        ///
        /// To override the contents of this collection use [`set_add_metrics`](Self::set_add_metrics).
        ///
        /// <p>Add new metric attributes to the metric attribution.</p>
        pub fn add_metrics(mut self, input: crate::model::MetricAttribute) -> Self {
            self.inner = self.inner.add_metrics(input);
            self
        }
        /// <p>Add new metric attributes to the metric attribution.</p>
        pub fn set_add_metrics(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::MetricAttribute>>,
        ) -> Self {
            self.inner = self.inner.set_add_metrics(input);
            self
        }
        /// Appends an item to `removeMetrics`.
        ///
        /// To override the contents of this collection use [`set_remove_metrics`](Self::set_remove_metrics).
        ///
        /// <p>Remove metric attributes from the metric attribution.</p>
        pub fn remove_metrics(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.remove_metrics(input.into());
            self
        }
        /// <p>Remove metric attributes from the metric attribution.</p>
        pub fn set_remove_metrics(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_remove_metrics(input);
            self
        }
        /// <p>An output config for the metric attribution.</p>
        pub fn metrics_output_config(
            mut self,
            input: crate::model::MetricAttributionOutput,
        ) -> Self {
            self.inner = self.inner.metrics_output_config(input);
            self
        }
        /// <p>An output config for the metric attribution.</p>
        pub fn set_metrics_output_config(
            mut self,
            input: std::option::Option<crate::model::MetricAttributionOutput>,
        ) -> Self {
            self.inner = self.inner.set_metrics_output_config(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) for the metric attribution to update.</p>
        pub fn metric_attribution_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.metric_attribution_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) for the metric attribution to update.</p>
        pub fn set_metric_attribution_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_metric_attribution_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateRecommender`.
    ///
    /// <p>Updates the recommender to modify the recommender configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateRecommender {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_recommender_input::Builder,
    }
    impl UpdateRecommender {
        /// Creates a new `UpdateRecommender`.
        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::UpdateRecommender,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateRecommenderError>,
        > {
            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::UpdateRecommenderOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateRecommenderError>,
        > {
            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 recommender to modify.</p>
        pub fn recommender_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recommender_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the recommender to modify.</p>
        pub fn set_recommender_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recommender_arn(input);
            self
        }
        /// <p>The configuration details of the recommender.</p>
        pub fn recommender_config(mut self, input: crate::model::RecommenderConfig) -> Self {
            self.inner = self.inner.recommender_config(input);
            self
        }
        /// <p>The configuration details of the recommender.</p>
        pub fn set_recommender_config(
            mut self,
            input: std::option::Option<crate::model::RecommenderConfig>,
        ) -> Self {
            self.inner = self.inner.set_recommender_config(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 }),
        }
    }
}