aws-sdk-redshiftserverless 0.24.0

AWS SDK for Redshift Serverless
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 Redshift Serverless
///
/// Client for invoking operations on Redshift Serverless. Each operation on Redshift Serverless 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_redshiftserverless::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_redshiftserverless::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_redshiftserverless::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 [`ConvertRecoveryPointToSnapshot`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recovery_point_id(impl Into<String>)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::recovery_point_id) / [`set_recovery_point_id(Option<String>)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::set_recovery_point_id): <p>The unique identifier of the recovery point.</p>
    ///   - [`snapshot_name(impl Into<String>)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::snapshot_name) / [`set_snapshot_name(Option<String>)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::set_snapshot_name): <p>The name of the snapshot.</p>
    ///   - [`retention_period(i32)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::retention_period) / [`set_retention_period(Option<i32>)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::set_retention_period): <p>How long to retain the snapshot.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::ConvertRecoveryPointToSnapshot::set_tags): <p>An array of <a href="https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Tag.html">Tag objects</a> to associate with the created snapshot.</p>
    /// - On success, responds with [`ConvertRecoveryPointToSnapshotOutput`](crate::output::ConvertRecoveryPointToSnapshotOutput) with field(s):
    ///   - [`snapshot(Option<Snapshot>)`](crate::output::ConvertRecoveryPointToSnapshotOutput::snapshot): <p>The snapshot converted from the recovery point.</p>
    /// - On failure, responds with [`SdkError<ConvertRecoveryPointToSnapshotError>`](crate::error::ConvertRecoveryPointToSnapshotError)
    pub fn convert_recovery_point_to_snapshot(
        &self,
    ) -> fluent_builders::ConvertRecoveryPointToSnapshot {
        fluent_builders::ConvertRecoveryPointToSnapshot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateEndpointAccess`](crate::client::fluent_builders::CreateEndpointAccess) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`endpoint_name(impl Into<String>)`](crate::client::fluent_builders::CreateEndpointAccess::endpoint_name) / [`set_endpoint_name(Option<String>)`](crate::client::fluent_builders::CreateEndpointAccess::set_endpoint_name): <p>The name of the VPC endpoint. An endpoint name must contain 1-30 characters. Valid characters are A-Z, a-z, 0-9, and hyphen(-). The first character must be a letter. The name can't contain two consecutive hyphens or end with a hyphen.</p>
    ///   - [`subnet_ids(Vec<String>)`](crate::client::fluent_builders::CreateEndpointAccess::subnet_ids) / [`set_subnet_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateEndpointAccess::set_subnet_ids): <p>The unique identifers of subnets from which Amazon Redshift Serverless chooses one to deploy a VPC endpoint.</p>
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::CreateEndpointAccess::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::CreateEndpointAccess::set_workgroup_name): <p>The name of the workgroup to associate with the VPC endpoint.</p>
    ///   - [`vpc_security_group_ids(Vec<String>)`](crate::client::fluent_builders::CreateEndpointAccess::vpc_security_group_ids) / [`set_vpc_security_group_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateEndpointAccess::set_vpc_security_group_ids): <p>The unique identifiers of the security group that defines the ports, protocols, and sources for inbound traffic that you are authorizing into your endpoint.</p>
    /// - On success, responds with [`CreateEndpointAccessOutput`](crate::output::CreateEndpointAccessOutput) with field(s):
    ///   - [`endpoint(Option<EndpointAccess>)`](crate::output::CreateEndpointAccessOutput::endpoint): <p>The created VPC endpoint.</p>
    /// - On failure, responds with [`SdkError<CreateEndpointAccessError>`](crate::error::CreateEndpointAccessError)
    pub fn create_endpoint_access(&self) -> fluent_builders::CreateEndpointAccess {
        fluent_builders::CreateEndpointAccess::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateNamespace`](crate::client::fluent_builders::CreateNamespace) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::CreateNamespace::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::CreateNamespace::set_namespace_name): <p>The name of the namespace.</p>
    ///   - [`admin_username(impl Into<String>)`](crate::client::fluent_builders::CreateNamespace::admin_username) / [`set_admin_username(Option<String>)`](crate::client::fluent_builders::CreateNamespace::set_admin_username): <p>The username of the administrator for the first database created in the namespace.</p>
    ///   - [`admin_user_password(impl Into<String>)`](crate::client::fluent_builders::CreateNamespace::admin_user_password) / [`set_admin_user_password(Option<String>)`](crate::client::fluent_builders::CreateNamespace::set_admin_user_password): <p>The password of the administrator for the first database created in the namespace.</p>
    ///   - [`db_name(impl Into<String>)`](crate::client::fluent_builders::CreateNamespace::db_name) / [`set_db_name(Option<String>)`](crate::client::fluent_builders::CreateNamespace::set_db_name): <p>The name of the first database created in the namespace.</p>
    ///   - [`kms_key_id(impl Into<String>)`](crate::client::fluent_builders::CreateNamespace::kms_key_id) / [`set_kms_key_id(Option<String>)`](crate::client::fluent_builders::CreateNamespace::set_kms_key_id): <p>The ID of the Amazon Web Services Key Management Service key used to encrypt your data.</p>
    ///   - [`default_iam_role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateNamespace::default_iam_role_arn) / [`set_default_iam_role_arn(Option<String>)`](crate::client::fluent_builders::CreateNamespace::set_default_iam_role_arn): <p>The Amazon Resource Name (ARN) of the IAM role to set as a default in the namespace.</p>
    ///   - [`iam_roles(Vec<String>)`](crate::client::fluent_builders::CreateNamespace::iam_roles) / [`set_iam_roles(Option<Vec<String>>)`](crate::client::fluent_builders::CreateNamespace::set_iam_roles): <p>A list of IAM roles to associate with the namespace.</p>
    ///   - [`log_exports(Vec<LogExport>)`](crate::client::fluent_builders::CreateNamespace::log_exports) / [`set_log_exports(Option<Vec<LogExport>>)`](crate::client::fluent_builders::CreateNamespace::set_log_exports): <p>The types of logs the namespace can export. Available export types are <code>userlog</code>, <code>connectionlog</code>, and <code>useractivitylog</code>.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateNamespace::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateNamespace::set_tags): <p>A list of tag instances.</p>
    /// - On success, responds with [`CreateNamespaceOutput`](crate::output::CreateNamespaceOutput) with field(s):
    ///   - [`namespace(Option<Namespace>)`](crate::output::CreateNamespaceOutput::namespace): <p>The created namespace object.</p>
    /// - On failure, responds with [`SdkError<CreateNamespaceError>`](crate::error::CreateNamespaceError)
    pub fn create_namespace(&self) -> fluent_builders::CreateNamespace {
        fluent_builders::CreateNamespace::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateSnapshot`](crate::client::fluent_builders::CreateSnapshot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::CreateSnapshot::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::CreateSnapshot::set_namespace_name): <p>The namespace to create a snapshot for.</p>
    ///   - [`snapshot_name(impl Into<String>)`](crate::client::fluent_builders::CreateSnapshot::snapshot_name) / [`set_snapshot_name(Option<String>)`](crate::client::fluent_builders::CreateSnapshot::set_snapshot_name): <p>The name of the snapshot.</p>
    ///   - [`retention_period(i32)`](crate::client::fluent_builders::CreateSnapshot::retention_period) / [`set_retention_period(Option<i32>)`](crate::client::fluent_builders::CreateSnapshot::set_retention_period): <p>How long to retain the created snapshot.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateSnapshot::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateSnapshot::set_tags): <p>An array of <a href="https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Tag.html">Tag objects</a> to associate with the snapshot.</p>
    /// - On success, responds with [`CreateSnapshotOutput`](crate::output::CreateSnapshotOutput) with field(s):
    ///   - [`snapshot(Option<Snapshot>)`](crate::output::CreateSnapshotOutput::snapshot): <p>The created snapshot object.</p>
    /// - On failure, responds with [`SdkError<CreateSnapshotError>`](crate::error::CreateSnapshotError)
    pub fn create_snapshot(&self) -> fluent_builders::CreateSnapshot {
        fluent_builders::CreateSnapshot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateUsageLimit`](crate::client::fluent_builders::CreateUsageLimit) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::CreateUsageLimit::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::CreateUsageLimit::set_resource_arn): <p>The Amazon Resource Name (ARN) of the Amazon Redshift Serverless resource to create the usage limit for.</p>
    ///   - [`usage_type(UsageLimitUsageType)`](crate::client::fluent_builders::CreateUsageLimit::usage_type) / [`set_usage_type(Option<UsageLimitUsageType>)`](crate::client::fluent_builders::CreateUsageLimit::set_usage_type): <p>The type of Amazon Redshift Serverless usage to create a usage limit for.</p>
    ///   - [`amount(i64)`](crate::client::fluent_builders::CreateUsageLimit::amount) / [`set_amount(Option<i64>)`](crate::client::fluent_builders::CreateUsageLimit::set_amount): <p>The limit amount. If time-based, this amount is in Redshift Processing Units (RPU) consumed per hour. If data-based, this amount is in terabytes (TB) of data transferred between Regions in cross-account sharing. The value must be a positive number.</p>
    ///   - [`period(UsageLimitPeriod)`](crate::client::fluent_builders::CreateUsageLimit::period) / [`set_period(Option<UsageLimitPeriod>)`](crate::client::fluent_builders::CreateUsageLimit::set_period): <p>The time period that the amount applies to. A weekly period begins on Sunday. The default is monthly.</p>
    ///   - [`breach_action(UsageLimitBreachAction)`](crate::client::fluent_builders::CreateUsageLimit::breach_action) / [`set_breach_action(Option<UsageLimitBreachAction>)`](crate::client::fluent_builders::CreateUsageLimit::set_breach_action): <p>The action that Amazon Redshift Serverless takes when the limit is reached. The default is log.</p>
    /// - On success, responds with [`CreateUsageLimitOutput`](crate::output::CreateUsageLimitOutput) with field(s):
    ///   - [`usage_limit(Option<UsageLimit>)`](crate::output::CreateUsageLimitOutput::usage_limit): <p>The returned usage limit object.</p>
    /// - On failure, responds with [`SdkError<CreateUsageLimitError>`](crate::error::CreateUsageLimitError)
    pub fn create_usage_limit(&self) -> fluent_builders::CreateUsageLimit {
        fluent_builders::CreateUsageLimit::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateWorkgroup`](crate::client::fluent_builders::CreateWorkgroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::CreateWorkgroup::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::CreateWorkgroup::set_workgroup_name): <p>The name of the created workgroup.</p>
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::CreateWorkgroup::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::CreateWorkgroup::set_namespace_name): <p>The name of the namespace to associate with the workgroup.</p>
    ///   - [`base_capacity(i32)`](crate::client::fluent_builders::CreateWorkgroup::base_capacity) / [`set_base_capacity(Option<i32>)`](crate::client::fluent_builders::CreateWorkgroup::set_base_capacity): <p>The base data warehouse capacity of the workgroup in Redshift Processing Units (RPUs).</p>
    ///   - [`enhanced_vpc_routing(bool)`](crate::client::fluent_builders::CreateWorkgroup::enhanced_vpc_routing) / [`set_enhanced_vpc_routing(Option<bool>)`](crate::client::fluent_builders::CreateWorkgroup::set_enhanced_vpc_routing): <p>The value that specifies whether to turn on enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC instead of over the internet.</p>
    ///   - [`config_parameters(Vec<ConfigParameter>)`](crate::client::fluent_builders::CreateWorkgroup::config_parameters) / [`set_config_parameters(Option<Vec<ConfigParameter>>)`](crate::client::fluent_builders::CreateWorkgroup::set_config_parameters): <p>An array of parameters to set for more control over a serverless database. The options are <code>datestyle</code>, <code>enable_user_activity_logging</code>, <code>query_group</code>, <code>search_path</code>, and <code>max_query_execution_time</code>.</p>
    ///   - [`security_group_ids(Vec<String>)`](crate::client::fluent_builders::CreateWorkgroup::security_group_ids) / [`set_security_group_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateWorkgroup::set_security_group_ids): <p>An array of security group IDs to associate with the workgroup.</p>
    ///   - [`subnet_ids(Vec<String>)`](crate::client::fluent_builders::CreateWorkgroup::subnet_ids) / [`set_subnet_ids(Option<Vec<String>>)`](crate::client::fluent_builders::CreateWorkgroup::set_subnet_ids): <p>An array of VPC subnet IDs to associate with the workgroup.</p>
    ///   - [`publicly_accessible(bool)`](crate::client::fluent_builders::CreateWorkgroup::publicly_accessible) / [`set_publicly_accessible(Option<bool>)`](crate::client::fluent_builders::CreateWorkgroup::set_publicly_accessible): <p>A value that specifies whether the workgroup can be accessed from a public network.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateWorkgroup::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateWorkgroup::set_tags): <p>A array of tag instances.</p>
    ///   - [`port(i32)`](crate::client::fluent_builders::CreateWorkgroup::port) / [`set_port(Option<i32>)`](crate::client::fluent_builders::CreateWorkgroup::set_port): <p>The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.</p>
    /// - On success, responds with [`CreateWorkgroupOutput`](crate::output::CreateWorkgroupOutput) with field(s):
    ///   - [`workgroup(Option<Workgroup>)`](crate::output::CreateWorkgroupOutput::workgroup): <p>The created workgroup object.</p>
    /// - On failure, responds with [`SdkError<CreateWorkgroupError>`](crate::error::CreateWorkgroupError)
    pub fn create_workgroup(&self) -> fluent_builders::CreateWorkgroup {
        fluent_builders::CreateWorkgroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteEndpointAccess`](crate::client::fluent_builders::DeleteEndpointAccess) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`endpoint_name(impl Into<String>)`](crate::client::fluent_builders::DeleteEndpointAccess::endpoint_name) / [`set_endpoint_name(Option<String>)`](crate::client::fluent_builders::DeleteEndpointAccess::set_endpoint_name): <p>The name of the VPC endpoint to delete.</p>
    /// - On success, responds with [`DeleteEndpointAccessOutput`](crate::output::DeleteEndpointAccessOutput) with field(s):
    ///   - [`endpoint(Option<EndpointAccess>)`](crate::output::DeleteEndpointAccessOutput::endpoint): <p>The deleted VPC endpoint.</p>
    /// - On failure, responds with [`SdkError<DeleteEndpointAccessError>`](crate::error::DeleteEndpointAccessError)
    pub fn delete_endpoint_access(&self) -> fluent_builders::DeleteEndpointAccess {
        fluent_builders::DeleteEndpointAccess::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteNamespace`](crate::client::fluent_builders::DeleteNamespace) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::DeleteNamespace::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::DeleteNamespace::set_namespace_name): <p>The name of the namespace to delete.</p>
    ///   - [`final_snapshot_name(impl Into<String>)`](crate::client::fluent_builders::DeleteNamespace::final_snapshot_name) / [`set_final_snapshot_name(Option<String>)`](crate::client::fluent_builders::DeleteNamespace::set_final_snapshot_name): <p>The name of the snapshot to be created before the namespace is deleted.</p>
    ///   - [`final_snapshot_retention_period(i32)`](crate::client::fluent_builders::DeleteNamespace::final_snapshot_retention_period) / [`set_final_snapshot_retention_period(Option<i32>)`](crate::client::fluent_builders::DeleteNamespace::set_final_snapshot_retention_period): <p>How long to retain the final snapshot.</p>
    /// - On success, responds with [`DeleteNamespaceOutput`](crate::output::DeleteNamespaceOutput) with field(s):
    ///   - [`namespace(Option<Namespace>)`](crate::output::DeleteNamespaceOutput::namespace): <p>The deleted namespace object.</p>
    /// - On failure, responds with [`SdkError<DeleteNamespaceError>`](crate::error::DeleteNamespaceError)
    pub fn delete_namespace(&self) -> fluent_builders::DeleteNamespace {
        fluent_builders::DeleteNamespace::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteResourcePolicy`](crate::client::fluent_builders::DeleteResourcePolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::DeleteResourcePolicy::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::DeleteResourcePolicy::set_resource_arn): <p>The Amazon Resource Name (ARN) of the policy to delete.</p>
    /// - On success, responds with [`DeleteResourcePolicyOutput`](crate::output::DeleteResourcePolicyOutput)

    /// - On failure, responds with [`SdkError<DeleteResourcePolicyError>`](crate::error::DeleteResourcePolicyError)
    pub fn delete_resource_policy(&self) -> fluent_builders::DeleteResourcePolicy {
        fluent_builders::DeleteResourcePolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteSnapshot`](crate::client::fluent_builders::DeleteSnapshot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`snapshot_name(impl Into<String>)`](crate::client::fluent_builders::DeleteSnapshot::snapshot_name) / [`set_snapshot_name(Option<String>)`](crate::client::fluent_builders::DeleteSnapshot::set_snapshot_name): <p>The name of the snapshot to be deleted.</p>
    /// - On success, responds with [`DeleteSnapshotOutput`](crate::output::DeleteSnapshotOutput) with field(s):
    ///   - [`snapshot(Option<Snapshot>)`](crate::output::DeleteSnapshotOutput::snapshot): <p>The deleted snapshot object.</p>
    /// - On failure, responds with [`SdkError<DeleteSnapshotError>`](crate::error::DeleteSnapshotError)
    pub fn delete_snapshot(&self) -> fluent_builders::DeleteSnapshot {
        fluent_builders::DeleteSnapshot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteUsageLimit`](crate::client::fluent_builders::DeleteUsageLimit) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`usage_limit_id(impl Into<String>)`](crate::client::fluent_builders::DeleteUsageLimit::usage_limit_id) / [`set_usage_limit_id(Option<String>)`](crate::client::fluent_builders::DeleteUsageLimit::set_usage_limit_id): <p>The unique identifier of the usage limit to delete.</p>
    /// - On success, responds with [`DeleteUsageLimitOutput`](crate::output::DeleteUsageLimitOutput) with field(s):
    ///   - [`usage_limit(Option<UsageLimit>)`](crate::output::DeleteUsageLimitOutput::usage_limit): <p>The deleted usage limit object.</p>
    /// - On failure, responds with [`SdkError<DeleteUsageLimitError>`](crate::error::DeleteUsageLimitError)
    pub fn delete_usage_limit(&self) -> fluent_builders::DeleteUsageLimit {
        fluent_builders::DeleteUsageLimit::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteWorkgroup`](crate::client::fluent_builders::DeleteWorkgroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::DeleteWorkgroup::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::DeleteWorkgroup::set_workgroup_name): <p>The name of the workgroup to be deleted.</p>
    /// - On success, responds with [`DeleteWorkgroupOutput`](crate::output::DeleteWorkgroupOutput) with field(s):
    ///   - [`workgroup(Option<Workgroup>)`](crate::output::DeleteWorkgroupOutput::workgroup): <p>The deleted workgroup object.</p>
    /// - On failure, responds with [`SdkError<DeleteWorkgroupError>`](crate::error::DeleteWorkgroupError)
    pub fn delete_workgroup(&self) -> fluent_builders::DeleteWorkgroup {
        fluent_builders::DeleteWorkgroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetCredentials`](crate::client::fluent_builders::GetCredentials) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::GetCredentials::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::GetCredentials::set_workgroup_name): <p>The name of the workgroup associated with the database.</p>
    ///   - [`db_name(impl Into<String>)`](crate::client::fluent_builders::GetCredentials::db_name) / [`set_db_name(Option<String>)`](crate::client::fluent_builders::GetCredentials::set_db_name): <p>The name of the database to get temporary authorization to log on to.</p>  <p>Constraints:</p>  <ul>   <li> <p>Must be 1 to 64 alphanumeric characters or hyphens.</p> </li>   <li> <p>Must contain only uppercase or lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p> </li>   <li> <p>The first character must be a letter.</p> </li>   <li> <p>Must not contain a colon ( : ) or slash ( / ).</p> </li>   <li> <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words </a> in the Amazon Redshift Database Developer Guide</p> </li>  </ul>
    ///   - [`duration_seconds(i32)`](crate::client::fluent_builders::GetCredentials::duration_seconds) / [`set_duration_seconds(Option<i32>)`](crate::client::fluent_builders::GetCredentials::set_duration_seconds): <p>The number of seconds until the returned temporary password expires. The minimum is 900 seconds, and the maximum is 3600 seconds.</p>
    /// - On success, responds with [`GetCredentialsOutput`](crate::output::GetCredentialsOutput) with field(s):
    ///   - [`db_user(Option<String>)`](crate::output::GetCredentialsOutput::db_user): <p>A database user name that is authorized to log on to the database <code>DbName</code> using the password <code>DbPassword</code>. If the specified <code>DbUser</code> exists in the database, the new user name has the same database privileges as the the user named in <code>DbUser</code>. By default, the user is added to PUBLIC.</p>
    ///   - [`db_password(Option<String>)`](crate::output::GetCredentialsOutput::db_password): <p>A temporary password that authorizes the user name returned by <code>DbUser</code> to log on to the database <code>DbName</code>.</p>
    ///   - [`expiration(Option<DateTime>)`](crate::output::GetCredentialsOutput::expiration): <p>The date and time the password in <code>DbPassword</code> expires.</p>
    ///   - [`next_refresh_time(Option<DateTime>)`](crate::output::GetCredentialsOutput::next_refresh_time): <p>The date and time of when the <code>DbUser</code> and <code>DbPassword</code> authorization refreshes.</p>
    /// - On failure, responds with [`SdkError<GetCredentialsError>`](crate::error::GetCredentialsError)
    pub fn get_credentials(&self) -> fluent_builders::GetCredentials {
        fluent_builders::GetCredentials::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetEndpointAccess`](crate::client::fluent_builders::GetEndpointAccess) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`endpoint_name(impl Into<String>)`](crate::client::fluent_builders::GetEndpointAccess::endpoint_name) / [`set_endpoint_name(Option<String>)`](crate::client::fluent_builders::GetEndpointAccess::set_endpoint_name): <p>The name of the VPC endpoint to return information for.</p>
    /// - On success, responds with [`GetEndpointAccessOutput`](crate::output::GetEndpointAccessOutput) with field(s):
    ///   - [`endpoint(Option<EndpointAccess>)`](crate::output::GetEndpointAccessOutput::endpoint): <p>The returned VPC endpoint.</p>
    /// - On failure, responds with [`SdkError<GetEndpointAccessError>`](crate::error::GetEndpointAccessError)
    pub fn get_endpoint_access(&self) -> fluent_builders::GetEndpointAccess {
        fluent_builders::GetEndpointAccess::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetNamespace`](crate::client::fluent_builders::GetNamespace) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::GetNamespace::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::GetNamespace::set_namespace_name): <p>The name of the namespace to retrieve information for.</p>
    /// - On success, responds with [`GetNamespaceOutput`](crate::output::GetNamespaceOutput) with field(s):
    ///   - [`namespace(Option<Namespace>)`](crate::output::GetNamespaceOutput::namespace): <p>The returned namespace object.</p>
    /// - On failure, responds with [`SdkError<GetNamespaceError>`](crate::error::GetNamespaceError)
    pub fn get_namespace(&self) -> fluent_builders::GetNamespace {
        fluent_builders::GetNamespace::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetRecoveryPoint`](crate::client::fluent_builders::GetRecoveryPoint) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recovery_point_id(impl Into<String>)`](crate::client::fluent_builders::GetRecoveryPoint::recovery_point_id) / [`set_recovery_point_id(Option<String>)`](crate::client::fluent_builders::GetRecoveryPoint::set_recovery_point_id): <p>The unique identifier of the recovery point to return information for.</p>
    /// - On success, responds with [`GetRecoveryPointOutput`](crate::output::GetRecoveryPointOutput) with field(s):
    ///   - [`recovery_point(Option<RecoveryPoint>)`](crate::output::GetRecoveryPointOutput::recovery_point): <p>The returned recovery point object.</p>
    /// - On failure, responds with [`SdkError<GetRecoveryPointError>`](crate::error::GetRecoveryPointError)
    pub fn get_recovery_point(&self) -> fluent_builders::GetRecoveryPoint {
        fluent_builders::GetRecoveryPoint::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetResourcePolicy`](crate::client::fluent_builders::GetResourcePolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::GetResourcePolicy::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::GetResourcePolicy::set_resource_arn): <p>The Amazon Resource Name (ARN) of the resource to return.</p>
    /// - On success, responds with [`GetResourcePolicyOutput`](crate::output::GetResourcePolicyOutput) with field(s):
    ///   - [`resource_policy(Option<ResourcePolicy>)`](crate::output::GetResourcePolicyOutput::resource_policy): <p>The returned resource policy.</p>
    /// - On failure, responds with [`SdkError<GetResourcePolicyError>`](crate::error::GetResourcePolicyError)
    pub fn get_resource_policy(&self) -> fluent_builders::GetResourcePolicy {
        fluent_builders::GetResourcePolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetSnapshot`](crate::client::fluent_builders::GetSnapshot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`snapshot_name(impl Into<String>)`](crate::client::fluent_builders::GetSnapshot::snapshot_name) / [`set_snapshot_name(Option<String>)`](crate::client::fluent_builders::GetSnapshot::set_snapshot_name): <p>The name of the snapshot to return.</p>
    ///   - [`owner_account(impl Into<String>)`](crate::client::fluent_builders::GetSnapshot::owner_account) / [`set_owner_account(Option<String>)`](crate::client::fluent_builders::GetSnapshot::set_owner_account): <p>The owner Amazon Web Services account of a snapshot shared with another user.</p>
    ///   - [`snapshot_arn(impl Into<String>)`](crate::client::fluent_builders::GetSnapshot::snapshot_arn) / [`set_snapshot_arn(Option<String>)`](crate::client::fluent_builders::GetSnapshot::set_snapshot_arn): <p>The Amazon Resource Name (ARN) of the snapshot to return.</p>
    /// - On success, responds with [`GetSnapshotOutput`](crate::output::GetSnapshotOutput) with field(s):
    ///   - [`snapshot(Option<Snapshot>)`](crate::output::GetSnapshotOutput::snapshot): <p>The returned snapshot object.</p>
    /// - On failure, responds with [`SdkError<GetSnapshotError>`](crate::error::GetSnapshotError)
    pub fn get_snapshot(&self) -> fluent_builders::GetSnapshot {
        fluent_builders::GetSnapshot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetTableRestoreStatus`](crate::client::fluent_builders::GetTableRestoreStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`table_restore_request_id(impl Into<String>)`](crate::client::fluent_builders::GetTableRestoreStatus::table_restore_request_id) / [`set_table_restore_request_id(Option<String>)`](crate::client::fluent_builders::GetTableRestoreStatus::set_table_restore_request_id): <p>The ID of the <code>RestoreTableFromSnapshot</code> request to return status for.</p>
    /// - On success, responds with [`GetTableRestoreStatusOutput`](crate::output::GetTableRestoreStatusOutput) with field(s):
    ///   - [`table_restore_status(Option<TableRestoreStatus>)`](crate::output::GetTableRestoreStatusOutput::table_restore_status): <p>The returned <code>TableRestoreStatus</code> object that contains information about the status of your <code>RestoreTableFromSnapshot</code> request.</p>
    /// - On failure, responds with [`SdkError<GetTableRestoreStatusError>`](crate::error::GetTableRestoreStatusError)
    pub fn get_table_restore_status(&self) -> fluent_builders::GetTableRestoreStatus {
        fluent_builders::GetTableRestoreStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetUsageLimit`](crate::client::fluent_builders::GetUsageLimit) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`usage_limit_id(impl Into<String>)`](crate::client::fluent_builders::GetUsageLimit::usage_limit_id) / [`set_usage_limit_id(Option<String>)`](crate::client::fluent_builders::GetUsageLimit::set_usage_limit_id): <p>The unique identifier of the usage limit to return information for.</p>
    /// - On success, responds with [`GetUsageLimitOutput`](crate::output::GetUsageLimitOutput) with field(s):
    ///   - [`usage_limit(Option<UsageLimit>)`](crate::output::GetUsageLimitOutput::usage_limit): <p>The returned usage limit object.</p>
    /// - On failure, responds with [`SdkError<GetUsageLimitError>`](crate::error::GetUsageLimitError)
    pub fn get_usage_limit(&self) -> fluent_builders::GetUsageLimit {
        fluent_builders::GetUsageLimit::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetWorkgroup`](crate::client::fluent_builders::GetWorkgroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::GetWorkgroup::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::GetWorkgroup::set_workgroup_name): <p>The name of the workgroup to return information for.</p>
    /// - On success, responds with [`GetWorkgroupOutput`](crate::output::GetWorkgroupOutput) with field(s):
    ///   - [`workgroup(Option<Workgroup>)`](crate::output::GetWorkgroupOutput::workgroup): <p>The returned workgroup object.</p>
    /// - On failure, responds with [`SdkError<GetWorkgroupError>`](crate::error::GetWorkgroupError)
    pub fn get_workgroup(&self) -> fluent_builders::GetWorkgroup {
        fluent_builders::GetWorkgroup::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEndpointAccess`](crate::client::fluent_builders::ListEndpointAccess) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEndpointAccess::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEndpointAccess::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEndpointAccess::set_next_token): <p>If your initial <code>ListEndpointAccess</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListEndpointAccess</code> operations, which returns results in the next page.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEndpointAccess::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEndpointAccess::set_max_results): <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::ListEndpointAccess::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::ListEndpointAccess::set_workgroup_name): <p>The name of the workgroup associated with the VPC endpoint to return.</p>
    ///   - [`vpc_id(impl Into<String>)`](crate::client::fluent_builders::ListEndpointAccess::vpc_id) / [`set_vpc_id(Option<String>)`](crate::client::fluent_builders::ListEndpointAccess::set_vpc_id): <p>The unique identifier of the virtual private cloud with access to Amazon Redshift Serverless.</p>
    /// - On success, responds with [`ListEndpointAccessOutput`](crate::output::ListEndpointAccessOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListEndpointAccessOutput::next_token): <p>When <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</p>
    ///   - [`endpoints(Option<Vec<EndpointAccess>>)`](crate::output::ListEndpointAccessOutput::endpoints): <p>The returned VPC endpoints.</p>
    /// - On failure, responds with [`SdkError<ListEndpointAccessError>`](crate::error::ListEndpointAccessError)
    pub fn list_endpoint_access(&self) -> fluent_builders::ListEndpointAccess {
        fluent_builders::ListEndpointAccess::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListNamespaces`](crate::client::fluent_builders::ListNamespaces) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListNamespaces::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListNamespaces::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListNamespaces::set_next_token): <p>If your initial <code>ListNamespaces</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListNamespaces</code> operations, which returns results in the next page.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListNamespaces::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListNamespaces::set_max_results): <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
    /// - On success, responds with [`ListNamespacesOutput`](crate::output::ListNamespacesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListNamespacesOutput::next_token): <p>When <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</p>
    ///   - [`namespaces(Option<Vec<Namespace>>)`](crate::output::ListNamespacesOutput::namespaces): <p>The list of returned namespaces.</p>
    /// - On failure, responds with [`SdkError<ListNamespacesError>`](crate::error::ListNamespacesError)
    pub fn list_namespaces(&self) -> fluent_builders::ListNamespaces {
        fluent_builders::ListNamespaces::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRecoveryPoints`](crate::client::fluent_builders::ListRecoveryPoints) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRecoveryPoints::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRecoveryPoints::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRecoveryPoints::set_next_token): <p>If your initial <code>ListRecoveryPoints</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListRecoveryPoints</code> operations, which returns results in the next page.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRecoveryPoints::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRecoveryPoints::set_max_results): <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
    ///   - [`start_time(DateTime)`](crate::client::fluent_builders::ListRecoveryPoints::start_time) / [`set_start_time(Option<DateTime>)`](crate::client::fluent_builders::ListRecoveryPoints::set_start_time): <p>The time when the recovery point's creation was initiated.</p>
    ///   - [`end_time(DateTime)`](crate::client::fluent_builders::ListRecoveryPoints::end_time) / [`set_end_time(Option<DateTime>)`](crate::client::fluent_builders::ListRecoveryPoints::set_end_time): <p>The time when creation of the recovery point finished.</p>
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::ListRecoveryPoints::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::ListRecoveryPoints::set_namespace_name): <p>The name of the namespace to list recovery points for.</p>
    ///   - [`namespace_arn(impl Into<String>)`](crate::client::fluent_builders::ListRecoveryPoints::namespace_arn) / [`set_namespace_arn(Option<String>)`](crate::client::fluent_builders::ListRecoveryPoints::set_namespace_arn): <p>The Amazon Resource Name (ARN) of the namespace from which to list recovery points.</p>
    /// - On success, responds with [`ListRecoveryPointsOutput`](crate::output::ListRecoveryPointsOutput) with field(s):
    ///   - [`recovery_points(Option<Vec<RecoveryPoint>>)`](crate::output::ListRecoveryPointsOutput::recovery_points): <p>The returned recovery point objects.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListRecoveryPointsOutput::next_token): <p>If <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</p>
    /// - On failure, responds with [`SdkError<ListRecoveryPointsError>`](crate::error::ListRecoveryPointsError)
    pub fn list_recovery_points(&self) -> fluent_builders::ListRecoveryPoints {
        fluent_builders::ListRecoveryPoints::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListSnapshots`](crate::client::fluent_builders::ListSnapshots) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListSnapshots::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListSnapshots::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListSnapshots::set_next_token): <p>If <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListSnapshots::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListSnapshots::set_max_results): <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::ListSnapshots::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::ListSnapshots::set_namespace_name): <p>The namespace from which to list all snapshots.</p>
    ///   - [`namespace_arn(impl Into<String>)`](crate::client::fluent_builders::ListSnapshots::namespace_arn) / [`set_namespace_arn(Option<String>)`](crate::client::fluent_builders::ListSnapshots::set_namespace_arn): <p>The Amazon Resource Name (ARN) of the namespace from which to list all snapshots.</p>
    ///   - [`owner_account(impl Into<String>)`](crate::client::fluent_builders::ListSnapshots::owner_account) / [`set_owner_account(Option<String>)`](crate::client::fluent_builders::ListSnapshots::set_owner_account): <p>The owner Amazon Web Services account of the snapshot.</p>
    ///   - [`start_time(DateTime)`](crate::client::fluent_builders::ListSnapshots::start_time) / [`set_start_time(Option<DateTime>)`](crate::client::fluent_builders::ListSnapshots::set_start_time): <p>The time when the creation of the snapshot was initiated.</p>
    ///   - [`end_time(DateTime)`](crate::client::fluent_builders::ListSnapshots::end_time) / [`set_end_time(Option<DateTime>)`](crate::client::fluent_builders::ListSnapshots::set_end_time): <p>The timestamp showing when the snapshot creation finished.</p>
    /// - On success, responds with [`ListSnapshotsOutput`](crate::output::ListSnapshotsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListSnapshotsOutput::next_token): <p>If <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</p>
    ///   - [`snapshots(Option<Vec<Snapshot>>)`](crate::output::ListSnapshotsOutput::snapshots): <p>All of the returned snapshot objects.</p>
    /// - On failure, responds with [`SdkError<ListSnapshotsError>`](crate::error::ListSnapshotsError)
    pub fn list_snapshots(&self) -> fluent_builders::ListSnapshots {
        fluent_builders::ListSnapshots::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTableRestoreStatus`](crate::client::fluent_builders::ListTableRestoreStatus) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListTableRestoreStatus::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListTableRestoreStatus::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListTableRestoreStatus::set_next_token): <p>If your initial <code>ListTableRestoreStatus</code> operation returns a nextToken, you can include the returned <code>nextToken</code> in following <code>ListTableRestoreStatus</code> operations. This will return results on the next page.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListTableRestoreStatus::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListTableRestoreStatus::set_max_results): <p>An optional parameter that specifies the maximum number of results to return. You can use nextToken to display the next page of results.</p>
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::ListTableRestoreStatus::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::ListTableRestoreStatus::set_namespace_name): <p>The namespace from which to list all of the statuses of <code>RestoreTableFromSnapshot</code> operations .</p>
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::ListTableRestoreStatus::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::ListTableRestoreStatus::set_workgroup_name): <p>The workgroup from which to list all of the statuses of <code>RestoreTableFromSnapshot</code> operations.</p>
    /// - On success, responds with [`ListTableRestoreStatusOutput`](crate::output::ListTableRestoreStatusOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListTableRestoreStatusOutput::next_token): <p>If your initial <code>ListTableRestoreStatus</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListTableRestoreStatus</code> operations. This will returns results on the next page.</p>
    ///   - [`table_restore_statuses(Option<Vec<TableRestoreStatus>>)`](crate::output::ListTableRestoreStatusOutput::table_restore_statuses): <p>The array of returned <code>TableRestoreStatus</code> objects.</p>
    /// - On failure, responds with [`SdkError<ListTableRestoreStatusError>`](crate::error::ListTableRestoreStatusError)
    pub fn list_table_restore_status(&self) -> fluent_builders::ListTableRestoreStatus {
        fluent_builders::ListTableRestoreStatus::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 to list tags for.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<Vec<Tag>>)`](crate::output::ListTagsForResourceOutput::tags): <p>A map of the key-value pairs assigned to 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 [`ListUsageLimits`](crate::client::fluent_builders::ListUsageLimits) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListUsageLimits::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::ListUsageLimits::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::ListUsageLimits::set_resource_arn): <p>The Amazon Resource Name (ARN) associated with the resource whose usage limits you want to list.</p>
    ///   - [`usage_type(UsageLimitUsageType)`](crate::client::fluent_builders::ListUsageLimits::usage_type) / [`set_usage_type(Option<UsageLimitUsageType>)`](crate::client::fluent_builders::ListUsageLimits::set_usage_type): <p>The Amazon Redshift Serverless feature whose limits you want to see.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListUsageLimits::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListUsageLimits::set_next_token): <p>If your initial <code>ListUsageLimits</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListUsageLimits</code> operations, which returns results in the next page. </p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListUsageLimits::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListUsageLimits::set_max_results): <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to get the next page of results. The default is 100.</p>
    /// - On success, responds with [`ListUsageLimitsOutput`](crate::output::ListUsageLimitsOutput) with field(s):
    ///   - [`usage_limits(Option<Vec<UsageLimit>>)`](crate::output::ListUsageLimitsOutput::usage_limits): <p>An array of returned usage limit objects.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListUsageLimitsOutput::next_token): <p>When <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</p>
    /// - On failure, responds with [`SdkError<ListUsageLimitsError>`](crate::error::ListUsageLimitsError)
    pub fn list_usage_limits(&self) -> fluent_builders::ListUsageLimits {
        fluent_builders::ListUsageLimits::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListWorkgroups`](crate::client::fluent_builders::ListWorkgroups) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListWorkgroups::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListWorkgroups::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListWorkgroups::set_next_token): <p>If your initial ListWorkgroups operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following ListNamespaces operations, which returns results in the next page.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListWorkgroups::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListWorkgroups::set_max_results): <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
    /// - On success, responds with [`ListWorkgroupsOutput`](crate::output::ListWorkgroupsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListWorkgroupsOutput::next_token): <p> If <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. To retrieve the next page, make the call again using the returned token.</p>
    ///   - [`workgroups(Option<Vec<Workgroup>>)`](crate::output::ListWorkgroupsOutput::workgroups): <p>The returned array of workgroups.</p>
    /// - On failure, responds with [`SdkError<ListWorkgroupsError>`](crate::error::ListWorkgroupsError)
    pub fn list_workgroups(&self) -> fluent_builders::ListWorkgroups {
        fluent_builders::ListWorkgroups::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`PutResourcePolicy`](crate::client::fluent_builders::PutResourcePolicy) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::PutResourcePolicy::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::PutResourcePolicy::set_resource_arn): <p>The Amazon Resource Name (ARN) of the account to create or update a resource policy for.</p>
    ///   - [`policy(impl Into<String>)`](crate::client::fluent_builders::PutResourcePolicy::policy) / [`set_policy(Option<String>)`](crate::client::fluent_builders::PutResourcePolicy::set_policy): <p>The policy to create or update. For example, the following policy grants a user authorization to restore a snapshot.</p>  <p> <code>"{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\"739247239426\"]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}"</code> </p>
    /// - On success, responds with [`PutResourcePolicyOutput`](crate::output::PutResourcePolicyOutput) with field(s):
    ///   - [`resource_policy(Option<ResourcePolicy>)`](crate::output::PutResourcePolicyOutput::resource_policy): <p>The policy that was created or updated.</p>
    /// - On failure, responds with [`SdkError<PutResourcePolicyError>`](crate::error::PutResourcePolicyError)
    pub fn put_resource_policy(&self) -> fluent_builders::PutResourcePolicy {
        fluent_builders::PutResourcePolicy::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`RestoreFromRecoveryPoint`](crate::client::fluent_builders::RestoreFromRecoveryPoint) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`recovery_point_id(impl Into<String>)`](crate::client::fluent_builders::RestoreFromRecoveryPoint::recovery_point_id) / [`set_recovery_point_id(Option<String>)`](crate::client::fluent_builders::RestoreFromRecoveryPoint::set_recovery_point_id): <p>The unique identifier of the recovery point to restore from.</p>
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::RestoreFromRecoveryPoint::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::RestoreFromRecoveryPoint::set_namespace_name): <p>The name of the namespace to restore data into.</p>
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::RestoreFromRecoveryPoint::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::RestoreFromRecoveryPoint::set_workgroup_name): <p>The name of the workgroup used to restore data.</p>
    /// - On success, responds with [`RestoreFromRecoveryPointOutput`](crate::output::RestoreFromRecoveryPointOutput) with field(s):
    ///   - [`recovery_point_id(Option<String>)`](crate::output::RestoreFromRecoveryPointOutput::recovery_point_id): <p>The unique identifier of the recovery point used for the restore.</p>
    ///   - [`namespace(Option<Namespace>)`](crate::output::RestoreFromRecoveryPointOutput::namespace): <p>The namespace that data was restored into.</p>
    /// - On failure, responds with [`SdkError<RestoreFromRecoveryPointError>`](crate::error::RestoreFromRecoveryPointError)
    pub fn restore_from_recovery_point(&self) -> fluent_builders::RestoreFromRecoveryPoint {
        fluent_builders::RestoreFromRecoveryPoint::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`RestoreFromSnapshot`](crate::client::fluent_builders::RestoreFromSnapshot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::set_namespace_name): <p>The name of the namespace to restore the snapshot to.</p>
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::set_workgroup_name): <p>The name of the workgroup used to restore the snapshot.</p>
    ///   - [`snapshot_name(impl Into<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::snapshot_name) / [`set_snapshot_name(Option<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::set_snapshot_name): <p>The name of the snapshot to restore from. Must not be specified at the same time as <code>snapshotArn</code>.</p>
    ///   - [`snapshot_arn(impl Into<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::snapshot_arn) / [`set_snapshot_arn(Option<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::set_snapshot_arn): <p>The Amazon Resource Name (ARN) of the snapshot to restore from. Required if restoring from Amazon Redshift Serverless to a provisioned cluster. Must not be specified at the same time as <code>snapshotName</code>.</p>  <p>The format of the ARN is arn:aws:redshift:&lt;region&gt;:&lt;account_id&gt;:snapshot:&lt;cluster_identifier&gt;/&lt;snapshot_identifier&gt;.</p>
    ///   - [`owner_account(impl Into<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::owner_account) / [`set_owner_account(Option<String>)`](crate::client::fluent_builders::RestoreFromSnapshot::set_owner_account): <p>The Amazon Web Services account that owns the snapshot.</p>
    /// - On success, responds with [`RestoreFromSnapshotOutput`](crate::output::RestoreFromSnapshotOutput) with field(s):
    ///   - [`snapshot_name(Option<String>)`](crate::output::RestoreFromSnapshotOutput::snapshot_name): <p>The name of the snapshot used to restore the namespace.</p>
    ///   - [`owner_account(Option<String>)`](crate::output::RestoreFromSnapshotOutput::owner_account): <p>The owner Amazon Web Services; account of the snapshot that was restored.</p>
    ///   - [`namespace(Option<Namespace>)`](crate::output::RestoreFromSnapshotOutput::namespace): <p>A collection of database objects and users.</p>
    /// - On failure, responds with [`SdkError<RestoreFromSnapshotError>`](crate::error::RestoreFromSnapshotError)
    pub fn restore_from_snapshot(&self) -> fluent_builders::RestoreFromSnapshot {
        fluent_builders::RestoreFromSnapshot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`RestoreTableFromSnapshot`](crate::client::fluent_builders::RestoreTableFromSnapshot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_namespace_name): <p>The namespace of the snapshot to restore from.</p>
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_workgroup_name): <p>The workgroup to restore the table to.</p>
    ///   - [`snapshot_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::snapshot_name) / [`set_snapshot_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_snapshot_name): <p>The name of the snapshot to restore the table from.</p>
    ///   - [`source_database_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::source_database_name) / [`set_source_database_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_source_database_name): <p>The name of the source database that contains the table being restored.</p>
    ///   - [`source_schema_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::source_schema_name) / [`set_source_schema_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_source_schema_name): <p>The name of the source schema that contains the table being restored.</p>
    ///   - [`source_table_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::source_table_name) / [`set_source_table_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_source_table_name): <p>The name of the source table being restored.</p>
    ///   - [`target_database_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::target_database_name) / [`set_target_database_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_target_database_name): <p>The name of the database to restore the table to.</p>
    ///   - [`target_schema_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::target_schema_name) / [`set_target_schema_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_target_schema_name): <p>The name of the schema to restore the table to.</p>
    ///   - [`new_table_name(impl Into<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::new_table_name) / [`set_new_table_name(Option<String>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_new_table_name): <p>The name of the table to create from the restore operation.</p>
    ///   - [`activate_case_sensitive_identifier(bool)`](crate::client::fluent_builders::RestoreTableFromSnapshot::activate_case_sensitive_identifier) / [`set_activate_case_sensitive_identifier(Option<bool>)`](crate::client::fluent_builders::RestoreTableFromSnapshot::set_activate_case_sensitive_identifier): <p>Indicates whether name identifiers for database, schema, and table are case sensitive. If true, the names are case sensitive. If false, the names are not case sensitive. The default is false.</p>
    /// - On success, responds with [`RestoreTableFromSnapshotOutput`](crate::output::RestoreTableFromSnapshotOutput) with field(s):
    ///   - [`table_restore_status(Option<TableRestoreStatus>)`](crate::output::RestoreTableFromSnapshotOutput::table_restore_status): <p>The TableRestoreStatus object that contains the status of the restore operation.</p>
    /// - On failure, responds with [`SdkError<RestoreTableFromSnapshotError>`](crate::error::RestoreTableFromSnapshotError)
    pub fn restore_table_from_snapshot(&self) -> fluent_builders::RestoreTableFromSnapshot {
        fluent_builders::RestoreTableFromSnapshot::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 to tag.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::TagResource::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::TagResource::set_tags): <p>The map of the key-value pairs used to tag 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 to remove tags from.</p>
    ///   - [`tag_keys(Vec<String>)`](crate::client::fluent_builders::UntagResource::tag_keys) / [`set_tag_keys(Option<Vec<String>>)`](crate::client::fluent_builders::UntagResource::set_tag_keys): <p>The tag or set of tags to remove from the resource.</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 [`UpdateEndpointAccess`](crate::client::fluent_builders::UpdateEndpointAccess) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`endpoint_name(impl Into<String>)`](crate::client::fluent_builders::UpdateEndpointAccess::endpoint_name) / [`set_endpoint_name(Option<String>)`](crate::client::fluent_builders::UpdateEndpointAccess::set_endpoint_name): <p>The name of the VPC endpoint to update.</p>
    ///   - [`vpc_security_group_ids(Vec<String>)`](crate::client::fluent_builders::UpdateEndpointAccess::vpc_security_group_ids) / [`set_vpc_security_group_ids(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateEndpointAccess::set_vpc_security_group_ids): <p>The list of VPC security groups associated with the endpoint after the endpoint is modified.</p>
    /// - On success, responds with [`UpdateEndpointAccessOutput`](crate::output::UpdateEndpointAccessOutput) with field(s):
    ///   - [`endpoint(Option<EndpointAccess>)`](crate::output::UpdateEndpointAccessOutput::endpoint): <p>The updated VPC endpoint.</p>
    /// - On failure, responds with [`SdkError<UpdateEndpointAccessError>`](crate::error::UpdateEndpointAccessError)
    pub fn update_endpoint_access(&self) -> fluent_builders::UpdateEndpointAccess {
        fluent_builders::UpdateEndpointAccess::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateNamespace`](crate::client::fluent_builders::UpdateNamespace) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`namespace_name(impl Into<String>)`](crate::client::fluent_builders::UpdateNamespace::namespace_name) / [`set_namespace_name(Option<String>)`](crate::client::fluent_builders::UpdateNamespace::set_namespace_name): <p>The name of the namespace.</p>
    ///   - [`admin_user_password(impl Into<String>)`](crate::client::fluent_builders::UpdateNamespace::admin_user_password) / [`set_admin_user_password(Option<String>)`](crate::client::fluent_builders::UpdateNamespace::set_admin_user_password): <p>The password of the administrator for the first database created in the namespace.</p>
    ///   - [`admin_username(impl Into<String>)`](crate::client::fluent_builders::UpdateNamespace::admin_username) / [`set_admin_username(Option<String>)`](crate::client::fluent_builders::UpdateNamespace::set_admin_username): <p>The username of the administrator for the first database created in the namespace.</p>
    ///   - [`kms_key_id(impl Into<String>)`](crate::client::fluent_builders::UpdateNamespace::kms_key_id) / [`set_kms_key_id(Option<String>)`](crate::client::fluent_builders::UpdateNamespace::set_kms_key_id): <p>The ID of the Amazon Web Services Key Management Service key used to encrypt your data.</p>
    ///   - [`default_iam_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateNamespace::default_iam_role_arn) / [`set_default_iam_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateNamespace::set_default_iam_role_arn): <p>The Amazon Resource Name (ARN) of the IAM role to set as a default in the namespace.</p>
    ///   - [`iam_roles(Vec<String>)`](crate::client::fluent_builders::UpdateNamespace::iam_roles) / [`set_iam_roles(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateNamespace::set_iam_roles): <p>A list of IAM roles to associate with the namespace.</p>
    ///   - [`log_exports(Vec<LogExport>)`](crate::client::fluent_builders::UpdateNamespace::log_exports) / [`set_log_exports(Option<Vec<LogExport>>)`](crate::client::fluent_builders::UpdateNamespace::set_log_exports): <p>The types of logs the namespace can export. The export types are <code>userlog</code>, <code>connectionlog</code>, and <code>useractivitylog</code>.</p>
    /// - On success, responds with [`UpdateNamespaceOutput`](crate::output::UpdateNamespaceOutput) with field(s):
    ///   - [`namespace(Option<Namespace>)`](crate::output::UpdateNamespaceOutput::namespace): <p>A list of tag instances.</p>
    /// - On failure, responds with [`SdkError<UpdateNamespaceError>`](crate::error::UpdateNamespaceError)
    pub fn update_namespace(&self) -> fluent_builders::UpdateNamespace {
        fluent_builders::UpdateNamespace::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateSnapshot`](crate::client::fluent_builders::UpdateSnapshot) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`snapshot_name(impl Into<String>)`](crate::client::fluent_builders::UpdateSnapshot::snapshot_name) / [`set_snapshot_name(Option<String>)`](crate::client::fluent_builders::UpdateSnapshot::set_snapshot_name): <p>The name of the snapshot.</p>
    ///   - [`retention_period(i32)`](crate::client::fluent_builders::UpdateSnapshot::retention_period) / [`set_retention_period(Option<i32>)`](crate::client::fluent_builders::UpdateSnapshot::set_retention_period): <p>The new retention period of the snapshot.</p>
    /// - On success, responds with [`UpdateSnapshotOutput`](crate::output::UpdateSnapshotOutput) with field(s):
    ///   - [`snapshot(Option<Snapshot>)`](crate::output::UpdateSnapshotOutput::snapshot): <p>The updated snapshot object.</p>
    /// - On failure, responds with [`SdkError<UpdateSnapshotError>`](crate::error::UpdateSnapshotError)
    pub fn update_snapshot(&self) -> fluent_builders::UpdateSnapshot {
        fluent_builders::UpdateSnapshot::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateUsageLimit`](crate::client::fluent_builders::UpdateUsageLimit) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`usage_limit_id(impl Into<String>)`](crate::client::fluent_builders::UpdateUsageLimit::usage_limit_id) / [`set_usage_limit_id(Option<String>)`](crate::client::fluent_builders::UpdateUsageLimit::set_usage_limit_id): <p>The identifier of the usage limit to update.</p>
    ///   - [`amount(i64)`](crate::client::fluent_builders::UpdateUsageLimit::amount) / [`set_amount(Option<i64>)`](crate::client::fluent_builders::UpdateUsageLimit::set_amount): <p>The new limit amount. If time-based, this amount is in Redshift Processing Units (RPU) consumed per hour. If data-based, this amount is in terabytes (TB) of data transferred between Regions in cross-account sharing. The value must be a positive number.</p>
    ///   - [`breach_action(UsageLimitBreachAction)`](crate::client::fluent_builders::UpdateUsageLimit::breach_action) / [`set_breach_action(Option<UsageLimitBreachAction>)`](crate::client::fluent_builders::UpdateUsageLimit::set_breach_action): <p>The new action that Amazon Redshift Serverless takes when the limit is reached.</p>
    /// - On success, responds with [`UpdateUsageLimitOutput`](crate::output::UpdateUsageLimitOutput) with field(s):
    ///   - [`usage_limit(Option<UsageLimit>)`](crate::output::UpdateUsageLimitOutput::usage_limit): <p>The updated usage limit object.</p>
    /// - On failure, responds with [`SdkError<UpdateUsageLimitError>`](crate::error::UpdateUsageLimitError)
    pub fn update_usage_limit(&self) -> fluent_builders::UpdateUsageLimit {
        fluent_builders::UpdateUsageLimit::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateWorkgroup`](crate::client::fluent_builders::UpdateWorkgroup) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`workgroup_name(impl Into<String>)`](crate::client::fluent_builders::UpdateWorkgroup::workgroup_name) / [`set_workgroup_name(Option<String>)`](crate::client::fluent_builders::UpdateWorkgroup::set_workgroup_name): <p>The name of the workgroup to update.</p>
    ///   - [`base_capacity(i32)`](crate::client::fluent_builders::UpdateWorkgroup::base_capacity) / [`set_base_capacity(Option<i32>)`](crate::client::fluent_builders::UpdateWorkgroup::set_base_capacity): <p>The new base data warehouse capacity in Redshift Processing Units (RPUs).</p>
    ///   - [`enhanced_vpc_routing(bool)`](crate::client::fluent_builders::UpdateWorkgroup::enhanced_vpc_routing) / [`set_enhanced_vpc_routing(Option<bool>)`](crate::client::fluent_builders::UpdateWorkgroup::set_enhanced_vpc_routing): <p>The value that specifies whether to turn on enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC.</p>
    ///   - [`config_parameters(Vec<ConfigParameter>)`](crate::client::fluent_builders::UpdateWorkgroup::config_parameters) / [`set_config_parameters(Option<Vec<ConfigParameter>>)`](crate::client::fluent_builders::UpdateWorkgroup::set_config_parameters): <p>An array of parameters to set for advanced control over a database. The options are <code>datestyle</code>, <code>enable_user_activity_logging</code>, <code>query_group</code>, <code>search_path</code>, and <code>max_query_execution_time</code>.</p>
    ///   - [`publicly_accessible(bool)`](crate::client::fluent_builders::UpdateWorkgroup::publicly_accessible) / [`set_publicly_accessible(Option<bool>)`](crate::client::fluent_builders::UpdateWorkgroup::set_publicly_accessible): <p>A value that specifies whether the workgroup can be accessible from a public network.</p>
    ///   - [`subnet_ids(Vec<String>)`](crate::client::fluent_builders::UpdateWorkgroup::subnet_ids) / [`set_subnet_ids(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateWorkgroup::set_subnet_ids): <p>An array of VPC subnet IDs to associate with the workgroup.</p>
    ///   - [`security_group_ids(Vec<String>)`](crate::client::fluent_builders::UpdateWorkgroup::security_group_ids) / [`set_security_group_ids(Option<Vec<String>>)`](crate::client::fluent_builders::UpdateWorkgroup::set_security_group_ids): <p>An array of security group IDs to associate with the workgroup.</p>
    ///   - [`port(i32)`](crate::client::fluent_builders::UpdateWorkgroup::port) / [`set_port(Option<i32>)`](crate::client::fluent_builders::UpdateWorkgroup::set_port): <p>The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.</p>
    /// - On success, responds with [`UpdateWorkgroupOutput`](crate::output::UpdateWorkgroupOutput) with field(s):
    ///   - [`workgroup(Option<Workgroup>)`](crate::output::UpdateWorkgroupOutput::workgroup): <p>The updated workgroup object.</p>
    /// - On failure, responds with [`SdkError<UpdateWorkgroupError>`](crate::error::UpdateWorkgroupError)
    pub fn update_workgroup(&self) -> fluent_builders::UpdateWorkgroup {
        fluent_builders::UpdateWorkgroup::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 `ConvertRecoveryPointToSnapshot`.
    ///
    /// <p>Converts a recovery point to a snapshot. For more information about recovery points and snapshots, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-snapshots-recovery.html">Working with snapshots and recovery points</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ConvertRecoveryPointToSnapshot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::convert_recovery_point_to_snapshot_input::Builder,
    }
    impl ConvertRecoveryPointToSnapshot {
        /// Creates a new `ConvertRecoveryPointToSnapshot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ConvertRecoveryPointToSnapshotOutput,
            aws_smithy_http::result::SdkError<crate::error::ConvertRecoveryPointToSnapshotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 recovery point.</p>
        pub fn recovery_point_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recovery_point_id(input.into());
            self
        }
        /// <p>The unique identifier of the recovery point.</p>
        pub fn set_recovery_point_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recovery_point_id(input);
            self
        }
        /// <p>The name of the snapshot.</p>
        pub fn snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot.</p>
        pub fn set_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_name(input);
            self
        }
        /// <p>How long to retain the snapshot.</p>
        pub fn retention_period(mut self, input: i32) -> Self {
            self.inner = self.inner.retention_period(input);
            self
        }
        /// <p>How long to retain the snapshot.</p>
        pub fn set_retention_period(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_retention_period(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An array of <a href="https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Tag.html">Tag objects</a> to associate with the created snapshot.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An array of <a href="https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Tag.html">Tag objects</a> to associate with the created snapshot.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateEndpointAccess`.
    ///
    /// <p>Creates an Amazon Redshift Serverless managed VPC endpoint.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateEndpointAccess {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_endpoint_access_input::Builder,
    }
    impl CreateEndpointAccess {
        /// Creates a new `CreateEndpointAccess`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateEndpointAccessOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateEndpointAccessError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 VPC endpoint. An endpoint name must contain 1-30 characters. Valid characters are A-Z, a-z, 0-9, and hyphen(-). The first character must be a letter. The name can't contain two consecutive hyphens or end with a hyphen.</p>
        pub fn endpoint_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.endpoint_name(input.into());
            self
        }
        /// <p>The name of the VPC endpoint. An endpoint name must contain 1-30 characters. Valid characters are A-Z, a-z, 0-9, and hyphen(-). The first character must be a letter. The name can't contain two consecutive hyphens or end with a hyphen.</p>
        pub fn set_endpoint_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_endpoint_name(input);
            self
        }
        /// Appends an item to `subnetIds`.
        ///
        /// To override the contents of this collection use [`set_subnet_ids`](Self::set_subnet_ids).
        ///
        /// <p>The unique identifers of subnets from which Amazon Redshift Serverless chooses one to deploy a VPC endpoint.</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 unique identifers of subnets from which Amazon Redshift Serverless chooses one to deploy a VPC endpoint.</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
        }
        /// <p>The name of the workgroup to associate with the VPC endpoint.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup to associate with the VPC endpoint.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
        /// Appends an item to `vpcSecurityGroupIds`.
        ///
        /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
        ///
        /// <p>The unique identifiers of the security group that defines the ports, protocols, and sources for inbound traffic that you are authorizing into your endpoint.</p>
        pub fn vpc_security_group_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vpc_security_group_ids(input.into());
            self
        }
        /// <p>The unique identifiers of the security group that defines the ports, protocols, and sources for inbound traffic that you are authorizing into your endpoint.</p>
        pub fn set_vpc_security_group_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_vpc_security_group_ids(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateNamespace`.
    ///
    /// <p>Creates a namespace in Amazon Redshift Serverless.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateNamespace {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_namespace_input::Builder,
    }
    impl CreateNamespace {
        /// Creates a new `CreateNamespace`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateNamespaceOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateNamespaceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 namespace.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The username of the administrator for the first database created in the namespace.</p>
        pub fn admin_username(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.admin_username(input.into());
            self
        }
        /// <p>The username of the administrator for the first database created in the namespace.</p>
        pub fn set_admin_username(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_admin_username(input);
            self
        }
        /// <p>The password of the administrator for the first database created in the namespace.</p>
        pub fn admin_user_password(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.admin_user_password(input.into());
            self
        }
        /// <p>The password of the administrator for the first database created in the namespace.</p>
        pub fn set_admin_user_password(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_admin_user_password(input);
            self
        }
        /// <p>The name of the first database created in the namespace.</p>
        pub fn db_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.db_name(input.into());
            self
        }
        /// <p>The name of the first database created in the namespace.</p>
        pub fn set_db_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_db_name(input);
            self
        }
        /// <p>The ID of the Amazon Web Services Key Management Service key used to encrypt your data.</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 ID of the Amazon Web Services Key Management Service key used to encrypt your data.</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
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM role to set as a default in the namespace.</p>
        pub fn default_iam_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.default_iam_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM role to set as a default in the namespace.</p>
        pub fn set_default_iam_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_default_iam_role_arn(input);
            self
        }
        /// Appends an item to `iamRoles`.
        ///
        /// To override the contents of this collection use [`set_iam_roles`](Self::set_iam_roles).
        ///
        /// <p>A list of IAM roles to associate with the namespace.</p>
        pub fn iam_roles(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.iam_roles(input.into());
            self
        }
        /// <p>A list of IAM roles to associate with the namespace.</p>
        pub fn set_iam_roles(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_iam_roles(input);
            self
        }
        /// Appends an item to `logExports`.
        ///
        /// To override the contents of this collection use [`set_log_exports`](Self::set_log_exports).
        ///
        /// <p>The types of logs the namespace can export. Available export types are <code>userlog</code>, <code>connectionlog</code>, and <code>useractivitylog</code>.</p>
        pub fn log_exports(mut self, input: crate::model::LogExport) -> Self {
            self.inner = self.inner.log_exports(input);
            self
        }
        /// <p>The types of logs the namespace can export. Available export types are <code>userlog</code>, <code>connectionlog</code>, and <code>useractivitylog</code>.</p>
        pub fn set_log_exports(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::LogExport>>,
        ) -> Self {
            self.inner = self.inner.set_log_exports(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A list of tag instances.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of tag instances.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateSnapshot`.
    ///
    /// <p>Creates a snapshot of all databases in a namespace. For more information about snapshots, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-snapshots-recovery.html"> Working with snapshots and recovery points</a>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateSnapshot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_snapshot_input::Builder,
    }
    impl CreateSnapshot {
        /// Creates a new `CreateSnapshot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateSnapshotOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateSnapshotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 namespace to create a snapshot for.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The namespace to create a snapshot for.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The name of the snapshot.</p>
        pub fn snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot.</p>
        pub fn set_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_name(input);
            self
        }
        /// <p>How long to retain the created snapshot.</p>
        pub fn retention_period(mut self, input: i32) -> Self {
            self.inner = self.inner.retention_period(input);
            self
        }
        /// <p>How long to retain the created snapshot.</p>
        pub fn set_retention_period(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_retention_period(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An array of <a href="https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Tag.html">Tag objects</a> to associate with the snapshot.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An array of <a href="https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Tag.html">Tag objects</a> to associate with the snapshot.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateUsageLimit`.
    ///
    /// <p>Creates a usage limit for a specified Amazon Redshift Serverless usage type. The usage limit is identified by the returned usage limit identifier. </p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateUsageLimit {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_usage_limit_input::Builder,
    }
    impl CreateUsageLimit {
        /// Creates a new `CreateUsageLimit`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateUsageLimitOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateUsageLimitError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 Amazon Redshift Serverless resource to create the usage limit for.</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 Amazon Redshift Serverless resource to create the usage limit for.</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
        }
        /// <p>The type of Amazon Redshift Serverless usage to create a usage limit for.</p>
        pub fn usage_type(mut self, input: crate::model::UsageLimitUsageType) -> Self {
            self.inner = self.inner.usage_type(input);
            self
        }
        /// <p>The type of Amazon Redshift Serverless usage to create a usage limit for.</p>
        pub fn set_usage_type(
            mut self,
            input: std::option::Option<crate::model::UsageLimitUsageType>,
        ) -> Self {
            self.inner = self.inner.set_usage_type(input);
            self
        }
        /// <p>The limit amount. If time-based, this amount is in Redshift Processing Units (RPU) consumed per hour. If data-based, this amount is in terabytes (TB) of data transferred between Regions in cross-account sharing. The value must be a positive number.</p>
        pub fn amount(mut self, input: i64) -> Self {
            self.inner = self.inner.amount(input);
            self
        }
        /// <p>The limit amount. If time-based, this amount is in Redshift Processing Units (RPU) consumed per hour. If data-based, this amount is in terabytes (TB) of data transferred between Regions in cross-account sharing. The value must be a positive number.</p>
        pub fn set_amount(mut self, input: std::option::Option<i64>) -> Self {
            self.inner = self.inner.set_amount(input);
            self
        }
        /// <p>The time period that the amount applies to. A weekly period begins on Sunday. The default is monthly.</p>
        pub fn period(mut self, input: crate::model::UsageLimitPeriod) -> Self {
            self.inner = self.inner.period(input);
            self
        }
        /// <p>The time period that the amount applies to. A weekly period begins on Sunday. The default is monthly.</p>
        pub fn set_period(
            mut self,
            input: std::option::Option<crate::model::UsageLimitPeriod>,
        ) -> Self {
            self.inner = self.inner.set_period(input);
            self
        }
        /// <p>The action that Amazon Redshift Serverless takes when the limit is reached. The default is log.</p>
        pub fn breach_action(mut self, input: crate::model::UsageLimitBreachAction) -> Self {
            self.inner = self.inner.breach_action(input);
            self
        }
        /// <p>The action that Amazon Redshift Serverless takes when the limit is reached. The default is log.</p>
        pub fn set_breach_action(
            mut self,
            input: std::option::Option<crate::model::UsageLimitBreachAction>,
        ) -> Self {
            self.inner = self.inner.set_breach_action(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateWorkgroup`.
    ///
    /// <p>Creates an workgroup in Amazon Redshift Serverless.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateWorkgroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_workgroup_input::Builder,
    }
    impl CreateWorkgroup {
        /// Creates a new `CreateWorkgroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateWorkgroupOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateWorkgroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 created workgroup.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the created workgroup.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
        /// <p>The name of the namespace to associate with the workgroup.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace to associate with the workgroup.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The base data warehouse capacity of the workgroup in Redshift Processing Units (RPUs).</p>
        pub fn base_capacity(mut self, input: i32) -> Self {
            self.inner = self.inner.base_capacity(input);
            self
        }
        /// <p>The base data warehouse capacity of the workgroup in Redshift Processing Units (RPUs).</p>
        pub fn set_base_capacity(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_base_capacity(input);
            self
        }
        /// <p>The value that specifies whether to turn on enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC instead of over the internet.</p>
        pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
            self.inner = self.inner.enhanced_vpc_routing(input);
            self
        }
        /// <p>The value that specifies whether to turn on enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC instead of over the internet.</p>
        pub fn set_enhanced_vpc_routing(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_enhanced_vpc_routing(input);
            self
        }
        /// Appends an item to `configParameters`.
        ///
        /// To override the contents of this collection use [`set_config_parameters`](Self::set_config_parameters).
        ///
        /// <p>An array of parameters to set for more control over a serverless database. The options are <code>datestyle</code>, <code>enable_user_activity_logging</code>, <code>query_group</code>, <code>search_path</code>, and <code>max_query_execution_time</code>.</p>
        pub fn config_parameters(mut self, input: crate::model::ConfigParameter) -> Self {
            self.inner = self.inner.config_parameters(input);
            self
        }
        /// <p>An array of parameters to set for more control over a serverless database. The options are <code>datestyle</code>, <code>enable_user_activity_logging</code>, <code>query_group</code>, <code>search_path</code>, and <code>max_query_execution_time</code>.</p>
        pub fn set_config_parameters(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ConfigParameter>>,
        ) -> Self {
            self.inner = self.inner.set_config_parameters(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>An array of security group IDs to associate with the workgroup.</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>An array of security group IDs to associate with the workgroup.</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 `subnetIds`.
        ///
        /// To override the contents of this collection use [`set_subnet_ids`](Self::set_subnet_ids).
        ///
        /// <p>An array of VPC subnet IDs to associate with the workgroup.</p>
        pub fn subnet_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.subnet_ids(input.into());
            self
        }
        /// <p>An array of VPC subnet IDs to associate with the workgroup.</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
        }
        /// <p>A value that specifies whether the workgroup can be accessed from a public network.</p>
        pub fn publicly_accessible(mut self, input: bool) -> Self {
            self.inner = self.inner.publicly_accessible(input);
            self
        }
        /// <p>A value that specifies whether the workgroup can be accessed from a public network.</p>
        pub fn set_publicly_accessible(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_publicly_accessible(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A array of tag instances.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A array of tag instances.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
        /// <p>The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.</p>
        pub fn port(mut self, input: i32) -> Self {
            self.inner = self.inner.port(input);
            self
        }
        /// <p>The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.</p>
        pub fn set_port(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_port(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteEndpointAccess`.
    ///
    /// <p>Deletes an Amazon Redshift Serverless managed VPC endpoint.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteEndpointAccess {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_endpoint_access_input::Builder,
    }
    impl DeleteEndpointAccess {
        /// Creates a new `DeleteEndpointAccess`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteEndpointAccessOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteEndpointAccessError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 VPC endpoint to delete.</p>
        pub fn endpoint_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.endpoint_name(input.into());
            self
        }
        /// <p>The name of the VPC endpoint to delete.</p>
        pub fn set_endpoint_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_endpoint_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteNamespace`.
    ///
    /// <p>Deletes a namespace from Amazon Redshift Serverless. Before you delete the namespace, you can create a final snapshot that has all of the data within the namespace.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteNamespace {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_namespace_input::Builder,
    }
    impl DeleteNamespace {
        /// Creates a new `DeleteNamespace`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteNamespaceOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteNamespaceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 namespace to delete.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace to delete.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The name of the snapshot to be created before the namespace is deleted.</p>
        pub fn final_snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.final_snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot to be created before the namespace is deleted.</p>
        pub fn set_final_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_final_snapshot_name(input);
            self
        }
        /// <p>How long to retain the final snapshot.</p>
        pub fn final_snapshot_retention_period(mut self, input: i32) -> Self {
            self.inner = self.inner.final_snapshot_retention_period(input);
            self
        }
        /// <p>How long to retain the final snapshot.</p>
        pub fn set_final_snapshot_retention_period(
            mut self,
            input: std::option::Option<i32>,
        ) -> Self {
            self.inner = self.inner.set_final_snapshot_retention_period(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteResourcePolicy`.
    ///
    /// <p>Deletes the specified resource policy.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteResourcePolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_resource_policy_input::Builder,
    }
    impl DeleteResourcePolicy {
        /// Creates a new `DeleteResourcePolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteResourcePolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteResourcePolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 policy to delete.</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 policy to delete.</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 `DeleteSnapshot`.
    ///
    /// <p>Deletes a snapshot from Amazon Redshift Serverless.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteSnapshot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_snapshot_input::Builder,
    }
    impl DeleteSnapshot {
        /// Creates a new `DeleteSnapshot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteSnapshotOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteSnapshotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 snapshot to be deleted.</p>
        pub fn snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot to be deleted.</p>
        pub fn set_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteUsageLimit`.
    ///
    /// <p>Deletes a usage limit from Amazon Redshift Serverless.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteUsageLimit {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_usage_limit_input::Builder,
    }
    impl DeleteUsageLimit {
        /// Creates a new `DeleteUsageLimit`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteUsageLimitOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteUsageLimitError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 usage limit to delete.</p>
        pub fn usage_limit_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.usage_limit_id(input.into());
            self
        }
        /// <p>The unique identifier of the usage limit to delete.</p>
        pub fn set_usage_limit_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_usage_limit_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteWorkgroup`.
    ///
    /// <p>Deletes a workgroup.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteWorkgroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_workgroup_input::Builder,
    }
    impl DeleteWorkgroup {
        /// Creates a new `DeleteWorkgroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteWorkgroupOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteWorkgroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 workgroup to be deleted.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup to be deleted.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetCredentials`.
    ///
    /// <p>Returns a database user name and temporary password with temporary authorization to log in to Amazon Redshift Serverless.</p>
    /// <p>By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes).</p>
    /// <p>The Identity and Access Management (IAM) user or role that runs GetCredentials must have an IAM policy attached that allows access to all necessary actions and resources.</p>
    /// <p>If the <code>DbName</code> parameter is specified, the IAM policy must allow access to the resource dbname for the specified database name.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetCredentials {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_credentials_input::Builder,
    }
    impl GetCredentials {
        /// Creates a new `GetCredentials`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetCredentialsOutput,
            aws_smithy_http::result::SdkError<crate::error::GetCredentialsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 workgroup associated with the database.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup associated with the database.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
        /// <p>The name of the database to get temporary authorization to log on to.</p>
        /// <p>Constraints:</p>
        /// <ul>
        /// <li> <p>Must be 1 to 64 alphanumeric characters or hyphens.</p> </li>
        /// <li> <p>Must contain only uppercase or lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p> </li>
        /// <li> <p>The first character must be a letter.</p> </li>
        /// <li> <p>Must not contain a colon ( : ) or slash ( / ).</p> </li>
        /// <li> <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words </a> in the Amazon Redshift Database Developer Guide</p> </li>
        /// </ul>
        pub fn db_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.db_name(input.into());
            self
        }
        /// <p>The name of the database to get temporary authorization to log on to.</p>
        /// <p>Constraints:</p>
        /// <ul>
        /// <li> <p>Must be 1 to 64 alphanumeric characters or hyphens.</p> </li>
        /// <li> <p>Must contain only uppercase or lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p> </li>
        /// <li> <p>The first character must be a letter.</p> </li>
        /// <li> <p>Must not contain a colon ( : ) or slash ( / ).</p> </li>
        /// <li> <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words </a> in the Amazon Redshift Database Developer Guide</p> </li>
        /// </ul>
        pub fn set_db_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_db_name(input);
            self
        }
        /// <p>The number of seconds until the returned temporary password expires. The minimum is 900 seconds, and the maximum is 3600 seconds.</p>
        pub fn duration_seconds(mut self, input: i32) -> Self {
            self.inner = self.inner.duration_seconds(input);
            self
        }
        /// <p>The number of seconds until the returned temporary password expires. The minimum is 900 seconds, and the maximum is 3600 seconds.</p>
        pub fn set_duration_seconds(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_duration_seconds(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetEndpointAccess`.
    ///
    /// <p>Returns information, such as the name, about a VPC endpoint.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetEndpointAccess {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_endpoint_access_input::Builder,
    }
    impl GetEndpointAccess {
        /// Creates a new `GetEndpointAccess`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetEndpointAccessOutput,
            aws_smithy_http::result::SdkError<crate::error::GetEndpointAccessError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 VPC endpoint to return information for.</p>
        pub fn endpoint_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.endpoint_name(input.into());
            self
        }
        /// <p>The name of the VPC endpoint to return information for.</p>
        pub fn set_endpoint_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_endpoint_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetNamespace`.
    ///
    /// <p>Returns information about a namespace in Amazon Redshift Serverless.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetNamespace {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_namespace_input::Builder,
    }
    impl GetNamespace {
        /// Creates a new `GetNamespace`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetNamespaceOutput,
            aws_smithy_http::result::SdkError<crate::error::GetNamespaceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 namespace to retrieve information for.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace to retrieve information for.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetRecoveryPoint`.
    ///
    /// <p>Returns information about a recovery point.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetRecoveryPoint {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_recovery_point_input::Builder,
    }
    impl GetRecoveryPoint {
        /// Creates a new `GetRecoveryPoint`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetRecoveryPointOutput,
            aws_smithy_http::result::SdkError<crate::error::GetRecoveryPointError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 recovery point to return information for.</p>
        pub fn recovery_point_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recovery_point_id(input.into());
            self
        }
        /// <p>The unique identifier of the recovery point to return information for.</p>
        pub fn set_recovery_point_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recovery_point_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetResourcePolicy`.
    ///
    /// <p>Returns a resource policy.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetResourcePolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_resource_policy_input::Builder,
    }
    impl GetResourcePolicy {
        /// Creates a new `GetResourcePolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetResourcePolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::GetResourcePolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 to return.</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 to return.</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 `GetSnapshot`.
    ///
    /// <p>Returns information about a specific snapshot.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetSnapshot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_snapshot_input::Builder,
    }
    impl GetSnapshot {
        /// Creates a new `GetSnapshot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetSnapshotOutput,
            aws_smithy_http::result::SdkError<crate::error::GetSnapshotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 snapshot to return.</p>
        pub fn snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot to return.</p>
        pub fn set_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_name(input);
            self
        }
        /// <p>The owner Amazon Web Services account of a snapshot shared with another user.</p>
        pub fn owner_account(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.owner_account(input.into());
            self
        }
        /// <p>The owner Amazon Web Services account of a snapshot shared with another user.</p>
        pub fn set_owner_account(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_owner_account(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the snapshot to return.</p>
        pub fn snapshot_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the snapshot to return.</p>
        pub fn set_snapshot_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_snapshot_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetTableRestoreStatus`.
    ///
    /// <p>Returns information about a <code>TableRestoreStatus</code> object.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetTableRestoreStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_table_restore_status_input::Builder,
    }
    impl GetTableRestoreStatus {
        /// Creates a new `GetTableRestoreStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetTableRestoreStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::GetTableRestoreStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The ID of the <code>RestoreTableFromSnapshot</code> request to return status for.</p>
        pub fn table_restore_request_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.table_restore_request_id(input.into());
            self
        }
        /// <p>The ID of the <code>RestoreTableFromSnapshot</code> request to return status for.</p>
        pub fn set_table_restore_request_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_table_restore_request_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetUsageLimit`.
    ///
    /// <p>Returns information about a usage limit.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetUsageLimit {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_usage_limit_input::Builder,
    }
    impl GetUsageLimit {
        /// Creates a new `GetUsageLimit`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetUsageLimitOutput,
            aws_smithy_http::result::SdkError<crate::error::GetUsageLimitError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 usage limit to return information for.</p>
        pub fn usage_limit_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.usage_limit_id(input.into());
            self
        }
        /// <p>The unique identifier of the usage limit to return information for.</p>
        pub fn set_usage_limit_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_usage_limit_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetWorkgroup`.
    ///
    /// <p>Returns information about a specific workgroup.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetWorkgroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_workgroup_input::Builder,
    }
    impl GetWorkgroup {
        /// Creates a new `GetWorkgroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetWorkgroupOutput,
            aws_smithy_http::result::SdkError<crate::error::GetWorkgroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 workgroup to return information for.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup to return information for.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListEndpointAccess`.
    ///
    /// <p>Returns an array of <code>EndpointAccess</code> objects and relevant information.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEndpointAccess {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_endpoint_access_input::Builder,
    }
    impl ListEndpointAccess {
        /// Creates a new `ListEndpointAccess`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListEndpointAccessOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEndpointAccessError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListEndpointAccessPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEndpointAccessPaginator {
            crate::paginator::ListEndpointAccessPaginator::new(self.handle, self.inner)
        }
        /// <p>If your initial <code>ListEndpointAccess</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListEndpointAccess</code> operations, which returns results in the next page.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>If your initial <code>ListEndpointAccess</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListEndpointAccess</code> operations, which returns results in the next page.</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>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The name of the workgroup associated with the VPC endpoint to return.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup associated with the VPC endpoint to return.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
        /// <p>The unique identifier of the virtual private cloud with access to Amazon Redshift Serverless.</p>
        pub fn vpc_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vpc_id(input.into());
            self
        }
        /// <p>The unique identifier of the virtual private cloud with access to Amazon Redshift Serverless.</p>
        pub fn set_vpc_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_vpc_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListNamespaces`.
    ///
    /// <p>Returns information about a list of specified namespaces.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListNamespaces {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_namespaces_input::Builder,
    }
    impl ListNamespaces {
        /// Creates a new `ListNamespaces`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListNamespacesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListNamespacesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListNamespacesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListNamespacesPaginator {
            crate::paginator::ListNamespacesPaginator::new(self.handle, self.inner)
        }
        /// <p>If your initial <code>ListNamespaces</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListNamespaces</code> operations, which returns results in the next page.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>If your initial <code>ListNamespaces</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListNamespaces</code> operations, which returns results in the next page.</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>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRecoveryPoints`.
    ///
    /// <p>Returns an array of recovery points.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRecoveryPoints {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_recovery_points_input::Builder,
    }
    impl ListRecoveryPoints {
        /// Creates a new `ListRecoveryPoints`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListRecoveryPointsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRecoveryPointsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListRecoveryPointsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRecoveryPointsPaginator {
            crate::paginator::ListRecoveryPointsPaginator::new(self.handle, self.inner)
        }
        /// <p>If your initial <code>ListRecoveryPoints</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListRecoveryPoints</code> operations, which returns results in the next page.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>If your initial <code>ListRecoveryPoints</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListRecoveryPoints</code> operations, which returns results in the next page.</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>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The time when the recovery point's creation was initiated.</p>
        pub fn start_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.start_time(input);
            self
        }
        /// <p>The time when the recovery point's creation was initiated.</p>
        pub fn set_start_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_start_time(input);
            self
        }
        /// <p>The time when creation of the recovery point finished.</p>
        pub fn end_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.end_time(input);
            self
        }
        /// <p>The time when creation of the recovery point finished.</p>
        pub fn set_end_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_end_time(input);
            self
        }
        /// <p>The name of the namespace to list recovery points for.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace to list recovery points for.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the namespace from which to list recovery points.</p>
        pub fn namespace_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the namespace from which to list recovery points.</p>
        pub fn set_namespace_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListSnapshots`.
    ///
    /// <p>Returns a list of snapshots.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListSnapshots {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_snapshots_input::Builder,
    }
    impl ListSnapshots {
        /// Creates a new `ListSnapshots`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListSnapshotsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListSnapshotsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListSnapshotsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListSnapshotsPaginator {
            crate::paginator::ListSnapshotsPaginator::new(self.handle, self.inner)
        }
        /// <p>If <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>If <code>nextToken</code> is returned, there are more results available. The value of <code>nextToken</code> is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page.</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>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The namespace from which to list all snapshots.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The namespace from which to list all snapshots.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the namespace from which to list all snapshots.</p>
        pub fn namespace_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the namespace from which to list all snapshots.</p>
        pub fn set_namespace_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_arn(input);
            self
        }
        /// <p>The owner Amazon Web Services account of the snapshot.</p>
        pub fn owner_account(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.owner_account(input.into());
            self
        }
        /// <p>The owner Amazon Web Services account of the snapshot.</p>
        pub fn set_owner_account(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_owner_account(input);
            self
        }
        /// <p>The time when the creation of the snapshot was initiated.</p>
        pub fn start_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.start_time(input);
            self
        }
        /// <p>The time when the creation of the snapshot was initiated.</p>
        pub fn set_start_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_start_time(input);
            self
        }
        /// <p>The timestamp showing when the snapshot creation finished.</p>
        pub fn end_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.inner = self.inner.end_time(input);
            self
        }
        /// <p>The timestamp showing when the snapshot creation finished.</p>
        pub fn set_end_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.inner = self.inner.set_end_time(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTableRestoreStatus`.
    ///
    /// <p>Returns information about an array of <code>TableRestoreStatus</code> objects.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTableRestoreStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_table_restore_status_input::Builder,
    }
    impl ListTableRestoreStatus {
        /// Creates a new `ListTableRestoreStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListTableRestoreStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTableRestoreStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListTableRestoreStatusPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListTableRestoreStatusPaginator {
            crate::paginator::ListTableRestoreStatusPaginator::new(self.handle, self.inner)
        }
        /// <p>If your initial <code>ListTableRestoreStatus</code> operation returns a nextToken, you can include the returned <code>nextToken</code> in following <code>ListTableRestoreStatus</code> operations. This will return results on the next page.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>If your initial <code>ListTableRestoreStatus</code> operation returns a nextToken, you can include the returned <code>nextToken</code> in following <code>ListTableRestoreStatus</code> operations. This will return results on the next page.</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>An optional parameter that specifies the maximum number of results to return. You can use nextToken to display the next page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>An optional parameter that specifies the maximum number of results to return. You can use nextToken to display the next page of results.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// <p>The namespace from which to list all of the statuses of <code>RestoreTableFromSnapshot</code> operations .</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The namespace from which to list all of the statuses of <code>RestoreTableFromSnapshot</code> operations .</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The workgroup from which to list all of the statuses of <code>RestoreTableFromSnapshot</code> operations.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The workgroup from which to list all of the statuses of <code>RestoreTableFromSnapshot</code> operations.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTagsForResource`.
    ///
    /// <p>Lists the tags assigned to a resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTagsForResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_tags_for_resource_input::Builder,
    }
    impl ListTagsForResource {
        /// Creates a new `ListTagsForResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListTagsForResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource to list tags for.</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 to list tags for.</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 `ListUsageLimits`.
    ///
    /// <p>Lists all usage limits within Amazon Redshift Serverless.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListUsageLimits {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_usage_limits_input::Builder,
    }
    impl ListUsageLimits {
        /// Creates a new `ListUsageLimits`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListUsageLimitsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListUsageLimitsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListUsageLimitsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListUsageLimitsPaginator {
            crate::paginator::ListUsageLimitsPaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) associated with the resource whose usage limits you want to list.</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) associated with the resource whose usage limits you want to list.</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
        }
        /// <p>The Amazon Redshift Serverless feature whose limits you want to see.</p>
        pub fn usage_type(mut self, input: crate::model::UsageLimitUsageType) -> Self {
            self.inner = self.inner.usage_type(input);
            self
        }
        /// <p>The Amazon Redshift Serverless feature whose limits you want to see.</p>
        pub fn set_usage_type(
            mut self,
            input: std::option::Option<crate::model::UsageLimitUsageType>,
        ) -> Self {
            self.inner = self.inner.set_usage_type(input);
            self
        }
        /// <p>If your initial <code>ListUsageLimits</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListUsageLimits</code> operations, which returns results in the next page. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>If your initial <code>ListUsageLimits</code> operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following <code>ListUsageLimits</code> operations, which returns results in the next page. </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>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to get the next page of results. The default is 100.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to get the next page of results. The default is 100.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListWorkgroups`.
    ///
    /// <p>Returns information about a list of specified workgroups.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListWorkgroups {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_workgroups_input::Builder,
    }
    impl ListWorkgroups {
        /// Creates a new `ListWorkgroups`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListWorkgroupsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListWorkgroupsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListWorkgroupsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListWorkgroupsPaginator {
            crate::paginator::ListWorkgroupsPaginator::new(self.handle, self.inner)
        }
        /// <p>If your initial ListWorkgroups operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following ListNamespaces operations, which returns results in the next page.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>If your initial ListWorkgroups operation returns a <code>nextToken</code>, you can include the returned <code>nextToken</code> in following ListNamespaces operations, which returns results in the next page.</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>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>An optional parameter that specifies the maximum number of results to return. You can use <code>nextToken</code> to display the next page of results.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
    }
    /// Fluent builder constructing a request to `PutResourcePolicy`.
    ///
    /// <p>Creates or updates a resource policy. Currently, you can use policies to share snapshots across Amazon Web Services accounts.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct PutResourcePolicy {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::put_resource_policy_input::Builder,
    }
    impl PutResourcePolicy {
        /// Creates a new `PutResourcePolicy`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::PutResourcePolicyOutput,
            aws_smithy_http::result::SdkError<crate::error::PutResourcePolicyError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 account to create or update a resource policy for.</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 account to create or update a resource policy for.</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
        }
        /// <p>The policy to create or update. For example, the following policy grants a user authorization to restore a snapshot.</p>
        /// <p> <code>"{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\"739247239426\"]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}"</code> </p>
        pub fn policy(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.policy(input.into());
            self
        }
        /// <p>The policy to create or update. For example, the following policy grants a user authorization to restore a snapshot.</p>
        /// <p> <code>"{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\"739247239426\"]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}"</code> </p>
        pub fn set_policy(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_policy(input);
            self
        }
    }
    /// Fluent builder constructing a request to `RestoreFromRecoveryPoint`.
    ///
    /// <p>Restore the data from a recovery point.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct RestoreFromRecoveryPoint {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::restore_from_recovery_point_input::Builder,
    }
    impl RestoreFromRecoveryPoint {
        /// Creates a new `RestoreFromRecoveryPoint`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::RestoreFromRecoveryPointOutput,
            aws_smithy_http::result::SdkError<crate::error::RestoreFromRecoveryPointError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 recovery point to restore from.</p>
        pub fn recovery_point_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.recovery_point_id(input.into());
            self
        }
        /// <p>The unique identifier of the recovery point to restore from.</p>
        pub fn set_recovery_point_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_recovery_point_id(input);
            self
        }
        /// <p>The name of the namespace to restore data into.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace to restore data into.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The name of the workgroup used to restore data.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup used to restore data.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `RestoreFromSnapshot`.
    ///
    /// <p>Restores a namespace from a snapshot.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct RestoreFromSnapshot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::restore_from_snapshot_input::Builder,
    }
    impl RestoreFromSnapshot {
        /// Creates a new `RestoreFromSnapshot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::RestoreFromSnapshotOutput,
            aws_smithy_http::result::SdkError<crate::error::RestoreFromSnapshotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 namespace to restore the snapshot to.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace to restore the snapshot to.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The name of the workgroup used to restore the snapshot.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup used to restore the snapshot.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
        /// <p>The name of the snapshot to restore from. Must not be specified at the same time as <code>snapshotArn</code>.</p>
        pub fn snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot to restore from. Must not be specified at the same time as <code>snapshotArn</code>.</p>
        pub fn set_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_name(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the snapshot to restore from. Required if restoring from Amazon Redshift Serverless to a provisioned cluster. Must not be specified at the same time as <code>snapshotName</code>.</p>
        /// <p>The format of the ARN is arn:aws:redshift:&lt;region&gt;:&lt;account_id&gt;:snapshot:&lt;cluster_identifier&gt;/&lt;snapshot_identifier&gt;.</p>
        pub fn snapshot_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the snapshot to restore from. Required if restoring from Amazon Redshift Serverless to a provisioned cluster. Must not be specified at the same time as <code>snapshotName</code>.</p>
        /// <p>The format of the ARN is arn:aws:redshift:&lt;region&gt;:&lt;account_id&gt;:snapshot:&lt;cluster_identifier&gt;/&lt;snapshot_identifier&gt;.</p>
        pub fn set_snapshot_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_snapshot_arn(input);
            self
        }
        /// <p>The Amazon Web Services account that owns the snapshot.</p>
        pub fn owner_account(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.owner_account(input.into());
            self
        }
        /// <p>The Amazon Web Services account that owns the snapshot.</p>
        pub fn set_owner_account(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_owner_account(input);
            self
        }
    }
    /// Fluent builder constructing a request to `RestoreTableFromSnapshot`.
    ///
    /// <p>Restores a table from a snapshot to your Amazon Redshift Serverless instance.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct RestoreTableFromSnapshot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::restore_table_from_snapshot_input::Builder,
    }
    impl RestoreTableFromSnapshot {
        /// Creates a new `RestoreTableFromSnapshot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::RestoreTableFromSnapshotOutput,
            aws_smithy_http::result::SdkError<crate::error::RestoreTableFromSnapshotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 namespace of the snapshot to restore from.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The namespace of the snapshot to restore from.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The workgroup to restore the table to.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The workgroup to restore the table to.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
        /// <p>The name of the snapshot to restore the table from.</p>
        pub fn snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot to restore the table from.</p>
        pub fn set_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_name(input);
            self
        }
        /// <p>The name of the source database that contains the table being restored.</p>
        pub fn source_database_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_database_name(input.into());
            self
        }
        /// <p>The name of the source database that contains the table being restored.</p>
        pub fn set_source_database_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_database_name(input);
            self
        }
        /// <p>The name of the source schema that contains the table being restored.</p>
        pub fn source_schema_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_schema_name(input.into());
            self
        }
        /// <p>The name of the source schema that contains the table being restored.</p>
        pub fn set_source_schema_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_schema_name(input);
            self
        }
        /// <p>The name of the source table being restored.</p>
        pub fn source_table_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.source_table_name(input.into());
            self
        }
        /// <p>The name of the source table being restored.</p>
        pub fn set_source_table_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_source_table_name(input);
            self
        }
        /// <p>The name of the database to restore the table to.</p>
        pub fn target_database_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.target_database_name(input.into());
            self
        }
        /// <p>The name of the database to restore the table to.</p>
        pub fn set_target_database_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_target_database_name(input);
            self
        }
        /// <p>The name of the schema to restore the table to.</p>
        pub fn target_schema_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.target_schema_name(input.into());
            self
        }
        /// <p>The name of the schema to restore the table to.</p>
        pub fn set_target_schema_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_target_schema_name(input);
            self
        }
        /// <p>The name of the table to create from the restore operation.</p>
        pub fn new_table_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.new_table_name(input.into());
            self
        }
        /// <p>The name of the table to create from the restore operation.</p>
        pub fn set_new_table_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_new_table_name(input);
            self
        }
        /// <p>Indicates whether name identifiers for database, schema, and table are case sensitive. If true, the names are case sensitive. If false, the names are not case sensitive. The default is false.</p>
        pub fn activate_case_sensitive_identifier(mut self, input: bool) -> Self {
            self.inner = self.inner.activate_case_sensitive_identifier(input);
            self
        }
        /// <p>Indicates whether name identifiers for database, schema, and table are case sensitive. If true, the names are case sensitive. If false, the names are not case sensitive. The default is false.</p>
        pub fn set_activate_case_sensitive_identifier(
            mut self,
            input: std::option::Option<bool>,
        ) -> Self {
            self.inner = self.inner.set_activate_case_sensitive_identifier(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>Assigns one or more tags to a resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct TagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::tag_resource_input::Builder,
    }
    impl TagResource {
        /// Creates a new `TagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::TagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource to tag.</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 to tag.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>The map of the key-value pairs used to tag the resource.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>The map of the key-value pairs used to tag the resource.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Tag>>,
        ) -> Self {
            self.inner = self.inner.set_tags(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UntagResource`.
    ///
    /// <p>Removes a tag or set of tags from a resource.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UntagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::untag_resource_input::Builder,
    }
    impl UntagResource {
        /// Creates a new `UntagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UntagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::UntagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the resource to remove tags from.</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 to remove tags from.</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// Appends an item to `tagKeys`.
        ///
        /// To override the contents of this collection use [`set_tag_keys`](Self::set_tag_keys).
        ///
        /// <p>The tag or set of tags to remove from the resource.</p>
        pub fn tag_keys(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.tag_keys(input.into());
            self
        }
        /// <p>The tag or set of tags to remove from the resource.</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 `UpdateEndpointAccess`.
    ///
    /// <p>Updates an Amazon Redshift Serverless managed endpoint.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateEndpointAccess {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_endpoint_access_input::Builder,
    }
    impl UpdateEndpointAccess {
        /// Creates a new `UpdateEndpointAccess`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateEndpointAccessOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateEndpointAccessError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 VPC endpoint to update.</p>
        pub fn endpoint_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.endpoint_name(input.into());
            self
        }
        /// <p>The name of the VPC endpoint to update.</p>
        pub fn set_endpoint_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_endpoint_name(input);
            self
        }
        /// Appends an item to `vpcSecurityGroupIds`.
        ///
        /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
        ///
        /// <p>The list of VPC security groups associated with the endpoint after the endpoint is modified.</p>
        pub fn vpc_security_group_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.vpc_security_group_ids(input.into());
            self
        }
        /// <p>The list of VPC security groups associated with the endpoint after the endpoint is modified.</p>
        pub fn set_vpc_security_group_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_vpc_security_group_ids(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateNamespace`.
    ///
    /// <p>Updates a namespace with the specified settings.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateNamespace {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_namespace_input::Builder,
    }
    impl UpdateNamespace {
        /// Creates a new `UpdateNamespace`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateNamespaceOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateNamespaceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 namespace.</p>
        pub fn namespace_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.namespace_name(input.into());
            self
        }
        /// <p>The name of the namespace.</p>
        pub fn set_namespace_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_namespace_name(input);
            self
        }
        /// <p>The password of the administrator for the first database created in the namespace.</p>
        pub fn admin_user_password(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.admin_user_password(input.into());
            self
        }
        /// <p>The password of the administrator for the first database created in the namespace.</p>
        pub fn set_admin_user_password(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_admin_user_password(input);
            self
        }
        /// <p>The username of the administrator for the first database created in the namespace.</p>
        pub fn admin_username(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.admin_username(input.into());
            self
        }
        /// <p>The username of the administrator for the first database created in the namespace.</p>
        pub fn set_admin_username(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_admin_username(input);
            self
        }
        /// <p>The ID of the Amazon Web Services Key Management Service key used to encrypt your data.</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 ID of the Amazon Web Services Key Management Service key used to encrypt your data.</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
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM role to set as a default in the namespace.</p>
        pub fn default_iam_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.default_iam_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM role to set as a default in the namespace.</p>
        pub fn set_default_iam_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_default_iam_role_arn(input);
            self
        }
        /// Appends an item to `iamRoles`.
        ///
        /// To override the contents of this collection use [`set_iam_roles`](Self::set_iam_roles).
        ///
        /// <p>A list of IAM roles to associate with the namespace.</p>
        pub fn iam_roles(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.iam_roles(input.into());
            self
        }
        /// <p>A list of IAM roles to associate with the namespace.</p>
        pub fn set_iam_roles(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.inner = self.inner.set_iam_roles(input);
            self
        }
        /// Appends an item to `logExports`.
        ///
        /// To override the contents of this collection use [`set_log_exports`](Self::set_log_exports).
        ///
        /// <p>The types of logs the namespace can export. The export types are <code>userlog</code>, <code>connectionlog</code>, and <code>useractivitylog</code>.</p>
        pub fn log_exports(mut self, input: crate::model::LogExport) -> Self {
            self.inner = self.inner.log_exports(input);
            self
        }
        /// <p>The types of logs the namespace can export. The export types are <code>userlog</code>, <code>connectionlog</code>, and <code>useractivitylog</code>.</p>
        pub fn set_log_exports(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::LogExport>>,
        ) -> Self {
            self.inner = self.inner.set_log_exports(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateSnapshot`.
    ///
    /// <p>Updates a snapshot.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateSnapshot {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_snapshot_input::Builder,
    }
    impl UpdateSnapshot {
        /// Creates a new `UpdateSnapshot`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateSnapshotOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateSnapshotError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 snapshot.</p>
        pub fn snapshot_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.snapshot_name(input.into());
            self
        }
        /// <p>The name of the snapshot.</p>
        pub fn set_snapshot_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_snapshot_name(input);
            self
        }
        /// <p>The new retention period of the snapshot.</p>
        pub fn retention_period(mut self, input: i32) -> Self {
            self.inner = self.inner.retention_period(input);
            self
        }
        /// <p>The new retention period of the snapshot.</p>
        pub fn set_retention_period(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_retention_period(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateUsageLimit`.
    ///
    /// <p>Update a usage limit in Amazon Redshift Serverless. You can't update the usage type or period of a usage limit.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateUsageLimit {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_usage_limit_input::Builder,
    }
    impl UpdateUsageLimit {
        /// Creates a new `UpdateUsageLimit`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateUsageLimitOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateUsageLimitError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 usage limit to update.</p>
        pub fn usage_limit_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.usage_limit_id(input.into());
            self
        }
        /// <p>The identifier of the usage limit to update.</p>
        pub fn set_usage_limit_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_usage_limit_id(input);
            self
        }
        /// <p>The new limit amount. If time-based, this amount is in Redshift Processing Units (RPU) consumed per hour. If data-based, this amount is in terabytes (TB) of data transferred between Regions in cross-account sharing. The value must be a positive number.</p>
        pub fn amount(mut self, input: i64) -> Self {
            self.inner = self.inner.amount(input);
            self
        }
        /// <p>The new limit amount. If time-based, this amount is in Redshift Processing Units (RPU) consumed per hour. If data-based, this amount is in terabytes (TB) of data transferred between Regions in cross-account sharing. The value must be a positive number.</p>
        pub fn set_amount(mut self, input: std::option::Option<i64>) -> Self {
            self.inner = self.inner.set_amount(input);
            self
        }
        /// <p>The new action that Amazon Redshift Serverless takes when the limit is reached.</p>
        pub fn breach_action(mut self, input: crate::model::UsageLimitBreachAction) -> Self {
            self.inner = self.inner.breach_action(input);
            self
        }
        /// <p>The new action that Amazon Redshift Serverless takes when the limit is reached.</p>
        pub fn set_breach_action(
            mut self,
            input: std::option::Option<crate::model::UsageLimitBreachAction>,
        ) -> Self {
            self.inner = self.inner.set_breach_action(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateWorkgroup`.
    ///
    /// <p>Updates a workgroup with the specified configuration settings.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateWorkgroup {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_workgroup_input::Builder,
    }
    impl UpdateWorkgroup {
        /// Creates a new `UpdateWorkgroup`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateWorkgroupOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateWorkgroupError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 workgroup to update.</p>
        pub fn workgroup_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.workgroup_name(input.into());
            self
        }
        /// <p>The name of the workgroup to update.</p>
        pub fn set_workgroup_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_workgroup_name(input);
            self
        }
        /// <p>The new base data warehouse capacity in Redshift Processing Units (RPUs).</p>
        pub fn base_capacity(mut self, input: i32) -> Self {
            self.inner = self.inner.base_capacity(input);
            self
        }
        /// <p>The new base data warehouse capacity in Redshift Processing Units (RPUs).</p>
        pub fn set_base_capacity(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_base_capacity(input);
            self
        }
        /// <p>The value that specifies whether to turn on enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC.</p>
        pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
            self.inner = self.inner.enhanced_vpc_routing(input);
            self
        }
        /// <p>The value that specifies whether to turn on enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC.</p>
        pub fn set_enhanced_vpc_routing(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_enhanced_vpc_routing(input);
            self
        }
        /// Appends an item to `configParameters`.
        ///
        /// To override the contents of this collection use [`set_config_parameters`](Self::set_config_parameters).
        ///
        /// <p>An array of parameters to set for advanced control over a database. The options are <code>datestyle</code>, <code>enable_user_activity_logging</code>, <code>query_group</code>, <code>search_path</code>, and <code>max_query_execution_time</code>.</p>
        pub fn config_parameters(mut self, input: crate::model::ConfigParameter) -> Self {
            self.inner = self.inner.config_parameters(input);
            self
        }
        /// <p>An array of parameters to set for advanced control over a database. The options are <code>datestyle</code>, <code>enable_user_activity_logging</code>, <code>query_group</code>, <code>search_path</code>, and <code>max_query_execution_time</code>.</p>
        pub fn set_config_parameters(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ConfigParameter>>,
        ) -> Self {
            self.inner = self.inner.set_config_parameters(input);
            self
        }
        /// <p>A value that specifies whether the workgroup can be accessible from a public network.</p>
        pub fn publicly_accessible(mut self, input: bool) -> Self {
            self.inner = self.inner.publicly_accessible(input);
            self
        }
        /// <p>A value that specifies whether the workgroup can be accessible from a public network.</p>
        pub fn set_publicly_accessible(mut self, input: std::option::Option<bool>) -> Self {
            self.inner = self.inner.set_publicly_accessible(input);
            self
        }
        /// Appends an item to `subnetIds`.
        ///
        /// To override the contents of this collection use [`set_subnet_ids`](Self::set_subnet_ids).
        ///
        /// <p>An array of VPC subnet IDs to associate with the workgroup.</p>
        pub fn subnet_ids(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.subnet_ids(input.into());
            self
        }
        /// <p>An array of VPC subnet IDs to associate with the workgroup.</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>An array of security group IDs to associate with the workgroup.</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>An array of security group IDs to associate with the workgroup.</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
        }
        /// <p>The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.</p>
        pub fn port(mut self, input: i32) -> Self {
            self.inner = self.inner.port(input);
            self
        }
        /// <p>The custom port to use when connecting to a workgroup. Valid port ranges are 5431-5455 and 8191-8215. The default is 5439.</p>
        pub fn set_port(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_port(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 }),
        }
    }
}