aws-sdk-m2 0.24.0

AWS SDK for AWSMainframeModernization
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 AWSMainframeModernization
///
/// Client for invoking operations on AWSMainframeModernization. Each operation on AWSMainframeModernization 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_m2::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_m2::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_m2::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 [`CancelBatchJobExecution`](crate::client::fluent_builders::CancelBatchJobExecution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::CancelBatchJobExecution::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::CancelBatchJobExecution::set_application_id): <p>The unique identifier of the application.</p>
    ///   - [`execution_id(impl Into<String>)`](crate::client::fluent_builders::CancelBatchJobExecution::execution_id) / [`set_execution_id(Option<String>)`](crate::client::fluent_builders::CancelBatchJobExecution::set_execution_id): <p>The unique identifier of the batch job execution.</p>
    /// - On success, responds with [`CancelBatchJobExecutionOutput`](crate::output::CancelBatchJobExecutionOutput)

    /// - On failure, responds with [`SdkError<CancelBatchJobExecutionError>`](crate::error::CancelBatchJobExecutionError)
    pub fn cancel_batch_job_execution(&self) -> fluent_builders::CancelBatchJobExecution {
        fluent_builders::CancelBatchJobExecution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateApplication`](crate::client::fluent_builders::CreateApplication) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateApplication::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateApplication::set_name): <p>The unique identifier of the application.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateApplication::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateApplication::set_description): <p>The description of the application.</p>
    ///   - [`engine_type(EngineType)`](crate::client::fluent_builders::CreateApplication::engine_type) / [`set_engine_type(Option<EngineType>)`](crate::client::fluent_builders::CreateApplication::set_engine_type): <p>The type of the target platform for this application.</p>
    ///   - [`definition(Definition)`](crate::client::fluent_builders::CreateApplication::definition) / [`set_definition(Option<Definition>)`](crate::client::fluent_builders::CreateApplication::set_definition): <p>The application definition for this application. You can specify either inline JSON or an S3 bucket location.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateApplication::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateApplication::set_tags): <p>A list of tags to apply to the application.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateApplication::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateApplication::set_client_token): <p>Unique, case-sensitive identifier the service generates to ensure the idempotency of the request to create an application. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
    ///   - [`kms_key_id(impl Into<String>)`](crate::client::fluent_builders::CreateApplication::kms_key_id) / [`set_kms_key_id(Option<String>)`](crate::client::fluent_builders::CreateApplication::set_kms_key_id): <p>The identifier of a customer managed key.</p>
    /// - On success, responds with [`CreateApplicationOutput`](crate::output::CreateApplicationOutput) with field(s):
    ///   - [`application_arn(Option<String>)`](crate::output::CreateApplicationOutput::application_arn): <p>The Amazon Resource Name (ARN) of the application.</p>
    ///   - [`application_id(Option<String>)`](crate::output::CreateApplicationOutput::application_id): <p>The unique application identifier.</p>
    ///   - [`application_version(Option<i32>)`](crate::output::CreateApplicationOutput::application_version): <p>The version number of the application.</p>
    /// - On failure, responds with [`SdkError<CreateApplicationError>`](crate::error::CreateApplicationError)
    pub fn create_application(&self) -> fluent_builders::CreateApplication {
        fluent_builders::CreateApplication::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateDataSetImportTask`](crate::client::fluent_builders::CreateDataSetImportTask) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::CreateDataSetImportTask::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::CreateDataSetImportTask::set_application_id): <p>The unique identifier of the application for which you want to import data sets.</p>
    ///   - [`import_config(DataSetImportConfig)`](crate::client::fluent_builders::CreateDataSetImportTask::import_config) / [`set_import_config(Option<DataSetImportConfig>)`](crate::client::fluent_builders::CreateDataSetImportTask::set_import_config): <p>The data set import task configuration.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateDataSetImportTask::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateDataSetImportTask::set_client_token): <p> Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create a data set import. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
    /// - On success, responds with [`CreateDataSetImportTaskOutput`](crate::output::CreateDataSetImportTaskOutput) with field(s):
    ///   - [`task_id(Option<String>)`](crate::output::CreateDataSetImportTaskOutput::task_id): <p>The task identifier. This operation is asynchronous. Use this identifier with the <code>GetDataSetImportTask</code> operation to obtain the status of this task.</p>
    /// - On failure, responds with [`SdkError<CreateDataSetImportTaskError>`](crate::error::CreateDataSetImportTaskError)
    pub fn create_data_set_import_task(&self) -> fluent_builders::CreateDataSetImportTask {
        fluent_builders::CreateDataSetImportTask::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateDeployment`](crate::client::fluent_builders::CreateDeployment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`environment_id(impl Into<String>)`](crate::client::fluent_builders::CreateDeployment::environment_id) / [`set_environment_id(Option<String>)`](crate::client::fluent_builders::CreateDeployment::set_environment_id): <p>The identifier of the runtime environment where you want to deploy this application.</p>
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::CreateDeployment::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::CreateDeployment::set_application_id): <p>The application identifier.</p>
    ///   - [`application_version(i32)`](crate::client::fluent_builders::CreateDeployment::application_version) / [`set_application_version(Option<i32>)`](crate::client::fluent_builders::CreateDeployment::set_application_version): <p>The version of the application to deploy.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateDeployment::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateDeployment::set_client_token): <p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create a deployment. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
    /// - On success, responds with [`CreateDeploymentOutput`](crate::output::CreateDeploymentOutput) with field(s):
    ///   - [`deployment_id(Option<String>)`](crate::output::CreateDeploymentOutput::deployment_id): <p>The unique identifier of the deployment.</p>
    /// - On failure, responds with [`SdkError<CreateDeploymentError>`](crate::error::CreateDeploymentError)
    pub fn create_deployment(&self) -> fluent_builders::CreateDeployment {
        fluent_builders::CreateDeployment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateEnvironment`](crate::client::fluent_builders::CreateEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_name): <p>The name of the runtime environment. Must be unique within the account.</p>
    ///   - [`instance_type(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::instance_type) / [`set_instance_type(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_instance_type): <p>The type of instance for the runtime environment.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_description): <p>The description of the runtime environment.</p>
    ///   - [`engine_type(EngineType)`](crate::client::fluent_builders::CreateEnvironment::engine_type) / [`set_engine_type(Option<EngineType>)`](crate::client::fluent_builders::CreateEnvironment::set_engine_type): <p>The engine type for the runtime environment.</p>
    ///   - [`engine_version(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::engine_version) / [`set_engine_version(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_engine_version): <p>The version of the engine type for the runtime environment.</p>
    ///   - [`subnet_ids(Vec<String>)`](crate::client::fluent_builders::CreateEnvironment::subnet_ids) / [`set_subnet_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateEnvironment::set_subnet_ids): <p>The list of subnets associated with the VPC for this runtime environment.</p>
    ///   - [`security_group_ids(Vec<String>)`](crate::client::fluent_builders::CreateEnvironment::security_group_ids) / [`set_security_group_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateEnvironment::set_security_group_ids): <p>The list of security groups for the VPC associated with this runtime environment.</p>
    ///   - [`storage_configurations(Vec<StorageConfiguration>)`](crate::client::fluent_builders::CreateEnvironment::storage_configurations) / [`set_storage_configurations(Option<Vec<StorageConfiguration>>)`](crate::client::fluent_builders::CreateEnvironment::set_storage_configurations): <p>Optional. The storage configurations for this runtime environment.</p>
    ///   - [`publicly_accessible(bool)`](crate::client::fluent_builders::CreateEnvironment::publicly_accessible) / [`set_publicly_accessible(bool)`](crate::client::fluent_builders::CreateEnvironment::set_publicly_accessible): <p>Specifies whether the runtime environment is publicly accessible.</p>
    ///   - [`high_availability_config(HighAvailabilityConfig)`](crate::client::fluent_builders::CreateEnvironment::high_availability_config) / [`set_high_availability_config(Option<HighAvailabilityConfig>)`](crate::client::fluent_builders::CreateEnvironment::set_high_availability_config): <p>The details of a high availability configuration for this runtime environment.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::CreateEnvironment::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::CreateEnvironment::set_tags): <p>The tags for the runtime environment.</p>
    ///   - [`preferred_maintenance_window(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::preferred_maintenance_window) / [`set_preferred_maintenance_window(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_preferred_maintenance_window): <p>Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned.</p>
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_client_token): <p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create an environment. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
    ///   - [`kms_key_id(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::kms_key_id) / [`set_kms_key_id(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_kms_key_id): <p>The identifier of a customer managed key.</p>
    /// - On success, responds with [`CreateEnvironmentOutput`](crate::output::CreateEnvironmentOutput) with field(s):
    ///   - [`environment_id(Option<String>)`](crate::output::CreateEnvironmentOutput::environment_id): <p>The unique identifier of the runtime environment.</p>
    /// - On failure, responds with [`SdkError<CreateEnvironmentError>`](crate::error::CreateEnvironmentError)
    pub fn create_environment(&self) -> fluent_builders::CreateEnvironment {
        fluent_builders::CreateEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteApplication`](crate::client::fluent_builders::DeleteApplication) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::DeleteApplication::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::DeleteApplication::set_application_id): <p>The unique identifier of the application you want to delete.</p>
    /// - On success, responds with [`DeleteApplicationOutput`](crate::output::DeleteApplicationOutput)

    /// - On failure, responds with [`SdkError<DeleteApplicationError>`](crate::error::DeleteApplicationError)
    pub fn delete_application(&self) -> fluent_builders::DeleteApplication {
        fluent_builders::DeleteApplication::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteApplicationFromEnvironment`](crate::client::fluent_builders::DeleteApplicationFromEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::DeleteApplicationFromEnvironment::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::DeleteApplicationFromEnvironment::set_application_id): <p>The unique identifier of the application you want to delete.</p>
    ///   - [`environment_id(impl Into<String>)`](crate::client::fluent_builders::DeleteApplicationFromEnvironment::environment_id) / [`set_environment_id(Option<String>)`](crate::client::fluent_builders::DeleteApplicationFromEnvironment::set_environment_id): <p>The unique identifier of the runtime environment where the application was previously deployed.</p>
    /// - On success, responds with [`DeleteApplicationFromEnvironmentOutput`](crate::output::DeleteApplicationFromEnvironmentOutput)

    /// - On failure, responds with [`SdkError<DeleteApplicationFromEnvironmentError>`](crate::error::DeleteApplicationFromEnvironmentError)
    pub fn delete_application_from_environment(
        &self,
    ) -> fluent_builders::DeleteApplicationFromEnvironment {
        fluent_builders::DeleteApplicationFromEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteEnvironment`](crate::client::fluent_builders::DeleteEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`environment_id(impl Into<String>)`](crate::client::fluent_builders::DeleteEnvironment::environment_id) / [`set_environment_id(Option<String>)`](crate::client::fluent_builders::DeleteEnvironment::set_environment_id): <p>The unique identifier of the runtime environment you want to delete.</p>
    /// - On success, responds with [`DeleteEnvironmentOutput`](crate::output::DeleteEnvironmentOutput)

    /// - On failure, responds with [`SdkError<DeleteEnvironmentError>`](crate::error::DeleteEnvironmentError)
    pub fn delete_environment(&self) -> fluent_builders::DeleteEnvironment {
        fluent_builders::DeleteEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetApplication`](crate::client::fluent_builders::GetApplication) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::GetApplication::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::GetApplication::set_application_id): <p>The identifier of the application.</p>
    /// - On success, responds with [`GetApplicationOutput`](crate::output::GetApplicationOutput) with field(s):
    ///   - [`name(Option<String>)`](crate::output::GetApplicationOutput::name): <p>The unique identifier of the application.</p>
    ///   - [`description(Option<String>)`](crate::output::GetApplicationOutput::description): <p>The description of the application.</p>
    ///   - [`application_id(Option<String>)`](crate::output::GetApplicationOutput::application_id): <p>The identifier of the application.</p>
    ///   - [`application_arn(Option<String>)`](crate::output::GetApplicationOutput::application_arn): <p>The Amazon Resource Name (ARN) of the application.</p>
    ///   - [`status(Option<ApplicationLifecycle>)`](crate::output::GetApplicationOutput::status): <p>The status of the application.</p>
    ///   - [`latest_version(Option<ApplicationVersionSummary>)`](crate::output::GetApplicationOutput::latest_version): <p>The latest version of the application.</p>
    ///   - [`deployed_version(Option<DeployedVersionSummary>)`](crate::output::GetApplicationOutput::deployed_version): <p>The version of the application that is deployed.</p>
    ///   - [`engine_type(Option<EngineType>)`](crate::output::GetApplicationOutput::engine_type): <p>The type of the target platform for the application.</p>
    ///   - [`log_groups(Option<Vec<LogGroupSummary>>)`](crate::output::GetApplicationOutput::log_groups): <p>The list of log summaries. Each log summary includes the log type as well as the log group identifier. These are CloudWatch logs. Amazon Web Services Mainframe Modernization pushes the application log to CloudWatch under the customer's account.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::GetApplicationOutput::creation_time): <p>The timestamp when this application was created.</p>
    ///   - [`last_start_time(Option<DateTime>)`](crate::output::GetApplicationOutput::last_start_time): <p>The timestamp when you last started the application. Null until the application runs for the first time.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::GetApplicationOutput::tags): <p>A list of tags associated with the application.</p>
    ///   - [`environment_id(Option<String>)`](crate::output::GetApplicationOutput::environment_id): <p>The identifier of the runtime environment where you want to deploy the application.</p>
    ///   - [`target_group_arns(Option<Vec<String>>)`](crate::output::GetApplicationOutput::target_group_arns): <p>Returns the Amazon Resource Names (ARNs) of the target groups that are attached to the network load balancer.</p>
    ///   - [`listener_arns(Option<Vec<String>>)`](crate::output::GetApplicationOutput::listener_arns): <p>The Amazon Resource Name (ARN) for the network load balancer listener created in your Amazon Web Services account. Amazon Web Services Mainframe Modernization creates this listener for you the first time you deploy an application.</p>
    ///   - [`listener_ports(Option<Vec<i32>>)`](crate::output::GetApplicationOutput::listener_ports): <p>The port associated with the network load balancer listener created in your Amazon Web Services account.</p>
    ///   - [`load_balancer_dns_name(Option<String>)`](crate::output::GetApplicationOutput::load_balancer_dns_name): <p>The public DNS name of the load balancer created in your Amazon Web Services account.</p>
    ///   - [`status_reason(Option<String>)`](crate::output::GetApplicationOutput::status_reason): <p>The reason for the reported status.</p>
    ///   - [`kms_key_id(Option<String>)`](crate::output::GetApplicationOutput::kms_key_id): <p>The identifier of a customer managed key.</p>
    /// - On failure, responds with [`SdkError<GetApplicationError>`](crate::error::GetApplicationError)
    pub fn get_application(&self) -> fluent_builders::GetApplication {
        fluent_builders::GetApplication::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetApplicationVersion`](crate::client::fluent_builders::GetApplicationVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::GetApplicationVersion::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::GetApplicationVersion::set_application_id): <p>The unique identifier of the application.</p>
    ///   - [`application_version(i32)`](crate::client::fluent_builders::GetApplicationVersion::application_version) / [`set_application_version(Option<i32>)`](crate::client::fluent_builders::GetApplicationVersion::set_application_version): <p>The specific version of the application.</p>
    /// - On success, responds with [`GetApplicationVersionOutput`](crate::output::GetApplicationVersionOutput) with field(s):
    ///   - [`name(Option<String>)`](crate::output::GetApplicationVersionOutput::name): <p>The name of the application version.</p>
    ///   - [`application_version(Option<i32>)`](crate::output::GetApplicationVersionOutput::application_version): <p>The specific version of the application.</p>
    ///   - [`description(Option<String>)`](crate::output::GetApplicationVersionOutput::description): <p>The application description.</p>
    ///   - [`definition_content(Option<String>)`](crate::output::GetApplicationVersionOutput::definition_content): <p>The content of the application definition. This is a JSON object that contains the resource configuration and definitions that identify an application.</p>
    ///   - [`status(Option<ApplicationVersionLifecycle>)`](crate::output::GetApplicationVersionOutput::status): <p>The status of the application version.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::GetApplicationVersionOutput::creation_time): <p>The timestamp when the application version was created.</p>
    ///   - [`status_reason(Option<String>)`](crate::output::GetApplicationVersionOutput::status_reason): <p>The reason for the reported status.</p>
    /// - On failure, responds with [`SdkError<GetApplicationVersionError>`](crate::error::GetApplicationVersionError)
    pub fn get_application_version(&self) -> fluent_builders::GetApplicationVersion {
        fluent_builders::GetApplicationVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetBatchJobExecution`](crate::client::fluent_builders::GetBatchJobExecution) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::GetBatchJobExecution::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::GetBatchJobExecution::set_application_id): <p>The identifier of the application.</p>
    ///   - [`execution_id(impl Into<String>)`](crate::client::fluent_builders::GetBatchJobExecution::execution_id) / [`set_execution_id(Option<String>)`](crate::client::fluent_builders::GetBatchJobExecution::set_execution_id): <p>The unique identifier of the batch job execution.</p>
    /// - On success, responds with [`GetBatchJobExecutionOutput`](crate::output::GetBatchJobExecutionOutput) with field(s):
    ///   - [`execution_id(Option<String>)`](crate::output::GetBatchJobExecutionOutput::execution_id): <p>The unique identifier for this batch job execution.</p>
    ///   - [`application_id(Option<String>)`](crate::output::GetBatchJobExecutionOutput::application_id): <p>The identifier of the application.</p>
    ///   - [`job_id(Option<String>)`](crate::output::GetBatchJobExecutionOutput::job_id): <p>The unique identifier for this batch job.</p>
    ///   - [`job_name(Option<String>)`](crate::output::GetBatchJobExecutionOutput::job_name): <p>The name of this batch job.</p>
    ///   - [`job_user(Option<String>)`](crate::output::GetBatchJobExecutionOutput::job_user): <p>The user for the job.</p>
    ///   - [`job_type(Option<BatchJobType>)`](crate::output::GetBatchJobExecutionOutput::job_type): <p>The type of job.</p>
    ///   - [`status(Option<BatchJobExecutionStatus>)`](crate::output::GetBatchJobExecutionOutput::status): <p>The status of the batch job execution.</p>
    ///   - [`start_time(Option<DateTime>)`](crate::output::GetBatchJobExecutionOutput::start_time): <p>The timestamp when the batch job execution started.</p>
    ///   - [`end_time(Option<DateTime>)`](crate::output::GetBatchJobExecutionOutput::end_time): <p>The timestamp when the batch job execution ended.</p>
    ///   - [`status_reason(Option<String>)`](crate::output::GetBatchJobExecutionOutput::status_reason): <p>The reason for the reported status.</p>
    /// - On failure, responds with [`SdkError<GetBatchJobExecutionError>`](crate::error::GetBatchJobExecutionError)
    pub fn get_batch_job_execution(&self) -> fluent_builders::GetBatchJobExecution {
        fluent_builders::GetBatchJobExecution::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetDataSetDetails`](crate::client::fluent_builders::GetDataSetDetails) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::GetDataSetDetails::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::GetDataSetDetails::set_application_id): <p>The unique identifier of the application that this data set is associated with.</p>
    ///   - [`data_set_name(impl Into<String>)`](crate::client::fluent_builders::GetDataSetDetails::data_set_name) / [`set_data_set_name(Option<String>)`](crate::client::fluent_builders::GetDataSetDetails::set_data_set_name): <p>The name of the data set.</p>
    /// - On success, responds with [`GetDataSetDetailsOutput`](crate::output::GetDataSetDetailsOutput) with field(s):
    ///   - [`data_set_name(Option<String>)`](crate::output::GetDataSetDetailsOutput::data_set_name): <p>The name of the data set.</p>
    ///   - [`data_set_org(Option<DatasetDetailOrgAttributes>)`](crate::output::GetDataSetDetailsOutput::data_set_org): <p>The type of data set. The only supported value is VSAM.</p>
    ///   - [`record_length(Option<i32>)`](crate::output::GetDataSetDetailsOutput::record_length): <p>The length of records in the data set.</p>
    ///   - [`location(Option<String>)`](crate::output::GetDataSetDetailsOutput::location): <p>The location where the data set is stored.</p>
    ///   - [`blocksize(Option<i32>)`](crate::output::GetDataSetDetailsOutput::blocksize): <p>The size of the block on disk. </p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::GetDataSetDetailsOutput::creation_time): <p>The timestamp when the data set was created.</p>
    ///   - [`last_updated_time(Option<DateTime>)`](crate::output::GetDataSetDetailsOutput::last_updated_time): <p>The last time the data set was updated.</p>
    ///   - [`last_referenced_time(Option<DateTime>)`](crate::output::GetDataSetDetailsOutput::last_referenced_time): <p>The last time the data set was referenced.</p>
    /// - On failure, responds with [`SdkError<GetDataSetDetailsError>`](crate::error::GetDataSetDetailsError)
    pub fn get_data_set_details(&self) -> fluent_builders::GetDataSetDetails {
        fluent_builders::GetDataSetDetails::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetDataSetImportTask`](crate::client::fluent_builders::GetDataSetImportTask) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::GetDataSetImportTask::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::GetDataSetImportTask::set_application_id): <p>The application identifier.</p>
    ///   - [`task_id(impl Into<String>)`](crate::client::fluent_builders::GetDataSetImportTask::task_id) / [`set_task_id(Option<String>)`](crate::client::fluent_builders::GetDataSetImportTask::set_task_id): <p>The task identifier returned by the <code>CreateDataSetImportTask</code> operation. </p>
    /// - On success, responds with [`GetDataSetImportTaskOutput`](crate::output::GetDataSetImportTaskOutput) with field(s):
    ///   - [`task_id(Option<String>)`](crate::output::GetDataSetImportTaskOutput::task_id): <p>The task identifier.</p>
    ///   - [`status(Option<DataSetTaskLifecycle>)`](crate::output::GetDataSetImportTaskOutput::status): <p>The status of the task.</p>
    ///   - [`summary(Option<DataSetImportSummary>)`](crate::output::GetDataSetImportTaskOutput::summary): <p>A summary of the status of the task.</p>
    /// - On failure, responds with [`SdkError<GetDataSetImportTaskError>`](crate::error::GetDataSetImportTaskError)
    pub fn get_data_set_import_task(&self) -> fluent_builders::GetDataSetImportTask {
        fluent_builders::GetDataSetImportTask::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetDeployment`](crate::client::fluent_builders::GetDeployment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`deployment_id(impl Into<String>)`](crate::client::fluent_builders::GetDeployment::deployment_id) / [`set_deployment_id(Option<String>)`](crate::client::fluent_builders::GetDeployment::set_deployment_id): <p>The unique identifier for the deployment.</p>
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::GetDeployment::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::GetDeployment::set_application_id): <p>The unique identifier of the application.</p>
    /// - On success, responds with [`GetDeploymentOutput`](crate::output::GetDeploymentOutput) with field(s):
    ///   - [`deployment_id(Option<String>)`](crate::output::GetDeploymentOutput::deployment_id): <p>The unique identifier of the deployment.</p>
    ///   - [`application_id(Option<String>)`](crate::output::GetDeploymentOutput::application_id): <p>The unique identifier of the application.</p>
    ///   - [`environment_id(Option<String>)`](crate::output::GetDeploymentOutput::environment_id): <p>The unique identifier of the runtime environment.</p>
    ///   - [`application_version(Option<i32>)`](crate::output::GetDeploymentOutput::application_version): <p>The application version.</p>
    ///   - [`status(Option<DeploymentLifecycle>)`](crate::output::GetDeploymentOutput::status): <p>The status of the deployment.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::GetDeploymentOutput::creation_time): <p>The timestamp when the deployment was created.</p>
    ///   - [`status_reason(Option<String>)`](crate::output::GetDeploymentOutput::status_reason): <p>The reason for the reported status.</p>
    /// - On failure, responds with [`SdkError<GetDeploymentError>`](crate::error::GetDeploymentError)
    pub fn get_deployment(&self) -> fluent_builders::GetDeployment {
        fluent_builders::GetDeployment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetEnvironment`](crate::client::fluent_builders::GetEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`environment_id(impl Into<String>)`](crate::client::fluent_builders::GetEnvironment::environment_id) / [`set_environment_id(Option<String>)`](crate::client::fluent_builders::GetEnvironment::set_environment_id): <p>The unique identifier of the runtime environment.</p>
    /// - On success, responds with [`GetEnvironmentOutput`](crate::output::GetEnvironmentOutput) with field(s):
    ///   - [`name(Option<String>)`](crate::output::GetEnvironmentOutput::name): <p>The name of the runtime environment. Must be unique within the account.</p>
    ///   - [`description(Option<String>)`](crate::output::GetEnvironmentOutput::description): <p>The description of the runtime environment.</p>
    ///   - [`environment_arn(Option<String>)`](crate::output::GetEnvironmentOutput::environment_arn): <p>The Amazon Resource Name (ARN) of the runtime environment.</p>
    ///   - [`environment_id(Option<String>)`](crate::output::GetEnvironmentOutput::environment_id): <p>The unique identifier of the runtime environment.</p>
    ///   - [`instance_type(Option<String>)`](crate::output::GetEnvironmentOutput::instance_type): <p>The type of instance underlying the runtime environment.</p>
    ///   - [`status(Option<EnvironmentLifecycle>)`](crate::output::GetEnvironmentOutput::status): <p>The status of the runtime environment.</p>
    ///   - [`engine_type(Option<EngineType>)`](crate::output::GetEnvironmentOutput::engine_type): <p>The target platform for the runtime environment.</p>
    ///   - [`engine_version(Option<String>)`](crate::output::GetEnvironmentOutput::engine_version): <p>The version of the runtime engine.</p>
    ///   - [`vpc_id(Option<String>)`](crate::output::GetEnvironmentOutput::vpc_id): <p>The unique identifier for the VPC used with this runtime environment.</p>
    ///   - [`subnet_ids(Option<Vec<String>>)`](crate::output::GetEnvironmentOutput::subnet_ids): <p>The unique identifiers of the subnets assigned to this runtime environment.</p>
    ///   - [`security_group_ids(Option<Vec<String>>)`](crate::output::GetEnvironmentOutput::security_group_ids): <p>The unique identifiers of the security groups assigned to this runtime environment.</p>
    ///   - [`creation_time(Option<DateTime>)`](crate::output::GetEnvironmentOutput::creation_time): <p>The timestamp when the runtime environment was created.</p>
    ///   - [`storage_configurations(Option<Vec<StorageConfiguration>>)`](crate::output::GetEnvironmentOutput::storage_configurations): <p>The storage configurations defined for the runtime environment.</p>
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::GetEnvironmentOutput::tags): <p>The tags defined for this runtime environment.</p>
    ///   - [`high_availability_config(Option<HighAvailabilityConfig>)`](crate::output::GetEnvironmentOutput::high_availability_config): <p>The desired capacity of the high availability configuration for the runtime environment.</p>
    ///   - [`publicly_accessible(bool)`](crate::output::GetEnvironmentOutput::publicly_accessible): <p>Whether applications running in this runtime environment are publicly accessible. </p>
    ///   - [`actual_capacity(Option<i32>)`](crate::output::GetEnvironmentOutput::actual_capacity): <p>The number of instances included in the runtime environment. A standalone runtime environment has a maxiumum of one instance. Currently, a high availability runtime environment has a maximum of two instances. </p>
    ///   - [`load_balancer_arn(Option<String>)`](crate::output::GetEnvironmentOutput::load_balancer_arn): <p>The Amazon Resource Name (ARN) for the load balancer used with the runtime environment.</p>
    ///   - [`status_reason(Option<String>)`](crate::output::GetEnvironmentOutput::status_reason): <p>The reason for the reported status.</p>
    ///   - [`preferred_maintenance_window(Option<String>)`](crate::output::GetEnvironmentOutput::preferred_maintenance_window): <p>Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned.</p>
    ///   - [`pending_maintenance(Option<PendingMaintenance>)`](crate::output::GetEnvironmentOutput::pending_maintenance): <p>Indicates the pending maintenance scheduled on this environment.</p>
    ///   - [`kms_key_id(Option<String>)`](crate::output::GetEnvironmentOutput::kms_key_id): <p>The identifier of a customer managed key.</p>
    /// - On failure, responds with [`SdkError<GetEnvironmentError>`](crate::error::GetEnvironmentError)
    pub fn get_environment(&self) -> fluent_builders::GetEnvironment {
        fluent_builders::GetEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListApplications`](crate::client::fluent_builders::ListApplications) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListApplications::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListApplications::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListApplications::set_next_token): <p>A pagination token to control the number of applications displayed in the list.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListApplications::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListApplications::set_max_results): <p>The maximum number of applications to return.</p>
    ///   - [`names(Vec<String>)`](crate::client::fluent_builders::ListApplications::names) / [`set_names(Option<Vec<String>>)`](crate::client::fluent_builders::ListApplications::set_names): <p>The names of the applications.</p>
    ///   - [`environment_id(impl Into<String>)`](crate::client::fluent_builders::ListApplications::environment_id) / [`set_environment_id(Option<String>)`](crate::client::fluent_builders::ListApplications::set_environment_id): <p>The unique identifier of the runtime environment where the applications are deployed.</p>
    /// - On success, responds with [`ListApplicationsOutput`](crate::output::ListApplicationsOutput) with field(s):
    ///   - [`applications(Option<Vec<ApplicationSummary>>)`](crate::output::ListApplicationsOutput::applications): <p>Returns a list of summary details for all the applications in a runtime environment.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListApplicationsOutput::next_token): <p>A pagination token that's returned when the response doesn't contain all applications.</p>
    /// - On failure, responds with [`SdkError<ListApplicationsError>`](crate::error::ListApplicationsError)
    pub fn list_applications(&self) -> fluent_builders::ListApplications {
        fluent_builders::ListApplications::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListApplicationVersions`](crate::client::fluent_builders::ListApplicationVersions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListApplicationVersions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListApplicationVersions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListApplicationVersions::set_next_token): <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListApplicationVersions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListApplicationVersions::set_max_results): <p>The maximum number of application versions to return.</p>
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::ListApplicationVersions::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::ListApplicationVersions::set_application_id): <p>The unique identifier of the application.</p>
    /// - On success, responds with [`ListApplicationVersionsOutput`](crate::output::ListApplicationVersionsOutput) with field(s):
    ///   - [`application_versions(Option<Vec<ApplicationVersionSummary>>)`](crate::output::ListApplicationVersionsOutput::application_versions): <p>The list of application versions.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListApplicationVersionsOutput::next_token): <p>If there are more items to return, this contains a token that is passed to a subsequent call to this operation to retrieve the next set of items.</p>
    /// - On failure, responds with [`SdkError<ListApplicationVersionsError>`](crate::error::ListApplicationVersionsError)
    pub fn list_application_versions(&self) -> fluent_builders::ListApplicationVersions {
        fluent_builders::ListApplicationVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListBatchJobDefinitions`](crate::client::fluent_builders::ListBatchJobDefinitions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListBatchJobDefinitions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListBatchJobDefinitions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListBatchJobDefinitions::set_next_token): <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListBatchJobDefinitions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListBatchJobDefinitions::set_max_results): <p>The maximum number of batch job definitions to return.</p>
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::ListBatchJobDefinitions::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::ListBatchJobDefinitions::set_application_id): <p>The identifier of the application.</p>
    ///   - [`prefix(impl Into<String>)`](crate::client::fluent_builders::ListBatchJobDefinitions::prefix) / [`set_prefix(Option<String>)`](crate::client::fluent_builders::ListBatchJobDefinitions::set_prefix): <p>If the batch job definition is a FileBatchJobDefinition, the prefix allows you to search on the file names of FileBatchJobDefinitions.</p>
    /// - On success, responds with [`ListBatchJobDefinitionsOutput`](crate::output::ListBatchJobDefinitionsOutput) with field(s):
    ///   - [`batch_job_definitions(Option<Vec<BatchJobDefinition>>)`](crate::output::ListBatchJobDefinitionsOutput::batch_job_definitions): <p>The list of batch job definitions.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListBatchJobDefinitionsOutput::next_token): <p>If there are more items to return, this contains a token that is passed to a subsequent call to this operation to retrieve the next set of items.</p>
    /// - On failure, responds with [`SdkError<ListBatchJobDefinitionsError>`](crate::error::ListBatchJobDefinitionsError)
    pub fn list_batch_job_definitions(&self) -> fluent_builders::ListBatchJobDefinitions {
        fluent_builders::ListBatchJobDefinitions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListBatchJobExecutions`](crate::client::fluent_builders::ListBatchJobExecutions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListBatchJobExecutions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListBatchJobExecutions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_next_token): <p>A pagination token to control the number of batch job executions displayed in the list.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListBatchJobExecutions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_max_results): <p>The maximum number of batch job executions to return.</p>
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::ListBatchJobExecutions::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_application_id): <p>The unique identifier of the application.</p>
    ///   - [`execution_ids(Vec<String>)`](crate::client::fluent_builders::ListBatchJobExecutions::execution_ids) / [`set_execution_ids(Option<Vec<String>>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_execution_ids): <p>The unique identifier of each batch job execution.</p>
    ///   - [`job_name(impl Into<String>)`](crate::client::fluent_builders::ListBatchJobExecutions::job_name) / [`set_job_name(Option<String>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_job_name): <p>The name of each batch job execution.</p>
    ///   - [`status(BatchJobExecutionStatus)`](crate::client::fluent_builders::ListBatchJobExecutions::status) / [`set_status(Option<BatchJobExecutionStatus>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_status): <p>The status of the batch job executions.</p>
    ///   - [`started_after(DateTime)`](crate::client::fluent_builders::ListBatchJobExecutions::started_after) / [`set_started_after(Option<DateTime>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_started_after): <p>The time after which the batch job executions started.</p>
    ///   - [`started_before(DateTime)`](crate::client::fluent_builders::ListBatchJobExecutions::started_before) / [`set_started_before(Option<DateTime>)`](crate::client::fluent_builders::ListBatchJobExecutions::set_started_before): <p>The time before the batch job executions started.</p>
    /// - On success, responds with [`ListBatchJobExecutionsOutput`](crate::output::ListBatchJobExecutionsOutput) with field(s):
    ///   - [`batch_job_executions(Option<Vec<BatchJobExecutionSummary>>)`](crate::output::ListBatchJobExecutionsOutput::batch_job_executions): <p>Returns a list of batch job executions for an application.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListBatchJobExecutionsOutput::next_token): <p>A pagination token that's returned when the response doesn't contain all batch job executions.</p>
    /// - On failure, responds with [`SdkError<ListBatchJobExecutionsError>`](crate::error::ListBatchJobExecutionsError)
    pub fn list_batch_job_executions(&self) -> fluent_builders::ListBatchJobExecutions {
        fluent_builders::ListBatchJobExecutions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDataSetImportHistory`](crate::client::fluent_builders::ListDataSetImportHistory) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDataSetImportHistory::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDataSetImportHistory::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDataSetImportHistory::set_next_token): <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDataSetImportHistory::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListDataSetImportHistory::set_max_results): <p>The maximum number of objects to return.</p>
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::ListDataSetImportHistory::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::ListDataSetImportHistory::set_application_id): <p>The unique identifier of the application.</p>
    /// - On success, responds with [`ListDataSetImportHistoryOutput`](crate::output::ListDataSetImportHistoryOutput) with field(s):
    ///   - [`data_set_import_tasks(Option<Vec<DataSetImportTask>>)`](crate::output::ListDataSetImportHistoryOutput::data_set_import_tasks): <p>The data set import tasks.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDataSetImportHistoryOutput::next_token): <p>If there are more items to return, this contains a token that is passed to a subsequent call to this operation to retrieve the next set of items.</p>
    /// - On failure, responds with [`SdkError<ListDataSetImportHistoryError>`](crate::error::ListDataSetImportHistoryError)
    pub fn list_data_set_import_history(&self) -> fluent_builders::ListDataSetImportHistory {
        fluent_builders::ListDataSetImportHistory::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:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::ListDataSets::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::ListDataSets::set_application_id): <p>The unique identifier of the application for which you want to list the associated data sets.</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 pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 objects to return.</p>
    ///   - [`prefix(impl Into<String>)`](crate::client::fluent_builders::ListDataSets::prefix) / [`set_prefix(Option<String>)`](crate::client::fluent_builders::ListDataSets::set_prefix): <p>The prefix of the data set name, which you can use to filter the list of data sets.</p>
    /// - On success, responds with [`ListDataSetsOutput`](crate::output::ListDataSetsOutput) with field(s):
    ///   - [`data_sets(Option<Vec<DataSetSummary>>)`](crate::output::ListDataSetsOutput::data_sets): <p>The list of data sets, containing information including the creation time, the data set name, the data set organization, the data set format, and the last time the data set was referenced or updated.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDataSetsOutput::next_token): <p>If there are more items to return, this contains a token that is passed to a subsequent call to this operation to retrieve the next set of items.</p>
    /// - On failure, responds with [`SdkError<ListDataSetsError>`](crate::error::ListDataSetsError)
    pub fn list_data_sets(&self) -> fluent_builders::ListDataSets {
        fluent_builders::ListDataSets::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListDeployments`](crate::client::fluent_builders::ListDeployments) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListDeployments::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListDeployments::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListDeployments::set_next_token): <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListDeployments::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListDeployments::set_max_results): <p>The maximum number of objects to return.</p>
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::ListDeployments::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::ListDeployments::set_application_id): <p>The application identifier.</p>
    /// - On success, responds with [`ListDeploymentsOutput`](crate::output::ListDeploymentsOutput) with field(s):
    ///   - [`deployments(Option<Vec<DeploymentSummary>>)`](crate::output::ListDeploymentsOutput::deployments): <p>The list of deployments that is returned.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListDeploymentsOutput::next_token): <p>If there are more items to return, this contains a token that is passed to a subsequent call to this operation to retrieve the next set of items.</p>
    /// - On failure, responds with [`SdkError<ListDeploymentsError>`](crate::error::ListDeploymentsError)
    pub fn list_deployments(&self) -> fluent_builders::ListDeployments {
        fluent_builders::ListDeployments::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEngineVersions`](crate::client::fluent_builders::ListEngineVersions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEngineVersions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`engine_type(EngineType)`](crate::client::fluent_builders::ListEngineVersions::engine_type) / [`set_engine_type(Option<EngineType>)`](crate::client::fluent_builders::ListEngineVersions::set_engine_type): <p>The type of target platform.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEngineVersions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEngineVersions::set_next_token): <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEngineVersions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEngineVersions::set_max_results): <p>The maximum number of objects to return.</p>
    /// - On success, responds with [`ListEngineVersionsOutput`](crate::output::ListEngineVersionsOutput) with field(s):
    ///   - [`engine_versions(Option<Vec<EngineVersionsSummary>>)`](crate::output::ListEngineVersionsOutput::engine_versions): <p>Returns the engine versions.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListEngineVersionsOutput::next_token): <p>If there are more items to return, this contains a token that is passed to a subsequent call to this operation to retrieve the next set of items.</p>
    /// - On failure, responds with [`SdkError<ListEngineVersionsError>`](crate::error::ListEngineVersionsError)
    pub fn list_engine_versions(&self) -> fluent_builders::ListEngineVersions {
        fluent_builders::ListEngineVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEnvironments`](crate::client::fluent_builders::ListEnvironments) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEnvironments::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEnvironments::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEnvironments::set_next_token): <p>A pagination token to control the number of runtime environments displayed in the list.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEnvironments::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEnvironments::set_max_results): <p>The maximum number of runtime environments to return.</p>
    ///   - [`names(Vec<String>)`](crate::client::fluent_builders::ListEnvironments::names) / [`set_names(Option<Vec<String>>)`](crate::client::fluent_builders::ListEnvironments::set_names): <p>The names of the runtime environments. Must be unique within the account.</p>
    ///   - [`engine_type(EngineType)`](crate::client::fluent_builders::ListEnvironments::engine_type) / [`set_engine_type(Option<EngineType>)`](crate::client::fluent_builders::ListEnvironments::set_engine_type): <p>The engine type for the runtime environment.</p>
    /// - On success, responds with [`ListEnvironmentsOutput`](crate::output::ListEnvironmentsOutput) with field(s):
    ///   - [`environments(Option<Vec<EnvironmentSummary>>)`](crate::output::ListEnvironmentsOutput::environments): <p>Returns a list of summary details for all the runtime environments in your account. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListEnvironmentsOutput::next_token): <p>A pagination token that's returned when the response doesn't contain all the runtime environments.</p>
    /// - On failure, responds with [`SdkError<ListEnvironmentsError>`](crate::error::ListEnvironmentsError)
    pub fn list_environments(&self) -> fluent_builders::ListEnvironments {
        fluent_builders::ListEnvironments::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTagsForResource`](crate::client::fluent_builders::ListTagsForResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::ListTagsForResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::ListTagsForResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<HashMap<String, String>>)`](crate::output::ListTagsForResourceOutput::tags): <p>The tags for the resource.</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 [`StartApplication`](crate::client::fluent_builders::StartApplication) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::StartApplication::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::StartApplication::set_application_id): <p>The unique identifier of the application you want to start.</p>
    /// - On success, responds with [`StartApplicationOutput`](crate::output::StartApplicationOutput)

    /// - On failure, responds with [`SdkError<StartApplicationError>`](crate::error::StartApplicationError)
    pub fn start_application(&self) -> fluent_builders::StartApplication {
        fluent_builders::StartApplication::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StartBatchJob`](crate::client::fluent_builders::StartBatchJob) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::StartBatchJob::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::StartBatchJob::set_application_id): <p>The unique identifier of the application associated with this batch job.</p>
    ///   - [`batch_job_identifier(BatchJobIdentifier)`](crate::client::fluent_builders::StartBatchJob::batch_job_identifier) / [`set_batch_job_identifier(Option<BatchJobIdentifier>)`](crate::client::fluent_builders::StartBatchJob::set_batch_job_identifier): <p>The unique identifier of the batch job.</p>
    ///   - [`job_params(HashMap<String, String>)`](crate::client::fluent_builders::StartBatchJob::job_params) / [`set_job_params(Option<HashMap<String, String>>)`](crate::client::fluent_builders::StartBatchJob::set_job_params): <p>The collection of batch job parameters. For details about limits for keys and values, see <a href="https://www.ibm.com/docs/en/workload-automation/9.3.0?topic=zos-coding-variables-in-jcl">Coding variables in JCL</a>.</p>
    /// - On success, responds with [`StartBatchJobOutput`](crate::output::StartBatchJobOutput) with field(s):
    ///   - [`execution_id(Option<String>)`](crate::output::StartBatchJobOutput::execution_id): <p>The unique identifier of this execution of the batch job.</p>
    /// - On failure, responds with [`SdkError<StartBatchJobError>`](crate::error::StartBatchJobError)
    pub fn start_batch_job(&self) -> fluent_builders::StartBatchJob {
        fluent_builders::StartBatchJob::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`StopApplication`](crate::client::fluent_builders::StopApplication) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::StopApplication::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::StopApplication::set_application_id): <p>The unique identifier of the application you want to stop.</p>
    ///   - [`force_stop(bool)`](crate::client::fluent_builders::StopApplication::force_stop) / [`set_force_stop(bool)`](crate::client::fluent_builders::StopApplication::set_force_stop): <p>Stopping an application process can take a long time. Setting this parameter to true lets you force stop the application so you don't need to wait until the process finishes to apply another action on the application. The default value is false.</p>
    /// - On success, responds with [`StopApplicationOutput`](crate::output::StopApplicationOutput)

    /// - On failure, responds with [`SdkError<StopApplicationError>`](crate::error::StopApplicationError)
    pub fn stop_application(&self) -> fluent_builders::StopApplication {
        fluent_builders::StopApplication::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`TagResource`](crate::client::fluent_builders::TagResource) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::TagResource::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::TagResource::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource.</p>
    ///   - [`tags(HashMap<String, String>)`](crate::client::fluent_builders::TagResource::tags) / [`set_tags(Option<HashMap<String, String>>)`](crate::client::fluent_builders::TagResource::set_tags): <p>The tags to add to the resource.</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 Amazon Resource Name (ARN) of the resource.</p>
    ///   - [`tag_keys(Vec<String>)`](crate::client::fluent_builders::UntagResource::tag_keys) / [`set_tag_keys(Option<Vec<String>>)`](crate::client::fluent_builders::UntagResource::set_tag_keys): <p>The keys of the tags to remove.</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 [`UpdateApplication`](crate::client::fluent_builders::UpdateApplication) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`application_id(impl Into<String>)`](crate::client::fluent_builders::UpdateApplication::application_id) / [`set_application_id(Option<String>)`](crate::client::fluent_builders::UpdateApplication::set_application_id): <p>The unique identifier of the application you want to update.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateApplication::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateApplication::set_description): <p>The description of the application to update.</p>
    ///   - [`current_application_version(i32)`](crate::client::fluent_builders::UpdateApplication::current_application_version) / [`set_current_application_version(Option<i32>)`](crate::client::fluent_builders::UpdateApplication::set_current_application_version): <p>The current version of the application to update.</p>
    ///   - [`definition(Definition)`](crate::client::fluent_builders::UpdateApplication::definition) / [`set_definition(Option<Definition>)`](crate::client::fluent_builders::UpdateApplication::set_definition): <p>The application definition for this application. You can specify either inline JSON or an S3 bucket location.</p>
    /// - On success, responds with [`UpdateApplicationOutput`](crate::output::UpdateApplicationOutput) with field(s):
    ///   - [`application_version(Option<i32>)`](crate::output::UpdateApplicationOutput::application_version): <p>The new version of the application.</p>
    /// - On failure, responds with [`SdkError<UpdateApplicationError>`](crate::error::UpdateApplicationError)
    pub fn update_application(&self) -> fluent_builders::UpdateApplication {
        fluent_builders::UpdateApplication::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateEnvironment`](crate::client::fluent_builders::UpdateEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`environment_id(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::environment_id) / [`set_environment_id(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_environment_id): <p>The unique identifier of the runtime environment that you want to update.</p>
    ///   - [`desired_capacity(i32)`](crate::client::fluent_builders::UpdateEnvironment::desired_capacity) / [`set_desired_capacity(Option<i32>)`](crate::client::fluent_builders::UpdateEnvironment::set_desired_capacity): <p>The desired capacity for the runtime environment to update.</p>
    ///   - [`instance_type(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::instance_type) / [`set_instance_type(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_instance_type): <p>The instance type for the runtime environment to update.</p>
    ///   - [`engine_version(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::engine_version) / [`set_engine_version(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_engine_version): <p>The version of the runtime engine for the runtime environment.</p>
    ///   - [`preferred_maintenance_window(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::preferred_maintenance_window) / [`set_preferred_maintenance_window(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_preferred_maintenance_window): <p>Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned.</p>
    ///   - [`apply_during_maintenance_window(bool)`](crate::client::fluent_builders::UpdateEnvironment::apply_during_maintenance_window) / [`set_apply_during_maintenance_window(bool)`](crate::client::fluent_builders::UpdateEnvironment::set_apply_during_maintenance_window): <p>Indicates whether to update the runtime environment during the maintenance window. The default is false. Currently, Amazon Web Services Mainframe Modernization accepts the <code>engineVersion</code> parameter only if <code>applyDuringMaintenanceWindow</code> is true. If any parameter other than <code>engineVersion</code> is provided in <code>UpdateEnvironmentRequest</code>, it will fail if <code>applyDuringMaintenanceWindow</code> is set to true.</p>
    /// - On success, responds with [`UpdateEnvironmentOutput`](crate::output::UpdateEnvironmentOutput) with field(s):
    ///   - [`environment_id(Option<String>)`](crate::output::UpdateEnvironmentOutput::environment_id): <p>The unique identifier of the runtime environment that was updated.</p>
    /// - On failure, responds with [`SdkError<UpdateEnvironmentError>`](crate::error::UpdateEnvironmentError)
    pub fn update_environment(&self) -> fluent_builders::UpdateEnvironment {
        fluent_builders::UpdateEnvironment::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 `CancelBatchJobExecution`.
    ///
    /// <p>Cancels the running of a specific batch job execution.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CancelBatchJobExecution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::cancel_batch_job_execution_input::Builder,
    }
    impl CancelBatchJobExecution {
        /// Creates a new `CancelBatchJobExecution`.
        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::CancelBatchJobExecution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CancelBatchJobExecutionError>,
        > {
            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::CancelBatchJobExecutionOutput,
            aws_smithy_http::result::SdkError<crate::error::CancelBatchJobExecutionError>,
        > {
            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 unique identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The unique identifier of the batch job execution.</p>
        pub fn execution_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.execution_id(input.into());
            self
        }
        /// <p>The unique identifier of the batch job execution.</p>
        pub fn set_execution_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_execution_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateApplication`.
    ///
    /// <p>Creates a new application with given parameters. Requires an existing runtime environment and application definition file.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateApplication {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_application_input::Builder,
    }
    impl CreateApplication {
        /// Creates a new `CreateApplication`.
        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::CreateApplication,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateApplicationError>,
        > {
            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::CreateApplicationOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateApplicationError>,
        > {
            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 unique identifier of the application.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The description of the application.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the application.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The type of the target platform for this application.</p>
        pub fn engine_type(mut self, input: crate::model::EngineType) -> Self {
            self.inner = self.inner.engine_type(input);
            self
        }
        /// <p>The type of the target platform for this application.</p>
        pub fn set_engine_type(
            mut self,
            input: std::option::Option<crate::model::EngineType>,
        ) -> Self {
            self.inner = self.inner.set_engine_type(input);
            self
        }
        /// <p>The application definition for this application. You can specify either inline JSON or an S3 bucket location.</p>
        pub fn definition(mut self, input: crate::model::Definition) -> Self {
            self.inner = self.inner.definition(input);
            self
        }
        /// <p>The application definition for this application. You can specify either inline JSON or an S3 bucket location.</p>
        pub fn set_definition(
            mut self,
            input: std::option::Option<crate::model::Definition>,
        ) -> Self {
            self.inner = self.inner.set_definition(input);
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of tags to apply to the application.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>A list of tags to apply to the application.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
        /// <p>Unique, case-sensitive identifier the service generates to ensure the idempotency of the request to create an application. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>Unique, case-sensitive identifier the service generates to ensure the idempotency of the request to create an application. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The identifier of a customer managed key.</p>
        pub fn kms_key_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.kms_key_id(input.into());
            self
        }
        /// <p>The identifier of a customer managed key.</p>
        pub fn set_kms_key_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_kms_key_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateDataSetImportTask`.
    ///
    /// <p>Starts a data set import task for a specific application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateDataSetImportTask {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_data_set_import_task_input::Builder,
    }
    impl CreateDataSetImportTask {
        /// Creates a new `CreateDataSetImportTask`.
        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::CreateDataSetImportTask,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateDataSetImportTaskError>,
        > {
            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::CreateDataSetImportTaskOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateDataSetImportTaskError>,
        > {
            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 unique identifier of the application for which you want to import data sets.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application for which you want to import data sets.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The data set import task configuration.</p>
        pub fn import_config(mut self, input: crate::model::DataSetImportConfig) -> Self {
            self.inner = self.inner.import_config(input);
            self
        }
        /// <p>The data set import task configuration.</p>
        pub fn set_import_config(
            mut self,
            input: std::option::Option<crate::model::DataSetImportConfig>,
        ) -> Self {
            self.inner = self.inner.set_import_config(input);
            self
        }
        /// <p> Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create a data set import. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p> Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create a data set import. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateDeployment`.
    ///
    /// <p>Creates and starts a deployment to deploy an application into a runtime environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateDeployment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_deployment_input::Builder,
    }
    impl CreateDeployment {
        /// Creates a new `CreateDeployment`.
        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::CreateDeployment,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateDeploymentError>,
        > {
            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::CreateDeploymentOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateDeploymentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the runtime environment where you want to deploy this application.</p>
        pub fn environment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_id(input.into());
            self
        }
        /// <p>The identifier of the runtime environment where you want to deploy this application.</p>
        pub fn set_environment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_id(input);
            self
        }
        /// <p>The application identifier.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The application identifier.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The version of the application to deploy.</p>
        pub fn application_version(mut self, input: i32) -> Self {
            self.inner = self.inner.application_version(input);
            self
        }
        /// <p>The version of the application to deploy.</p>
        pub fn set_application_version(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_application_version(input);
            self
        }
        /// <p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create a deployment. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create a deployment. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateEnvironment`.
    ///
    /// <p>Creates a runtime environment for a given runtime engine.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateEnvironment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_environment_input::Builder,
    }
    impl CreateEnvironment {
        /// Creates a new `CreateEnvironment`.
        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::CreateEnvironment,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::CreateEnvironmentError>,
        > {
            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::CreateEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateEnvironmentError>,
        > {
            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 runtime environment. Must be unique within the account.</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 runtime environment. Must be unique within the 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 type of instance for the runtime environment.</p>
        pub fn instance_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_type(input.into());
            self
        }
        /// <p>The type of instance for the runtime environment.</p>
        pub fn set_instance_type(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_instance_type(input);
            self
        }
        /// <p>The description of the runtime environment.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the runtime environment.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The engine type for the runtime environment.</p>
        pub fn engine_type(mut self, input: crate::model::EngineType) -> Self {
            self.inner = self.inner.engine_type(input);
            self
        }
        /// <p>The engine type for the runtime environment.</p>
        pub fn set_engine_type(
            mut self,
            input: std::option::Option<crate::model::EngineType>,
        ) -> Self {
            self.inner = self.inner.set_engine_type(input);
            self
        }
        /// <p>The version of the engine type for the runtime environment.</p>
        pub fn engine_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.engine_version(input.into());
            self
        }
        /// <p>The version of the engine type for the runtime environment.</p>
        pub fn set_engine_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_engine_version(input);
            self
        }
        /// Appends an item to `subnetIds`.
        ///
        /// To override the contents of this collection use [`set_subnet_ids`](Self::set_subnet_ids).
        ///
        /// <p>The list of subnets associated with the VPC for this runtime environment.</p>
        pub fn subnet_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.subnet_ids(input.into());
            self
        }
        /// <p>The list of subnets associated with the VPC for this runtime environment.</p>
        pub fn set_subnet_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_subnet_ids(input);
            self
        }
        /// Appends an item to `securityGroupIds`.
        ///
        /// To override the contents of this collection use [`set_security_group_ids`](Self::set_security_group_ids).
        ///
        /// <p>The list of security groups for the VPC associated with this runtime environment.</p>
        pub fn security_group_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.security_group_ids(input.into());
            self
        }
        /// <p>The list of security groups for the VPC associated with this runtime environment.</p>
        pub fn set_security_group_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_security_group_ids(input);
            self
        }
        /// Appends an item to `storageConfigurations`.
        ///
        /// To override the contents of this collection use [`set_storage_configurations`](Self::set_storage_configurations).
        ///
        /// <p>Optional. The storage configurations for this runtime environment.</p>
        pub fn storage_configurations(mut self, input: crate::model::StorageConfiguration) -> Self {
            self.inner = self.inner.storage_configurations(input);
            self
        }
        /// <p>Optional. The storage configurations for this runtime environment.</p>
        pub fn set_storage_configurations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::StorageConfiguration>>,
        ) -> Self {
            self.inner = self.inner.set_storage_configurations(input);
            self
        }
        /// <p>Specifies whether the runtime environment is publicly accessible.</p>
        pub fn publicly_accessible(mut self, input: bool) -> Self {
            self.inner = self.inner.publicly_accessible(input);
            self
        }
        /// <p>Specifies whether the runtime environment is publicly accessible.</p>
        pub fn set_publicly_accessible(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_publicly_accessible(input);
            self
        }
        /// <p>The details of a high availability configuration for this runtime environment.</p>
        pub fn high_availability_config(
            mut self,
            input: crate::model::HighAvailabilityConfig,
        ) -> Self {
            self.inner = self.inner.high_availability_config(input);
            self
        }
        /// <p>The details of a high availability configuration for this runtime environment.</p>
        pub fn set_high_availability_config(
            mut self,
            input: std::option::Option<crate::model::HighAvailabilityConfig>,
        ) -> Self {
            self.inner = self.inner.set_high_availability_config(input);
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags for the runtime environment.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags for the runtime environment.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
        /// <p>Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned.</p>
        pub fn preferred_maintenance_window(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.preferred_maintenance_window(input.into());
            self
        }
        /// <p>Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned.</p>
        pub fn set_preferred_maintenance_window(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_preferred_maintenance_window(input);
            self
        }
        /// <p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create an environment. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>Unique, case-sensitive identifier you provide to ensure the idempotency of the request to create an environment. The service generates the clientToken when the API call is triggered. The token expires after one hour, so if you retry the API within this timeframe with the same clientToken, you will get the same response. The service also handles deleting the clientToken after it expires. </p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The identifier of a customer managed key.</p>
        pub fn kms_key_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.kms_key_id(input.into());
            self
        }
        /// <p>The identifier of a customer managed key.</p>
        pub fn set_kms_key_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_kms_key_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteApplication`.
    ///
    /// <p>Deletes a specific application. You cannot delete a running application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteApplication {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_application_input::Builder,
    }
    impl DeleteApplication {
        /// Creates a new `DeleteApplication`.
        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::DeleteApplication,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteApplicationError>,
        > {
            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::DeleteApplicationOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteApplicationError>,
        > {
            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 unique identifier of the application you want to delete.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application you want to delete.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteApplicationFromEnvironment`.
    ///
    /// <p>Deletes a specific application from the specific runtime environment where it was previously deployed. You cannot delete a runtime environment using DeleteEnvironment if any application has ever been deployed to it. This API removes the association of the application with the runtime environment so you can delete the environment smoothly.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteApplicationFromEnvironment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_application_from_environment_input::Builder,
    }
    impl DeleteApplicationFromEnvironment {
        /// Creates a new `DeleteApplicationFromEnvironment`.
        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::DeleteApplicationFromEnvironment,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteApplicationFromEnvironmentError>,
        > {
            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::DeleteApplicationFromEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteApplicationFromEnvironmentError>,
        > {
            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 unique identifier of the application you want to delete.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application you want to delete.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The unique identifier of the runtime environment where the application was previously deployed.</p>
        pub fn environment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_id(input.into());
            self
        }
        /// <p>The unique identifier of the runtime environment where the application was previously deployed.</p>
        pub fn set_environment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteEnvironment`.
    ///
    /// <p>Deletes a specific runtime environment. The environment cannot contain deployed applications. If it does, you must delete those applications before you delete the environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteEnvironment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_environment_input::Builder,
    }
    impl DeleteEnvironment {
        /// Creates a new `DeleteEnvironment`.
        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::DeleteEnvironment,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::DeleteEnvironmentError>,
        > {
            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::DeleteEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteEnvironmentError>,
        > {
            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 unique identifier of the runtime environment you want to delete.</p>
        pub fn environment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_id(input.into());
            self
        }
        /// <p>The unique identifier of the runtime environment you want to delete.</p>
        pub fn set_environment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetApplication`.
    ///
    /// <p>Describes the details of a specific application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetApplication {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_application_input::Builder,
    }
    impl GetApplication {
        /// Creates a new `GetApplication`.
        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::GetApplication,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetApplicationError>,
        > {
            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::GetApplicationOutput,
            aws_smithy_http::result::SdkError<crate::error::GetApplicationError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetApplicationVersion`.
    ///
    /// <p>Returns details about a specific version of a specific application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetApplicationVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_application_version_input::Builder,
    }
    impl GetApplicationVersion {
        /// Creates a new `GetApplicationVersion`.
        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::GetApplicationVersion,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetApplicationVersionError>,
        > {
            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::GetApplicationVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::GetApplicationVersionError>,
        > {
            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 unique identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The specific version of the application.</p>
        pub fn application_version(mut self, input: i32) -> Self {
            self.inner = self.inner.application_version(input);
            self
        }
        /// <p>The specific version of the application.</p>
        pub fn set_application_version(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_application_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetBatchJobExecution`.
    ///
    /// <p>Gets the details of a specific batch job execution for a specific application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetBatchJobExecution {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_batch_job_execution_input::Builder,
    }
    impl GetBatchJobExecution {
        /// Creates a new `GetBatchJobExecution`.
        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::GetBatchJobExecution,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetBatchJobExecutionError>,
        > {
            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::GetBatchJobExecutionOutput,
            aws_smithy_http::result::SdkError<crate::error::GetBatchJobExecutionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The unique identifier of the batch job execution.</p>
        pub fn execution_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.execution_id(input.into());
            self
        }
        /// <p>The unique identifier of the batch job execution.</p>
        pub fn set_execution_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_execution_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetDataSetDetails`.
    ///
    /// <p>Gets the details of a specific data set.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetDataSetDetails {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_data_set_details_input::Builder,
    }
    impl GetDataSetDetails {
        /// Creates a new `GetDataSetDetails`.
        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::GetDataSetDetails,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetDataSetDetailsError>,
        > {
            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::GetDataSetDetailsOutput,
            aws_smithy_http::result::SdkError<crate::error::GetDataSetDetailsError>,
        > {
            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 unique identifier of the application that this data set is associated with.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application that this data set is associated with.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The name of the data set.</p>
        pub fn data_set_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.data_set_name(input.into());
            self
        }
        /// <p>The name of the data set.</p>
        pub fn set_data_set_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_data_set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetDataSetImportTask`.
    ///
    /// <p>Gets the status of a data set import task initiated with the <code>CreateDataSetImportTask</code> operation.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetDataSetImportTask {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_data_set_import_task_input::Builder,
    }
    impl GetDataSetImportTask {
        /// Creates a new `GetDataSetImportTask`.
        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::GetDataSetImportTask,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetDataSetImportTaskError>,
        > {
            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::GetDataSetImportTaskOutput,
            aws_smithy_http::result::SdkError<crate::error::GetDataSetImportTaskError>,
        > {
            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 application identifier.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The application identifier.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The task identifier returned by the <code>CreateDataSetImportTask</code> operation. </p>
        pub fn task_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.task_id(input.into());
            self
        }
        /// <p>The task identifier returned by the <code>CreateDataSetImportTask</code> operation. </p>
        pub fn set_task_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_task_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetDeployment`.
    ///
    /// <p>Gets details of a specific deployment with a given deployment identifier.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetDeployment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_deployment_input::Builder,
    }
    impl GetDeployment {
        /// Creates a new `GetDeployment`.
        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::GetDeployment,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetDeploymentError>,
        > {
            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::GetDeploymentOutput,
            aws_smithy_http::result::SdkError<crate::error::GetDeploymentError>,
        > {
            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 unique identifier for the deployment.</p>
        pub fn deployment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.deployment_id(input.into());
            self
        }
        /// <p>The unique identifier for the deployment.</p>
        pub fn set_deployment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_deployment_id(input);
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetEnvironment`.
    ///
    /// <p>Describes a specific runtime environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetEnvironment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_environment_input::Builder,
    }
    impl GetEnvironment {
        /// Creates a new `GetEnvironment`.
        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::GetEnvironment,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::GetEnvironmentError>,
        > {
            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::GetEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::GetEnvironmentError>,
        > {
            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 unique identifier of the runtime environment.</p>
        pub fn environment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_id(input.into());
            self
        }
        /// <p>The unique identifier of the runtime environment.</p>
        pub fn set_environment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListApplications`.
    ///
    /// <p>Lists the applications associated with a specific Amazon Web Services account. You can provide the unique identifier of a specific runtime environment in a query parameter to see all applications associated with that environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListApplications {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_applications_input::Builder,
    }
    impl ListApplications {
        /// Creates a new `ListApplications`.
        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::ListApplications,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListApplicationsError>,
        > {
            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::ListApplicationsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListApplicationsError>,
        > {
            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::ListApplicationsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListApplicationsPaginator {
            crate::paginator::ListApplicationsPaginator::new(self.handle, self.inner)
        }
        /// <p>A pagination token to control the number of applications displayed in the list.</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 pagination token to control the number of applications displayed in the list.</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 applications 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 applications 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
        }
        /// Appends an item to `names`.
        ///
        /// To override the contents of this collection use [`set_names`](Self::set_names).
        ///
        /// <p>The names of the applications.</p>
        pub fn names(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.names(input.into());
            self
        }
        /// <p>The names of the applications.</p>
        pub fn set_names(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_names(input);
            self
        }
        /// <p>The unique identifier of the runtime environment where the applications are deployed.</p>
        pub fn environment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_id(input.into());
            self
        }
        /// <p>The unique identifier of the runtime environment where the applications are deployed.</p>
        pub fn set_environment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListApplicationVersions`.
    ///
    /// <p>Returns a list of the application versions for a specific application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListApplicationVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_application_versions_input::Builder,
    }
    impl ListApplicationVersions {
        /// Creates a new `ListApplicationVersions`.
        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::ListApplicationVersions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListApplicationVersionsError>,
        > {
            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::ListApplicationVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListApplicationVersionsError>,
        > {
            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::ListApplicationVersionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListApplicationVersionsPaginator {
            crate::paginator::ListApplicationVersionsPaginator::new(self.handle, self.inner)
        }
        /// <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 application 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 application 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
        }
        /// <p>The unique identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListBatchJobDefinitions`.
    ///
    /// <p>Lists all the available batch job definitions based on the batch job resources uploaded during the application creation. You can use the batch job definitions in the list to start a batch job.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListBatchJobDefinitions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_batch_job_definitions_input::Builder,
    }
    impl ListBatchJobDefinitions {
        /// Creates a new `ListBatchJobDefinitions`.
        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::ListBatchJobDefinitions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListBatchJobDefinitionsError>,
        > {
            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::ListBatchJobDefinitionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListBatchJobDefinitionsError>,
        > {
            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::ListBatchJobDefinitionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListBatchJobDefinitionsPaginator {
            crate::paginator::ListBatchJobDefinitionsPaginator::new(self.handle, self.inner)
        }
        /// <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 job definitions 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 batch job definitions 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>The identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>If the batch job definition is a FileBatchJobDefinition, the prefix allows you to search on the file names of FileBatchJobDefinitions.</p>
        pub fn prefix(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.prefix(input.into());
            self
        }
        /// <p>If the batch job definition is a FileBatchJobDefinition, the prefix allows you to search on the file names of FileBatchJobDefinitions.</p>
        pub fn set_prefix(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_prefix(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListBatchJobExecutions`.
    ///
    /// <p>Lists historical, current, and scheduled batch job executions for a specific application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListBatchJobExecutions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_batch_job_executions_input::Builder,
    }
    impl ListBatchJobExecutions {
        /// Creates a new `ListBatchJobExecutions`.
        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::ListBatchJobExecutions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListBatchJobExecutionsError>,
        > {
            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::ListBatchJobExecutionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListBatchJobExecutionsError>,
        > {
            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::ListBatchJobExecutionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListBatchJobExecutionsPaginator {
            crate::paginator::ListBatchJobExecutionsPaginator::new(self.handle, self.inner)
        }
        /// <p>A pagination token to control the number of batch job executions displayed in the list.</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 pagination token to control the number of batch job executions displayed in the list.</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 job executions 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 batch job executions 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>The unique identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// Appends an item to `executionIds`.
        ///
        /// To override the contents of this collection use [`set_execution_ids`](Self::set_execution_ids).
        ///
        /// <p>The unique identifier of each batch job execution.</p>
        pub fn execution_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.execution_ids(input.into());
            self
        }
        /// <p>The unique identifier of each batch job execution.</p>
        pub fn set_execution_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_execution_ids(input);
            self
        }
        /// <p>The name of each batch job execution.</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 each batch job execution.</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 status of the batch job executions.</p>
        pub fn status(mut self, input: crate::model::BatchJobExecutionStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>The status of the batch job executions.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::BatchJobExecutionStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// <p>The time after which the batch job executions started.</p>
        pub fn started_after(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.started_after(input);
            self
        }
        /// <p>The time after which the batch job executions started.</p>
        pub fn set_started_after(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_started_after(input);
            self
        }
        /// <p>The time before the batch job executions started.</p>
        pub fn started_before(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.started_before(input);
            self
        }
        /// <p>The time before the batch job executions started.</p>
        pub fn set_started_before(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_started_before(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListDataSetImportHistory`.
    ///
    /// <p>Lists the data set imports for the specified application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDataSetImportHistory {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_data_set_import_history_input::Builder,
    }
    impl ListDataSetImportHistory {
        /// Creates a new `ListDataSetImportHistory`.
        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::ListDataSetImportHistory,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDataSetImportHistoryError>,
        > {
            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::ListDataSetImportHistoryOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDataSetImportHistoryError>,
        > {
            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::ListDataSetImportHistoryPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDataSetImportHistoryPaginator {
            crate::paginator::ListDataSetImportHistoryPaginator::new(self.handle, self.inner)
        }
        /// <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 objects 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 objects 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>The unique identifier of the application.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListDataSets`.
    ///
    /// <p>Lists the data sets imported for a specific application. In Amazon Web Services Mainframe Modernization, data sets are associated with applications deployed on runtime environments. This is known as importing data sets. Currently, Amazon Web Services Mainframe Modernization can import data sets into catalogs using <a href="https://docs.aws.amazon.com/m2/latest/APIReference/API_CreateDataSetImportTask.html">CreateDataSetImportTask</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDataSets {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_data_sets_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 unique identifier of the application for which you want to list the associated data sets.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application for which you want to list the associated data sets.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 objects 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 objects 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>The prefix of the data set name, which you can use to filter the list of data sets.</p>
        pub fn prefix(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.prefix(input.into());
            self
        }
        /// <p>The prefix of the data set name, which you can use to filter the list of data sets.</p>
        pub fn set_prefix(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_prefix(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListDeployments`.
    ///
    /// <p>Returns a list of all deployments of a specific application. A deployment is a combination of a specific application and a specific version of that application. Each deployment is mapped to a particular application version.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListDeployments {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_deployments_input::Builder,
    }
    impl ListDeployments {
        /// Creates a new `ListDeployments`.
        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::ListDeployments,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListDeploymentsError>,
        > {
            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::ListDeploymentsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListDeploymentsError>,
        > {
            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::ListDeploymentsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListDeploymentsPaginator {
            crate::paginator::ListDeploymentsPaginator::new(self.handle, self.inner)
        }
        /// <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 objects 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 objects 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>The application identifier.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The application identifier.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListEngineVersions`.
    ///
    /// <p>Lists the available engine versions.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEngineVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_engine_versions_input::Builder,
    }
    impl ListEngineVersions {
        /// Creates a new `ListEngineVersions`.
        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::ListEngineVersions,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListEngineVersionsError>,
        > {
            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::ListEngineVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEngineVersionsError>,
        > {
            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::ListEngineVersionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEngineVersionsPaginator {
            crate::paginator::ListEngineVersionsPaginator::new(self.handle, self.inner)
        }
        /// <p>The type of target platform.</p>
        pub fn engine_type(mut self, input: crate::model::EngineType) -> Self {
            self.inner = self.inner.engine_type(input);
            self
        }
        /// <p>The type of target platform.</p>
        pub fn set_engine_type(
            mut self,
            input: std::option::Option<crate::model::EngineType>,
        ) -> Self {
            self.inner = self.inner.set_engine_type(input);
            self
        }
        /// <p>A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter.</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 objects 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 objects 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 `ListEnvironments`.
    ///
    /// <p>Lists the runtime environments.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEnvironments {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_environments_input::Builder,
    }
    impl ListEnvironments {
        /// Creates a new `ListEnvironments`.
        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::ListEnvironments,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::ListEnvironmentsError>,
        > {
            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::ListEnvironmentsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEnvironmentsError>,
        > {
            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::ListEnvironmentsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEnvironmentsPaginator {
            crate::paginator::ListEnvironmentsPaginator::new(self.handle, self.inner)
        }
        /// <p>A pagination token to control the number of runtime environments displayed in the list.</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 pagination token to control the number of runtime environments displayed in the list.</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 runtime environments 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 runtime environments 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
        }
        /// Appends an item to `names`.
        ///
        /// To override the contents of this collection use [`set_names`](Self::set_names).
        ///
        /// <p>The names of the runtime environments. Must be unique within the account.</p>
        pub fn names(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.names(input.into());
            self
        }
        /// <p>The names of the runtime environments. Must be unique within the account.</p>
        pub fn set_names(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_names(input);
            self
        }
        /// <p>The engine type for the runtime environment.</p>
        pub fn engine_type(mut self, input: crate::model::EngineType) -> Self {
            self.inner = self.inner.engine_type(input);
            self
        }
        /// <p>The engine type for the runtime environment.</p>
        pub fn set_engine_type(
            mut self,
            input: std::option::Option<crate::model::EngineType>,
        ) -> Self {
            self.inner = self.inner.set_engine_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTagsForResource`.
    ///
    /// <p>Lists the tags for the specified 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 Amazon Resource Name (ARN) of the resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartApplication`.
    ///
    /// <p>Starts an application that is currently stopped.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartApplication {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_application_input::Builder,
    }
    impl StartApplication {
        /// Creates a new `StartApplication`.
        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::StartApplication,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartApplicationError>,
        > {
            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::StartApplicationOutput,
            aws_smithy_http::result::SdkError<crate::error::StartApplicationError>,
        > {
            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 unique identifier of the application you want to start.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application you want to start.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StartBatchJob`.
    ///
    /// <p>Starts a batch job and returns the unique identifier of this execution of the batch job. The associated application must be running in order to start the batch job.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StartBatchJob {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::start_batch_job_input::Builder,
    }
    impl StartBatchJob {
        /// Creates a new `StartBatchJob`.
        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::StartBatchJob,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StartBatchJobError>,
        > {
            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::StartBatchJobOutput,
            aws_smithy_http::result::SdkError<crate::error::StartBatchJobError>,
        > {
            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 unique identifier of the application associated with this batch job.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application associated with this batch job.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The unique identifier of the batch job.</p>
        pub fn batch_job_identifier(mut self, input: crate::model::BatchJobIdentifier) -> Self {
            self.inner = self.inner.batch_job_identifier(input);
            self
        }
        /// <p>The unique identifier of the batch job.</p>
        pub fn set_batch_job_identifier(
            mut self,
            input: std::option::Option<crate::model::BatchJobIdentifier>,
        ) -> Self {
            self.inner = self.inner.set_batch_job_identifier(input);
            self
        }
        /// Adds a key-value pair to `jobParams`.
        ///
        /// To override the contents of this collection use [`set_job_params`](Self::set_job_params).
        ///
        /// <p>The collection of batch job parameters. For details about limits for keys and values, see <a href="https://www.ibm.com/docs/en/workload-automation/9.3.0?topic=zos-coding-variables-in-jcl">Coding variables in JCL</a>.</p>
        pub fn job_params(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.job_params(k.into(), v.into());
            self
        }
        /// <p>The collection of batch job parameters. For details about limits for keys and values, see <a href="https://www.ibm.com/docs/en/workload-automation/9.3.0?topic=zos-coding-variables-in-jcl">Coding variables in JCL</a>.</p>
        pub fn set_job_params(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_job_params(input);
            self
        }
    }
    /// Fluent builder constructing a request to `StopApplication`.
    ///
    /// <p>Stops a running application.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct StopApplication {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::stop_application_input::Builder,
    }
    impl StopApplication {
        /// Creates a new `StopApplication`.
        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::StopApplication,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::StopApplicationError>,
        > {
            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::StopApplicationOutput,
            aws_smithy_http::result::SdkError<crate::error::StopApplicationError>,
        > {
            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 unique identifier of the application you want to stop.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application you want to stop.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>Stopping an application process can take a long time. Setting this parameter to true lets you force stop the application so you don't need to wait until the process finishes to apply another action on the application. The default value is false.</p>
        pub fn force_stop(mut self, input: bool) -> Self {
            self.inner = self.inner.force_stop(input);
            self
        }
        /// <p>Stopping an application process can take a long time. Setting this parameter to true lets you force stop the application so you don't need to wait until the process finishes to apply another action on the application. The default value is false.</p>
        pub fn set_force_stop(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_force_stop(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>Adds one or more tags to the specified 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 Amazon Resource Name (ARN) of the resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The tags to add to the resource.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.tags(k.into(), v.into());
            self
        }
        /// <p>The tags to add to the resource.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UntagResource`.
    ///
    /// <p>Removes one or more tags from the specified resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UntagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::untag_resource_input::Builder,
    }
    impl UntagResource {
        /// Creates a new `UntagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UntagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the resource.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Appends an item to `tagKeys`.
        ///
        /// To override the contents of this collection use [`set_tag_keys`](Self::set_tag_keys).
        ///
        /// <p>The keys of the tags to remove.</p>
        pub fn tag_keys(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_keys(input.into());
            self
        }
        /// <p>The keys of the tags to remove.</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 `UpdateApplication`.
    ///
    /// <p>Updates an application and creates a new version.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateApplication {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_application_input::Builder,
    }
    impl UpdateApplication {
        /// Creates a new `UpdateApplication`.
        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::UpdateApplication,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateApplicationError>,
        > {
            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::UpdateApplicationOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateApplicationError>,
        > {
            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 unique identifier of the application you want to update.</p>
        pub fn application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.application_id(input.into());
            self
        }
        /// <p>The unique identifier of the application you want to update.</p>
        pub fn set_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_application_id(input);
            self
        }
        /// <p>The description of the application to update.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The description of the application to update.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The current version of the application to update.</p>
        pub fn current_application_version(mut self, input: i32) -> Self {
            self.inner = self.inner.current_application_version(input);
            self
        }
        /// <p>The current version of the application to update.</p>
        pub fn set_current_application_version(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_current_application_version(input);
            self
        }
        /// <p>The application definition for this application. You can specify either inline JSON or an S3 bucket location.</p>
        pub fn definition(mut self, input: crate::model::Definition) -> Self {
            self.inner = self.inner.definition(input);
            self
        }
        /// <p>The application definition for this application. You can specify either inline JSON or an S3 bucket location.</p>
        pub fn set_definition(
            mut self,
            input: std::option::Option<crate::model::Definition>,
        ) -> Self {
            self.inner = self.inner.set_definition(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateEnvironment`.
    ///
    /// <p>Updates the configuration details for a specific runtime environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateEnvironment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_environment_input::Builder,
    }
    impl UpdateEnvironment {
        /// Creates a new `UpdateEnvironment`.
        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::UpdateEnvironment,
                aws_http::retry::AwsResponseRetryClassifier,
            >,
            aws_smithy_http::result::SdkError<crate::error::UpdateEnvironmentError>,
        > {
            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::UpdateEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateEnvironmentError>,
        > {
            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 unique identifier of the runtime environment that you want to update.</p>
        pub fn environment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_id(input.into());
            self
        }
        /// <p>The unique identifier of the runtime environment that you want to update.</p>
        pub fn set_environment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_id(input);
            self
        }
        /// <p>The desired capacity for the runtime environment to update.</p>
        pub fn desired_capacity(mut self, input: i32) -> Self {
            self.inner = self.inner.desired_capacity(input);
            self
        }
        /// <p>The desired capacity for the runtime environment to update.</p>
        pub fn set_desired_capacity(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_desired_capacity(input);
            self
        }
        /// <p>The instance type for the runtime environment to update.</p>
        pub fn instance_type(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.instance_type(input.into());
            self
        }
        /// <p>The instance type for the runtime environment to update.</p>
        pub fn set_instance_type(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_instance_type(input);
            self
        }
        /// <p>The version of the runtime engine for the runtime environment.</p>
        pub fn engine_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.engine_version(input.into());
            self
        }
        /// <p>The version of the runtime engine for the runtime environment.</p>
        pub fn set_engine_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_engine_version(input);
            self
        }
        /// <p>Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned.</p>
        pub fn preferred_maintenance_window(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.preferred_maintenance_window(input.into());
            self
        }
        /// <p>Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned.</p>
        pub fn set_preferred_maintenance_window(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_preferred_maintenance_window(input);
            self
        }
        /// <p>Indicates whether to update the runtime environment during the maintenance window. The default is false. Currently, Amazon Web Services Mainframe Modernization accepts the <code>engineVersion</code> parameter only if <code>applyDuringMaintenanceWindow</code> is true. If any parameter other than <code>engineVersion</code> is provided in <code>UpdateEnvironmentRequest</code>, it will fail if <code>applyDuringMaintenanceWindow</code> is set to true.</p>
        pub fn apply_during_maintenance_window(mut self, input: bool) -> Self {
            self.inner = self.inner.apply_during_maintenance_window(input);
            self
        }
        /// <p>Indicates whether to update the runtime environment during the maintenance window. The default is false. Currently, Amazon Web Services Mainframe Modernization accepts the <code>engineVersion</code> parameter only if <code>applyDuringMaintenanceWindow</code> is true. If any parameter other than <code>engineVersion</code> is provided in <code>UpdateEnvironmentRequest</code>, it will fail if <code>applyDuringMaintenanceWindow</code> is set to true.</p>
        pub fn set_apply_during_maintenance_window(
            mut self,
            input: std::option::Option<bool>,
        ) -> Self {
            self.inner = self.inner.set_apply_during_maintenance_window(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 }),
        }
    }
}