aws-sdk-proton 0.24.0

AWS SDK for AWS Proton
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 AWS Proton
///
/// Client for invoking operations on AWS Proton. Each operation on AWS Proton 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_proton::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_proton::config::Builder::from(&shared_config)
///   .retry_config(RetryConfig::disabled())
///   .build();
/// let client = aws_sdk_proton::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 [`AcceptEnvironmentAccountConnection`](crate::client::fluent_builders::AcceptEnvironmentAccountConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`id(impl Into<String>)`](crate::client::fluent_builders::AcceptEnvironmentAccountConnection::id) / [`set_id(Option<String>)`](crate::client::fluent_builders::AcceptEnvironmentAccountConnection::set_id): <p>The ID of the environment account connection.</p>
    /// - On success, responds with [`AcceptEnvironmentAccountConnectionOutput`](crate::output::AcceptEnvironmentAccountConnectionOutput) with field(s):
    ///   - [`environment_account_connection(Option<EnvironmentAccountConnection>)`](crate::output::AcceptEnvironmentAccountConnectionOutput::environment_account_connection): <p>The environment account connection data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<AcceptEnvironmentAccountConnectionError>`](crate::error::AcceptEnvironmentAccountConnectionError)
    pub fn accept_environment_account_connection(
        &self,
    ) -> fluent_builders::AcceptEnvironmentAccountConnection {
        fluent_builders::AcceptEnvironmentAccountConnection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CancelComponentDeployment`](crate::client::fluent_builders::CancelComponentDeployment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`component_name(impl Into<String>)`](crate::client::fluent_builders::CancelComponentDeployment::component_name) / [`set_component_name(Option<String>)`](crate::client::fluent_builders::CancelComponentDeployment::set_component_name): <p>The name of the component with the deployment to cancel.</p>
    /// - On success, responds with [`CancelComponentDeploymentOutput`](crate::output::CancelComponentDeploymentOutput) with field(s):
    ///   - [`component(Option<Component>)`](crate::output::CancelComponentDeploymentOutput::component): <p>The detailed data of the component with the deployment that is being canceled.</p>
    /// - On failure, responds with [`SdkError<CancelComponentDeploymentError>`](crate::error::CancelComponentDeploymentError)
    pub fn cancel_component_deployment(&self) -> fluent_builders::CancelComponentDeployment {
        fluent_builders::CancelComponentDeployment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CancelEnvironmentDeployment`](crate::client::fluent_builders::CancelEnvironmentDeployment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`environment_name(impl Into<String>)`](crate::client::fluent_builders::CancelEnvironmentDeployment::environment_name) / [`set_environment_name(Option<String>)`](crate::client::fluent_builders::CancelEnvironmentDeployment::set_environment_name): <p>The name of the environment with the deployment to cancel.</p>
    /// - On success, responds with [`CancelEnvironmentDeploymentOutput`](crate::output::CancelEnvironmentDeploymentOutput) with field(s):
    ///   - [`environment(Option<Environment>)`](crate::output::CancelEnvironmentDeploymentOutput::environment): <p>The environment summary data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CancelEnvironmentDeploymentError>`](crate::error::CancelEnvironmentDeploymentError)
    pub fn cancel_environment_deployment(&self) -> fluent_builders::CancelEnvironmentDeployment {
        fluent_builders::CancelEnvironmentDeployment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CancelServiceInstanceDeployment`](crate::client::fluent_builders::CancelServiceInstanceDeployment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_instance_name(impl Into<String>)`](crate::client::fluent_builders::CancelServiceInstanceDeployment::service_instance_name) / [`set_service_instance_name(Option<String>)`](crate::client::fluent_builders::CancelServiceInstanceDeployment::set_service_instance_name): <p>The name of the service instance with the deployment to cancel.</p>
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::CancelServiceInstanceDeployment::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::CancelServiceInstanceDeployment::set_service_name): <p>The name of the service with the service instance deployment to cancel.</p>
    /// - On success, responds with [`CancelServiceInstanceDeploymentOutput`](crate::output::CancelServiceInstanceDeploymentOutput) with field(s):
    ///   - [`service_instance(Option<ServiceInstance>)`](crate::output::CancelServiceInstanceDeploymentOutput::service_instance): <p>The service instance summary data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CancelServiceInstanceDeploymentError>`](crate::error::CancelServiceInstanceDeploymentError)
    pub fn cancel_service_instance_deployment(
        &self,
    ) -> fluent_builders::CancelServiceInstanceDeployment {
        fluent_builders::CancelServiceInstanceDeployment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CancelServicePipelineDeployment`](crate::client::fluent_builders::CancelServicePipelineDeployment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::CancelServicePipelineDeployment::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::CancelServicePipelineDeployment::set_service_name): <p>The name of the service with the service pipeline deployment to cancel.</p>
    /// - On success, responds with [`CancelServicePipelineDeploymentOutput`](crate::output::CancelServicePipelineDeploymentOutput) with field(s):
    ///   - [`pipeline(Option<ServicePipeline>)`](crate::output::CancelServicePipelineDeploymentOutput::pipeline): <p>The service pipeline detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CancelServicePipelineDeploymentError>`](crate::error::CancelServicePipelineDeploymentError)
    pub fn cancel_service_pipeline_deployment(
        &self,
    ) -> fluent_builders::CancelServicePipelineDeployment {
        fluent_builders::CancelServicePipelineDeployment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateComponent`](crate::client::fluent_builders::CreateComponent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_name): <p>The customer-provided name of the component.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_description): <p>An optional customer-provided description of the component.</p>
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_service_name): <p>The name of the service that <code>serviceInstanceName</code> is associated with. If you don't specify this, the component isn't attached to any service instance. Specify both <code>serviceInstanceName</code> and <code>serviceName</code> or neither of them.</p>
    ///   - [`service_instance_name(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::service_instance_name) / [`set_service_instance_name(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_service_instance_name): <p>The name of the service instance that you want to attach this component to. If you don't specify this, the component isn't attached to any service instance. Specify both <code>serviceInstanceName</code> and <code>serviceName</code> or neither of them.</p>
    ///   - [`environment_name(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::environment_name) / [`set_environment_name(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_environment_name): <p>The name of the Proton environment that you want to associate this component with. You must specify this when you don't specify <code>serviceInstanceName</code> and <code>serviceName</code>.</p>
    ///   - [`template_file(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::template_file) / [`set_template_file(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_template_file): <p>A path to the Infrastructure as Code (IaC) file describing infrastructure that a custom component provisions.</p> <note>   <p>Components support a single IaC file, even if you use Terraform as your template language.</p>  </note>
    ///   - [`manifest(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::manifest) / [`set_manifest(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_manifest): <p>A path to a manifest file that lists the Infrastructure as Code (IaC) file, template language, and rendering engine for infrastructure that a custom component provisions.</p>
    ///   - [`service_spec(impl Into<String>)`](crate::client::fluent_builders::CreateComponent::service_spec) / [`set_service_spec(Option<String>)`](crate::client::fluent_builders::CreateComponent::set_service_spec): <p>The service spec that you want the component to use to access service inputs. Set this only when you attach the component to a service instance.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateComponent::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateComponent::set_tags): <p>An optional list of metadata items that you can associate with the Proton component. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`CreateComponentOutput`](crate::output::CreateComponentOutput) with field(s):
    ///   - [`component(Option<Component>)`](crate::output::CreateComponentOutput::component): <p>The detailed data of the created component.</p>
    /// - On failure, responds with [`SdkError<CreateComponentError>`](crate::error::CreateComponentError)
    pub fn create_component(&self) -> fluent_builders::CreateComponent {
        fluent_builders::CreateComponent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateEnvironment`](crate::client::fluent_builders::CreateEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_name): <p>The name of the environment.</p>
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_template_name): <p>The name of the environment template. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-templates.html">Environment Templates</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`template_major_version(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::template_major_version) / [`set_template_major_version(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_template_major_version): <p>The major version of the environment template.</p>
    ///   - [`template_minor_version(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::template_minor_version) / [`set_template_minor_version(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_template_minor_version): <p>The minor version of the environment template.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_description): <p>A description of the environment that's being created and deployed.</p>
    ///   - [`spec(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::spec) / [`set_spec(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_spec): <p>A YAML formatted string that provides inputs as defined in the environment template bundle schema file. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-environments.html">Environments</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`proton_service_role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::proton_service_role_arn) / [`set_proton_service_role_arn(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_proton_service_role_arn): <p>The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make calls to other services on your behalf.</p>  <p>To use Amazon Web Services-managed provisioning for the environment, specify either the <code>environmentAccountConnectionId</code> or <code>protonServiceRoleArn</code> parameter and omit the <code>provisioningRepository</code> parameter.</p>
    ///   - [`environment_account_connection_id(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::environment_account_connection_id) / [`set_environment_account_connection_id(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_environment_account_connection_id): <p>The ID of the environment account connection that you provide if you're provisioning your environment infrastructure resources to an environment account. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>  <p>To use Amazon Web Services-managed provisioning for the environment, specify either the <code>environmentAccountConnectionId</code> or <code>protonServiceRoleArn</code> parameter and omit the <code>provisioningRepository</code> parameter.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateEnvironment::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateEnvironment::set_tags): <p>An optional list of metadata items that you can associate with the Proton environment. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`provisioning_repository(RepositoryBranchInput)`](crate::client::fluent_builders::CreateEnvironment::provisioning_repository) / [`set_provisioning_repository(Option<RepositoryBranchInput>)`](crate::client::fluent_builders::CreateEnvironment::set_provisioning_repository): <p>The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>  <p>To use self-managed provisioning for the environment, specify this parameter and omit the <code>environmentAccountConnectionId</code> and <code>protonServiceRoleArn</code> parameters.</p>
    ///   - [`component_role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::component_role_arn) / [`set_component_role_arn(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_component_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.</p>  <p>You must specify <code>componentRoleArn</code> to allow directly defined components to be associated with this environment.</p>  <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`codebuild_role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironment::codebuild_role_arn) / [`set_codebuild_role_arn(Option<String>)`](crate::client::fluent_builders::CreateEnvironment::set_codebuild_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.</p>  <p>To use CodeBuild-based provisioning for the environment or for any service instance running in the environment, specify either the <code>environmentAccountConnectionId</code> or <code>codebuildRoleArn</code> parameter.</p>
    /// - On success, responds with [`CreateEnvironmentOutput`](crate::output::CreateEnvironmentOutput) with field(s):
    ///   - [`environment(Option<Environment>)`](crate::output::CreateEnvironmentOutput::environment): <p>The environment detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateEnvironmentError>`](crate::error::CreateEnvironmentError)
    pub fn create_environment(&self) -> fluent_builders::CreateEnvironment {
        fluent_builders::CreateEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateEnvironmentAccountConnection`](crate::client::fluent_builders::CreateEnvironmentAccountConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::set_client_token): <p>When included, if two identical requests are made with the same client token, Proton returns the environment account connection that the first request created.</p>
    ///   - [`management_account_id(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::management_account_id) / [`set_management_account_id(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::set_management_account_id): <p>The ID of the management account that accepts or rejects the environment account connection. You create and manage the Proton environment in this account. If the management account accepts the environment account connection, Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.</p>
    ///   - [`role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::role_arn) / [`set_role_arn(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::set_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that's created in the environment account. Proton uses this role to provision infrastructure resources in the associated environment account.</p>
    ///   - [`environment_name(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::environment_name) / [`set_environment_name(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::set_environment_name): <p>The name of the Proton environment that's created in the associated management account.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::set_tags): <p>An optional list of metadata items that you can associate with the Proton environment account connection. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`component_role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::component_role_arn) / [`set_component_role_arn(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::set_component_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.</p>  <p>You must specify <code>componentRoleArn</code> to allow directly defined components to be associated with any environments running in this account.</p>  <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`codebuild_role_arn(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::codebuild_role_arn) / [`set_codebuild_role_arn(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentAccountConnection::set_codebuild_role_arn): <p>The Amazon Resource Name (ARN) of an IAM service role in the environment account. Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.</p>
    /// - On success, responds with [`CreateEnvironmentAccountConnectionOutput`](crate::output::CreateEnvironmentAccountConnectionOutput) with field(s):
    ///   - [`environment_account_connection(Option<EnvironmentAccountConnection>)`](crate::output::CreateEnvironmentAccountConnectionOutput::environment_account_connection): <p>The environment account connection detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateEnvironmentAccountConnectionError>`](crate::error::CreateEnvironmentAccountConnectionError)
    pub fn create_environment_account_connection(
        &self,
    ) -> fluent_builders::CreateEnvironmentAccountConnection {
        fluent_builders::CreateEnvironmentAccountConnection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateEnvironmentTemplate`](crate::client::fluent_builders::CreateEnvironmentTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::set_name): <p>The name of the environment template.</p>
    ///   - [`display_name(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::display_name) / [`set_display_name(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::set_display_name): <p>The environment template name as displayed in the developer interface.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::set_description): <p>A description of the environment template.</p>
    ///   - [`encryption_key(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::encryption_key) / [`set_encryption_key(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::set_encryption_key): <p>A customer provided encryption key that Proton uses to encrypt data.</p>
    ///   - [`provisioning(Provisioning)`](crate::client::fluent_builders::CreateEnvironmentTemplate::provisioning) / [`set_provisioning(Option<Provisioning>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::set_provisioning): <p>When included, indicates that the environment template is for customer provisioned and managed infrastructure.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateEnvironmentTemplate::set_tags): <p>An optional list of metadata items that you can associate with the Proton environment template. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`CreateEnvironmentTemplateOutput`](crate::output::CreateEnvironmentTemplateOutput) with field(s):
    ///   - [`environment_template(Option<EnvironmentTemplate>)`](crate::output::CreateEnvironmentTemplateOutput::environment_template): <p>The environment template detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateEnvironmentTemplateError>`](crate::error::CreateEnvironmentTemplateError)
    pub fn create_environment_template(&self) -> fluent_builders::CreateEnvironmentTemplate {
        fluent_builders::CreateEnvironmentTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateEnvironmentTemplateVersion`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::set_client_token): <p>When included, if two identical requests are made with the same client token, Proton returns the environment template version that the first request created.</p>
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::set_template_name): <p>The name of the environment template.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::set_description): <p>A description of the new version of an environment template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::set_major_version): <p>To create a new minor version of the environment template, include <code>major Version</code>.</p>  <p>To create a new major and minor version of the environment template, exclude <code>major Version</code>.</p>
    ///   - [`source(TemplateVersionSourceInput)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::source) / [`set_source(Option<TemplateVersionSourceInput>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::set_source): <p>An object that includes the template bundle S3 bucket path and name for the new version of an template.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateEnvironmentTemplateVersion::set_tags): <p>An optional list of metadata items that you can associate with the Proton environment template version. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`CreateEnvironmentTemplateVersionOutput`](crate::output::CreateEnvironmentTemplateVersionOutput) with field(s):
    ///   - [`environment_template_version(Option<EnvironmentTemplateVersion>)`](crate::output::CreateEnvironmentTemplateVersionOutput::environment_template_version): <p>The environment template detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateEnvironmentTemplateVersionError>`](crate::error::CreateEnvironmentTemplateVersionError)
    pub fn create_environment_template_version(
        &self,
    ) -> fluent_builders::CreateEnvironmentTemplateVersion {
        fluent_builders::CreateEnvironmentTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateRepository`](crate::client::fluent_builders::CreateRepository) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`provider(RepositoryProvider)`](crate::client::fluent_builders::CreateRepository::provider) / [`set_provider(Option<RepositoryProvider>)`](crate::client::fluent_builders::CreateRepository::set_provider): <p>The repository provider.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateRepository::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateRepository::set_name): <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    ///   - [`connection_arn(impl Into<String>)`](crate::client::fluent_builders::CreateRepository::connection_arn) / [`set_connection_arn(Option<String>)`](crate::client::fluent_builders::CreateRepository::set_connection_arn): <p>The Amazon Resource Name (ARN) of your AWS CodeStar connection that connects Proton to your repository provider account. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/setting-up-for-service.html">Setting up for Proton</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`encryption_key(impl Into<String>)`](crate::client::fluent_builders::CreateRepository::encryption_key) / [`set_encryption_key(Option<String>)`](crate::client::fluent_builders::CreateRepository::set_encryption_key): <p>The ARN of your customer Amazon Web Services Key Management Service (Amazon Web Services KMS) key.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateRepository::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateRepository::set_tags): <p>An optional list of metadata items that you can associate with the Proton repository. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`CreateRepositoryOutput`](crate::output::CreateRepositoryOutput) with field(s):
    ///   - [`repository(Option<Repository>)`](crate::output::CreateRepositoryOutput::repository): <p>The repository link's detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateRepositoryError>`](crate::error::CreateRepositoryError)
    pub fn create_repository(&self) -> fluent_builders::CreateRepository {
        fluent_builders::CreateRepository::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateService`](crate::client::fluent_builders::CreateService) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateService::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateService::set_name): <p>The service name.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateService::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateService::set_description): <p>A description of the Proton service.</p>
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::CreateService::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::CreateService::set_template_name): <p>The name of the service template that's used to create the service.</p>
    ///   - [`template_major_version(impl Into<String>)`](crate::client::fluent_builders::CreateService::template_major_version) / [`set_template_major_version(Option<String>)`](crate::client::fluent_builders::CreateService::set_template_major_version): <p>The major version of the service template that was used to create the service.</p>
    ///   - [`template_minor_version(impl Into<String>)`](crate::client::fluent_builders::CreateService::template_minor_version) / [`set_template_minor_version(Option<String>)`](crate::client::fluent_builders::CreateService::set_template_minor_version): <p>The minor version of the service template that was used to create the service.</p>
    ///   - [`spec(impl Into<String>)`](crate::client::fluent_builders::CreateService::spec) / [`set_spec(Option<String>)`](crate::client::fluent_builders::CreateService::set_spec): <p>A link to a spec file that provides inputs as defined in the service template bundle schema file. The spec file is in YAML format. <i>Don’t</i> include pipeline inputs in the spec if your service template <i>doesn’t</i> include a service pipeline. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-create-svc.html">Create a service</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`repository_connection_arn(impl Into<String>)`](crate::client::fluent_builders::CreateService::repository_connection_arn) / [`set_repository_connection_arn(Option<String>)`](crate::client::fluent_builders::CreateService::set_repository_connection_arn): <p>The Amazon Resource Name (ARN) of the repository connection. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/setting-up-for-service.html#setting-up-vcontrol">Setting up an AWS CodeStar connection</a> in the <i>Proton User Guide</i>. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
    ///   - [`repository_id(impl Into<String>)`](crate::client::fluent_builders::CreateService::repository_id) / [`set_repository_id(Option<String>)`](crate::client::fluent_builders::CreateService::set_repository_id): <p>The ID of the code repository. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
    ///   - [`branch_name(impl Into<String>)`](crate::client::fluent_builders::CreateService::branch_name) / [`set_branch_name(Option<String>)`](crate::client::fluent_builders::CreateService::set_branch_name): <p>The name of the code repository branch that holds the code that's deployed in Proton. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateService::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateService::set_tags): <p>An optional list of metadata items that you can associate with the Proton service. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`CreateServiceOutput`](crate::output::CreateServiceOutput) with field(s):
    ///   - [`service(Option<Service>)`](crate::output::CreateServiceOutput::service): <p>The service detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateServiceError>`](crate::error::CreateServiceError)
    pub fn create_service(&self) -> fluent_builders::CreateService {
        fluent_builders::CreateService::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateServiceTemplate`](crate::client::fluent_builders::CreateServiceTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplate::set_name): <p>The name of the service template.</p>
    ///   - [`display_name(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplate::display_name) / [`set_display_name(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplate::set_display_name): <p>The name of the service template as displayed in the developer interface.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplate::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplate::set_description): <p>A description of the service template.</p>
    ///   - [`encryption_key(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplate::encryption_key) / [`set_encryption_key(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplate::set_encryption_key): <p>A customer provided encryption key that's used to encrypt data.</p>
    ///   - [`pipeline_provisioning(Provisioning)`](crate::client::fluent_builders::CreateServiceTemplate::pipeline_provisioning) / [`set_pipeline_provisioning(Option<Provisioning>)`](crate::client::fluent_builders::CreateServiceTemplate::set_pipeline_provisioning): <p>By default, Proton provides a service pipeline for your service. When this parameter is included, it indicates that an Proton service pipeline <i>isn't</i> provided for your service. After it's included, it <i>can't</i> be changed. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-template-authoring.html#ag-template-bundles">Template bundles</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateServiceTemplate::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateServiceTemplate::set_tags): <p>An optional list of metadata items that you can associate with the Proton service template. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`CreateServiceTemplateOutput`](crate::output::CreateServiceTemplateOutput) with field(s):
    ///   - [`service_template(Option<ServiceTemplate>)`](crate::output::CreateServiceTemplateOutput::service_template): <p>The service template detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateServiceTemplateError>`](crate::error::CreateServiceTemplateError)
    pub fn create_service_template(&self) -> fluent_builders::CreateServiceTemplate {
        fluent_builders::CreateServiceTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateServiceTemplateVersion`](crate::client::fluent_builders::CreateServiceTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`client_token(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::client_token) / [`set_client_token(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_client_token): <p>When included, if two identical requests are made with the same client token, Proton returns the service template version that the first request created.</p>
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_template_name): <p>The name of the service template.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_description): <p>A description of the new version of a service template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_major_version): <p>To create a new minor version of the service template, include a <code>major Version</code>.</p>  <p>To create a new major and minor version of the service template, <i>exclude</i> <code>major Version</code>.</p>
    ///   - [`source(TemplateVersionSourceInput)`](crate::client::fluent_builders::CreateServiceTemplateVersion::source) / [`set_source(Option<TemplateVersionSourceInput>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_source): <p>An object that includes the template bundle S3 bucket path and name for the new version of a service template.</p>
    ///   - [`compatible_environment_templates(Vec<CompatibleEnvironmentTemplateInput>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::compatible_environment_templates) / [`set_compatible_environment_templates(Option<Vec<CompatibleEnvironmentTemplateInput>>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_compatible_environment_templates): <p>An array of environment template objects that are compatible with the new service template version. A service instance based on this service template version can run in environments based on compatible templates.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_tags): <p>An optional list of metadata items that you can associate with the Proton service template version. A tag is a key-value pair.</p>  <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`supported_component_sources(Vec<ServiceTemplateSupportedComponentSourceType>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::supported_component_sources) / [`set_supported_component_sources(Option<Vec<ServiceTemplateSupportedComponentSourceType>>)`](crate::client::fluent_builders::CreateServiceTemplateVersion::set_supported_component_sources): <p>An array of supported component sources. Components with supported sources can be attached to service instances based on this service template version.</p>  <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`CreateServiceTemplateVersionOutput`](crate::output::CreateServiceTemplateVersionOutput) with field(s):
    ///   - [`service_template_version(Option<ServiceTemplateVersion>)`](crate::output::CreateServiceTemplateVersionOutput::service_template_version): <p>The service template version summary of detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateServiceTemplateVersionError>`](crate::error::CreateServiceTemplateVersionError)
    pub fn create_service_template_version(&self) -> fluent_builders::CreateServiceTemplateVersion {
        fluent_builders::CreateServiceTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`CreateTemplateSyncConfig`](crate::client::fluent_builders::CreateTemplateSyncConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::set_template_name): <p>The name of your registered template.</p>
    ///   - [`template_type(TemplateType)`](crate::client::fluent_builders::CreateTemplateSyncConfig::template_type) / [`set_template_type(Option<TemplateType>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::set_template_type): <p>The type of the registered template.</p>
    ///   - [`repository_provider(RepositoryProvider)`](crate::client::fluent_builders::CreateTemplateSyncConfig::repository_provider) / [`set_repository_provider(Option<RepositoryProvider>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::set_repository_provider): <p>The provider type for your repository.</p>
    ///   - [`repository_name(impl Into<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::repository_name) / [`set_repository_name(Option<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::set_repository_name): <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    ///   - [`branch(impl Into<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::branch) / [`set_branch(Option<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::set_branch): <p>The repository branch for your template.</p>
    ///   - [`subdirectory(impl Into<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::subdirectory) / [`set_subdirectory(Option<String>)`](crate::client::fluent_builders::CreateTemplateSyncConfig::set_subdirectory): <p>A repository subdirectory path to your template bundle directory. When included, Proton limits the template bundle search to this repository directory.</p>
    /// - On success, responds with [`CreateTemplateSyncConfigOutput`](crate::output::CreateTemplateSyncConfigOutput) with field(s):
    ///   - [`template_sync_config(Option<TemplateSyncConfig>)`](crate::output::CreateTemplateSyncConfigOutput::template_sync_config): <p>The template sync configuration detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<CreateTemplateSyncConfigError>`](crate::error::CreateTemplateSyncConfigError)
    pub fn create_template_sync_config(&self) -> fluent_builders::CreateTemplateSyncConfig {
        fluent_builders::CreateTemplateSyncConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteComponent`](crate::client::fluent_builders::DeleteComponent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeleteComponent::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeleteComponent::set_name): <p>The name of the component to delete.</p>
    /// - On success, responds with [`DeleteComponentOutput`](crate::output::DeleteComponentOutput) with field(s):
    ///   - [`component(Option<Component>)`](crate::output::DeleteComponentOutput::component): <p>The detailed data of the component being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteComponentError>`](crate::error::DeleteComponentError)
    pub fn delete_component(&self) -> fluent_builders::DeleteComponent {
        fluent_builders::DeleteComponent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteEnvironment`](crate::client::fluent_builders::DeleteEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeleteEnvironment::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeleteEnvironment::set_name): <p>The name of the environment to delete.</p>
    /// - On success, responds with [`DeleteEnvironmentOutput`](crate::output::DeleteEnvironmentOutput) with field(s):
    ///   - [`environment(Option<Environment>)`](crate::output::DeleteEnvironmentOutput::environment): <p>The detailed data of the environment being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteEnvironmentError>`](crate::error::DeleteEnvironmentError)
    pub fn delete_environment(&self) -> fluent_builders::DeleteEnvironment {
        fluent_builders::DeleteEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteEnvironmentAccountConnection`](crate::client::fluent_builders::DeleteEnvironmentAccountConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`id(impl Into<String>)`](crate::client::fluent_builders::DeleteEnvironmentAccountConnection::id) / [`set_id(Option<String>)`](crate::client::fluent_builders::DeleteEnvironmentAccountConnection::set_id): <p>The ID of the environment account connection to delete.</p>
    /// - On success, responds with [`DeleteEnvironmentAccountConnectionOutput`](crate::output::DeleteEnvironmentAccountConnectionOutput) with field(s):
    ///   - [`environment_account_connection(Option<EnvironmentAccountConnection>)`](crate::output::DeleteEnvironmentAccountConnectionOutput::environment_account_connection): <p>The detailed data of the environment account connection being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteEnvironmentAccountConnectionError>`](crate::error::DeleteEnvironmentAccountConnectionError)
    pub fn delete_environment_account_connection(
        &self,
    ) -> fluent_builders::DeleteEnvironmentAccountConnection {
        fluent_builders::DeleteEnvironmentAccountConnection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteEnvironmentTemplate`](crate::client::fluent_builders::DeleteEnvironmentTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplate::set_name): <p>The name of the environment template to delete.</p>
    /// - On success, responds with [`DeleteEnvironmentTemplateOutput`](crate::output::DeleteEnvironmentTemplateOutput) with field(s):
    ///   - [`environment_template(Option<EnvironmentTemplate>)`](crate::output::DeleteEnvironmentTemplateOutput::environment_template): <p>The detailed data of the environment template being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteEnvironmentTemplateError>`](crate::error::DeleteEnvironmentTemplateError)
    pub fn delete_environment_template(&self) -> fluent_builders::DeleteEnvironmentTemplate {
        fluent_builders::DeleteEnvironmentTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteEnvironmentTemplateVersion`](crate::client::fluent_builders::DeleteEnvironmentTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplateVersion::set_template_name): <p>The name of the environment template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplateVersion::set_major_version): <p>The environment template major version to delete.</p>
    ///   - [`minor_version(impl Into<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplateVersion::minor_version) / [`set_minor_version(Option<String>)`](crate::client::fluent_builders::DeleteEnvironmentTemplateVersion::set_minor_version): <p>The environment template minor version to delete.</p>
    /// - On success, responds with [`DeleteEnvironmentTemplateVersionOutput`](crate::output::DeleteEnvironmentTemplateVersionOutput) with field(s):
    ///   - [`environment_template_version(Option<EnvironmentTemplateVersion>)`](crate::output::DeleteEnvironmentTemplateVersionOutput::environment_template_version): <p>The detailed data of the environment template version being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteEnvironmentTemplateVersionError>`](crate::error::DeleteEnvironmentTemplateVersionError)
    pub fn delete_environment_template_version(
        &self,
    ) -> fluent_builders::DeleteEnvironmentTemplateVersion {
        fluent_builders::DeleteEnvironmentTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteRepository`](crate::client::fluent_builders::DeleteRepository) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`provider(RepositoryProvider)`](crate::client::fluent_builders::DeleteRepository::provider) / [`set_provider(Option<RepositoryProvider>)`](crate::client::fluent_builders::DeleteRepository::set_provider): <p>The repository provider.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeleteRepository::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeleteRepository::set_name): <p>The repository name.</p>
    /// - On success, responds with [`DeleteRepositoryOutput`](crate::output::DeleteRepositoryOutput) with field(s):
    ///   - [`repository(Option<Repository>)`](crate::output::DeleteRepositoryOutput::repository): <p>The deleted repository link's detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<DeleteRepositoryError>`](crate::error::DeleteRepositoryError)
    pub fn delete_repository(&self) -> fluent_builders::DeleteRepository {
        fluent_builders::DeleteRepository::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteService`](crate::client::fluent_builders::DeleteService) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeleteService::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeleteService::set_name): <p>The name of the service to delete.</p>
    /// - On success, responds with [`DeleteServiceOutput`](crate::output::DeleteServiceOutput) with field(s):
    ///   - [`service(Option<Service>)`](crate::output::DeleteServiceOutput::service): <p>The detailed data of the service being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteServiceError>`](crate::error::DeleteServiceError)
    pub fn delete_service(&self) -> fluent_builders::DeleteService {
        fluent_builders::DeleteService::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteServiceTemplate`](crate::client::fluent_builders::DeleteServiceTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::DeleteServiceTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::DeleteServiceTemplate::set_name): <p>The name of the service template to delete.</p>
    /// - On success, responds with [`DeleteServiceTemplateOutput`](crate::output::DeleteServiceTemplateOutput) with field(s):
    ///   - [`service_template(Option<ServiceTemplate>)`](crate::output::DeleteServiceTemplateOutput::service_template): <p>The detailed data of the service template being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteServiceTemplateError>`](crate::error::DeleteServiceTemplateError)
    pub fn delete_service_template(&self) -> fluent_builders::DeleteServiceTemplate {
        fluent_builders::DeleteServiceTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteServiceTemplateVersion`](crate::client::fluent_builders::DeleteServiceTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::DeleteServiceTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::DeleteServiceTemplateVersion::set_template_name): <p>The name of the service template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::DeleteServiceTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::DeleteServiceTemplateVersion::set_major_version): <p>The service template major version to delete.</p>
    ///   - [`minor_version(impl Into<String>)`](crate::client::fluent_builders::DeleteServiceTemplateVersion::minor_version) / [`set_minor_version(Option<String>)`](crate::client::fluent_builders::DeleteServiceTemplateVersion::set_minor_version): <p>The service template minor version to delete.</p>
    /// - On success, responds with [`DeleteServiceTemplateVersionOutput`](crate::output::DeleteServiceTemplateVersionOutput) with field(s):
    ///   - [`service_template_version(Option<ServiceTemplateVersion>)`](crate::output::DeleteServiceTemplateVersionOutput::service_template_version): <p>The detailed data of the service template version being deleted.</p>
    /// - On failure, responds with [`SdkError<DeleteServiceTemplateVersionError>`](crate::error::DeleteServiceTemplateVersionError)
    pub fn delete_service_template_version(&self) -> fluent_builders::DeleteServiceTemplateVersion {
        fluent_builders::DeleteServiceTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`DeleteTemplateSyncConfig`](crate::client::fluent_builders::DeleteTemplateSyncConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::DeleteTemplateSyncConfig::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::DeleteTemplateSyncConfig::set_template_name): <p>The template name.</p>
    ///   - [`template_type(TemplateType)`](crate::client::fluent_builders::DeleteTemplateSyncConfig::template_type) / [`set_template_type(Option<TemplateType>)`](crate::client::fluent_builders::DeleteTemplateSyncConfig::set_template_type): <p>The template type.</p>
    /// - On success, responds with [`DeleteTemplateSyncConfigOutput`](crate::output::DeleteTemplateSyncConfigOutput) with field(s):
    ///   - [`template_sync_config(Option<TemplateSyncConfig>)`](crate::output::DeleteTemplateSyncConfigOutput::template_sync_config): <p>The template sync configuration detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<DeleteTemplateSyncConfigError>`](crate::error::DeleteTemplateSyncConfigError)
    pub fn delete_template_sync_config(&self) -> fluent_builders::DeleteTemplateSyncConfig {
        fluent_builders::DeleteTemplateSyncConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetAccountSettings`](crate::client::fluent_builders::GetAccountSettings) operation.
    ///
    /// - The fluent builder takes no input, just [`send`](crate::client::fluent_builders::GetAccountSettings::send) it.

    /// - On success, responds with [`GetAccountSettingsOutput`](crate::output::GetAccountSettingsOutput) with field(s):
    ///   - [`account_settings(Option<AccountSettings>)`](crate::output::GetAccountSettingsOutput::account_settings): <p>The Proton pipeline service role detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<GetAccountSettingsError>`](crate::error::GetAccountSettingsError)
    pub fn get_account_settings(&self) -> fluent_builders::GetAccountSettings {
        fluent_builders::GetAccountSettings::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetComponent`](crate::client::fluent_builders::GetComponent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetComponent::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetComponent::set_name): <p>The name of the component that you want to get the detailed data for.</p>
    /// - On success, responds with [`GetComponentOutput`](crate::output::GetComponentOutput) with field(s):
    ///   - [`component(Option<Component>)`](crate::output::GetComponentOutput::component): <p>The detailed data of the requested component.</p>
    /// - On failure, responds with [`SdkError<GetComponentError>`](crate::error::GetComponentError)
    pub fn get_component(&self) -> fluent_builders::GetComponent {
        fluent_builders::GetComponent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetEnvironment`](crate::client::fluent_builders::GetEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetEnvironment::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetEnvironment::set_name): <p>The name of the environment that you want to get the detailed data for.</p>
    /// - On success, responds with [`GetEnvironmentOutput`](crate::output::GetEnvironmentOutput) with field(s):
    ///   - [`environment(Option<Environment>)`](crate::output::GetEnvironmentOutput::environment): <p>The detailed data of the requested environment.</p>
    /// - On failure, responds with [`SdkError<GetEnvironmentError>`](crate::error::GetEnvironmentError)
    pub fn get_environment(&self) -> fluent_builders::GetEnvironment {
        fluent_builders::GetEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetEnvironmentAccountConnection`](crate::client::fluent_builders::GetEnvironmentAccountConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`id(impl Into<String>)`](crate::client::fluent_builders::GetEnvironmentAccountConnection::id) / [`set_id(Option<String>)`](crate::client::fluent_builders::GetEnvironmentAccountConnection::set_id): <p>The ID of the environment account connection that you want to get the detailed data for.</p>
    /// - On success, responds with [`GetEnvironmentAccountConnectionOutput`](crate::output::GetEnvironmentAccountConnectionOutput) with field(s):
    ///   - [`environment_account_connection(Option<EnvironmentAccountConnection>)`](crate::output::GetEnvironmentAccountConnectionOutput::environment_account_connection): <p>The detailed data of the requested environment account connection.</p>
    /// - On failure, responds with [`SdkError<GetEnvironmentAccountConnectionError>`](crate::error::GetEnvironmentAccountConnectionError)
    pub fn get_environment_account_connection(
        &self,
    ) -> fluent_builders::GetEnvironmentAccountConnection {
        fluent_builders::GetEnvironmentAccountConnection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetEnvironmentTemplate`](crate::client::fluent_builders::GetEnvironmentTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetEnvironmentTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetEnvironmentTemplate::set_name): <p>The name of the environment template that you want to get the detailed data for.</p>
    /// - On success, responds with [`GetEnvironmentTemplateOutput`](crate::output::GetEnvironmentTemplateOutput) with field(s):
    ///   - [`environment_template(Option<EnvironmentTemplate>)`](crate::output::GetEnvironmentTemplateOutput::environment_template): <p>The detailed data of the requested environment template.</p>
    /// - On failure, responds with [`SdkError<GetEnvironmentTemplateError>`](crate::error::GetEnvironmentTemplateError)
    pub fn get_environment_template(&self) -> fluent_builders::GetEnvironmentTemplate {
        fluent_builders::GetEnvironmentTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetEnvironmentTemplateVersion`](crate::client::fluent_builders::GetEnvironmentTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::GetEnvironmentTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::GetEnvironmentTemplateVersion::set_template_name): <p>The name of the environment template a version of which you want to get detailed data for.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::GetEnvironmentTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::GetEnvironmentTemplateVersion::set_major_version): <p>To get environment template major version detail data, include <code>major Version</code>.</p>
    ///   - [`minor_version(impl Into<String>)`](crate::client::fluent_builders::GetEnvironmentTemplateVersion::minor_version) / [`set_minor_version(Option<String>)`](crate::client::fluent_builders::GetEnvironmentTemplateVersion::set_minor_version): <p>To get environment template minor version detail data, include <code>minorVersion</code>.</p>
    /// - On success, responds with [`GetEnvironmentTemplateVersionOutput`](crate::output::GetEnvironmentTemplateVersionOutput) with field(s):
    ///   - [`environment_template_version(Option<EnvironmentTemplateVersion>)`](crate::output::GetEnvironmentTemplateVersionOutput::environment_template_version): <p>The detailed data of the requested environment template version.</p>
    /// - On failure, responds with [`SdkError<GetEnvironmentTemplateVersionError>`](crate::error::GetEnvironmentTemplateVersionError)
    pub fn get_environment_template_version(
        &self,
    ) -> fluent_builders::GetEnvironmentTemplateVersion {
        fluent_builders::GetEnvironmentTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetRepository`](crate::client::fluent_builders::GetRepository) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`provider(RepositoryProvider)`](crate::client::fluent_builders::GetRepository::provider) / [`set_provider(Option<RepositoryProvider>)`](crate::client::fluent_builders::GetRepository::set_provider): <p>The repository provider.</p>
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetRepository::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetRepository::set_name): <p>The repository name, for example <code>myrepos/myrepo</code>.</p>
    /// - On success, responds with [`GetRepositoryOutput`](crate::output::GetRepositoryOutput) with field(s):
    ///   - [`repository(Option<Repository>)`](crate::output::GetRepositoryOutput::repository): <p>The repository link's detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<GetRepositoryError>`](crate::error::GetRepositoryError)
    pub fn get_repository(&self) -> fluent_builders::GetRepository {
        fluent_builders::GetRepository::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetRepositorySyncStatus`](crate::client::fluent_builders::GetRepositorySyncStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`repository_name(impl Into<String>)`](crate::client::fluent_builders::GetRepositorySyncStatus::repository_name) / [`set_repository_name(Option<String>)`](crate::client::fluent_builders::GetRepositorySyncStatus::set_repository_name): <p>The repository name.</p>
    ///   - [`repository_provider(RepositoryProvider)`](crate::client::fluent_builders::GetRepositorySyncStatus::repository_provider) / [`set_repository_provider(Option<RepositoryProvider>)`](crate::client::fluent_builders::GetRepositorySyncStatus::set_repository_provider): <p>The repository provider.</p>
    ///   - [`branch(impl Into<String>)`](crate::client::fluent_builders::GetRepositorySyncStatus::branch) / [`set_branch(Option<String>)`](crate::client::fluent_builders::GetRepositorySyncStatus::set_branch): <p>The repository branch.</p>
    ///   - [`sync_type(SyncType)`](crate::client::fluent_builders::GetRepositorySyncStatus::sync_type) / [`set_sync_type(Option<SyncType>)`](crate::client::fluent_builders::GetRepositorySyncStatus::set_sync_type): <p>The repository sync type.</p>
    /// - On success, responds with [`GetRepositorySyncStatusOutput`](crate::output::GetRepositorySyncStatusOutput) with field(s):
    ///   - [`latest_sync(Option<RepositorySyncAttempt>)`](crate::output::GetRepositorySyncStatusOutput::latest_sync): <p>The repository sync status detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<GetRepositorySyncStatusError>`](crate::error::GetRepositorySyncStatusError)
    pub fn get_repository_sync_status(&self) -> fluent_builders::GetRepositorySyncStatus {
        fluent_builders::GetRepositorySyncStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetService`](crate::client::fluent_builders::GetService) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetService::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetService::set_name): <p>The name of the service that you want to get the detailed data for.</p>
    /// - On success, responds with [`GetServiceOutput`](crate::output::GetServiceOutput) with field(s):
    ///   - [`service(Option<Service>)`](crate::output::GetServiceOutput::service): <p>The detailed data of the requested service.</p>
    /// - On failure, responds with [`SdkError<GetServiceError>`](crate::error::GetServiceError)
    pub fn get_service(&self) -> fluent_builders::GetService {
        fluent_builders::GetService::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetServiceInstance`](crate::client::fluent_builders::GetServiceInstance) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetServiceInstance::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetServiceInstance::set_name): <p>The name of a service instance that you want to get the detailed data for.</p>
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::GetServiceInstance::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::GetServiceInstance::set_service_name): <p>The name of the service that the service instance belongs to.</p>
    /// - On success, responds with [`GetServiceInstanceOutput`](crate::output::GetServiceInstanceOutput) with field(s):
    ///   - [`service_instance(Option<ServiceInstance>)`](crate::output::GetServiceInstanceOutput::service_instance): <p>The detailed data of the requested service instance.</p>
    /// - On failure, responds with [`SdkError<GetServiceInstanceError>`](crate::error::GetServiceInstanceError)
    pub fn get_service_instance(&self) -> fluent_builders::GetServiceInstance {
        fluent_builders::GetServiceInstance::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetServiceTemplate`](crate::client::fluent_builders::GetServiceTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::GetServiceTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::GetServiceTemplate::set_name): <p>The name of the service template that you want to get detailed data for.</p>
    /// - On success, responds with [`GetServiceTemplateOutput`](crate::output::GetServiceTemplateOutput) with field(s):
    ///   - [`service_template(Option<ServiceTemplate>)`](crate::output::GetServiceTemplateOutput::service_template): <p>The detailed data of the requested service template.</p>
    /// - On failure, responds with [`SdkError<GetServiceTemplateError>`](crate::error::GetServiceTemplateError)
    pub fn get_service_template(&self) -> fluent_builders::GetServiceTemplate {
        fluent_builders::GetServiceTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetServiceTemplateVersion`](crate::client::fluent_builders::GetServiceTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::GetServiceTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::GetServiceTemplateVersion::set_template_name): <p>The name of the service template a version of which you want to get detailed data for.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::GetServiceTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::GetServiceTemplateVersion::set_major_version): <p>To get service template major version detail data, include <code>major Version</code>.</p>
    ///   - [`minor_version(impl Into<String>)`](crate::client::fluent_builders::GetServiceTemplateVersion::minor_version) / [`set_minor_version(Option<String>)`](crate::client::fluent_builders::GetServiceTemplateVersion::set_minor_version): <p>To get service template minor version detail data, include <code>minorVersion</code>.</p>
    /// - On success, responds with [`GetServiceTemplateVersionOutput`](crate::output::GetServiceTemplateVersionOutput) with field(s):
    ///   - [`service_template_version(Option<ServiceTemplateVersion>)`](crate::output::GetServiceTemplateVersionOutput::service_template_version): <p>The detailed data of the requested service template version.</p>
    /// - On failure, responds with [`SdkError<GetServiceTemplateVersionError>`](crate::error::GetServiceTemplateVersionError)
    pub fn get_service_template_version(&self) -> fluent_builders::GetServiceTemplateVersion {
        fluent_builders::GetServiceTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetTemplateSyncConfig`](crate::client::fluent_builders::GetTemplateSyncConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::GetTemplateSyncConfig::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::GetTemplateSyncConfig::set_template_name): <p>The template name.</p>
    ///   - [`template_type(TemplateType)`](crate::client::fluent_builders::GetTemplateSyncConfig::template_type) / [`set_template_type(Option<TemplateType>)`](crate::client::fluent_builders::GetTemplateSyncConfig::set_template_type): <p>The template type.</p>
    /// - On success, responds with [`GetTemplateSyncConfigOutput`](crate::output::GetTemplateSyncConfigOutput) with field(s):
    ///   - [`template_sync_config(Option<TemplateSyncConfig>)`](crate::output::GetTemplateSyncConfigOutput::template_sync_config): <p>The template sync configuration detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<GetTemplateSyncConfigError>`](crate::error::GetTemplateSyncConfigError)
    pub fn get_template_sync_config(&self) -> fluent_builders::GetTemplateSyncConfig {
        fluent_builders::GetTemplateSyncConfig::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`GetTemplateSyncStatus`](crate::client::fluent_builders::GetTemplateSyncStatus) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::GetTemplateSyncStatus::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::GetTemplateSyncStatus::set_template_name): <p>The template name.</p>
    ///   - [`template_type(TemplateType)`](crate::client::fluent_builders::GetTemplateSyncStatus::template_type) / [`set_template_type(Option<TemplateType>)`](crate::client::fluent_builders::GetTemplateSyncStatus::set_template_type): <p>The template type.</p>
    ///   - [`template_version(impl Into<String>)`](crate::client::fluent_builders::GetTemplateSyncStatus::template_version) / [`set_template_version(Option<String>)`](crate::client::fluent_builders::GetTemplateSyncStatus::set_template_version): <p>The template major version.</p>
    /// - On success, responds with [`GetTemplateSyncStatusOutput`](crate::output::GetTemplateSyncStatusOutput) with field(s):
    ///   - [`latest_sync(Option<ResourceSyncAttempt>)`](crate::output::GetTemplateSyncStatusOutput::latest_sync): <p>The details of the last sync that's returned by Proton.</p>
    ///   - [`latest_successful_sync(Option<ResourceSyncAttempt>)`](crate::output::GetTemplateSyncStatusOutput::latest_successful_sync): <p>The details of the last successful sync that's returned by Proton.</p>
    ///   - [`desired_state(Option<Revision>)`](crate::output::GetTemplateSyncStatusOutput::desired_state): <p>The template sync desired state that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<GetTemplateSyncStatusError>`](crate::error::GetTemplateSyncStatusError)
    pub fn get_template_sync_status(&self) -> fluent_builders::GetTemplateSyncStatus {
        fluent_builders::GetTemplateSyncStatus::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListComponentOutputs`](crate::client::fluent_builders::ListComponentOutputs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListComponentOutputs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`component_name(impl Into<String>)`](crate::client::fluent_builders::ListComponentOutputs::component_name) / [`set_component_name(Option<String>)`](crate::client::fluent_builders::ListComponentOutputs::set_component_name): <p>The name of the component whose outputs you want.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListComponentOutputs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListComponentOutputs::set_next_token): <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
    /// - On success, responds with [`ListComponentOutputsOutput`](crate::output::ListComponentOutputsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListComponentOutputsOutput::next_token): <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
    ///   - [`outputs(Option<Vec<Output>>)`](crate::output::ListComponentOutputsOutput::outputs): <p>An array of component Infrastructure as Code (IaC) outputs.</p>
    /// - On failure, responds with [`SdkError<ListComponentOutputsError>`](crate::error::ListComponentOutputsError)
    pub fn list_component_outputs(&self) -> fluent_builders::ListComponentOutputs {
        fluent_builders::ListComponentOutputs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListComponentProvisionedResources`](crate::client::fluent_builders::ListComponentProvisionedResources) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListComponentProvisionedResources::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`component_name(impl Into<String>)`](crate::client::fluent_builders::ListComponentProvisionedResources::component_name) / [`set_component_name(Option<String>)`](crate::client::fluent_builders::ListComponentProvisionedResources::set_component_name): <p>The name of the component whose provisioned resources you want.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListComponentProvisionedResources::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListComponentProvisionedResources::set_next_token): <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
    /// - On success, responds with [`ListComponentProvisionedResourcesOutput`](crate::output::ListComponentProvisionedResourcesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListComponentProvisionedResourcesOutput::next_token): <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the current requested list of provisioned resources.</p>
    ///   - [`provisioned_resources(Option<Vec<ProvisionedResource>>)`](crate::output::ListComponentProvisionedResourcesOutput::provisioned_resources): <p>An array of provisioned resources for a component.</p>
    /// - On failure, responds with [`SdkError<ListComponentProvisionedResourcesError>`](crate::error::ListComponentProvisionedResourcesError)
    pub fn list_component_provisioned_resources(
        &self,
    ) -> fluent_builders::ListComponentProvisionedResources {
        fluent_builders::ListComponentProvisionedResources::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListComponents`](crate::client::fluent_builders::ListComponents) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListComponents::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListComponents::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListComponents::set_next_token): <p>A token that indicates the location of the next component in the array of components, after the list of components that was previously requested.</p>
    ///   - [`environment_name(impl Into<String>)`](crate::client::fluent_builders::ListComponents::environment_name) / [`set_environment_name(Option<String>)`](crate::client::fluent_builders::ListComponents::set_environment_name): <p>The name of an environment for result list filtering. Proton returns components associated with the environment or attached to service instances running in it.</p>
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::ListComponents::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::ListComponents::set_service_name): <p>The name of a service for result list filtering. Proton returns components attached to service instances of the service.</p>
    ///   - [`service_instance_name(impl Into<String>)`](crate::client::fluent_builders::ListComponents::service_instance_name) / [`set_service_instance_name(Option<String>)`](crate::client::fluent_builders::ListComponents::set_service_instance_name): <p>The name of a service instance for result list filtering. Proton returns the component attached to the service instance, if any.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListComponents::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListComponents::set_max_results): <p>The maximum number of components to list.</p>
    /// - On success, responds with [`ListComponentsOutput`](crate::output::ListComponentsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListComponentsOutput::next_token): <p>A token that indicates the location of the next component in the array of components, after the current requested list of components.</p>
    ///   - [`components(Option<Vec<ComponentSummary>>)`](crate::output::ListComponentsOutput::components): <p>An array of components with summary data.</p>
    /// - On failure, responds with [`SdkError<ListComponentsError>`](crate::error::ListComponentsError)
    pub fn list_components(&self) -> fluent_builders::ListComponents {
        fluent_builders::ListComponents::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEnvironmentAccountConnections`](crate::client::fluent_builders::ListEnvironmentAccountConnections) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEnvironmentAccountConnections::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`requested_by(EnvironmentAccountConnectionRequesterAccountType)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::requested_by) / [`set_requested_by(Option<EnvironmentAccountConnectionRequesterAccountType>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::set_requested_by): <p>The type of account making the <code>ListEnvironmentAccountConnections</code> request.</p>
    ///   - [`environment_name(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::environment_name) / [`set_environment_name(Option<String>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::set_environment_name): <p>The environment name that's associated with each listed environment account connection.</p>
    ///   - [`statuses(Vec<EnvironmentAccountConnectionStatus>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::statuses) / [`set_statuses(Option<Vec<EnvironmentAccountConnectionStatus>>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::set_statuses): <p>The status details for each listed environment account connection.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::set_next_token): <p>A token that indicates the location of the next environment account connection in the array of environment account connections, after the list of environment account connections that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEnvironmentAccountConnections::set_max_results): <p>The maximum number of environment account connections to list.</p>
    /// - On success, responds with [`ListEnvironmentAccountConnectionsOutput`](crate::output::ListEnvironmentAccountConnectionsOutput) with field(s):
    ///   - [`environment_account_connections(Option<Vec<EnvironmentAccountConnectionSummary>>)`](crate::output::ListEnvironmentAccountConnectionsOutput::environment_account_connections): <p>An array of environment account connections with details that's returned by Proton. </p>
    ///   - [`next_token(Option<String>)`](crate::output::ListEnvironmentAccountConnectionsOutput::next_token): <p>A token that indicates the location of the next environment account connection in the array of environment account connections, after the current requested list of environment account connections.</p>
    /// - On failure, responds with [`SdkError<ListEnvironmentAccountConnectionsError>`](crate::error::ListEnvironmentAccountConnectionsError)
    pub fn list_environment_account_connections(
        &self,
    ) -> fluent_builders::ListEnvironmentAccountConnections {
        fluent_builders::ListEnvironmentAccountConnections::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEnvironmentOutputs`](crate::client::fluent_builders::ListEnvironmentOutputs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEnvironmentOutputs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`environment_name(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentOutputs::environment_name) / [`set_environment_name(Option<String>)`](crate::client::fluent_builders::ListEnvironmentOutputs::set_environment_name): <p>The environment name.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentOutputs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEnvironmentOutputs::set_next_token): <p>A token that indicates the location of the next environment output in the array of environment outputs, after the list of environment outputs that was previously requested.</p>
    /// - On success, responds with [`ListEnvironmentOutputsOutput`](crate::output::ListEnvironmentOutputsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListEnvironmentOutputsOutput::next_token): <p>A token that indicates the location of the next environment output in the array of environment outputs, after the current requested list of environment outputs.</p>
    ///   - [`outputs(Option<Vec<Output>>)`](crate::output::ListEnvironmentOutputsOutput::outputs): <p>An array of environment outputs with detail data.</p>
    /// - On failure, responds with [`SdkError<ListEnvironmentOutputsError>`](crate::error::ListEnvironmentOutputsError)
    pub fn list_environment_outputs(&self) -> fluent_builders::ListEnvironmentOutputs {
        fluent_builders::ListEnvironmentOutputs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEnvironmentProvisionedResources`](crate::client::fluent_builders::ListEnvironmentProvisionedResources) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEnvironmentProvisionedResources::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`environment_name(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentProvisionedResources::environment_name) / [`set_environment_name(Option<String>)`](crate::client::fluent_builders::ListEnvironmentProvisionedResources::set_environment_name): <p>The environment name.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentProvisionedResources::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEnvironmentProvisionedResources::set_next_token): <p>A token that indicates the location of the next environment provisioned resource in the array of environment provisioned resources, after the list of environment provisioned resources that was previously requested.</p>
    /// - On success, responds with [`ListEnvironmentProvisionedResourcesOutput`](crate::output::ListEnvironmentProvisionedResourcesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListEnvironmentProvisionedResourcesOutput::next_token): <p>A token that indicates the location of the next environment provisioned resource in the array of provisioned resources, after the current requested list of environment provisioned resources.</p>
    ///   - [`provisioned_resources(Option<Vec<ProvisionedResource>>)`](crate::output::ListEnvironmentProvisionedResourcesOutput::provisioned_resources): <p>An array of environment provisioned resources.</p>
    /// - On failure, responds with [`SdkError<ListEnvironmentProvisionedResourcesError>`](crate::error::ListEnvironmentProvisionedResourcesError)
    pub fn list_environment_provisioned_resources(
        &self,
    ) -> fluent_builders::ListEnvironmentProvisionedResources {
        fluent_builders::ListEnvironmentProvisionedResources::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEnvironments`](crate::client::fluent_builders::ListEnvironments) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEnvironments::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEnvironments::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEnvironments::set_next_token): <p>A token that indicates the location of the next environment in the array of environments, after the list of environments that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEnvironments::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEnvironments::set_max_results): <p>The maximum number of environments to list.</p>
    ///   - [`environment_templates(Vec<EnvironmentTemplateFilter>)`](crate::client::fluent_builders::ListEnvironments::environment_templates) / [`set_environment_templates(Option<Vec<EnvironmentTemplateFilter>>)`](crate::client::fluent_builders::ListEnvironments::set_environment_templates): <p>An array of the versions of the environment template.</p>
    /// - On success, responds with [`ListEnvironmentsOutput`](crate::output::ListEnvironmentsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListEnvironmentsOutput::next_token): <p>A token that indicates the location of the next environment in the array of environments, after the current requested list of environments.</p>
    ///   - [`environments(Option<Vec<EnvironmentSummary>>)`](crate::output::ListEnvironmentsOutput::environments): <p>An array of environment detail data summaries.</p>
    /// - On failure, responds with [`SdkError<ListEnvironmentsError>`](crate::error::ListEnvironmentsError)
    pub fn list_environments(&self) -> fluent_builders::ListEnvironments {
        fluent_builders::ListEnvironments::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEnvironmentTemplates`](crate::client::fluent_builders::ListEnvironmentTemplates) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEnvironmentTemplates::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentTemplates::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEnvironmentTemplates::set_next_token): <p>A token that indicates the location of the next environment template in the array of environment templates, after the list of environment templates that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEnvironmentTemplates::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEnvironmentTemplates::set_max_results): <p>The maximum number of environment templates to list.</p>
    /// - On success, responds with [`ListEnvironmentTemplatesOutput`](crate::output::ListEnvironmentTemplatesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListEnvironmentTemplatesOutput::next_token): <p>A token that indicates the location of the next environment template in the array of environment templates, after the current requested list of environment templates.</p>
    ///   - [`templates(Option<Vec<EnvironmentTemplateSummary>>)`](crate::output::ListEnvironmentTemplatesOutput::templates): <p>An array of environment templates with detail data.</p>
    /// - On failure, responds with [`SdkError<ListEnvironmentTemplatesError>`](crate::error::ListEnvironmentTemplatesError)
    pub fn list_environment_templates(&self) -> fluent_builders::ListEnvironmentTemplates {
        fluent_builders::ListEnvironmentTemplates::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListEnvironmentTemplateVersions`](crate::client::fluent_builders::ListEnvironmentTemplateVersions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::set_next_token): <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of an environment template, after the list of major or minor versions that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::set_max_results): <p>The maximum number of major or minor versions of an environment template to list.</p>
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::set_template_name): <p>The name of the environment template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::ListEnvironmentTemplateVersions::set_major_version): <p>To view a list of minor of versions under a major version of an environment template, include <code>major Version</code>.</p>  <p>To view a list of major versions of an environment template, <i>exclude</i> <code>major Version</code>.</p>
    /// - On success, responds with [`ListEnvironmentTemplateVersionsOutput`](crate::output::ListEnvironmentTemplateVersionsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListEnvironmentTemplateVersionsOutput::next_token): <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of an environment template, after the list of major or minor versions that was previously requested.</p>
    ///   - [`template_versions(Option<Vec<EnvironmentTemplateVersionSummary>>)`](crate::output::ListEnvironmentTemplateVersionsOutput::template_versions): <p>An array of major or minor versions of an environment template detail data.</p>
    /// - On failure, responds with [`SdkError<ListEnvironmentTemplateVersionsError>`](crate::error::ListEnvironmentTemplateVersionsError)
    pub fn list_environment_template_versions(
        &self,
    ) -> fluent_builders::ListEnvironmentTemplateVersions {
        fluent_builders::ListEnvironmentTemplateVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRepositories`](crate::client::fluent_builders::ListRepositories) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRepositories::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRepositories::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRepositories::set_next_token): <p>A token that indicates the location of the next repository in the array of repositories, after the list of repositories previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListRepositories::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListRepositories::set_max_results): <p>The maximum number of repositories to list.</p>
    /// - On success, responds with [`ListRepositoriesOutput`](crate::output::ListRepositoriesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListRepositoriesOutput::next_token): <p>A token that indicates the location of the next repository in the array of repositories, after the current requested list of repositories. </p>
    ///   - [`repositories(Option<Vec<RepositorySummary>>)`](crate::output::ListRepositoriesOutput::repositories): <p>An array of repository links.</p>
    /// - On failure, responds with [`SdkError<ListRepositoriesError>`](crate::error::ListRepositoriesError)
    pub fn list_repositories(&self) -> fluent_builders::ListRepositories {
        fluent_builders::ListRepositories::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListRepositorySyncDefinitions`](crate::client::fluent_builders::ListRepositorySyncDefinitions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListRepositorySyncDefinitions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`repository_name(impl Into<String>)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::repository_name) / [`set_repository_name(Option<String>)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::set_repository_name): <p>The repository name.</p>
    ///   - [`repository_provider(RepositoryProvider)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::repository_provider) / [`set_repository_provider(Option<RepositoryProvider>)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::set_repository_provider): <p>The repository provider.</p>
    ///   - [`sync_type(SyncType)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::sync_type) / [`set_sync_type(Option<SyncType>)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::set_sync_type): <p>The sync type. The only supported value is <code>TEMPLATE_SYNC</code>.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListRepositorySyncDefinitions::set_next_token): <p>A token that indicates the location of the next repository sync definition in the array of repository sync definitions, after the list of repository sync definitions previously requested.</p>
    /// - On success, responds with [`ListRepositorySyncDefinitionsOutput`](crate::output::ListRepositorySyncDefinitionsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListRepositorySyncDefinitionsOutput::next_token): <p>A token that indicates the location of the next repository sync definition in the array of repository sync definitions, after the current requested list of repository sync definitions.</p>
    ///   - [`sync_definitions(Option<Vec<RepositorySyncDefinition>>)`](crate::output::ListRepositorySyncDefinitionsOutput::sync_definitions): <p>An array of repository sync definitions.</p>
    /// - On failure, responds with [`SdkError<ListRepositorySyncDefinitionsError>`](crate::error::ListRepositorySyncDefinitionsError)
    pub fn list_repository_sync_definitions(
        &self,
    ) -> fluent_builders::ListRepositorySyncDefinitions {
        fluent_builders::ListRepositorySyncDefinitions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServiceInstanceOutputs`](crate::client::fluent_builders::ListServiceInstanceOutputs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServiceInstanceOutputs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_instance_name(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstanceOutputs::service_instance_name) / [`set_service_instance_name(Option<String>)`](crate::client::fluent_builders::ListServiceInstanceOutputs::set_service_instance_name): <p>The name of the service instance whose outputs you want.</p>
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstanceOutputs::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::ListServiceInstanceOutputs::set_service_name): <p>The name of the service that <code>serviceInstanceName</code> is associated to.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstanceOutputs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServiceInstanceOutputs::set_next_token): <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
    /// - On success, responds with [`ListServiceInstanceOutputsOutput`](crate::output::ListServiceInstanceOutputsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServiceInstanceOutputsOutput::next_token): <p>A token that indicates the location of the next output in the array of outputs, after the current requested list of outputs.</p>
    ///   - [`outputs(Option<Vec<Output>>)`](crate::output::ListServiceInstanceOutputsOutput::outputs): <p>An array of service instance Infrastructure as Code (IaC) outputs.</p>
    /// - On failure, responds with [`SdkError<ListServiceInstanceOutputsError>`](crate::error::ListServiceInstanceOutputsError)
    pub fn list_service_instance_outputs(&self) -> fluent_builders::ListServiceInstanceOutputs {
        fluent_builders::ListServiceInstanceOutputs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServiceInstanceProvisionedResources`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources::set_service_name): <p>The name of the service that <code>serviceInstanceName</code> is associated to.</p>
    ///   - [`service_instance_name(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources::service_instance_name) / [`set_service_instance_name(Option<String>)`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources::set_service_instance_name): <p>The name of the service instance whose provisioned resources you want.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServiceInstanceProvisionedResources::set_next_token): <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
    /// - On success, responds with [`ListServiceInstanceProvisionedResourcesOutput`](crate::output::ListServiceInstanceProvisionedResourcesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServiceInstanceProvisionedResourcesOutput::next_token): <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the current requested list of provisioned resources.</p>
    ///   - [`provisioned_resources(Option<Vec<ProvisionedResource>>)`](crate::output::ListServiceInstanceProvisionedResourcesOutput::provisioned_resources): <p>An array of provisioned resources for a service instance.</p>
    /// - On failure, responds with [`SdkError<ListServiceInstanceProvisionedResourcesError>`](crate::error::ListServiceInstanceProvisionedResourcesError)
    pub fn list_service_instance_provisioned_resources(
        &self,
    ) -> fluent_builders::ListServiceInstanceProvisionedResources {
        fluent_builders::ListServiceInstanceProvisionedResources::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServiceInstances`](crate::client::fluent_builders::ListServiceInstances) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServiceInstances::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstances::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::ListServiceInstances::set_service_name): <p>The name of the service that the service instance belongs to.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServiceInstances::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServiceInstances::set_next_token): <p>A token that indicates the location of the next service in the array of service instances, after the list of service instances that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListServiceInstances::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListServiceInstances::set_max_results): <p>The maximum number of service instances to list.</p>
    ///   - [`filters(Vec<ListServiceInstancesFilter>)`](crate::client::fluent_builders::ListServiceInstances::filters) / [`set_filters(Option<Vec<ListServiceInstancesFilter>>)`](crate::client::fluent_builders::ListServiceInstances::set_filters): <p>An array of filtering criteria that scope down the result list. By default, all service instances in the Amazon Web Services account are returned.</p>
    ///   - [`sort_by(ListServiceInstancesSortBy)`](crate::client::fluent_builders::ListServiceInstances::sort_by) / [`set_sort_by(Option<ListServiceInstancesSortBy>)`](crate::client::fluent_builders::ListServiceInstances::set_sort_by): <p>The field that the result list is sorted by.</p>  <p>When you choose to sort by <code>serviceName</code>, service instances within each service are sorted by service instance name.</p>  <p>Default: <code>serviceName</code> </p>
    ///   - [`sort_order(SortOrder)`](crate::client::fluent_builders::ListServiceInstances::sort_order) / [`set_sort_order(Option<SortOrder>)`](crate::client::fluent_builders::ListServiceInstances::set_sort_order): <p>Result list sort order.</p>  <p>Default: <code>ASCENDING</code> </p>
    /// - On success, responds with [`ListServiceInstancesOutput`](crate::output::ListServiceInstancesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServiceInstancesOutput::next_token): <p>A token that indicates the location of the next service instance in the array of service instances, after the current requested list of service instances.</p>
    ///   - [`service_instances(Option<Vec<ServiceInstanceSummary>>)`](crate::output::ListServiceInstancesOutput::service_instances): <p>An array of service instances with summary data.</p>
    /// - On failure, responds with [`SdkError<ListServiceInstancesError>`](crate::error::ListServiceInstancesError)
    pub fn list_service_instances(&self) -> fluent_builders::ListServiceInstances {
        fluent_builders::ListServiceInstances::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServicePipelineOutputs`](crate::client::fluent_builders::ListServicePipelineOutputs) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServicePipelineOutputs::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::ListServicePipelineOutputs::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::ListServicePipelineOutputs::set_service_name): <p>The name of the service whose pipeline's outputs you want.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServicePipelineOutputs::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServicePipelineOutputs::set_next_token): <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
    /// - On success, responds with [`ListServicePipelineOutputsOutput`](crate::output::ListServicePipelineOutputsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServicePipelineOutputsOutput::next_token): <p>A token that indicates the location of the next output in the array of outputs, after the current requested list of outputs.</p>
    ///   - [`outputs(Option<Vec<Output>>)`](crate::output::ListServicePipelineOutputsOutput::outputs): <p>An array of service pipeline Infrastructure as Code (IaC) outputs.</p>
    /// - On failure, responds with [`SdkError<ListServicePipelineOutputsError>`](crate::error::ListServicePipelineOutputsError)
    pub fn list_service_pipeline_outputs(&self) -> fluent_builders::ListServicePipelineOutputs {
        fluent_builders::ListServicePipelineOutputs::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServicePipelineProvisionedResources`](crate::client::fluent_builders::ListServicePipelineProvisionedResources) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServicePipelineProvisionedResources::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::ListServicePipelineProvisionedResources::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::ListServicePipelineProvisionedResources::set_service_name): <p>The name of the service whose pipeline's provisioned resources you want.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServicePipelineProvisionedResources::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServicePipelineProvisionedResources::set_next_token): <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
    /// - On success, responds with [`ListServicePipelineProvisionedResourcesOutput`](crate::output::ListServicePipelineProvisionedResourcesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServicePipelineProvisionedResourcesOutput::next_token): <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the current requested list of provisioned resources.</p>
    ///   - [`provisioned_resources(Option<Vec<ProvisionedResource>>)`](crate::output::ListServicePipelineProvisionedResourcesOutput::provisioned_resources): <p>An array of provisioned resources for a service and pipeline.</p>
    /// - On failure, responds with [`SdkError<ListServicePipelineProvisionedResourcesError>`](crate::error::ListServicePipelineProvisionedResourcesError)
    pub fn list_service_pipeline_provisioned_resources(
        &self,
    ) -> fluent_builders::ListServicePipelineProvisionedResources {
        fluent_builders::ListServicePipelineProvisionedResources::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServices`](crate::client::fluent_builders::ListServices) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServices::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServices::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServices::set_next_token): <p>A token that indicates the location of the next service in the array of services, after the list of services that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListServices::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListServices::set_max_results): <p>The maximum number of services to list.</p>
    /// - On success, responds with [`ListServicesOutput`](crate::output::ListServicesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServicesOutput::next_token): <p>A token that indicates the location of the next service in the array of services, after the current requested list of services.</p>
    ///   - [`services(Option<Vec<ServiceSummary>>)`](crate::output::ListServicesOutput::services): <p>An array of services with summaries of detail data.</p>
    /// - On failure, responds with [`SdkError<ListServicesError>`](crate::error::ListServicesError)
    pub fn list_services(&self) -> fluent_builders::ListServices {
        fluent_builders::ListServices::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServiceTemplates`](crate::client::fluent_builders::ListServiceTemplates) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServiceTemplates::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServiceTemplates::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServiceTemplates::set_next_token): <p>A token that indicates the location of the next service template in the array of service templates, after the list of service templates previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListServiceTemplates::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListServiceTemplates::set_max_results): <p>The maximum number of service templates to list.</p>
    /// - On success, responds with [`ListServiceTemplatesOutput`](crate::output::ListServiceTemplatesOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServiceTemplatesOutput::next_token): <p>A token that indicates the location of the next service template in the array of service templates, after the current requested list of service templates.</p>
    ///   - [`templates(Option<Vec<ServiceTemplateSummary>>)`](crate::output::ListServiceTemplatesOutput::templates): <p>An array of service templates with detail data.</p>
    /// - On failure, responds with [`SdkError<ListServiceTemplatesError>`](crate::error::ListServiceTemplatesError)
    pub fn list_service_templates(&self) -> fluent_builders::ListServiceTemplates {
        fluent_builders::ListServiceTemplates::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListServiceTemplateVersions`](crate::client::fluent_builders::ListServiceTemplateVersions) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListServiceTemplateVersions::into_paginator).
    ///
    /// - The fluent builder is configurable:
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListServiceTemplateVersions::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListServiceTemplateVersions::set_next_token): <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of a service template, after the list of major or minor versions that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListServiceTemplateVersions::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListServiceTemplateVersions::set_max_results): <p>The maximum number of major or minor versions of a service template to list.</p>
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::ListServiceTemplateVersions::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::ListServiceTemplateVersions::set_template_name): <p>The name of the service template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::ListServiceTemplateVersions::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::ListServiceTemplateVersions::set_major_version): <p>To view a list of minor of versions under a major version of a service template, include <code>major Version</code>.</p>  <p>To view a list of major versions of a service template, <i>exclude</i> <code>major Version</code>.</p>
    /// - On success, responds with [`ListServiceTemplateVersionsOutput`](crate::output::ListServiceTemplateVersionsOutput) with field(s):
    ///   - [`next_token(Option<String>)`](crate::output::ListServiceTemplateVersionsOutput::next_token): <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of a service template, after the current requested list of service major or minor versions.</p>
    ///   - [`template_versions(Option<Vec<ServiceTemplateVersionSummary>>)`](crate::output::ListServiceTemplateVersionsOutput::template_versions): <p>An array of major or minor versions of a service template with detail data.</p>
    /// - On failure, responds with [`SdkError<ListServiceTemplateVersionsError>`](crate::error::ListServiceTemplateVersionsError)
    pub fn list_service_template_versions(&self) -> fluent_builders::ListServiceTemplateVersions {
        fluent_builders::ListServiceTemplateVersions::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`ListTagsForResource`](crate::client::fluent_builders::ListTagsForResource) operation.
    /// This operation supports pagination; See [`into_paginator()`](crate::client::fluent_builders::ListTagsForResource::into_paginator).
    ///
    /// - 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 for the listed tags.</p>
    ///   - [`next_token(impl Into<String>)`](crate::client::fluent_builders::ListTagsForResource::next_token) / [`set_next_token(Option<String>)`](crate::client::fluent_builders::ListTagsForResource::set_next_token): <p>A token that indicates the location of the next resource tag in the array of resource tags, after the list of resource tags that was previously requested.</p>
    ///   - [`max_results(i32)`](crate::client::fluent_builders::ListTagsForResource::max_results) / [`set_max_results(Option<i32>)`](crate::client::fluent_builders::ListTagsForResource::set_max_results): <p>The maximum number of tags to list.</p>
    /// - On success, responds with [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput) with field(s):
    ///   - [`tags(Option<Vec<Tag>>)`](crate::output::ListTagsForResourceOutput::tags): <p>A list of resource tags with detail data.</p>
    ///   - [`next_token(Option<String>)`](crate::output::ListTagsForResourceOutput::next_token): <p>A token that indicates the location of the next resource tag in the array of resource tags, after the current requested list of resource tags.</p>
    /// - On failure, responds with [`SdkError<ListTagsForResourceError>`](crate::error::ListTagsForResourceError)
    pub fn list_tags_for_resource(&self) -> fluent_builders::ListTagsForResource {
        fluent_builders::ListTagsForResource::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`NotifyResourceDeploymentStatusChange`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`resource_arn(impl Into<String>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::resource_arn) / [`set_resource_arn(Option<String>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::set_resource_arn): <p>The provisioned resource Amazon Resource Name (ARN).</p>
    ///   - [`status(ResourceDeploymentStatus)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::status) / [`set_status(Option<ResourceDeploymentStatus>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::set_status): <p>The status of your provisioned resource.</p>
    ///   - [`outputs(Vec<Output>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::outputs) / [`set_outputs(Option<Vec<Output>>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::set_outputs): <p>The provisioned resource state change detail data that's returned by Proton.</p>
    ///   - [`deployment_id(impl Into<String>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::deployment_id) / [`set_deployment_id(Option<String>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::set_deployment_id): <p>The deployment ID for your provisioned resource.</p>
    ///   - [`status_message(impl Into<String>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::status_message) / [`set_status_message(Option<String>)`](crate::client::fluent_builders::NotifyResourceDeploymentStatusChange::set_status_message): <p>The deployment status message for your provisioned resource.</p>
    /// - On success, responds with [`NotifyResourceDeploymentStatusChangeOutput`](crate::output::NotifyResourceDeploymentStatusChangeOutput)

    /// - On failure, responds with [`SdkError<NotifyResourceDeploymentStatusChangeError>`](crate::error::NotifyResourceDeploymentStatusChangeError)
    pub fn notify_resource_deployment_status_change(
        &self,
    ) -> fluent_builders::NotifyResourceDeploymentStatusChange {
        fluent_builders::NotifyResourceDeploymentStatusChange::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`RejectEnvironmentAccountConnection`](crate::client::fluent_builders::RejectEnvironmentAccountConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`id(impl Into<String>)`](crate::client::fluent_builders::RejectEnvironmentAccountConnection::id) / [`set_id(Option<String>)`](crate::client::fluent_builders::RejectEnvironmentAccountConnection::set_id): <p>The ID of the environment account connection to reject.</p>
    /// - On success, responds with [`RejectEnvironmentAccountConnectionOutput`](crate::output::RejectEnvironmentAccountConnectionOutput) with field(s):
    ///   - [`environment_account_connection(Option<EnvironmentAccountConnection>)`](crate::output::RejectEnvironmentAccountConnectionOutput::environment_account_connection): <p>The environment connection account detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<RejectEnvironmentAccountConnectionError>`](crate::error::RejectEnvironmentAccountConnectionError)
    pub fn reject_environment_account_connection(
        &self,
    ) -> fluent_builders::RejectEnvironmentAccountConnection {
        fluent_builders::RejectEnvironmentAccountConnection::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 Proton resource to apply customer tags to.</p>
    ///   - [`tags(Vec<Tag>)`](crate::client::fluent_builders::TagResource::tags) / [`set_tags(Option<Vec<Tag>>)`](crate::client::fluent_builders::TagResource::set_tags): <p>A list of customer tags to apply to the Proton 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 customer 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>A list of customer tag keys that indicate the customer tags to be removed 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 [`UpdateAccountSettings`](crate::client::fluent_builders::UpdateAccountSettings) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`pipeline_service_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateAccountSettings::pipeline_service_role_arn) / [`set_pipeline_service_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateAccountSettings::set_pipeline_service_role_arn): <p>The Amazon Resource Name (ARN) of the service role you want to use for provisioning pipelines. Assumed by Proton for Amazon Web Services-managed provisioning, and by customer-owned automation for self-managed provisioning.</p>  <p>To remove a previously configured ARN, specify an empty string.</p>
    ///   - [`pipeline_provisioning_repository(RepositoryBranchInput)`](crate::client::fluent_builders::UpdateAccountSettings::pipeline_provisioning_repository) / [`set_pipeline_provisioning_repository(Option<RepositoryBranchInput>)`](crate::client::fluent_builders::UpdateAccountSettings::set_pipeline_provisioning_repository): <p>A linked repository for pipeline provisioning. Specify it if you have environments configured for self-managed provisioning with services that include pipelines. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>  <p>To remove a previously configured repository, set <code>deletePipelineProvisioningRepository</code> to <code>true</code>, and don't set <code>pipelineProvisioningRepository</code>.</p>
    ///   - [`delete_pipeline_provisioning_repository(bool)`](crate::client::fluent_builders::UpdateAccountSettings::delete_pipeline_provisioning_repository) / [`set_delete_pipeline_provisioning_repository(Option<bool>)`](crate::client::fluent_builders::UpdateAccountSettings::set_delete_pipeline_provisioning_repository): <p>Set to <code>true</code> to remove a configured pipeline repository from the account settings. Don't set this field if you are updating the configured pipeline repository.</p>
    ///   - [`pipeline_codebuild_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateAccountSettings::pipeline_codebuild_role_arn) / [`set_pipeline_codebuild_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateAccountSettings::set_pipeline_codebuild_role_arn): <p>The Amazon Resource Name (ARN) of the service role you want to use for provisioning pipelines. Proton assumes this role for CodeBuild-based provisioning.</p>
    /// - On success, responds with [`UpdateAccountSettingsOutput`](crate::output::UpdateAccountSettingsOutput) with field(s):
    ///   - [`account_settings(Option<AccountSettings>)`](crate::output::UpdateAccountSettingsOutput::account_settings): <p>The Proton pipeline service role and repository data shared across the Amazon Web Services account.</p>
    /// - On failure, responds with [`SdkError<UpdateAccountSettingsError>`](crate::error::UpdateAccountSettingsError)
    pub fn update_account_settings(&self) -> fluent_builders::UpdateAccountSettings {
        fluent_builders::UpdateAccountSettings::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateComponent`](crate::client::fluent_builders::UpdateComponent) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateComponent::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateComponent::set_name): <p>The name of the component to update.</p>
    ///   - [`deployment_type(ComponentDeploymentUpdateType)`](crate::client::fluent_builders::UpdateComponent::deployment_type) / [`set_deployment_type(Option<ComponentDeploymentUpdateType>)`](crate::client::fluent_builders::UpdateComponent::set_deployment_type): <p>The deployment type. It defines the mode for updating a component, as follows:</p>  <dl>   <dt></dt>   <dd>    <p> <code>NONE</code> </p>    <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated. You can only specify <code>description</code> in this mode.</p>   </dd>   <dt></dt>   <dd>    <p> <code>CURRENT_VERSION</code> </p>    <p>In this mode, the component is deployed and updated with the new <code>serviceSpec</code>, <code>templateSource</code>, and/or <code>type</code> that you provide. Only requested parameters are updated.</p>   </dd>  </dl>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateComponent::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateComponent::set_description): <p>An optional customer-provided description of the component.</p>
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::UpdateComponent::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::UpdateComponent::set_service_name): <p>The name of the service that <code>serviceInstanceName</code> is associated with. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both <code>serviceInstanceName</code> and <code>serviceName</code> or for neither of them.</p>
    ///   - [`service_instance_name(impl Into<String>)`](crate::client::fluent_builders::UpdateComponent::service_instance_name) / [`set_service_instance_name(Option<String>)`](crate::client::fluent_builders::UpdateComponent::set_service_instance_name): <p>The name of the service instance that you want to attach this component to. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both <code>serviceInstanceName</code> and <code>serviceName</code> or for neither of them.</p>
    ///   - [`service_spec(impl Into<String>)`](crate::client::fluent_builders::UpdateComponent::service_spec) / [`set_service_spec(Option<String>)`](crate::client::fluent_builders::UpdateComponent::set_service_spec): <p>The service spec that you want the component to use to access service inputs. Set this only when the component is attached to a service instance.</p>
    ///   - [`template_file(impl Into<String>)`](crate::client::fluent_builders::UpdateComponent::template_file) / [`set_template_file(Option<String>)`](crate::client::fluent_builders::UpdateComponent::set_template_file): <p>A path to the Infrastructure as Code (IaC) file describing infrastructure that a custom component provisions.</p> <note>   <p>Components support a single IaC file, even if you use Terraform as your template language.</p>  </note>
    /// - On success, responds with [`UpdateComponentOutput`](crate::output::UpdateComponentOutput) with field(s):
    ///   - [`component(Option<Component>)`](crate::output::UpdateComponentOutput::component): <p>The detailed data of the updated component.</p>
    /// - On failure, responds with [`SdkError<UpdateComponentError>`](crate::error::UpdateComponentError)
    pub fn update_component(&self) -> fluent_builders::UpdateComponent {
        fluent_builders::UpdateComponent::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateEnvironment`](crate::client::fluent_builders::UpdateEnvironment) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_name): <p>The name of the environment to update.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_description): <p>A description of the environment update.</p>
    ///   - [`spec(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::spec) / [`set_spec(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_spec): <p>The formatted specification that defines the update.</p>
    ///   - [`template_major_version(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::template_major_version) / [`set_template_major_version(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_template_major_version): <p>The major version of the environment to update.</p>
    ///   - [`template_minor_version(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::template_minor_version) / [`set_template_minor_version(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_template_minor_version): <p>The minor version of the environment to update.</p>
    ///   - [`proton_service_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::proton_service_role_arn) / [`set_proton_service_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_proton_service_role_arn): <p>The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make API calls to other services your behalf.</p>
    ///   - [`deployment_type(DeploymentUpdateType)`](crate::client::fluent_builders::UpdateEnvironment::deployment_type) / [`set_deployment_type(Option<DeploymentUpdateType>)`](crate::client::fluent_builders::UpdateEnvironment::set_deployment_type): <p>There are four modes for updating an environment. The <code>deploymentType</code> field defines the mode.</p>  <dl>   <dt></dt>   <dd>    <p> <code>NONE</code> </p>    <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>   </dd>   <dt></dt>   <dd>    <p> <code>CURRENT_VERSION</code> </p>    <p>In this mode, the environment is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this <code>deployment-type</code>.</p>   </dd>   <dt></dt>   <dd>    <p> <code>MINOR_VERSION</code> </p>    <p>In this mode, the environment is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can also specify a different minor version of the current major version in use.</p>   </dd>   <dt></dt>   <dd>    <p> <code>MAJOR_VERSION</code> </p>    <p>In this mode, the environment is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can also specify a different major version that is higher than the major version in use and a minor version (optional).</p>   </dd>  </dl>
    ///   - [`environment_account_connection_id(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::environment_account_connection_id) / [`set_environment_account_connection_id(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_environment_account_connection_id): <p>The ID of the environment account connection.</p>  <p>You can only update to a new environment account connection if it was created in the same environment account that the current environment account connection was created in and is associated with the current environment.</p>
    ///   - [`provisioning_repository(RepositoryBranchInput)`](crate::client::fluent_builders::UpdateEnvironment::provisioning_repository) / [`set_provisioning_repository(Option<RepositoryBranchInput>)`](crate::client::fluent_builders::UpdateEnvironment::set_provisioning_repository): <p>The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
    ///   - [`component_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::component_role_arn) / [`set_component_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_component_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.</p>  <p>The environment must have a <code>componentRoleArn</code> to allow directly defined components to be associated with the environment.</p>  <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`codebuild_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironment::codebuild_role_arn) / [`set_codebuild_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateEnvironment::set_codebuild_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.</p>
    /// - On success, responds with [`UpdateEnvironmentOutput`](crate::output::UpdateEnvironmentOutput) with field(s):
    ///   - [`environment(Option<Environment>)`](crate::output::UpdateEnvironmentOutput::environment): <p>The environment detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateEnvironmentError>`](crate::error::UpdateEnvironmentError)
    pub fn update_environment(&self) -> fluent_builders::UpdateEnvironment {
        fluent_builders::UpdateEnvironment::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateEnvironmentAccountConnection`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`id(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::id) / [`set_id(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::set_id): <p>The ID of the environment account connection to update.</p>
    ///   - [`role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::role_arn) / [`set_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::set_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that's associated with the environment account connection to update.</p>
    ///   - [`component_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::component_role_arn) / [`set_component_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::set_component_role_arn): <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.</p>  <p>The environment account connection must have a <code>componentRoleArn</code> to allow directly defined components to be associated with any environments running in the account.</p>  <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    ///   - [`codebuild_role_arn(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::codebuild_role_arn) / [`set_codebuild_role_arn(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentAccountConnection::set_codebuild_role_arn): <p>The Amazon Resource Name (ARN) of an IAM service role in the environment account. Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.</p>
    /// - On success, responds with [`UpdateEnvironmentAccountConnectionOutput`](crate::output::UpdateEnvironmentAccountConnectionOutput) with field(s):
    ///   - [`environment_account_connection(Option<EnvironmentAccountConnection>)`](crate::output::UpdateEnvironmentAccountConnectionOutput::environment_account_connection): <p>The environment account connection detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateEnvironmentAccountConnectionError>`](crate::error::UpdateEnvironmentAccountConnectionError)
    pub fn update_environment_account_connection(
        &self,
    ) -> fluent_builders::UpdateEnvironmentAccountConnection {
        fluent_builders::UpdateEnvironmentAccountConnection::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateEnvironmentTemplate`](crate::client::fluent_builders::UpdateEnvironmentTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplate::set_name): <p>The name of the environment template to update.</p>
    ///   - [`display_name(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplate::display_name) / [`set_display_name(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplate::set_display_name): <p>The name of the environment template to update as displayed in the developer interface.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplate::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplate::set_description): <p>A description of the environment template update.</p>
    /// - On success, responds with [`UpdateEnvironmentTemplateOutput`](crate::output::UpdateEnvironmentTemplateOutput) with field(s):
    ///   - [`environment_template(Option<EnvironmentTemplate>)`](crate::output::UpdateEnvironmentTemplateOutput::environment_template): <p>The environment template detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateEnvironmentTemplateError>`](crate::error::UpdateEnvironmentTemplateError)
    pub fn update_environment_template(&self) -> fluent_builders::UpdateEnvironmentTemplate {
        fluent_builders::UpdateEnvironmentTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateEnvironmentTemplateVersion`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::set_template_name): <p>The name of the environment template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::set_major_version): <p>To update a major version of an environment template, include <code>major Version</code>.</p>
    ///   - [`minor_version(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::minor_version) / [`set_minor_version(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::set_minor_version): <p>To update a minor version of an environment template, include <code>minorVersion</code>.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::set_description): <p>A description of environment template version to update.</p>
    ///   - [`status(TemplateVersionStatus)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::status) / [`set_status(Option<TemplateVersionStatus>)`](crate::client::fluent_builders::UpdateEnvironmentTemplateVersion::set_status): <p>The status of the environment template minor version to update.</p>
    /// - On success, responds with [`UpdateEnvironmentTemplateVersionOutput`](crate::output::UpdateEnvironmentTemplateVersionOutput) with field(s):
    ///   - [`environment_template_version(Option<EnvironmentTemplateVersion>)`](crate::output::UpdateEnvironmentTemplateVersionOutput::environment_template_version): <p>The environment template version detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateEnvironmentTemplateVersionError>`](crate::error::UpdateEnvironmentTemplateVersionError)
    pub fn update_environment_template_version(
        &self,
    ) -> fluent_builders::UpdateEnvironmentTemplateVersion {
        fluent_builders::UpdateEnvironmentTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateService`](crate::client::fluent_builders::UpdateService) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateService::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateService::set_name): <p>The name of the service to edit.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateService::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateService::set_description): <p>The edited service description.</p>
    ///   - [`spec(impl Into<String>)`](crate::client::fluent_builders::UpdateService::spec) / [`set_spec(Option<String>)`](crate::client::fluent_builders::UpdateService::set_spec): <p>Lists the service instances to add and the existing service instances to remain. Omit the existing service instances to delete from the list. <i>Don't</i> include edits to the existing service instances or pipeline. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-svc-update.html">Edit a service</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`UpdateServiceOutput`](crate::output::UpdateServiceOutput) with field(s):
    ///   - [`service(Option<Service>)`](crate::output::UpdateServiceOutput::service): <p>The service detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateServiceError>`](crate::error::UpdateServiceError)
    pub fn update_service(&self) -> fluent_builders::UpdateService {
        fluent_builders::UpdateService::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateServiceInstance`](crate::client::fluent_builders::UpdateServiceInstance) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceInstance::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateServiceInstance::set_name): <p>The name of the service instance to update.</p>
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceInstance::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::UpdateServiceInstance::set_service_name): <p>The name of the service that the service instance belongs to.</p>
    ///   - [`deployment_type(DeploymentUpdateType)`](crate::client::fluent_builders::UpdateServiceInstance::deployment_type) / [`set_deployment_type(Option<DeploymentUpdateType>)`](crate::client::fluent_builders::UpdateServiceInstance::set_deployment_type): <p>The deployment type. It defines the mode for updating a service instance, as follows:</p>  <dl>   <dt></dt>   <dd>    <p> <code>NONE</code> </p>    <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>   </dd>   <dt></dt>   <dd>    <p> <code>CURRENT_VERSION</code> </p>    <p>In this mode, the service instance is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this deployment type.</p>   </dd>   <dt></dt>   <dd>    <p> <code>MINOR_VERSION</code> </p>    <p>In this mode, the service instance is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can also specify a different minor version of the current major version in use.</p>   </dd>   <dt></dt>   <dd>    <p> <code>MAJOR_VERSION</code> </p>    <p>In this mode, the service instance is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can specify a different major version that's higher than the major version in use and a minor version.</p>   </dd>  </dl>
    ///   - [`spec(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceInstance::spec) / [`set_spec(Option<String>)`](crate::client::fluent_builders::UpdateServiceInstance::set_spec): <p>The formatted specification that defines the service instance update.</p>
    ///   - [`template_major_version(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceInstance::template_major_version) / [`set_template_major_version(Option<String>)`](crate::client::fluent_builders::UpdateServiceInstance::set_template_major_version): <p>The major version of the service template to update.</p>
    ///   - [`template_minor_version(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceInstance::template_minor_version) / [`set_template_minor_version(Option<String>)`](crate::client::fluent_builders::UpdateServiceInstance::set_template_minor_version): <p>The minor version of the service template to update.</p>
    /// - On success, responds with [`UpdateServiceInstanceOutput`](crate::output::UpdateServiceInstanceOutput) with field(s):
    ///   - [`service_instance(Option<ServiceInstance>)`](crate::output::UpdateServiceInstanceOutput::service_instance): <p>The service instance summary data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateServiceInstanceError>`](crate::error::UpdateServiceInstanceError)
    pub fn update_service_instance(&self) -> fluent_builders::UpdateServiceInstance {
        fluent_builders::UpdateServiceInstance::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateServicePipeline`](crate::client::fluent_builders::UpdateServicePipeline) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`service_name(impl Into<String>)`](crate::client::fluent_builders::UpdateServicePipeline::service_name) / [`set_service_name(Option<String>)`](crate::client::fluent_builders::UpdateServicePipeline::set_service_name): <p>The name of the service to that the pipeline is associated with.</p>
    ///   - [`spec(impl Into<String>)`](crate::client::fluent_builders::UpdateServicePipeline::spec) / [`set_spec(Option<String>)`](crate::client::fluent_builders::UpdateServicePipeline::set_spec): <p>The spec for the service pipeline to update.</p>
    ///   - [`deployment_type(DeploymentUpdateType)`](crate::client::fluent_builders::UpdateServicePipeline::deployment_type) / [`set_deployment_type(Option<DeploymentUpdateType>)`](crate::client::fluent_builders::UpdateServicePipeline::set_deployment_type): <p>The deployment type.</p>  <p>There are four modes for updating a service pipeline. The <code>deploymentType</code> field defines the mode.</p>  <dl>   <dt></dt>   <dd>    <p> <code>NONE</code> </p>    <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>   </dd>   <dt></dt>   <dd>    <p> <code>CURRENT_VERSION</code> </p>    <p>In this mode, the service pipeline is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this <code>deployment-type</code>.</p>   </dd>   <dt></dt>   <dd>    <p> <code>MINOR_VERSION</code> </p>    <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can specify a different minor version of the current major version in use.</p>   </dd>   <dt></dt>   <dd>    <p> <code>MAJOR_VERSION</code> </p>    <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can specify a different major version that's higher than the major version in use and a minor version.</p>   </dd>  </dl>
    ///   - [`template_major_version(impl Into<String>)`](crate::client::fluent_builders::UpdateServicePipeline::template_major_version) / [`set_template_major_version(Option<String>)`](crate::client::fluent_builders::UpdateServicePipeline::set_template_major_version): <p>The major version of the service template that was used to create the service that the pipeline is associated with.</p>
    ///   - [`template_minor_version(impl Into<String>)`](crate::client::fluent_builders::UpdateServicePipeline::template_minor_version) / [`set_template_minor_version(Option<String>)`](crate::client::fluent_builders::UpdateServicePipeline::set_template_minor_version): <p>The minor version of the service template that was used to create the service that the pipeline is associated with.</p>
    /// - On success, responds with [`UpdateServicePipelineOutput`](crate::output::UpdateServicePipelineOutput) with field(s):
    ///   - [`pipeline(Option<ServicePipeline>)`](crate::output::UpdateServicePipelineOutput::pipeline): <p>The pipeline details that are returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateServicePipelineError>`](crate::error::UpdateServicePipelineError)
    pub fn update_service_pipeline(&self) -> fluent_builders::UpdateServicePipeline {
        fluent_builders::UpdateServicePipeline::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateServiceTemplate`](crate::client::fluent_builders::UpdateServiceTemplate) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`name(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceTemplate::name) / [`set_name(Option<String>)`](crate::client::fluent_builders::UpdateServiceTemplate::set_name): <p>The name of the service template to update.</p>
    ///   - [`display_name(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceTemplate::display_name) / [`set_display_name(Option<String>)`](crate::client::fluent_builders::UpdateServiceTemplate::set_display_name): <p>The name of the service template to update that's displayed in the developer interface.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceTemplate::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateServiceTemplate::set_description): <p>A description of the service template update.</p>
    /// - On success, responds with [`UpdateServiceTemplateOutput`](crate::output::UpdateServiceTemplateOutput) with field(s):
    ///   - [`service_template(Option<ServiceTemplate>)`](crate::output::UpdateServiceTemplateOutput::service_template): <p>The service template detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateServiceTemplateError>`](crate::error::UpdateServiceTemplateError)
    pub fn update_service_template(&self) -> fluent_builders::UpdateServiceTemplate {
        fluent_builders::UpdateServiceTemplate::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateServiceTemplateVersion`](crate::client::fluent_builders::UpdateServiceTemplateVersion) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::set_template_name): <p>The name of the service template.</p>
    ///   - [`major_version(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::major_version) / [`set_major_version(Option<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::set_major_version): <p>To update a major version of a service template, include <code>major Version</code>.</p>
    ///   - [`minor_version(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::minor_version) / [`set_minor_version(Option<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::set_minor_version): <p>To update a minor version of a service template, include <code>minorVersion</code>.</p>
    ///   - [`description(impl Into<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::description) / [`set_description(Option<String>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::set_description): <p>A description of a service template version to update.</p>
    ///   - [`status(TemplateVersionStatus)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::status) / [`set_status(Option<TemplateVersionStatus>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::set_status): <p>The status of the service template minor version to update.</p>
    ///   - [`compatible_environment_templates(Vec<CompatibleEnvironmentTemplateInput>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::compatible_environment_templates) / [`set_compatible_environment_templates(Option<Vec<CompatibleEnvironmentTemplateInput>>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::set_compatible_environment_templates): <p>An array of environment template objects that are compatible with this service template version. A service instance based on this service template version can run in environments based on compatible templates.</p>
    ///   - [`supported_component_sources(Vec<ServiceTemplateSupportedComponentSourceType>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::supported_component_sources) / [`set_supported_component_sources(Option<Vec<ServiceTemplateSupportedComponentSourceType>>)`](crate::client::fluent_builders::UpdateServiceTemplateVersion::set_supported_component_sources): <p>An array of supported component sources. Components with supported sources can be attached to service instances based on this service template version.</p> <note>   <p>A change to <code>supportedComponentSources</code> doesn't impact existing component attachments to instances based on this template version. A change only affects later associations.</p>  </note>  <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    /// - On success, responds with [`UpdateServiceTemplateVersionOutput`](crate::output::UpdateServiceTemplateVersionOutput) with field(s):
    ///   - [`service_template_version(Option<ServiceTemplateVersion>)`](crate::output::UpdateServiceTemplateVersionOutput::service_template_version): <p>The service template version detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateServiceTemplateVersionError>`](crate::error::UpdateServiceTemplateVersionError)
    pub fn update_service_template_version(&self) -> fluent_builders::UpdateServiceTemplateVersion {
        fluent_builders::UpdateServiceTemplateVersion::new(self.handle.clone())
    }
    /// Constructs a fluent builder for the [`UpdateTemplateSyncConfig`](crate::client::fluent_builders::UpdateTemplateSyncConfig) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`template_name(impl Into<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::template_name) / [`set_template_name(Option<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::set_template_name): <p>The synced template name.</p>
    ///   - [`template_type(TemplateType)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::template_type) / [`set_template_type(Option<TemplateType>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::set_template_type): <p>The synced template type.</p>
    ///   - [`repository_provider(RepositoryProvider)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::repository_provider) / [`set_repository_provider(Option<RepositoryProvider>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::set_repository_provider): <p>The repository provider.</p>
    ///   - [`repository_name(impl Into<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::repository_name) / [`set_repository_name(Option<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::set_repository_name): <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
    ///   - [`branch(impl Into<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::branch) / [`set_branch(Option<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::set_branch): <p>The repository branch for your template.</p>
    ///   - [`subdirectory(impl Into<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::subdirectory) / [`set_subdirectory(Option<String>)`](crate::client::fluent_builders::UpdateTemplateSyncConfig::set_subdirectory): <p>A subdirectory path to your template bundle version. When included, limits the template bundle search to this repository directory.</p>
    /// - On success, responds with [`UpdateTemplateSyncConfigOutput`](crate::output::UpdateTemplateSyncConfigOutput) with field(s):
    ///   - [`template_sync_config(Option<TemplateSyncConfig>)`](crate::output::UpdateTemplateSyncConfigOutput::template_sync_config): <p>The template sync configuration detail data that's returned by Proton.</p>
    /// - On failure, responds with [`SdkError<UpdateTemplateSyncConfigError>`](crate::error::UpdateTemplateSyncConfigError)
    pub fn update_template_sync_config(&self) -> fluent_builders::UpdateTemplateSyncConfig {
        fluent_builders::UpdateTemplateSyncConfig::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 `AcceptEnvironmentAccountConnection`.
    ///
    /// <p>In a management account, an environment account connection request is accepted. When the environment account connection request is accepted, Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct AcceptEnvironmentAccountConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::accept_environment_account_connection_input::Builder,
    }
    impl AcceptEnvironmentAccountConnection {
        /// Creates a new `AcceptEnvironmentAccountConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::AcceptEnvironmentAccountConnectionOutput,
            aws_smithy_http::result::SdkError<
                crate::error::AcceptEnvironmentAccountConnectionError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment account connection.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.id(input.into());
            self
        }
        /// <p>The ID of the environment account connection.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CancelComponentDeployment`.
    ///
    /// <p>Attempts to cancel a component deployment (for a component that is in the <code>IN_PROGRESS</code> deployment status).</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CancelComponentDeployment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::cancel_component_deployment_input::Builder,
    }
    impl CancelComponentDeployment {
        /// Creates a new `CancelComponentDeployment`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CancelComponentDeploymentOutput,
            aws_smithy_http::result::SdkError<crate::error::CancelComponentDeploymentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 component with the deployment to cancel.</p>
        pub fn component_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.component_name(input.into());
            self
        }
        /// <p>The name of the component with the deployment to cancel.</p>
        pub fn set_component_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_component_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CancelEnvironmentDeployment`.
    ///
    /// <p>Attempts to cancel an environment deployment on an <code>UpdateEnvironment</code> action, if the deployment is <code>IN_PROGRESS</code>. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-update.html">Update an environment</a> in the <i>Proton User guide</i>.</p>
    /// <p>The following list includes potential cancellation scenarios.</p>
    /// <ul>
    /// <li> <p>If the cancellation attempt succeeds, the resulting deployment state is <code>CANCELLED</code>.</p> </li>
    /// <li> <p>If the cancellation attempt fails, the resulting deployment state is <code>FAILED</code>.</p> </li>
    /// <li> <p>If the current <code>UpdateEnvironment</code> action succeeds before the cancellation attempt starts, the resulting deployment state is <code>SUCCEEDED</code> and the cancellation attempt has no effect.</p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CancelEnvironmentDeployment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::cancel_environment_deployment_input::Builder,
    }
    impl CancelEnvironmentDeployment {
        /// Creates a new `CancelEnvironmentDeployment`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CancelEnvironmentDeploymentOutput,
            aws_smithy_http::result::SdkError<crate::error::CancelEnvironmentDeploymentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment with the deployment to cancel.</p>
        pub fn environment_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_name(input.into());
            self
        }
        /// <p>The name of the environment with the deployment to cancel.</p>
        pub fn set_environment_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CancelServiceInstanceDeployment`.
    ///
    /// <p>Attempts to cancel a service instance deployment on an <code>UpdateServiceInstance</code> action, if the deployment is <code>IN_PROGRESS</code>. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-svc-instance-update.html">Update a service instance</a> in the <i>Proton User guide</i>.</p>
    /// <p>The following list includes potential cancellation scenarios.</p>
    /// <ul>
    /// <li> <p>If the cancellation attempt succeeds, the resulting deployment state is <code>CANCELLED</code>.</p> </li>
    /// <li> <p>If the cancellation attempt fails, the resulting deployment state is <code>FAILED</code>.</p> </li>
    /// <li> <p>If the current <code>UpdateServiceInstance</code> action succeeds before the cancellation attempt starts, the resulting deployment state is <code>SUCCEEDED</code> and the cancellation attempt has no effect.</p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CancelServiceInstanceDeployment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::cancel_service_instance_deployment_input::Builder,
    }
    impl CancelServiceInstanceDeployment {
        /// Creates a new `CancelServiceInstanceDeployment`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CancelServiceInstanceDeploymentOutput,
            aws_smithy_http::result::SdkError<crate::error::CancelServiceInstanceDeploymentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service instance with the deployment to cancel.</p>
        pub fn service_instance_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_instance_name(input.into());
            self
        }
        /// <p>The name of the service instance with the deployment to cancel.</p>
        pub fn set_service_instance_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_service_instance_name(input);
            self
        }
        /// <p>The name of the service with the service instance deployment to cancel.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service with the service instance deployment to cancel.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CancelServicePipelineDeployment`.
    ///
    /// <p>Attempts to cancel a service pipeline deployment on an <code>UpdateServicePipeline</code> action, if the deployment is <code>IN_PROGRESS</code>. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-svc-pipeline-update.html">Update a service pipeline</a> in the <i>Proton User guide</i>.</p>
    /// <p>The following list includes potential cancellation scenarios.</p>
    /// <ul>
    /// <li> <p>If the cancellation attempt succeeds, the resulting deployment state is <code>CANCELLED</code>.</p> </li>
    /// <li> <p>If the cancellation attempt fails, the resulting deployment state is <code>FAILED</code>.</p> </li>
    /// <li> <p>If the current <code>UpdateServicePipeline</code> action succeeds before the cancellation attempt starts, the resulting deployment state is <code>SUCCEEDED</code> and the cancellation attempt has no effect.</p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CancelServicePipelineDeployment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::cancel_service_pipeline_deployment_input::Builder,
    }
    impl CancelServicePipelineDeployment {
        /// Creates a new `CancelServicePipelineDeployment`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CancelServicePipelineDeploymentOutput,
            aws_smithy_http::result::SdkError<crate::error::CancelServicePipelineDeploymentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service with the service pipeline deployment to cancel.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service with the service pipeline deployment to cancel.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateComponent`.
    ///
    /// <p>Create an Proton component. A component is an infrastructure extension for a service instance.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateComponent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_component_input::Builder,
    }
    impl CreateComponent {
        /// Creates a new `CreateComponent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateComponentOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateComponentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 customer-provided name of the component.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The customer-provided name of the component.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>An optional customer-provided description of the component.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>An optional customer-provided description of the component.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated with. If you don't specify this, the component isn't attached to any service instance. Specify both <code>serviceInstanceName</code> and <code>serviceName</code> or neither of them.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated with. If you don't specify this, the component isn't attached to any service instance. Specify both <code>serviceInstanceName</code> and <code>serviceName</code> or neither of them.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>The name of the service instance that you want to attach this component to. If you don't specify this, the component isn't attached to any service instance. Specify both <code>serviceInstanceName</code> and <code>serviceName</code> or neither of them.</p>
        pub fn service_instance_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_instance_name(input.into());
            self
        }
        /// <p>The name of the service instance that you want to attach this component to. If you don't specify this, the component isn't attached to any service instance. Specify both <code>serviceInstanceName</code> and <code>serviceName</code> or neither of them.</p>
        pub fn set_service_instance_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_service_instance_name(input);
            self
        }
        /// <p>The name of the Proton environment that you want to associate this component with. You must specify this when you don't specify <code>serviceInstanceName</code> and <code>serviceName</code>.</p>
        pub fn environment_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_name(input.into());
            self
        }
        /// <p>The name of the Proton environment that you want to associate this component with. You must specify this when you don't specify <code>serviceInstanceName</code> and <code>serviceName</code>.</p>
        pub fn set_environment_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_name(input);
            self
        }
        /// <p>A path to the Infrastructure as Code (IaC) file describing infrastructure that a custom component provisions.</p> <note>
        /// <p>Components support a single IaC file, even if you use Terraform as your template language.</p>
        /// </note>
        pub fn template_file(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_file(input.into());
            self
        }
        /// <p>A path to the Infrastructure as Code (IaC) file describing infrastructure that a custom component provisions.</p> <note>
        /// <p>Components support a single IaC file, even if you use Terraform as your template language.</p>
        /// </note>
        pub fn set_template_file(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_file(input);
            self
        }
        /// <p>A path to a manifest file that lists the Infrastructure as Code (IaC) file, template language, and rendering engine for infrastructure that a custom component provisions.</p>
        pub fn manifest(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.manifest(input.into());
            self
        }
        /// <p>A path to a manifest file that lists the Infrastructure as Code (IaC) file, template language, and rendering engine for infrastructure that a custom component provisions.</p>
        pub fn set_manifest(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_manifest(input);
            self
        }
        /// <p>The service spec that you want the component to use to access service inputs. Set this only when you attach the component to a service instance.</p>
        pub fn service_spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_spec(input.into());
            self
        }
        /// <p>The service spec that you want the component to use to access service inputs. Set this only when you attach the component to a service instance.</p>
        pub fn set_service_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_spec(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton component. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton component. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 `CreateEnvironment`.
    ///
    /// <p>Deploy a new environment. An Proton environment is created from an environment template that defines infrastructure and resources that can be shared across services.</p>
    /// <p class="title"> <b>You can provision environments using the following methods:</b> </p>
    /// <ul>
    /// <li> <p>Amazon Web Services-managed provisioning: Proton makes direct calls to provision your resources.</p> </li>
    /// <li> <p>Self-managed provisioning: Proton makes pull requests on your repository to provide compiled infrastructure as code (IaC) files that your IaC engine uses to provision resources.</p> </li>
    /// </ul>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-environments.html">Environments</a> and <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-works-prov-methods.html">Provisioning methods</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateEnvironment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_environment_input::Builder,
    }
    impl CreateEnvironment {
        /// Creates a new `CreateEnvironment`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateEnvironmentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the environment.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The name of the environment template. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-templates.html">Environment Templates</a> in the <i>Proton User Guide</i>.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the environment template. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-templates.html">Environment Templates</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The major version of the environment template.</p>
        pub fn template_major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_major_version(input.into());
            self
        }
        /// <p>The major version of the environment template.</p>
        pub fn set_template_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_major_version(input);
            self
        }
        /// <p>The minor version of the environment template.</p>
        pub fn template_minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_minor_version(input.into());
            self
        }
        /// <p>The minor version of the environment template.</p>
        pub fn set_template_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_minor_version(input);
            self
        }
        /// <p>A description of the environment that's being created and deployed.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the environment that's being created and deployed.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>A YAML formatted string that provides inputs as defined in the environment template bundle schema file. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-environments.html">Environments</a> in the <i>Proton User Guide</i>.</p>
        pub fn spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.spec(input.into());
            self
        }
        /// <p>A YAML formatted string that provides inputs as defined in the environment template bundle schema file. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-environments.html">Environments</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_spec(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make calls to other services on your behalf.</p>
        /// <p>To use Amazon Web Services-managed provisioning for the environment, specify either the <code>environmentAccountConnectionId</code> or <code>protonServiceRoleArn</code> parameter and omit the <code>provisioningRepository</code> parameter.</p>
        pub fn proton_service_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.proton_service_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make calls to other services on your behalf.</p>
        /// <p>To use Amazon Web Services-managed provisioning for the environment, specify either the <code>environmentAccountConnectionId</code> or <code>protonServiceRoleArn</code> parameter and omit the <code>provisioningRepository</code> parameter.</p>
        pub fn set_proton_service_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_proton_service_role_arn(input);
            self
        }
        /// <p>The ID of the environment account connection that you provide if you're provisioning your environment infrastructure resources to an environment account. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
        /// <p>To use Amazon Web Services-managed provisioning for the environment, specify either the <code>environmentAccountConnectionId</code> or <code>protonServiceRoleArn</code> parameter and omit the <code>provisioningRepository</code> parameter.</p>
        pub fn environment_account_connection_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.environment_account_connection_id(input.into());
            self
        }
        /// <p>The ID of the environment account connection that you provide if you're provisioning your environment infrastructure resources to an environment account. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
        /// <p>To use Amazon Web Services-managed provisioning for the environment, specify either the <code>environmentAccountConnectionId</code> or <code>protonServiceRoleArn</code> parameter and omit the <code>provisioningRepository</code> parameter.</p>
        pub fn set_environment_account_connection_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_account_connection_id(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton environment. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton environment. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
        /// <p>To use self-managed provisioning for the environment, specify this parameter and omit the <code>environmentAccountConnectionId</code> and <code>protonServiceRoleArn</code> parameters.</p>
        pub fn provisioning_repository(
            mut self,
            input: crate::model::RepositoryBranchInput,
        ) -> Self {
            self.inner = self.inner.provisioning_repository(input);
            self
        }
        /// <p>The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
        /// <p>To use self-managed provisioning for the environment, specify this parameter and omit the <code>environmentAccountConnectionId</code> and <code>protonServiceRoleArn</code> parameters.</p>
        pub fn set_provisioning_repository(
            mut self,
            input: std::option::Option<crate::model::RepositoryBranchInput>,
        ) -> Self {
            self.inner = self.inner.set_provisioning_repository(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.</p>
        /// <p>You must specify <code>componentRoleArn</code> to allow directly defined components to be associated with this environment.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn component_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.component_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.</p>
        /// <p>You must specify <code>componentRoleArn</code> to allow directly defined components to be associated with this environment.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_component_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_component_role_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.</p>
        /// <p>To use CodeBuild-based provisioning for the environment or for any service instance running in the environment, specify either the <code>environmentAccountConnectionId</code> or <code>codebuildRoleArn</code> parameter.</p>
        pub fn codebuild_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.codebuild_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.</p>
        /// <p>To use CodeBuild-based provisioning for the environment or for any service instance running in the environment, specify either the <code>environmentAccountConnectionId</code> or <code>codebuildRoleArn</code> parameter.</p>
        pub fn set_codebuild_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_codebuild_role_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateEnvironmentAccountConnection`.
    ///
    /// <p>Create an environment account connection in an environment account so that environment infrastructure resources can be provisioned in the environment account from a management account.</p>
    /// <p>An environment account connection is a secure bi-directional connection between a <i>management account</i> and an <i>environment account</i> that maintains authorization and permissions. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateEnvironmentAccountConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_environment_account_connection_input::Builder,
    }
    impl CreateEnvironmentAccountConnection {
        /// Creates a new `CreateEnvironmentAccountConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateEnvironmentAccountConnectionOutput,
            aws_smithy_http::result::SdkError<
                crate::error::CreateEnvironmentAccountConnectionError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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>When included, if two identical requests are made with the same client token, Proton returns the environment account connection that the first request created.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>When included, if two identical requests are made with the same client token, Proton returns the environment account connection that the first request created.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The ID of the management account that accepts or rejects the environment account connection. You create and manage the Proton environment in this account. If the management account accepts the environment account connection, Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.</p>
        pub fn management_account_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.management_account_id(input.into());
            self
        }
        /// <p>The ID of the management account that accepts or rejects the environment account connection. You create and manage the Proton environment in this account. If the management account accepts the environment account connection, Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.</p>
        pub fn set_management_account_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_management_account_id(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that's created in the environment account. Proton uses this role to provision infrastructure resources in the associated environment account.</p>
        pub fn role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that's created in the environment account. Proton uses this role to provision infrastructure resources in the associated environment account.</p>
        pub fn set_role_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_role_arn(input);
            self
        }
        /// <p>The name of the Proton environment that's created in the associated management account.</p>
        pub fn environment_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_name(input.into());
            self
        }
        /// <p>The name of the Proton environment that's created in the associated management account.</p>
        pub fn set_environment_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_name(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton environment account connection. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton environment account connection. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.</p>
        /// <p>You must specify <code>componentRoleArn</code> to allow directly defined components to be associated with any environments running in this account.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn component_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.component_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.</p>
        /// <p>You must specify <code>componentRoleArn</code> to allow directly defined components to be associated with any environments running in this account.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_component_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_component_role_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of an IAM service role in the environment account. Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.</p>
        pub fn codebuild_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.codebuild_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of an IAM service role in the environment account. Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.</p>
        pub fn set_codebuild_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_codebuild_role_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateEnvironmentTemplate`.
    ///
    /// <p>Create an environment template for Proton. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-templates.html">Environment Templates</a> in the <i>Proton User Guide</i>.</p>
    /// <p>You can create an environment template in one of the two following ways:</p>
    /// <ul>
    /// <li> <p>Register and publish a <i>standard</i> environment template that instructs Proton to deploy and manage environment infrastructure.</p> </li>
    /// <li> <p>Register and publish a <i>customer managed</i> environment template that connects Proton to your existing provisioned infrastructure that you manage. Proton <i>doesn't</i> manage your existing provisioned infrastructure. To create an environment template for customer provisioned and managed infrastructure, include the <code>provisioning</code> parameter and set the value to <code>CUSTOMER_MANAGED</code>. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/template-create.html">Register and publish an environment template</a> in the <i>Proton User Guide</i>.</p> </li>
    /// </ul>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateEnvironmentTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_environment_template_input::Builder,
    }
    impl CreateEnvironmentTemplate {
        /// Creates a new `CreateEnvironmentTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateEnvironmentTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateEnvironmentTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment template.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment template.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The environment template name as displayed in the developer interface.</p>
        pub fn display_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.display_name(input.into());
            self
        }
        /// <p>The environment template name as displayed in the developer interface.</p>
        pub fn set_display_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_display_name(input);
            self
        }
        /// <p>A description of the environment template.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the environment template.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>A customer provided encryption key that Proton uses to encrypt data.</p>
        pub fn encryption_key(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.encryption_key(input.into());
            self
        }
        /// <p>A customer provided encryption key that Proton uses to encrypt data.</p>
        pub fn set_encryption_key(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_encryption_key(input);
            self
        }
        /// <p>When included, indicates that the environment template is for customer provisioned and managed infrastructure.</p>
        pub fn provisioning(mut self, input: crate::model::Provisioning) -> Self {
            self.inner = self.inner.provisioning(input);
            self
        }
        /// <p>When included, indicates that the environment template is for customer provisioned and managed infrastructure.</p>
        pub fn set_provisioning(
            mut self,
            input: std::option::Option<crate::model::Provisioning>,
        ) -> Self {
            self.inner = self.inner.set_provisioning(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton environment template. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton environment template. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 `CreateEnvironmentTemplateVersion`.
    ///
    /// <p>Create a new major or minor version of an environment template. A major version of an environment template is a version that <i>isn't</i> backwards compatible. A minor version of an environment template is a version that's backwards compatible within its major version.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateEnvironmentTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_environment_template_version_input::Builder,
    }
    impl CreateEnvironmentTemplateVersion {
        /// Creates a new `CreateEnvironmentTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateEnvironmentTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateEnvironmentTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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>When included, if two identical requests are made with the same client token, Proton returns the environment template version that the first request created.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>When included, if two identical requests are made with the same client token, Proton returns the environment template version that the first request created.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The name of the environment template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the environment template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>A description of the new version of an environment template.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the new version of an environment template.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>To create a new minor version of the environment template, include <code>major Version</code>.</p>
        /// <p>To create a new major and minor version of the environment template, exclude <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To create a new minor version of the environment template, include <code>major Version</code>.</p>
        /// <p>To create a new major and minor version of the environment template, exclude <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>An object that includes the template bundle S3 bucket path and name for the new version of an template.</p>
        pub fn source(mut self, input: crate::model::TemplateVersionSourceInput) -> Self {
            self.inner = self.inner.source(input);
            self
        }
        /// <p>An object that includes the template bundle S3 bucket path and name for the new version of an template.</p>
        pub fn set_source(
            mut self,
            input: std::option::Option<crate::model::TemplateVersionSourceInput>,
        ) -> Self {
            self.inner = self.inner.set_source(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton environment template version. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton environment template version. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 `CreateRepository`.
    ///
    /// <p>Create and register a link to a repository. Proton uses the link to repeatedly access the repository, to either push to it (self-managed provisioning) or pull from it (template sync). You can share a linked repository across multiple resources (like environments using self-managed provisioning, or synced templates). When you create a repository link, Proton creates a <a href="https://docs.aws.amazon.com/proton/latest/userguide/using-service-linked-roles.html">service-linked role</a> for you.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-works-prov-methods.html#ag-works-prov-methods-self">Self-managed provisioning</a>, <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-template-authoring.html#ag-template-bundles">Template bundles</a>, and <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-template-sync-configs.html">Template sync configurations</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateRepository {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_repository_input::Builder,
    }
    impl CreateRepository {
        /// Creates a new `CreateRepository`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateRepositoryOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateRepositoryError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 repository provider.</p>
        pub fn provider(mut self, input: crate::model::RepositoryProvider) -> Self {
            self.inner = self.inner.provider(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn set_provider(
            mut self,
            input: std::option::Option<crate::model::RepositoryProvider>,
        ) -> Self {
            self.inner = self.inner.set_provider(input);
            self
        }
        /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of your AWS CodeStar connection that connects Proton to your repository provider account. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/setting-up-for-service.html">Setting up for Proton</a> in the <i>Proton User Guide</i>.</p>
        pub fn connection_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.connection_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of your AWS CodeStar connection that connects Proton to your repository provider account. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/setting-up-for-service.html">Setting up for Proton</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_connection_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_connection_arn(input);
            self
        }
        /// <p>The ARN of your customer Amazon Web Services Key Management Service (Amazon Web Services KMS) key.</p>
        pub fn encryption_key(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.encryption_key(input.into());
            self
        }
        /// <p>The ARN of your customer Amazon Web Services Key Management Service (Amazon Web Services KMS) key.</p>
        pub fn set_encryption_key(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_encryption_key(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton repository. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton repository. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 `CreateService`.
    ///
    /// <p>Create an Proton service. An Proton service is an instantiation of a service template and often includes several service instances and pipeline. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-services.html">Services</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateService {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_service_input::Builder,
    }
    impl CreateService {
        /// Creates a new `CreateService`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateServiceOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateServiceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service name.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The service name.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>A description of the Proton service.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the Proton service.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The name of the service template that's used to create the service.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the service template that's used to create the service.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The major version of the service template that was used to create the service.</p>
        pub fn template_major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_major_version(input.into());
            self
        }
        /// <p>The major version of the service template that was used to create the service.</p>
        pub fn set_template_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_major_version(input);
            self
        }
        /// <p>The minor version of the service template that was used to create the service.</p>
        pub fn template_minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_minor_version(input.into());
            self
        }
        /// <p>The minor version of the service template that was used to create the service.</p>
        pub fn set_template_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_minor_version(input);
            self
        }
        /// <p>A link to a spec file that provides inputs as defined in the service template bundle schema file. The spec file is in YAML format. <i>Don’t</i> include pipeline inputs in the spec if your service template <i>doesn’t</i> include a service pipeline. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-create-svc.html">Create a service</a> in the <i>Proton User Guide</i>.</p>
        pub fn spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.spec(input.into());
            self
        }
        /// <p>A link to a spec file that provides inputs as defined in the service template bundle schema file. The spec file is in YAML format. <i>Don’t</i> include pipeline inputs in the spec if your service template <i>doesn’t</i> include a service pipeline. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-create-svc.html">Create a service</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_spec(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the repository connection. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/setting-up-for-service.html#setting-up-vcontrol">Setting up an AWS CodeStar connection</a> in the <i>Proton User Guide</i>. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
        pub fn repository_connection_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_connection_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the repository connection. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/setting-up-for-service.html#setting-up-vcontrol">Setting up an AWS CodeStar connection</a> in the <i>Proton User Guide</i>. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
        pub fn set_repository_connection_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_connection_arn(input);
            self
        }
        /// <p>The ID of the code repository. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
        pub fn repository_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_id(input.into());
            self
        }
        /// <p>The ID of the code repository. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
        pub fn set_repository_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_id(input);
            self
        }
        /// <p>The name of the code repository branch that holds the code that's deployed in Proton. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
        pub fn branch_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.branch_name(input.into());
            self
        }
        /// <p>The name of the code repository branch that holds the code that's deployed in Proton. <i>Don't</i> include this parameter if your service template <i>doesn't</i> include a service pipeline.</p>
        pub fn set_branch_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_branch_name(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton service. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton service. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 `CreateServiceTemplate`.
    ///
    /// <p>Create a service template. The administrator creates a service template to define standardized infrastructure and an optional CI/CD service pipeline. Developers, in turn, select the service template from Proton. If the selected service template includes a service pipeline definition, they provide a link to their source code repository. Proton then deploys and manages the infrastructure defined by the selected service template. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-templates.html">Proton templates</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateServiceTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_service_template_input::Builder,
    }
    impl CreateServiceTemplate {
        /// Creates a new `CreateServiceTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateServiceTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateServiceTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service template.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the service template.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The name of the service template as displayed in the developer interface.</p>
        pub fn display_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.display_name(input.into());
            self
        }
        /// <p>The name of the service template as displayed in the developer interface.</p>
        pub fn set_display_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_display_name(input);
            self
        }
        /// <p>A description of the service template.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the service template.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>A customer provided encryption key that's used to encrypt data.</p>
        pub fn encryption_key(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.encryption_key(input.into());
            self
        }
        /// <p>A customer provided encryption key that's used to encrypt data.</p>
        pub fn set_encryption_key(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_encryption_key(input);
            self
        }
        /// <p>By default, Proton provides a service pipeline for your service. When this parameter is included, it indicates that an Proton service pipeline <i>isn't</i> provided for your service. After it's included, it <i>can't</i> be changed. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-template-authoring.html#ag-template-bundles">Template bundles</a> in the <i>Proton User Guide</i>.</p>
        pub fn pipeline_provisioning(mut self, input: crate::model::Provisioning) -> Self {
            self.inner = self.inner.pipeline_provisioning(input);
            self
        }
        /// <p>By default, Proton provides a service pipeline for your service. When this parameter is included, it indicates that an Proton service pipeline <i>isn't</i> provided for your service. After it's included, it <i>can't</i> be changed. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-template-authoring.html#ag-template-bundles">Template bundles</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_pipeline_provisioning(
            mut self,
            input: std::option::Option<crate::model::Provisioning>,
        ) -> Self {
            self.inner = self.inner.set_pipeline_provisioning(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton service template. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton service template. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 `CreateServiceTemplateVersion`.
    ///
    /// <p>Create a new major or minor version of a service template. A major version of a service template is a version that <i>isn't</i> backward compatible. A minor version of a service template is a version that's backward compatible within its major version.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateServiceTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_service_template_version_input::Builder,
    }
    impl CreateServiceTemplateVersion {
        /// Creates a new `CreateServiceTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateServiceTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateServiceTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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>When included, if two identical requests are made with the same client token, Proton returns the service template version that the first request created.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.client_token(input.into());
            self
        }
        /// <p>When included, if two identical requests are made with the same client token, Proton returns the service template version that the first request created.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_client_token(input);
            self
        }
        /// <p>The name of the service template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the service template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>A description of the new version of a service template.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the new version of a service template.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>To create a new minor version of the service template, include a <code>major Version</code>.</p>
        /// <p>To create a new major and minor version of the service template, <i>exclude</i> <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To create a new minor version of the service template, include a <code>major Version</code>.</p>
        /// <p>To create a new major and minor version of the service template, <i>exclude</i> <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>An object that includes the template bundle S3 bucket path and name for the new version of a service template.</p>
        pub fn source(mut self, input: crate::model::TemplateVersionSourceInput) -> Self {
            self.inner = self.inner.source(input);
            self
        }
        /// <p>An object that includes the template bundle S3 bucket path and name for the new version of a service template.</p>
        pub fn set_source(
            mut self,
            input: std::option::Option<crate::model::TemplateVersionSourceInput>,
        ) -> Self {
            self.inner = self.inner.set_source(input);
            self
        }
        /// Appends an item to `compatibleEnvironmentTemplates`.
        ///
        /// To override the contents of this collection use [`set_compatible_environment_templates`](Self::set_compatible_environment_templates).
        ///
        /// <p>An array of environment template objects that are compatible with the new service template version. A service instance based on this service template version can run in environments based on compatible templates.</p>
        pub fn compatible_environment_templates(
            mut self,
            input: crate::model::CompatibleEnvironmentTemplateInput,
        ) -> Self {
            self.inner = self.inner.compatible_environment_templates(input);
            self
        }
        /// <p>An array of environment template objects that are compatible with the new service template version. A service instance based on this service template version can run in environments based on compatible templates.</p>
        pub fn set_compatible_environment_templates(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::CompatibleEnvironmentTemplateInput>,
            >,
        ) -> Self {
            self.inner = self.inner.set_compatible_environment_templates(input);
            self
        }
        /// Appends an item to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>An optional list of metadata items that you can associate with the Proton service template version. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>An optional list of metadata items that you can associate with the Proton service template version. A tag is a key-value pair.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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
        }
        /// Appends an item to `supportedComponentSources`.
        ///
        /// To override the contents of this collection use [`set_supported_component_sources`](Self::set_supported_component_sources).
        ///
        /// <p>An array of supported component sources. Components with supported sources can be attached to service instances based on this service template version.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn supported_component_sources(
            mut self,
            input: crate::model::ServiceTemplateSupportedComponentSourceType,
        ) -> Self {
            self.inner = self.inner.supported_component_sources(input);
            self
        }
        /// <p>An array of supported component sources. Components with supported sources can be attached to service instances based on this service template version.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_supported_component_sources(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::ServiceTemplateSupportedComponentSourceType>,
            >,
        ) -> Self {
            self.inner = self.inner.set_supported_component_sources(input);
            self
        }
    }
    /// Fluent builder constructing a request to `CreateTemplateSyncConfig`.
    ///
    /// <p>Set up a template to create new template versions automatically by tracking a linked repository. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
    /// <p>When a commit is pushed to your linked repository, Proton checks for changes to your repository template bundles. If it detects a template bundle change, a new major or minor version of its template is created, if the version doesn’t already exist. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-template-sync-configs.html">Template sync configurations</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct CreateTemplateSyncConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::create_template_sync_config_input::Builder,
    }
    impl CreateTemplateSyncConfig {
        /// Creates a new `CreateTemplateSyncConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::CreateTemplateSyncConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::CreateTemplateSyncConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 your registered template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of your registered template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The type of the registered template.</p>
        pub fn template_type(mut self, input: crate::model::TemplateType) -> Self {
            self.inner = self.inner.template_type(input);
            self
        }
        /// <p>The type of the registered template.</p>
        pub fn set_template_type(
            mut self,
            input: std::option::Option<crate::model::TemplateType>,
        ) -> Self {
            self.inner = self.inner.set_template_type(input);
            self
        }
        /// <p>The provider type for your repository.</p>
        pub fn repository_provider(mut self, input: crate::model::RepositoryProvider) -> Self {
            self.inner = self.inner.repository_provider(input);
            self
        }
        /// <p>The provider type for your repository.</p>
        pub fn set_repository_provider(
            mut self,
            input: std::option::Option<crate::model::RepositoryProvider>,
        ) -> Self {
            self.inner = self.inner.set_repository_provider(input);
            self
        }
        /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
        pub fn repository_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_name(input.into());
            self
        }
        /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
        pub fn set_repository_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_name(input);
            self
        }
        /// <p>The repository branch for your template.</p>
        pub fn branch(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.branch(input.into());
            self
        }
        /// <p>The repository branch for your template.</p>
        pub fn set_branch(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_branch(input);
            self
        }
        /// <p>A repository subdirectory path to your template bundle directory. When included, Proton limits the template bundle search to this repository directory.</p>
        pub fn subdirectory(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.subdirectory(input.into());
            self
        }
        /// <p>A repository subdirectory path to your template bundle directory. When included, Proton limits the template bundle search to this repository directory.</p>
        pub fn set_subdirectory(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_subdirectory(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteComponent`.
    ///
    /// <p>Delete an Proton component resource.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteComponent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_component_input::Builder,
    }
    impl DeleteComponent {
        /// Creates a new `DeleteComponent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

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

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteEnvironmentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the environment to delete.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment to delete.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteEnvironmentAccountConnection`.
    ///
    /// <p>In an environment account, delete an environment account connection.</p>
    /// <p>After you delete an environment account connection that’s in use by an Proton environment, Proton <i>can’t</i> manage the environment infrastructure resources until a new environment account connection is accepted for the environment account and associated environment. You're responsible for cleaning up provisioned resources that remain without an environment connection.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteEnvironmentAccountConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_environment_account_connection_input::Builder,
    }
    impl DeleteEnvironmentAccountConnection {
        /// Creates a new `DeleteEnvironmentAccountConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteEnvironmentAccountConnectionOutput,
            aws_smithy_http::result::SdkError<
                crate::error::DeleteEnvironmentAccountConnectionError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment account connection to delete.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.id(input.into());
            self
        }
        /// <p>The ID of the environment account connection to delete.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteEnvironmentTemplate`.
    ///
    /// <p>If no other major or minor versions of an environment template exist, delete the environment template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteEnvironmentTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_environment_template_input::Builder,
    }
    impl DeleteEnvironmentTemplate {
        /// Creates a new `DeleteEnvironmentTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteEnvironmentTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteEnvironmentTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment template to delete.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment template to delete.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteEnvironmentTemplateVersion`.
    ///
    /// <p>If no other minor versions of an environment template exist, delete a major version of the environment template if it's not the <code>Recommended</code> version. Delete the <code>Recommended</code> version of the environment template if no other major versions or minor versions of the environment template exist. A major version of an environment template is a version that's not backward compatible.</p>
    /// <p>Delete a minor version of an environment template if it <i>isn't</i> the <code>Recommended</code> version. Delete a <code>Recommended</code> minor version of the environment template if no other minor versions of the environment template exist. A minor version of an environment template is a version that's backward compatible.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteEnvironmentTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_environment_template_version_input::Builder,
    }
    impl DeleteEnvironmentTemplateVersion {
        /// Creates a new `DeleteEnvironmentTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteEnvironmentTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteEnvironmentTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the environment template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The environment template major version to delete.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>The environment template major version to delete.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>The environment template minor version to delete.</p>
        pub fn minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.minor_version(input.into());
            self
        }
        /// <p>The environment template minor version to delete.</p>
        pub fn set_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_minor_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteRepository`.
    ///
    /// <p>De-register and unlink your repository.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteRepository {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_repository_input::Builder,
    }
    impl DeleteRepository {
        /// Creates a new `DeleteRepository`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteRepositoryOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteRepositoryError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 repository provider.</p>
        pub fn provider(mut self, input: crate::model::RepositoryProvider) -> Self {
            self.inner = self.inner.provider(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn set_provider(
            mut self,
            input: std::option::Option<crate::model::RepositoryProvider>,
        ) -> Self {
            self.inner = self.inner.set_provider(input);
            self
        }
        /// <p>The repository name.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The repository name.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteService`.
    ///
    /// <p>Delete a service, with its instances and pipeline.</p> <note>
    /// <p>You can't delete a service if it has any service instances that have components attached to them.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteService {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_service_input::Builder,
    }
    impl DeleteService {
        /// Creates a new `DeleteService`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

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

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteServiceTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteServiceTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service template to delete.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the service template to delete.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteServiceTemplateVersion`.
    ///
    /// <p>If no other minor versions of a service template exist, delete a major version of the service template if it's not the <code>Recommended</code> version. Delete the <code>Recommended</code> version of the service template if no other major versions or minor versions of the service template exist. A major version of a service template is a version that <i>isn't</i> backwards compatible.</p>
    /// <p>Delete a minor version of a service template if it's not the <code>Recommended</code> version. Delete a <code>Recommended</code> minor version of the service template if no other minor versions of the service template exist. A minor version of a service template is a version that's backwards compatible.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteServiceTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_service_template_version_input::Builder,
    }
    impl DeleteServiceTemplateVersion {
        /// Creates a new `DeleteServiceTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteServiceTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteServiceTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the service template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The service template major version to delete.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>The service template major version to delete.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>The service template minor version to delete.</p>
        pub fn minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.minor_version(input.into());
            self
        }
        /// <p>The service template minor version to delete.</p>
        pub fn set_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_minor_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `DeleteTemplateSyncConfig`.
    ///
    /// <p>Delete a template sync configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct DeleteTemplateSyncConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::delete_template_sync_config_input::Builder,
    }
    impl DeleteTemplateSyncConfig {
        /// Creates a new `DeleteTemplateSyncConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::DeleteTemplateSyncConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::DeleteTemplateSyncConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 template name.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The template name.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The template type.</p>
        pub fn template_type(mut self, input: crate::model::TemplateType) -> Self {
            self.inner = self.inner.template_type(input);
            self
        }
        /// <p>The template type.</p>
        pub fn set_template_type(
            mut self,
            input: std::option::Option<crate::model::TemplateType>,
        ) -> Self {
            self.inner = self.inner.set_template_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetAccountSettings`.
    ///
    /// <p>Get detail data for Proton account-wide settings.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetAccountSettings {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_account_settings_input::Builder,
    }
    impl GetAccountSettings {
        /// Creates a new `GetAccountSettings`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetAccountSettingsOutput,
            aws_smithy_http::result::SdkError<crate::error::GetAccountSettingsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
    }
    /// Fluent builder constructing a request to `GetComponent`.
    ///
    /// <p>Get detailed data for a component.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetComponent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_component_input::Builder,
    }
    impl GetComponent {
        /// Creates a new `GetComponent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

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

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::GetEnvironmentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the environment that you want to get the detailed data for.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment that you want to get the detailed data for.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetEnvironmentAccountConnection`.
    ///
    /// <p>In an environment account, get the detailed data for an environment account connection.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetEnvironmentAccountConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_environment_account_connection_input::Builder,
    }
    impl GetEnvironmentAccountConnection {
        /// Creates a new `GetEnvironmentAccountConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetEnvironmentAccountConnectionOutput,
            aws_smithy_http::result::SdkError<crate::error::GetEnvironmentAccountConnectionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment account connection that you want to get the detailed data for.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.id(input.into());
            self
        }
        /// <p>The ID of the environment account connection that you want to get the detailed data for.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetEnvironmentTemplate`.
    ///
    /// <p>Get detailed data for an environment template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetEnvironmentTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_environment_template_input::Builder,
    }
    impl GetEnvironmentTemplate {
        /// Creates a new `GetEnvironmentTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetEnvironmentTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::GetEnvironmentTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment template that you want to get the detailed data for.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment template that you want to get the detailed data for.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetEnvironmentTemplateVersion`.
    ///
    /// <p>Get detailed data for a major or minor version of an environment template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetEnvironmentTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_environment_template_version_input::Builder,
    }
    impl GetEnvironmentTemplateVersion {
        /// Creates a new `GetEnvironmentTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetEnvironmentTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::GetEnvironmentTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment template a version of which you want to get detailed data for.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the environment template a version of which you want to get detailed data for.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>To get environment template major version detail data, include <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To get environment template major version detail data, include <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>To get environment template minor version detail data, include <code>minorVersion</code>.</p>
        pub fn minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.minor_version(input.into());
            self
        }
        /// <p>To get environment template minor version detail data, include <code>minorVersion</code>.</p>
        pub fn set_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_minor_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetRepository`.
    ///
    /// <p>Get detail data for a linked repository.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetRepository {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_repository_input::Builder,
    }
    impl GetRepository {
        /// Creates a new `GetRepository`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetRepositoryOutput,
            aws_smithy_http::result::SdkError<crate::error::GetRepositoryError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 repository provider.</p>
        pub fn provider(mut self, input: crate::model::RepositoryProvider) -> Self {
            self.inner = self.inner.provider(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn set_provider(
            mut self,
            input: std::option::Option<crate::model::RepositoryProvider>,
        ) -> Self {
            self.inner = self.inner.set_provider(input);
            self
        }
        /// <p>The repository name, for example <code>myrepos/myrepo</code>.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The repository name, for example <code>myrepos/myrepo</code>.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetRepositorySyncStatus`.
    ///
    /// <p>Get the sync status of a repository used for Proton template sync. For more information about template sync, see .</p> <note>
    /// <p>A repository sync status isn't tied to the Proton Repository resource (or any other Proton resource). Therefore, tags on an Proton Repository resource have no effect on this action. Specifically, you can't use these tags to control access to this action using Attribute-based access control (ABAC).</p>
    /// <p>For more information about ABAC, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-tags">ABAC</a> in the <i>Proton User Guide</i>.</p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetRepositorySyncStatus {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_repository_sync_status_input::Builder,
    }
    impl GetRepositorySyncStatus {
        /// Creates a new `GetRepositorySyncStatus`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetRepositorySyncStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::GetRepositorySyncStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 repository name.</p>
        pub fn repository_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_name(input.into());
            self
        }
        /// <p>The repository name.</p>
        pub fn set_repository_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_name(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn repository_provider(mut self, input: crate::model::RepositoryProvider) -> Self {
            self.inner = self.inner.repository_provider(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn set_repository_provider(
            mut self,
            input: std::option::Option<crate::model::RepositoryProvider>,
        ) -> Self {
            self.inner = self.inner.set_repository_provider(input);
            self
        }
        /// <p>The repository branch.</p>
        pub fn branch(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.branch(input.into());
            self
        }
        /// <p>The repository branch.</p>
        pub fn set_branch(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_branch(input);
            self
        }
        /// <p>The repository sync type.</p>
        pub fn sync_type(mut self, input: crate::model::SyncType) -> Self {
            self.inner = self.inner.sync_type(input);
            self
        }
        /// <p>The repository sync type.</p>
        pub fn set_sync_type(mut self, input: std::option::Option<crate::model::SyncType>) -> Self {
            self.inner = self.inner.set_sync_type(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetService`.
    ///
    /// <p>Get detailed data for a service.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetService {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_service_input::Builder,
    }
    impl GetService {
        /// Creates a new `GetService`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetServiceOutput,
            aws_smithy_http::result::SdkError<crate::error::GetServiceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service that you want to get the detailed data for.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the service that you want to get the detailed data for.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetServiceInstance`.
    ///
    /// <p>Get detailed data for a service instance. A service instance is an instantiation of service template and it runs in a specific environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetServiceInstance {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_service_instance_input::Builder,
    }
    impl GetServiceInstance {
        /// Creates a new `GetServiceInstance`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetServiceInstanceOutput,
            aws_smithy_http::result::SdkError<crate::error::GetServiceInstanceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 a service instance that you want to get the detailed data for.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of a service instance that you want to get the detailed data for.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The name of the service that the service instance belongs to.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service that the service instance belongs to.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetServiceTemplate`.
    ///
    /// <p>Get detailed data for a service template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetServiceTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_service_template_input::Builder,
    }
    impl GetServiceTemplate {
        /// Creates a new `GetServiceTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetServiceTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::GetServiceTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service template that you want to get detailed data for.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the service template that you want to get detailed data for.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetServiceTemplateVersion`.
    ///
    /// <p>Get detailed data for a major or minor version of a service template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetServiceTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_service_template_version_input::Builder,
    }
    impl GetServiceTemplateVersion {
        /// Creates a new `GetServiceTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetServiceTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::GetServiceTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service template a version of which you want to get detailed data for.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the service template a version of which you want to get detailed data for.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>To get service template major version detail data, include <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To get service template major version detail data, include <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>To get service template minor version detail data, include <code>minorVersion</code>.</p>
        pub fn minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.minor_version(input.into());
            self
        }
        /// <p>To get service template minor version detail data, include <code>minorVersion</code>.</p>
        pub fn set_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_minor_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `GetTemplateSyncConfig`.
    ///
    /// <p>Get detail data for a template sync configuration.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct GetTemplateSyncConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::get_template_sync_config_input::Builder,
    }
    impl GetTemplateSyncConfig {
        /// Creates a new `GetTemplateSyncConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

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

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::GetTemplateSyncStatusOutput,
            aws_smithy_http::result::SdkError<crate::error::GetTemplateSyncStatusError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 template name.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The template name.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The template type.</p>
        pub fn template_type(mut self, input: crate::model::TemplateType) -> Self {
            self.inner = self.inner.template_type(input);
            self
        }
        /// <p>The template type.</p>
        pub fn set_template_type(
            mut self,
            input: std::option::Option<crate::model::TemplateType>,
        ) -> Self {
            self.inner = self.inner.set_template_type(input);
            self
        }
        /// <p>The template major version.</p>
        pub fn template_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_version(input.into());
            self
        }
        /// <p>The template major version.</p>
        pub fn set_template_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListComponentOutputs`.
    ///
    /// <p>Get a list of component Infrastructure as Code (IaC) outputs.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListComponentOutputs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_component_outputs_input::Builder,
    }
    impl ListComponentOutputs {
        /// Creates a new `ListComponentOutputs`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListComponentOutputsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListComponentOutputsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListComponentOutputsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListComponentOutputsPaginator {
            crate::paginator::ListComponentOutputsPaginator::new(self.handle, self.inner)
        }
        /// <p>The name of the component whose outputs you want.</p>
        pub fn component_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.component_name(input.into());
            self
        }
        /// <p>The name of the component whose outputs you want.</p>
        pub fn set_component_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_component_name(input);
            self
        }
        /// <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListComponentProvisionedResources`.
    ///
    /// <p>List provisioned resources for a component with details.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListComponentProvisionedResources {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_component_provisioned_resources_input::Builder,
    }
    impl ListComponentProvisionedResources {
        /// Creates a new `ListComponentProvisionedResources`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListComponentProvisionedResourcesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListComponentProvisionedResourcesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListComponentProvisionedResourcesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(
            self,
        ) -> crate::paginator::ListComponentProvisionedResourcesPaginator {
            crate::paginator::ListComponentProvisionedResourcesPaginator::new(
                self.handle,
                self.inner,
            )
        }
        /// <p>The name of the component whose provisioned resources you want.</p>
        pub fn component_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.component_name(input.into());
            self
        }
        /// <p>The name of the component whose provisioned resources you want.</p>
        pub fn set_component_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_component_name(input);
            self
        }
        /// <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListComponents`.
    ///
    /// <p>List components with summary data. You can filter the result list by environment, service, or a single service instance.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListComponents {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_components_input::Builder,
    }
    impl ListComponents {
        /// Creates a new `ListComponents`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListComponentsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListComponentsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListComponentsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListComponentsPaginator {
            crate::paginator::ListComponentsPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next component in the array of components, after the list of components that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next component in the array of components, after the list of components that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The name of an environment for result list filtering. Proton returns components associated with the environment or attached to service instances running in it.</p>
        pub fn environment_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_name(input.into());
            self
        }
        /// <p>The name of an environment for result list filtering. Proton returns components associated with the environment or attached to service instances running in it.</p>
        pub fn set_environment_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_name(input);
            self
        }
        /// <p>The name of a service for result list filtering. Proton returns components attached to service instances of the service.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of a service for result list filtering. Proton returns components attached to service instances of the service.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>The name of a service instance for result list filtering. Proton returns the component attached to the service instance, if any.</p>
        pub fn service_instance_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_instance_name(input.into());
            self
        }
        /// <p>The name of a service instance for result list filtering. Proton returns the component attached to the service instance, if any.</p>
        pub fn set_service_instance_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_service_instance_name(input);
            self
        }
        /// <p>The maximum number of components to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of components to list.</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 `ListEnvironmentAccountConnections`.
    ///
    /// <p>View a list of environment account connections.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEnvironmentAccountConnections {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_environment_account_connections_input::Builder,
    }
    impl ListEnvironmentAccountConnections {
        /// Creates a new `ListEnvironmentAccountConnections`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListEnvironmentAccountConnectionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEnvironmentAccountConnectionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListEnvironmentAccountConnectionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(
            self,
        ) -> crate::paginator::ListEnvironmentAccountConnectionsPaginator {
            crate::paginator::ListEnvironmentAccountConnectionsPaginator::new(
                self.handle,
                self.inner,
            )
        }
        /// <p>The type of account making the <code>ListEnvironmentAccountConnections</code> request.</p>
        pub fn requested_by(
            mut self,
            input: crate::model::EnvironmentAccountConnectionRequesterAccountType,
        ) -> Self {
            self.inner = self.inner.requested_by(input);
            self
        }
        /// <p>The type of account making the <code>ListEnvironmentAccountConnections</code> request.</p>
        pub fn set_requested_by(
            mut self,
            input: std::option::Option<
                crate::model::EnvironmentAccountConnectionRequesterAccountType,
            >,
        ) -> Self {
            self.inner = self.inner.set_requested_by(input);
            self
        }
        /// <p>The environment name that's associated with each listed environment account connection.</p>
        pub fn environment_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_name(input.into());
            self
        }
        /// <p>The environment name that's associated with each listed environment account connection.</p>
        pub fn set_environment_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_name(input);
            self
        }
        /// Appends an item to `statuses`.
        ///
        /// To override the contents of this collection use [`set_statuses`](Self::set_statuses).
        ///
        /// <p>The status details for each listed environment account connection.</p>
        pub fn statuses(mut self, input: crate::model::EnvironmentAccountConnectionStatus) -> Self {
            self.inner = self.inner.statuses(input);
            self
        }
        /// <p>The status details for each listed environment account connection.</p>
        pub fn set_statuses(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::EnvironmentAccountConnectionStatus>,
            >,
        ) -> Self {
            self.inner = self.inner.set_statuses(input);
            self
        }
        /// <p>A token that indicates the location of the next environment account connection in the array of environment account connections, after the list of environment account connections that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next environment account connection in the array of environment account connections, after the list of environment account connections that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of environment account connections to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of environment account connections to list.</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 `ListEnvironmentOutputs`.
    ///
    /// <p>List the infrastructure as code outputs for your environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEnvironmentOutputs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_environment_outputs_input::Builder,
    }
    impl ListEnvironmentOutputs {
        /// Creates a new `ListEnvironmentOutputs`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListEnvironmentOutputsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEnvironmentOutputsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListEnvironmentOutputsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEnvironmentOutputsPaginator {
            crate::paginator::ListEnvironmentOutputsPaginator::new(self.handle, self.inner)
        }
        /// <p>The environment name.</p>
        pub fn environment_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_name(input.into());
            self
        }
        /// <p>The environment name.</p>
        pub fn set_environment_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_name(input);
            self
        }
        /// <p>A token that indicates the location of the next environment output in the array of environment outputs, after the list of environment outputs that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next environment output in the array of environment outputs, after the list of environment outputs that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListEnvironmentProvisionedResources`.
    ///
    /// <p>List the provisioned resources for your environment.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEnvironmentProvisionedResources {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_environment_provisioned_resources_input::Builder,
    }
    impl ListEnvironmentProvisionedResources {
        /// Creates a new `ListEnvironmentProvisionedResources`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListEnvironmentProvisionedResourcesOutput,
            aws_smithy_http::result::SdkError<
                crate::error::ListEnvironmentProvisionedResourcesError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListEnvironmentProvisionedResourcesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(
            self,
        ) -> crate::paginator::ListEnvironmentProvisionedResourcesPaginator {
            crate::paginator::ListEnvironmentProvisionedResourcesPaginator::new(
                self.handle,
                self.inner,
            )
        }
        /// <p>The environment name.</p>
        pub fn environment_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.environment_name(input.into());
            self
        }
        /// <p>The environment name.</p>
        pub fn set_environment_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_name(input);
            self
        }
        /// <p>A token that indicates the location of the next environment provisioned resource in the array of environment provisioned resources, after the list of environment provisioned resources that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next environment provisioned resource in the array of environment provisioned resources, after the list of environment provisioned resources that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListEnvironments`.
    ///
    /// <p>List environments with detail data summaries.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEnvironments {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_environments_input::Builder,
    }
    impl ListEnvironments {
        /// Creates a new `ListEnvironments`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListEnvironmentsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEnvironmentsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListEnvironmentsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEnvironmentsPaginator {
            crate::paginator::ListEnvironmentsPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next environment in the array of environments, after the list of environments that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next environment in the array of environments, after the list of environments that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of environments to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of environments to list.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// Appends an item to `environmentTemplates`.
        ///
        /// To override the contents of this collection use [`set_environment_templates`](Self::set_environment_templates).
        ///
        /// <p>An array of the versions of the environment template.</p>
        pub fn environment_templates(
            mut self,
            input: crate::model::EnvironmentTemplateFilter,
        ) -> Self {
            self.inner = self.inner.environment_templates(input);
            self
        }
        /// <p>An array of the versions of the environment template.</p>
        pub fn set_environment_templates(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::EnvironmentTemplateFilter>>,
        ) -> Self {
            self.inner = self.inner.set_environment_templates(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListEnvironmentTemplates`.
    ///
    /// <p>List environment templates.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEnvironmentTemplates {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_environment_templates_input::Builder,
    }
    impl ListEnvironmentTemplates {
        /// Creates a new `ListEnvironmentTemplates`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListEnvironmentTemplatesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEnvironmentTemplatesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListEnvironmentTemplatesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEnvironmentTemplatesPaginator {
            crate::paginator::ListEnvironmentTemplatesPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next environment template in the array of environment templates, after the list of environment templates that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next environment template in the array of environment templates, after the list of environment templates that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of environment templates to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of environment templates to list.</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 `ListEnvironmentTemplateVersions`.
    ///
    /// <p>List major or minor versions of an environment template with detail data.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListEnvironmentTemplateVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_environment_template_versions_input::Builder,
    }
    impl ListEnvironmentTemplateVersions {
        /// Creates a new `ListEnvironmentTemplateVersions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListEnvironmentTemplateVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListEnvironmentTemplateVersionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListEnvironmentTemplateVersionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListEnvironmentTemplateVersionsPaginator {
            crate::paginator::ListEnvironmentTemplateVersionsPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of an environment template, after the list of major or minor versions that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of an environment template, after the list of major or minor versions that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of major or minor versions of an environment template to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of major or minor versions of an environment template to list.</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 environment template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the environment template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>To view a list of minor of versions under a major version of an environment template, include <code>major Version</code>.</p>
        /// <p>To view a list of major versions of an environment template, <i>exclude</i> <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To view a list of minor of versions under a major version of an environment template, include <code>major Version</code>.</p>
        /// <p>To view a list of major versions of an environment template, <i>exclude</i> <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListRepositories`.
    ///
    /// <p>List linked repositories with detail data.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRepositories {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_repositories_input::Builder,
    }
    impl ListRepositories {
        /// Creates a new `ListRepositories`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListRepositoriesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRepositoriesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListRepositoriesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRepositoriesPaginator {
            crate::paginator::ListRepositoriesPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next repository in the array of repositories, after the list of repositories previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next repository in the array of repositories, after the list of repositories previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of repositories to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of repositories to list.</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 `ListRepositorySyncDefinitions`.
    ///
    /// <p>List repository sync definitions with detail data.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListRepositorySyncDefinitions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_repository_sync_definitions_input::Builder,
    }
    impl ListRepositorySyncDefinitions {
        /// Creates a new `ListRepositorySyncDefinitions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListRepositorySyncDefinitionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListRepositorySyncDefinitionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListRepositorySyncDefinitionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListRepositorySyncDefinitionsPaginator {
            crate::paginator::ListRepositorySyncDefinitionsPaginator::new(self.handle, self.inner)
        }
        /// <p>The repository name.</p>
        pub fn repository_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_name(input.into());
            self
        }
        /// <p>The repository name.</p>
        pub fn set_repository_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_name(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn repository_provider(mut self, input: crate::model::RepositoryProvider) -> Self {
            self.inner = self.inner.repository_provider(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn set_repository_provider(
            mut self,
            input: std::option::Option<crate::model::RepositoryProvider>,
        ) -> Self {
            self.inner = self.inner.set_repository_provider(input);
            self
        }
        /// <p>The sync type. The only supported value is <code>TEMPLATE_SYNC</code>.</p>
        pub fn sync_type(mut self, input: crate::model::SyncType) -> Self {
            self.inner = self.inner.sync_type(input);
            self
        }
        /// <p>The sync type. The only supported value is <code>TEMPLATE_SYNC</code>.</p>
        pub fn set_sync_type(mut self, input: std::option::Option<crate::model::SyncType>) -> Self {
            self.inner = self.inner.set_sync_type(input);
            self
        }
        /// <p>A token that indicates the location of the next repository sync definition in the array of repository sync definitions, after the list of repository sync definitions previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next repository sync definition in the array of repository sync definitions, after the list of repository sync definitions previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListServiceInstanceOutputs`.
    ///
    /// <p>Get a list service of instance Infrastructure as Code (IaC) outputs.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServiceInstanceOutputs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_service_instance_outputs_input::Builder,
    }
    impl ListServiceInstanceOutputs {
        /// Creates a new `ListServiceInstanceOutputs`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServiceInstanceOutputsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListServiceInstanceOutputsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServiceInstanceOutputsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListServiceInstanceOutputsPaginator {
            crate::paginator::ListServiceInstanceOutputsPaginator::new(self.handle, self.inner)
        }
        /// <p>The name of the service instance whose outputs you want.</p>
        pub fn service_instance_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_instance_name(input.into());
            self
        }
        /// <p>The name of the service instance whose outputs you want.</p>
        pub fn set_service_instance_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_service_instance_name(input);
            self
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated to.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated to.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListServiceInstanceProvisionedResources`.
    ///
    /// <p>List provisioned resources for a service instance with details.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServiceInstanceProvisionedResources {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_service_instance_provisioned_resources_input::Builder,
    }
    impl ListServiceInstanceProvisionedResources {
        /// Creates a new `ListServiceInstanceProvisionedResources`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServiceInstanceProvisionedResourcesOutput,
            aws_smithy_http::result::SdkError<
                crate::error::ListServiceInstanceProvisionedResourcesError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServiceInstanceProvisionedResourcesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(
            self,
        ) -> crate::paginator::ListServiceInstanceProvisionedResourcesPaginator {
            crate::paginator::ListServiceInstanceProvisionedResourcesPaginator::new(
                self.handle,
                self.inner,
            )
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated to.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated to.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>The name of the service instance whose provisioned resources you want.</p>
        pub fn service_instance_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_instance_name(input.into());
            self
        }
        /// <p>The name of the service instance whose provisioned resources you want.</p>
        pub fn set_service_instance_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_service_instance_name(input);
            self
        }
        /// <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListServiceInstances`.
    ///
    /// <p>List service instances with summary data. This action lists service instances of all services in the Amazon Web Services account.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServiceInstances {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_service_instances_input::Builder,
    }
    impl ListServiceInstances {
        /// Creates a new `ListServiceInstances`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServiceInstancesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListServiceInstancesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServiceInstancesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListServiceInstancesPaginator {
            crate::paginator::ListServiceInstancesPaginator::new(self.handle, self.inner)
        }
        /// <p>The name of the service that the service instance belongs to.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service that the service instance belongs to.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>A token that indicates the location of the next service in the array of service instances, after the list of service instances that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next service in the array of service instances, after the list of service instances that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of service instances to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of service instances to list.</p>
        pub fn set_max_results(mut self, input: std::option::Option<i32>) -> Self {
            self.inner = self.inner.set_max_results(input);
            self
        }
        /// Appends an item to `filters`.
        ///
        /// To override the contents of this collection use [`set_filters`](Self::set_filters).
        ///
        /// <p>An array of filtering criteria that scope down the result list. By default, all service instances in the Amazon Web Services account are returned.</p>
        pub fn filters(mut self, input: crate::model::ListServiceInstancesFilter) -> Self {
            self.inner = self.inner.filters(input);
            self
        }
        /// <p>An array of filtering criteria that scope down the result list. By default, all service instances in the Amazon Web Services account are returned.</p>
        pub fn set_filters(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ListServiceInstancesFilter>>,
        ) -> Self {
            self.inner = self.inner.set_filters(input);
            self
        }
        /// <p>The field that the result list is sorted by.</p>
        /// <p>When you choose to sort by <code>serviceName</code>, service instances within each service are sorted by service instance name.</p>
        /// <p>Default: <code>serviceName</code> </p>
        pub fn sort_by(mut self, input: crate::model::ListServiceInstancesSortBy) -> Self {
            self.inner = self.inner.sort_by(input);
            self
        }
        /// <p>The field that the result list is sorted by.</p>
        /// <p>When you choose to sort by <code>serviceName</code>, service instances within each service are sorted by service instance name.</p>
        /// <p>Default: <code>serviceName</code> </p>
        pub fn set_sort_by(
            mut self,
            input: std::option::Option<crate::model::ListServiceInstancesSortBy>,
        ) -> Self {
            self.inner = self.inner.set_sort_by(input);
            self
        }
        /// <p>Result list sort order.</p>
        /// <p>Default: <code>ASCENDING</code> </p>
        pub fn sort_order(mut self, input: crate::model::SortOrder) -> Self {
            self.inner = self.inner.sort_order(input);
            self
        }
        /// <p>Result list sort order.</p>
        /// <p>Default: <code>ASCENDING</code> </p>
        pub fn set_sort_order(
            mut self,
            input: std::option::Option<crate::model::SortOrder>,
        ) -> Self {
            self.inner = self.inner.set_sort_order(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListServicePipelineOutputs`.
    ///
    /// <p>Get a list of service pipeline Infrastructure as Code (IaC) outputs.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServicePipelineOutputs {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_service_pipeline_outputs_input::Builder,
    }
    impl ListServicePipelineOutputs {
        /// Creates a new `ListServicePipelineOutputs`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServicePipelineOutputsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListServicePipelineOutputsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServicePipelineOutputsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListServicePipelineOutputsPaginator {
            crate::paginator::ListServicePipelineOutputsPaginator::new(self.handle, self.inner)
        }
        /// <p>The name of the service whose pipeline's outputs you want.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service whose pipeline's outputs you want.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next output in the array of outputs, after the list of outputs that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListServicePipelineProvisionedResources`.
    ///
    /// <p>List provisioned resources for a service and pipeline with details.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServicePipelineProvisionedResources {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_service_pipeline_provisioned_resources_input::Builder,
    }
    impl ListServicePipelineProvisionedResources {
        /// Creates a new `ListServicePipelineProvisionedResources`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServicePipelineProvisionedResourcesOutput,
            aws_smithy_http::result::SdkError<
                crate::error::ListServicePipelineProvisionedResourcesError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServicePipelineProvisionedResourcesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(
            self,
        ) -> crate::paginator::ListServicePipelineProvisionedResourcesPaginator {
            crate::paginator::ListServicePipelineProvisionedResourcesPaginator::new(
                self.handle,
                self.inner,
            )
        }
        /// <p>The name of the service whose pipeline's provisioned resources you want.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service whose pipeline's provisioned resources you want.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next provisioned resource in the array of provisioned resources, after the list of provisioned resources that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListServices`.
    ///
    /// <p>List services with summaries of detail data.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServices {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_services_input::Builder,
    }
    impl ListServices {
        /// Creates a new `ListServices`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServicesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListServicesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServicesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListServicesPaginator {
            crate::paginator::ListServicesPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next service in the array of services, after the list of services that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next service in the array of services, after the list of services that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of services to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of services to list.</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 `ListServiceTemplates`.
    ///
    /// <p>List service templates with detail data.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServiceTemplates {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_service_templates_input::Builder,
    }
    impl ListServiceTemplates {
        /// Creates a new `ListServiceTemplates`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServiceTemplatesOutput,
            aws_smithy_http::result::SdkError<crate::error::ListServiceTemplatesError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServiceTemplatesPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListServiceTemplatesPaginator {
            crate::paginator::ListServiceTemplatesPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next service template in the array of service templates, after the list of service templates previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next service template in the array of service templates, after the list of service templates previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of service templates to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of service templates to list.</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 `ListServiceTemplateVersions`.
    ///
    /// <p>List major or minor versions of a service template with detail data.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListServiceTemplateVersions {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_service_template_versions_input::Builder,
    }
    impl ListServiceTemplateVersions {
        /// Creates a new `ListServiceTemplateVersions`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListServiceTemplateVersionsOutput,
            aws_smithy_http::result::SdkError<crate::error::ListServiceTemplateVersionsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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::ListServiceTemplateVersionsPaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListServiceTemplateVersionsPaginator {
            crate::paginator::ListServiceTemplateVersionsPaginator::new(self.handle, self.inner)
        }
        /// <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of a service template, after the list of major or minor versions that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next major or minor version in the array of major or minor versions of a service template, after the list of major or minor versions that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of major or minor versions of a service template to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of major or minor versions of a service template to list.</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 service template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the service template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>To view a list of minor of versions under a major version of a service template, include <code>major Version</code>.</p>
        /// <p>To view a list of major versions of a service template, <i>exclude</i> <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To view a list of minor of versions under a major version of a service template, include <code>major Version</code>.</p>
        /// <p>To view a list of major versions of a service template, <i>exclude</i> <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `ListTagsForResource`.
    ///
    /// <p>List tags for a resource. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct ListTagsForResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::list_tags_for_resource_input::Builder,
    }
    impl ListTagsForResource {
        /// Creates a new `ListTagsForResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::ListTagsForResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::ListTagsForResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// Create a paginator for this request
        ///
        /// Paginators are used by calling [`send().await`](crate::paginator::ListTagsForResourcePaginator::send) which returns a [`Stream`](tokio_stream::Stream).
        pub fn into_paginator(self) -> crate::paginator::ListTagsForResourcePaginator {
            crate::paginator::ListTagsForResourcePaginator::new(self.handle, self.inner)
        }
        /// <p>The Amazon Resource Name (ARN) of the resource for the listed tags.</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 for the listed tags.</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>A token that indicates the location of the next resource tag in the array of resource tags, after the list of resource tags that was previously requested.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.next_token(input.into());
            self
        }
        /// <p>A token that indicates the location of the next resource tag in the array of resource tags, after the list of resource tags that was previously requested.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_next_token(input);
            self
        }
        /// <p>The maximum number of tags to list.</p>
        pub fn max_results(mut self, input: i32) -> Self {
            self.inner = self.inner.max_results(input);
            self
        }
        /// <p>The maximum number of tags to list.</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 `NotifyResourceDeploymentStatusChange`.
    ///
    /// <p>Notify Proton of status changes to a provisioned resource when you use self-managed provisioning.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-works-prov-methods.html#ag-works-prov-methods-self">Self-managed provisioning</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct NotifyResourceDeploymentStatusChange {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::notify_resource_deployment_status_change_input::Builder,
    }
    impl NotifyResourceDeploymentStatusChange {
        /// Creates a new `NotifyResourceDeploymentStatusChange`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::NotifyResourceDeploymentStatusChangeOutput,
            aws_smithy_http::result::SdkError<
                crate::error::NotifyResourceDeploymentStatusChangeError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 provisioned resource Amazon Resource Name (ARN).</p>
        pub fn resource_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.resource_arn(input.into());
            self
        }
        /// <p>The provisioned resource Amazon Resource Name (ARN).</p>
        pub fn set_resource_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_resource_arn(input);
            self
        }
        /// <p>The status of your provisioned resource.</p>
        pub fn status(mut self, input: crate::model::ResourceDeploymentStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>The status of your provisioned resource.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::ResourceDeploymentStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// Appends an item to `outputs`.
        ///
        /// To override the contents of this collection use [`set_outputs`](Self::set_outputs).
        ///
        /// <p>The provisioned resource state change detail data that's returned by Proton.</p>
        pub fn outputs(mut self, input: crate::model::Output) -> Self {
            self.inner = self.inner.outputs(input);
            self
        }
        /// <p>The provisioned resource state change detail data that's returned by Proton.</p>
        pub fn set_outputs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Output>>,
        ) -> Self {
            self.inner = self.inner.set_outputs(input);
            self
        }
        /// <p>The deployment ID for your provisioned resource.</p>
        pub fn deployment_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.deployment_id(input.into());
            self
        }
        /// <p>The deployment ID for your provisioned resource.</p>
        pub fn set_deployment_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_deployment_id(input);
            self
        }
        /// <p>The deployment status message for your provisioned resource.</p>
        pub fn status_message(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.status_message(input.into());
            self
        }
        /// <p>The deployment status message for your provisioned resource.</p>
        pub fn set_status_message(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_status_message(input);
            self
        }
    }
    /// Fluent builder constructing a request to `RejectEnvironmentAccountConnection`.
    ///
    /// <p>In a management account, reject an environment account connection from another environment account.</p>
    /// <p>After you reject an environment account connection request, you <i>can't</i> accept or use the rejected environment account connection.</p>
    /// <p>You <i>can’t</i> reject an environment account connection that's connected to an environment.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct RejectEnvironmentAccountConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::reject_environment_account_connection_input::Builder,
    }
    impl RejectEnvironmentAccountConnection {
        /// Creates a new `RejectEnvironmentAccountConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::RejectEnvironmentAccountConnectionOutput,
            aws_smithy_http::result::SdkError<
                crate::error::RejectEnvironmentAccountConnectionError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment account connection to reject.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.id(input.into());
            self
        }
        /// <p>The ID of the environment account connection to reject.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_id(input);
            self
        }
    }
    /// Fluent builder constructing a request to `TagResource`.
    ///
    /// <p>Tag a resource. A tag is a key-value pair of metadata that you associate with an Proton resource.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct TagResource {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::tag_resource_input::Builder,
    }
    impl TagResource {
        /// Creates a new `TagResource`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::TagResourceOutput,
            aws_smithy_http::result::SdkError<crate::error::TagResourceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The Amazon Resource Name (ARN) of the Proton resource to apply customer tags to.</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 Proton resource to apply customer tags to.</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>A list of customer tags to apply to the Proton resource.</p>
        pub fn tags(mut self, input: crate::model::Tag) -> Self {
            self.inner = self.inner.tags(input);
            self
        }
        /// <p>A list of customer tags to apply to the Proton 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>Remove a customer tag from a resource. A tag is a key-value pair of metadata associated with an Proton resource.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/resources.html">Proton resources and tagging</a> in the <i>Proton User Guide</i>.</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 customer 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 customer 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>A list of customer tag keys that indicate the customer tags to be removed 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>A list of customer tag keys that indicate the customer tags to be removed 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 `UpdateAccountSettings`.
    ///
    /// <p>Update Proton settings that are used for multiple services in the Amazon Web Services account.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateAccountSettings {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_account_settings_input::Builder,
    }
    impl UpdateAccountSettings {
        /// Creates a new `UpdateAccountSettings`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateAccountSettingsOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateAccountSettingsError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service role you want to use for provisioning pipelines. Assumed by Proton for Amazon Web Services-managed provisioning, and by customer-owned automation for self-managed provisioning.</p>
        /// <p>To remove a previously configured ARN, specify an empty string.</p>
        pub fn pipeline_service_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.pipeline_service_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the service role you want to use for provisioning pipelines. Assumed by Proton for Amazon Web Services-managed provisioning, and by customer-owned automation for self-managed provisioning.</p>
        /// <p>To remove a previously configured ARN, specify an empty string.</p>
        pub fn set_pipeline_service_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_pipeline_service_role_arn(input);
            self
        }
        /// <p>A linked repository for pipeline provisioning. Specify it if you have environments configured for self-managed provisioning with services that include pipelines. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
        /// <p>To remove a previously configured repository, set <code>deletePipelineProvisioningRepository</code> to <code>true</code>, and don't set <code>pipelineProvisioningRepository</code>.</p>
        pub fn pipeline_provisioning_repository(
            mut self,
            input: crate::model::RepositoryBranchInput,
        ) -> Self {
            self.inner = self.inner.pipeline_provisioning_repository(input);
            self
        }
        /// <p>A linked repository for pipeline provisioning. Specify it if you have environments configured for self-managed provisioning with services that include pipelines. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
        /// <p>To remove a previously configured repository, set <code>deletePipelineProvisioningRepository</code> to <code>true</code>, and don't set <code>pipelineProvisioningRepository</code>.</p>
        pub fn set_pipeline_provisioning_repository(
            mut self,
            input: std::option::Option<crate::model::RepositoryBranchInput>,
        ) -> Self {
            self.inner = self.inner.set_pipeline_provisioning_repository(input);
            self
        }
        /// <p>Set to <code>true</code> to remove a configured pipeline repository from the account settings. Don't set this field if you are updating the configured pipeline repository.</p>
        pub fn delete_pipeline_provisioning_repository(mut self, input: bool) -> Self {
            self.inner = self.inner.delete_pipeline_provisioning_repository(input);
            self
        }
        /// <p>Set to <code>true</code> to remove a configured pipeline repository from the account settings. Don't set this field if you are updating the configured pipeline repository.</p>
        pub fn set_delete_pipeline_provisioning_repository(
            mut self,
            input: std::option::Option<bool>,
        ) -> Self {
            self.inner = self
                .inner
                .set_delete_pipeline_provisioning_repository(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the service role you want to use for provisioning pipelines. Proton assumes this role for CodeBuild-based provisioning.</p>
        pub fn pipeline_codebuild_role_arn(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.pipeline_codebuild_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the service role you want to use for provisioning pipelines. Proton assumes this role for CodeBuild-based provisioning.</p>
        pub fn set_pipeline_codebuild_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_pipeline_codebuild_role_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateComponent`.
    ///
    /// <p>Update a component.</p>
    /// <p>There are a few modes for updating a component. The <code>deploymentType</code> field defines the mode.</p> <note>
    /// <p>You can't update a component while its deployment status, or the deployment status of a service instance attached to it, is <code>IN_PROGRESS</code>.</p>
    /// </note>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateComponent {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_component_input::Builder,
    }
    impl UpdateComponent {
        /// Creates a new `UpdateComponent`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateComponentOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateComponentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 component to update.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the component to update.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The deployment type. It defines the mode for updating a component, as follows:</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated. You can only specify <code>description</code> in this mode.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the component is deployed and updated with the new <code>serviceSpec</code>, <code>templateSource</code>, and/or <code>type</code> that you provide. Only requested parameters are updated.</p>
        /// </dd>
        /// </dl>
        pub fn deployment_type(
            mut self,
            input: crate::model::ComponentDeploymentUpdateType,
        ) -> Self {
            self.inner = self.inner.deployment_type(input);
            self
        }
        /// <p>The deployment type. It defines the mode for updating a component, as follows:</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated. You can only specify <code>description</code> in this mode.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the component is deployed and updated with the new <code>serviceSpec</code>, <code>templateSource</code>, and/or <code>type</code> that you provide. Only requested parameters are updated.</p>
        /// </dd>
        /// </dl>
        pub fn set_deployment_type(
            mut self,
            input: std::option::Option<crate::model::ComponentDeploymentUpdateType>,
        ) -> Self {
            self.inner = self.inner.set_deployment_type(input);
            self
        }
        /// <p>An optional customer-provided description of the component.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>An optional customer-provided description of the component.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated with. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both <code>serviceInstanceName</code> and <code>serviceName</code> or for neither of them.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service that <code>serviceInstanceName</code> is associated with. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both <code>serviceInstanceName</code> and <code>serviceName</code> or for neither of them.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>The name of the service instance that you want to attach this component to. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both <code>serviceInstanceName</code> and <code>serviceName</code> or for neither of them.</p>
        pub fn service_instance_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_instance_name(input.into());
            self
        }
        /// <p>The name of the service instance that you want to attach this component to. Don't specify to keep the component's current service instance attachment. Specify an empty string to detach the component from the service instance it's attached to. Specify non-empty values for both <code>serviceInstanceName</code> and <code>serviceName</code> or for neither of them.</p>
        pub fn set_service_instance_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_service_instance_name(input);
            self
        }
        /// <p>The service spec that you want the component to use to access service inputs. Set this only when the component is attached to a service instance.</p>
        pub fn service_spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_spec(input.into());
            self
        }
        /// <p>The service spec that you want the component to use to access service inputs. Set this only when the component is attached to a service instance.</p>
        pub fn set_service_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_spec(input);
            self
        }
        /// <p>A path to the Infrastructure as Code (IaC) file describing infrastructure that a custom component provisions.</p> <note>
        /// <p>Components support a single IaC file, even if you use Terraform as your template language.</p>
        /// </note>
        pub fn template_file(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_file(input.into());
            self
        }
        /// <p>A path to the Infrastructure as Code (IaC) file describing infrastructure that a custom component provisions.</p> <note>
        /// <p>Components support a single IaC file, even if you use Terraform as your template language.</p>
        /// </note>
        pub fn set_template_file(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_file(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateEnvironment`.
    ///
    /// <p>Update an environment.</p>
    /// <p>If the environment is associated with an environment account connection, <i>don't</i> update or include the <code>protonServiceRoleArn</code> and <code>provisioningRepository</code> parameter to update or connect to an environment account connection.</p>
    /// <p>You can only update to a new environment account connection if that connection was created in the same environment account that the current environment account connection was created in. The account connection must also be associated with the current environment.</p>
    /// <p>If the environment <i>isn't</i> associated with an environment account connection, <i>don't</i> update or include the <code>environmentAccountConnectionId</code> parameter. You <i>can't</i> update or connect the environment to an environment account connection if it <i>isn't</i> already associated with an environment connection.</p>
    /// <p>You can update either the <code>environmentAccountConnectionId</code> or <code>protonServiceRoleArn</code> parameter and value. You can’t update both.</p>
    /// <p>If the environment was configured for Amazon Web Services-managed provisioning, omit the <code>provisioningRepository</code> parameter.</p>
    /// <p>If the environment was configured for self-managed provisioning, specify the <code>provisioningRepository</code> parameter and omit the <code>protonServiceRoleArn</code> and <code>environmentAccountConnectionId</code> parameters.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-environments.html">Environments</a> and <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-works-prov-methods.html">Provisioning methods</a> in the <i>Proton User Guide</i>.</p>
    /// <p>There are four modes for updating an environment. The <code>deploymentType</code> field defines the mode.</p>
    /// <dl>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>NONE</code> </p>
    /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
    /// </dd>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>CURRENT_VERSION</code> </p>
    /// <p>In this mode, the environment is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include minor or major version parameters when you use this <code>deployment-type</code>.</p>
    /// </dd>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>MINOR_VERSION</code> </p>
    /// <p>In this mode, the environment is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can also specify a different minor version of the current major version in use.</p>
    /// </dd>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>MAJOR_VERSION</code> </p>
    /// <p>In this mode, the environment is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can also specify a different major version that's higher than the major version in use and a minor version.</p>
    /// </dd>
    /// </dl>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateEnvironment {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_environment_input::Builder,
    }
    impl UpdateEnvironment {
        /// Creates a new `UpdateEnvironment`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateEnvironmentOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateEnvironmentError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?
                .make_operation(&self.handle.conf)
                .await
                .map_err(aws_smithy_http::result::SdkError::construction_failure)?;
            self.handle.client.call(op).await
        }
        /// <p>The name of the environment to update.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment to update.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>A description of the environment update.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the environment update.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The formatted specification that defines the update.</p>
        pub fn spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.spec(input.into());
            self
        }
        /// <p>The formatted specification that defines the update.</p>
        pub fn set_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_spec(input);
            self
        }
        /// <p>The major version of the environment to update.</p>
        pub fn template_major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_major_version(input.into());
            self
        }
        /// <p>The major version of the environment to update.</p>
        pub fn set_template_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_major_version(input);
            self
        }
        /// <p>The minor version of the environment to update.</p>
        pub fn template_minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_minor_version(input.into());
            self
        }
        /// <p>The minor version of the environment to update.</p>
        pub fn set_template_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_minor_version(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make API calls to other services your behalf.</p>
        pub fn proton_service_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.proton_service_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the Proton service role that allows Proton to make API calls to other services your behalf.</p>
        pub fn set_proton_service_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_proton_service_role_arn(input);
            self
        }
        /// <p>There are four modes for updating an environment. The <code>deploymentType</code> field defines the mode.</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the environment is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this <code>deployment-type</code>.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MINOR_VERSION</code> </p>
        /// <p>In this mode, the environment is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can also specify a different minor version of the current major version in use.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MAJOR_VERSION</code> </p>
        /// <p>In this mode, the environment is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can also specify a different major version that is higher than the major version in use and a minor version (optional).</p>
        /// </dd>
        /// </dl>
        pub fn deployment_type(mut self, input: crate::model::DeploymentUpdateType) -> Self {
            self.inner = self.inner.deployment_type(input);
            self
        }
        /// <p>There are four modes for updating an environment. The <code>deploymentType</code> field defines the mode.</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the environment is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this <code>deployment-type</code>.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MINOR_VERSION</code> </p>
        /// <p>In this mode, the environment is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can also specify a different minor version of the current major version in use.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MAJOR_VERSION</code> </p>
        /// <p>In this mode, the environment is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can also specify a different major version that is higher than the major version in use and a minor version (optional).</p>
        /// </dd>
        /// </dl>
        pub fn set_deployment_type(
            mut self,
            input: std::option::Option<crate::model::DeploymentUpdateType>,
        ) -> Self {
            self.inner = self.inner.set_deployment_type(input);
            self
        }
        /// <p>The ID of the environment account connection.</p>
        /// <p>You can only update to a new environment account connection if it was created in the same environment account that the current environment account connection was created in and is associated with the current environment.</p>
        pub fn environment_account_connection_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inner = self.inner.environment_account_connection_id(input.into());
            self
        }
        /// <p>The ID of the environment account connection.</p>
        /// <p>You can only update to a new environment account connection if it was created in the same environment account that the current environment account connection was created in and is associated with the current environment.</p>
        pub fn set_environment_account_connection_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_environment_account_connection_id(input);
            self
        }
        /// <p>The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
        pub fn provisioning_repository(
            mut self,
            input: crate::model::RepositoryBranchInput,
        ) -> Self {
            self.inner = self.inner.provisioning_repository(input);
            self
        }
        /// <p>The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
        pub fn set_provisioning_repository(
            mut self,
            input: std::option::Option<crate::model::RepositoryBranchInput>,
        ) -> Self {
            self.inner = self.inner.set_provisioning_repository(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.</p>
        /// <p>The environment must have a <code>componentRoleArn</code> to allow directly defined components to be associated with the environment.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn component_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.component_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.</p>
        /// <p>The environment must have a <code>componentRoleArn</code> to allow directly defined components to be associated with the environment.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_component_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_component_role_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.</p>
        pub fn codebuild_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.codebuild_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that allows Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.</p>
        pub fn set_codebuild_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_codebuild_role_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateEnvironmentAccountConnection`.
    ///
    /// <p>In an environment account, update an environment account connection to use a new IAM role.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-env-account-connections.html">Environment account connections</a> in the <i>Proton User guide</i>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateEnvironmentAccountConnection {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_environment_account_connection_input::Builder,
    }
    impl UpdateEnvironmentAccountConnection {
        /// Creates a new `UpdateEnvironmentAccountConnection`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateEnvironmentAccountConnectionOutput,
            aws_smithy_http::result::SdkError<
                crate::error::UpdateEnvironmentAccountConnectionError,
            >,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment account connection to update.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.id(input.into());
            self
        }
        /// <p>The ID of the environment account connection to update.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_id(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that's associated with the environment account connection to update.</p>
        pub fn role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that's associated with the environment account connection to update.</p>
        pub fn set_role_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_role_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.</p>
        /// <p>The environment account connection must have a <code>componentRoleArn</code> to allow directly defined components to be associated with any environments running in the account.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn component_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.component_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the IAM service role that Proton uses when provisioning directly defined components in the associated environment account. It determines the scope of infrastructure that a component can provision in the account.</p>
        /// <p>The environment account connection must have a <code>componentRoleArn</code> to allow directly defined components to be associated with any environments running in the account.</p>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_component_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_component_role_arn(input);
            self
        }
        /// <p>The Amazon Resource Name (ARN) of an IAM service role in the environment account. Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.</p>
        pub fn codebuild_role_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.codebuild_role_arn(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of an IAM service role in the environment account. Proton uses this role to provision infrastructure resources using CodeBuild-based provisioning in the associated environment account.</p>
        pub fn set_codebuild_role_arn(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_codebuild_role_arn(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateEnvironmentTemplate`.
    ///
    /// <p>Update an environment template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateEnvironmentTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_environment_template_input::Builder,
    }
    impl UpdateEnvironmentTemplate {
        /// Creates a new `UpdateEnvironmentTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateEnvironmentTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateEnvironmentTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment template to update.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the environment template to update.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The name of the environment template to update as displayed in the developer interface.</p>
        pub fn display_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.display_name(input.into());
            self
        }
        /// <p>The name of the environment template to update as displayed in the developer interface.</p>
        pub fn set_display_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_display_name(input);
            self
        }
        /// <p>A description of the environment template update.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the environment template update.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateEnvironmentTemplateVersion`.
    ///
    /// <p>Update a major or minor version of an environment template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateEnvironmentTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_environment_template_version_input::Builder,
    }
    impl UpdateEnvironmentTemplateVersion {
        /// Creates a new `UpdateEnvironmentTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateEnvironmentTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateEnvironmentTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 environment template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the environment template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>To update a major version of an environment template, include <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To update a major version of an environment template, include <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>To update a minor version of an environment template, include <code>minorVersion</code>.</p>
        pub fn minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.minor_version(input.into());
            self
        }
        /// <p>To update a minor version of an environment template, include <code>minorVersion</code>.</p>
        pub fn set_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_minor_version(input);
            self
        }
        /// <p>A description of environment template version to update.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of environment template version to update.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The status of the environment template minor version to update.</p>
        pub fn status(mut self, input: crate::model::TemplateVersionStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>The status of the environment template minor version to update.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::TemplateVersionStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateService`.
    ///
    /// <p>Edit a service description or use a spec to add and delete service instances.</p> <note>
    /// <p>Existing service instances and the service pipeline <i>can't</i> be edited using this API. They can only be deleted.</p>
    /// </note>
    /// <p>Use the <code>description</code> parameter to modify the description.</p>
    /// <p>Edit the <code>spec</code> parameter to add or delete instances.</p> <note>
    /// <p>You can't delete a service instance (remove it from the spec) if it has an attached component.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateService {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_service_input::Builder,
    }
    impl UpdateService {
        /// Creates a new `UpdateService`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateServiceOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateServiceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service to edit.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the service to edit.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The edited service description.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>The edited service description.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>Lists the service instances to add and the existing service instances to remain. Omit the existing service instances to delete from the list. <i>Don't</i> include edits to the existing service instances or pipeline. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-svc-update.html">Edit a service</a> in the <i>Proton User Guide</i>.</p>
        pub fn spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.spec(input.into());
            self
        }
        /// <p>Lists the service instances to add and the existing service instances to remain. Omit the existing service instances to delete from the list. <i>Don't</i> include edits to the existing service instances or pipeline. For more information, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-svc-update.html">Edit a service</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_spec(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateServiceInstance`.
    ///
    /// <p>Update a service instance.</p>
    /// <p>There are a few modes for updating a service instance. The <code>deploymentType</code> field defines the mode.</p> <note>
    /// <p>You can't update a service instance while its deployment status, or the deployment status of a component attached to it, is <code>IN_PROGRESS</code>.</p>
    /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
    /// </note>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateServiceInstance {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_service_instance_input::Builder,
    }
    impl UpdateServiceInstance {
        /// Creates a new `UpdateServiceInstance`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateServiceInstanceOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateServiceInstanceError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service instance to update.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the service instance to update.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The name of the service that the service instance belongs to.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service that the service instance belongs to.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>The deployment type. It defines the mode for updating a service instance, as follows:</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the service instance is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this deployment type.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MINOR_VERSION</code> </p>
        /// <p>In this mode, the service instance is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can also specify a different minor version of the current major version in use.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MAJOR_VERSION</code> </p>
        /// <p>In this mode, the service instance is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can specify a different major version that's higher than the major version in use and a minor version.</p>
        /// </dd>
        /// </dl>
        pub fn deployment_type(mut self, input: crate::model::DeploymentUpdateType) -> Self {
            self.inner = self.inner.deployment_type(input);
            self
        }
        /// <p>The deployment type. It defines the mode for updating a service instance, as follows:</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the service instance is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this deployment type.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MINOR_VERSION</code> </p>
        /// <p>In this mode, the service instance is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can also specify a different minor version of the current major version in use.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MAJOR_VERSION</code> </p>
        /// <p>In this mode, the service instance is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can specify a different major version that's higher than the major version in use and a minor version.</p>
        /// </dd>
        /// </dl>
        pub fn set_deployment_type(
            mut self,
            input: std::option::Option<crate::model::DeploymentUpdateType>,
        ) -> Self {
            self.inner = self.inner.set_deployment_type(input);
            self
        }
        /// <p>The formatted specification that defines the service instance update.</p>
        pub fn spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.spec(input.into());
            self
        }
        /// <p>The formatted specification that defines the service instance update.</p>
        pub fn set_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_spec(input);
            self
        }
        /// <p>The major version of the service template to update.</p>
        pub fn template_major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_major_version(input.into());
            self
        }
        /// <p>The major version of the service template to update.</p>
        pub fn set_template_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_major_version(input);
            self
        }
        /// <p>The minor version of the service template to update.</p>
        pub fn template_minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_minor_version(input.into());
            self
        }
        /// <p>The minor version of the service template to update.</p>
        pub fn set_template_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_minor_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateServicePipeline`.
    ///
    /// <p>Update the service pipeline.</p>
    /// <p>There are four modes for updating a service pipeline. The <code>deploymentType</code> field defines the mode.</p>
    /// <dl>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>NONE</code> </p>
    /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
    /// </dd>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>CURRENT_VERSION</code> </p>
    /// <p>In this mode, the service pipeline is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this <code>deployment-type</code>.</p>
    /// </dd>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>MINOR_VERSION</code> </p>
    /// <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can specify a different minor version of the current major version in use.</p>
    /// </dd>
    /// <dt></dt>
    /// <dd>
    /// <p> <code>MAJOR_VERSION</code> </p>
    /// <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) major and minor version of the current template by default. You can specify a different major version that's higher than the major version in use and a minor version.</p>
    /// </dd>
    /// </dl>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateServicePipeline {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_service_pipeline_input::Builder,
    }
    impl UpdateServicePipeline {
        /// Creates a new `UpdateServicePipeline`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateServicePipelineOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateServicePipelineError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service to that the pipeline is associated with.</p>
        pub fn service_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.service_name(input.into());
            self
        }
        /// <p>The name of the service to that the pipeline is associated with.</p>
        pub fn set_service_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_service_name(input);
            self
        }
        /// <p>The spec for the service pipeline to update.</p>
        pub fn spec(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.spec(input.into());
            self
        }
        /// <p>The spec for the service pipeline to update.</p>
        pub fn set_spec(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_spec(input);
            self
        }
        /// <p>The deployment type.</p>
        /// <p>There are four modes for updating a service pipeline. The <code>deploymentType</code> field defines the mode.</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the service pipeline is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this <code>deployment-type</code>.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MINOR_VERSION</code> </p>
        /// <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can specify a different minor version of the current major version in use.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MAJOR_VERSION</code> </p>
        /// <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can specify a different major version that's higher than the major version in use and a minor version.</p>
        /// </dd>
        /// </dl>
        pub fn deployment_type(mut self, input: crate::model::DeploymentUpdateType) -> Self {
            self.inner = self.inner.deployment_type(input);
            self
        }
        /// <p>The deployment type.</p>
        /// <p>There are four modes for updating a service pipeline. The <code>deploymentType</code> field defines the mode.</p>
        /// <dl>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>NONE</code> </p>
        /// <p>In this mode, a deployment <i>doesn't</i> occur. Only the requested metadata parameters are updated.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>CURRENT_VERSION</code> </p>
        /// <p>In this mode, the service pipeline is deployed and updated with the new spec that you provide. Only requested parameters are updated. <i>Don’t</i> include major or minor version parameters when you use this <code>deployment-type</code>.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MINOR_VERSION</code> </p>
        /// <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) minor version of the current major version in use, by default. You can specify a different minor version of the current major version in use.</p>
        /// </dd>
        /// <dt></dt>
        /// <dd>
        /// <p> <code>MAJOR_VERSION</code> </p>
        /// <p>In this mode, the service pipeline is deployed and updated with the published, recommended (latest) major and minor version of the current template, by default. You can specify a different major version that's higher than the major version in use and a minor version.</p>
        /// </dd>
        /// </dl>
        pub fn set_deployment_type(
            mut self,
            input: std::option::Option<crate::model::DeploymentUpdateType>,
        ) -> Self {
            self.inner = self.inner.set_deployment_type(input);
            self
        }
        /// <p>The major version of the service template that was used to create the service that the pipeline is associated with.</p>
        pub fn template_major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_major_version(input.into());
            self
        }
        /// <p>The major version of the service template that was used to create the service that the pipeline is associated with.</p>
        pub fn set_template_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_major_version(input);
            self
        }
        /// <p>The minor version of the service template that was used to create the service that the pipeline is associated with.</p>
        pub fn template_minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_minor_version(input.into());
            self
        }
        /// <p>The minor version of the service template that was used to create the service that the pipeline is associated with.</p>
        pub fn set_template_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_minor_version(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateServiceTemplate`.
    ///
    /// <p>Update a service template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateServiceTemplate {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_service_template_input::Builder,
    }
    impl UpdateServiceTemplate {
        /// Creates a new `UpdateServiceTemplate`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateServiceTemplateOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateServiceTemplateError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service template to update.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.name(input.into());
            self
        }
        /// <p>The name of the service template to update.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_name(input);
            self
        }
        /// <p>The name of the service template to update that's displayed in the developer interface.</p>
        pub fn display_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.display_name(input.into());
            self
        }
        /// <p>The name of the service template to update that's displayed in the developer interface.</p>
        pub fn set_display_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_display_name(input);
            self
        }
        /// <p>A description of the service template update.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of the service template update.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateServiceTemplateVersion`.
    ///
    /// <p>Update a major or minor version of a service template.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateServiceTemplateVersion {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_service_template_version_input::Builder,
    }
    impl UpdateServiceTemplateVersion {
        /// Creates a new `UpdateServiceTemplateVersion`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateServiceTemplateVersionOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateServiceTemplateVersionError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 service template.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The name of the service template.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>To update a major version of a service template, include <code>major Version</code>.</p>
        pub fn major_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.major_version(input.into());
            self
        }
        /// <p>To update a major version of a service template, include <code>major Version</code>.</p>
        pub fn set_major_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_major_version(input);
            self
        }
        /// <p>To update a minor version of a service template, include <code>minorVersion</code>.</p>
        pub fn minor_version(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.minor_version(input.into());
            self
        }
        /// <p>To update a minor version of a service template, include <code>minorVersion</code>.</p>
        pub fn set_minor_version(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_minor_version(input);
            self
        }
        /// <p>A description of a service template version to update.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.description(input.into());
            self
        }
        /// <p>A description of a service template version to update.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_description(input);
            self
        }
        /// <p>The status of the service template minor version to update.</p>
        pub fn status(mut self, input: crate::model::TemplateVersionStatus) -> Self {
            self.inner = self.inner.status(input);
            self
        }
        /// <p>The status of the service template minor version to update.</p>
        pub fn set_status(
            mut self,
            input: std::option::Option<crate::model::TemplateVersionStatus>,
        ) -> Self {
            self.inner = self.inner.set_status(input);
            self
        }
        /// Appends an item to `compatibleEnvironmentTemplates`.
        ///
        /// To override the contents of this collection use [`set_compatible_environment_templates`](Self::set_compatible_environment_templates).
        ///
        /// <p>An array of environment template objects that are compatible with this service template version. A service instance based on this service template version can run in environments based on compatible templates.</p>
        pub fn compatible_environment_templates(
            mut self,
            input: crate::model::CompatibleEnvironmentTemplateInput,
        ) -> Self {
            self.inner = self.inner.compatible_environment_templates(input);
            self
        }
        /// <p>An array of environment template objects that are compatible with this service template version. A service instance based on this service template version can run in environments based on compatible templates.</p>
        pub fn set_compatible_environment_templates(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::CompatibleEnvironmentTemplateInput>,
            >,
        ) -> Self {
            self.inner = self.inner.set_compatible_environment_templates(input);
            self
        }
        /// Appends an item to `supportedComponentSources`.
        ///
        /// To override the contents of this collection use [`set_supported_component_sources`](Self::set_supported_component_sources).
        ///
        /// <p>An array of supported component sources. Components with supported sources can be attached to service instances based on this service template version.</p> <note>
        /// <p>A change to <code>supportedComponentSources</code> doesn't impact existing component attachments to instances based on this template version. A change only affects later associations.</p>
        /// </note>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn supported_component_sources(
            mut self,
            input: crate::model::ServiceTemplateSupportedComponentSourceType,
        ) -> Self {
            self.inner = self.inner.supported_component_sources(input);
            self
        }
        /// <p>An array of supported component sources. Components with supported sources can be attached to service instances based on this service template version.</p> <note>
        /// <p>A change to <code>supportedComponentSources</code> doesn't impact existing component attachments to instances based on this template version. A change only affects later associations.</p>
        /// </note>
        /// <p>For more information about components, see <a href="https://docs.aws.amazon.com/proton/latest/userguide/ag-components.html">Proton components</a> in the <i>Proton User Guide</i>.</p>
        pub fn set_supported_component_sources(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::ServiceTemplateSupportedComponentSourceType>,
            >,
        ) -> Self {
            self.inner = self.inner.set_supported_component_sources(input);
            self
        }
    }
    /// Fluent builder constructing a request to `UpdateTemplateSyncConfig`.
    ///
    /// <p>Update template sync configuration parameters, except for the <code>templateName</code> and <code>templateType</code>. Repository details (branch, name, and provider) should be of a linked repository. A linked repository is a repository that has been registered with Proton. For more information, see <code>CreateRepository</code>.</p>
    #[derive(std::clone::Clone, std::fmt::Debug)]
    pub struct UpdateTemplateSyncConfig {
        handle: std::sync::Arc<super::Handle>,
        inner: crate::input::update_template_sync_config_input::Builder,
    }
    impl UpdateTemplateSyncConfig {
        /// Creates a new `UpdateTemplateSyncConfig`.
        pub(crate) fn new(handle: std::sync::Arc<super::Handle>) -> Self {
            Self {
                handle,
                inner: Default::default(),
            }
        }

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

        /// Sends the request and returns the response.
        ///
        /// If an error occurs, an `SdkError` will be returned with additional details that
        /// can be matched against.
        ///
        /// By default, any retryable failures will be retried twice. Retry behavior
        /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
        /// set when configuring the client.
        pub async fn send(
            self,
        ) -> std::result::Result<
            crate::output::UpdateTemplateSyncConfigOutput,
            aws_smithy_http::result::SdkError<crate::error::UpdateTemplateSyncConfigError>,
        > {
            let op = self
                .inner
                .build()
                .map_err(aws_smithy_http::result::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 synced template name.</p>
        pub fn template_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.template_name(input.into());
            self
        }
        /// <p>The synced template name.</p>
        pub fn set_template_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_template_name(input);
            self
        }
        /// <p>The synced template type.</p>
        pub fn template_type(mut self, input: crate::model::TemplateType) -> Self {
            self.inner = self.inner.template_type(input);
            self
        }
        /// <p>The synced template type.</p>
        pub fn set_template_type(
            mut self,
            input: std::option::Option<crate::model::TemplateType>,
        ) -> Self {
            self.inner = self.inner.set_template_type(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn repository_provider(mut self, input: crate::model::RepositoryProvider) -> Self {
            self.inner = self.inner.repository_provider(input);
            self
        }
        /// <p>The repository provider.</p>
        pub fn set_repository_provider(
            mut self,
            input: std::option::Option<crate::model::RepositoryProvider>,
        ) -> Self {
            self.inner = self.inner.set_repository_provider(input);
            self
        }
        /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
        pub fn repository_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.repository_name(input.into());
            self
        }
        /// <p>The repository name (for example, <code>myrepos/myrepo</code>).</p>
        pub fn set_repository_name(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inner = self.inner.set_repository_name(input);
            self
        }
        /// <p>The repository branch for your template.</p>
        pub fn branch(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.branch(input.into());
            self
        }
        /// <p>The repository branch for your template.</p>
        pub fn set_branch(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_branch(input);
            self
        }
        /// <p>A subdirectory path to your template bundle version. When included, limits the template bundle search to this repository directory.</p>
        pub fn subdirectory(mut self, input: impl Into<std::string::String>) -> Self {
            self.inner = self.inner.subdirectory(input.into());
            self
        }
        /// <p>A subdirectory path to your template bundle version. When included, limits the template bundle search to this repository directory.</p>
        pub fn set_subdirectory(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.inner = self.inner.set_subdirectory(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 }),
        }
    }
}