#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
pub struct UpdateBranchInput {
    pub app_id: ::std::option::Option<::std::string::String>,
    pub branch_name: ::std::option::Option<::std::string::String>,
    pub description: ::std::option::Option<::std::string::String>,
    pub framework: ::std::option::Option<::std::string::String>,
    pub stage: ::std::option::Option<crate::types::Stage>,
    pub enable_notification: ::std::option::Option<bool>,
    pub enable_auto_build: ::std::option::Option<bool>,
    pub environment_variables: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    pub basic_auth_credentials: ::std::option::Option<::std::string::String>,
    pub enable_basic_auth: ::std::option::Option<bool>,
    pub enable_performance_mode: ::std::option::Option<bool>,
    pub build_spec: ::std::option::Option<::std::string::String>,
    pub ttl: ::std::option::Option<::std::string::String>,
    pub display_name: ::std::option::Option<::std::string::String>,
    pub enable_pull_request_preview: ::std::option::Option<bool>,
    pub pull_request_environment_name: ::std::option::Option<::std::string::String>,
    pub backend_environment_arn: ::std::option::Option<::std::string::String>,
}
impl UpdateBranchInput {
    pub fn app_id(&self) -> ::std::option::Option<&str> {
        self.app_id.as_deref()
    }
    pub fn branch_name(&self) -> ::std::option::Option<&str> {
        self.branch_name.as_deref()
    }
    pub fn description(&self) -> ::std::option::Option<&str> {
        self.description.as_deref()
    }
    pub fn framework(&self) -> ::std::option::Option<&str> {
        self.framework.as_deref()
    }
    pub fn stage(&self) -> ::std::option::Option<&crate::types::Stage> {
        self.stage.as_ref()
    }
    pub fn enable_notification(&self) -> ::std::option::Option<bool> {
        self.enable_notification
    }
    pub fn enable_auto_build(&self) -> ::std::option::Option<bool> {
        self.enable_auto_build
    }
    pub fn environment_variables(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        self.environment_variables.as_ref()
    }
    pub fn basic_auth_credentials(&self) -> ::std::option::Option<&str> {
        self.basic_auth_credentials.as_deref()
    }
    pub fn enable_basic_auth(&self) -> ::std::option::Option<bool> {
        self.enable_basic_auth
    }
    pub fn enable_performance_mode(&self) -> ::std::option::Option<bool> {
        self.enable_performance_mode
    }
    pub fn build_spec(&self) -> ::std::option::Option<&str> {
        self.build_spec.as_deref()
    }
    pub fn ttl(&self) -> ::std::option::Option<&str> {
        self.ttl.as_deref()
    }
    pub fn display_name(&self) -> ::std::option::Option<&str> {
        self.display_name.as_deref()
    }
    pub fn enable_pull_request_preview(&self) -> ::std::option::Option<bool> {
        self.enable_pull_request_preview
    }
    pub fn pull_request_environment_name(&self) -> ::std::option::Option<&str> {
        self.pull_request_environment_name.as_deref()
    }
    pub fn backend_environment_arn(&self) -> ::std::option::Option<&str> {
        self.backend_environment_arn.as_deref()
    }
}
impl ::std::fmt::Debug for UpdateBranchInput {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateBranchInput");
        formatter.field("app_id", &self.app_id);
        formatter.field("branch_name", &self.branch_name);
        formatter.field("description", &self.description);
        formatter.field("framework", &self.framework);
        formatter.field("stage", &self.stage);
        formatter.field("enable_notification", &self.enable_notification);
        formatter.field("enable_auto_build", &self.enable_auto_build);
        formatter.field("environment_variables", &self.environment_variables);
        formatter.field("basic_auth_credentials", &"*** Sensitive Data Redacted ***");
        formatter.field("enable_basic_auth", &self.enable_basic_auth);
        formatter.field("enable_performance_mode", &self.enable_performance_mode);
        formatter.field("build_spec", &"*** Sensitive Data Redacted ***");
        formatter.field("ttl", &self.ttl);
        formatter.field("display_name", &self.display_name);
        formatter.field("enable_pull_request_preview", &self.enable_pull_request_preview);
        formatter.field("pull_request_environment_name", &self.pull_request_environment_name);
        formatter.field("backend_environment_arn", &self.backend_environment_arn);
        formatter.finish()
    }
}
impl UpdateBranchInput {
    pub fn builder() -> crate::operation::update_branch::builders::UpdateBranchInputBuilder {
        crate::operation::update_branch::builders::UpdateBranchInputBuilder::default()
    }
}
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
pub struct UpdateBranchInputBuilder {
    pub(crate) app_id: ::std::option::Option<::std::string::String>,
    pub(crate) branch_name: ::std::option::Option<::std::string::String>,
    pub(crate) description: ::std::option::Option<::std::string::String>,
    pub(crate) framework: ::std::option::Option<::std::string::String>,
    pub(crate) stage: ::std::option::Option<crate::types::Stage>,
    pub(crate) enable_notification: ::std::option::Option<bool>,
    pub(crate) enable_auto_build: ::std::option::Option<bool>,
    pub(crate) environment_variables: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    pub(crate) basic_auth_credentials: ::std::option::Option<::std::string::String>,
    pub(crate) enable_basic_auth: ::std::option::Option<bool>,
    pub(crate) enable_performance_mode: ::std::option::Option<bool>,
    pub(crate) build_spec: ::std::option::Option<::std::string::String>,
    pub(crate) ttl: ::std::option::Option<::std::string::String>,
    pub(crate) display_name: ::std::option::Option<::std::string::String>,
    pub(crate) enable_pull_request_preview: ::std::option::Option<bool>,
    pub(crate) pull_request_environment_name: ::std::option::Option<::std::string::String>,
    pub(crate) backend_environment_arn: ::std::option::Option<::std::string::String>,
}
impl UpdateBranchInputBuilder {
    pub fn app_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.app_id = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_app_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.app_id = input;
        self
    }
    pub fn get_app_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.app_id
    }
    pub fn branch_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.branch_name = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_branch_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.branch_name = input;
        self
    }
    pub fn get_branch_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.branch_name
    }
    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.description = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.description = input;
        self
    }
    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
        &self.description
    }
    pub fn framework(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.framework = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_framework(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.framework = input;
        self
    }
    pub fn get_framework(&self) -> &::std::option::Option<::std::string::String> {
        &self.framework
    }
    pub fn stage(mut self, input: crate::types::Stage) -> Self {
        self.stage = ::std::option::Option::Some(input);
        self
    }
    pub fn set_stage(mut self, input: ::std::option::Option<crate::types::Stage>) -> Self {
        self.stage = input;
        self
    }
    pub fn get_stage(&self) -> &::std::option::Option<crate::types::Stage> {
        &self.stage
    }
    pub fn enable_notification(mut self, input: bool) -> Self {
        self.enable_notification = ::std::option::Option::Some(input);
        self
    }
    pub fn set_enable_notification(mut self, input: ::std::option::Option<bool>) -> Self {
        self.enable_notification = input;
        self
    }
    pub fn get_enable_notification(&self) -> &::std::option::Option<bool> {
        &self.enable_notification
    }
    pub fn enable_auto_build(mut self, input: bool) -> Self {
        self.enable_auto_build = ::std::option::Option::Some(input);
        self
    }
    pub fn set_enable_auto_build(mut self, input: ::std::option::Option<bool>) -> Self {
        self.enable_auto_build = input;
        self
    }
    pub fn get_enable_auto_build(&self) -> &::std::option::Option<bool> {
        &self.enable_auto_build
    }
    pub fn environment_variables(
        mut self,
        k: impl ::std::convert::Into<::std::string::String>,
        v: impl ::std::convert::Into<::std::string::String>,
    ) -> Self {
        let mut hash_map = self.environment_variables.unwrap_or_default();
        hash_map.insert(k.into(), v.into());
        self.environment_variables = ::std::option::Option::Some(hash_map);
        self
    }
    pub fn set_environment_variables(
        mut self,
        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    ) -> Self {
        self.environment_variables = input;
        self
    }
    pub fn get_environment_variables(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        &self.environment_variables
    }
    pub fn basic_auth_credentials(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.basic_auth_credentials = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_basic_auth_credentials(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.basic_auth_credentials = input;
        self
    }
    pub fn get_basic_auth_credentials(&self) -> &::std::option::Option<::std::string::String> {
        &self.basic_auth_credentials
    }
    pub fn enable_basic_auth(mut self, input: bool) -> Self {
        self.enable_basic_auth = ::std::option::Option::Some(input);
        self
    }
    pub fn set_enable_basic_auth(mut self, input: ::std::option::Option<bool>) -> Self {
        self.enable_basic_auth = input;
        self
    }
    pub fn get_enable_basic_auth(&self) -> &::std::option::Option<bool> {
        &self.enable_basic_auth
    }
    pub fn enable_performance_mode(mut self, input: bool) -> Self {
        self.enable_performance_mode = ::std::option::Option::Some(input);
        self
    }
    pub fn set_enable_performance_mode(mut self, input: ::std::option::Option<bool>) -> Self {
        self.enable_performance_mode = input;
        self
    }
    pub fn get_enable_performance_mode(&self) -> &::std::option::Option<bool> {
        &self.enable_performance_mode
    }
    pub fn build_spec(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.build_spec = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_build_spec(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.build_spec = input;
        self
    }
    pub fn get_build_spec(&self) -> &::std::option::Option<::std::string::String> {
        &self.build_spec
    }
    pub fn ttl(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.ttl = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_ttl(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.ttl = input;
        self
    }
    pub fn get_ttl(&self) -> &::std::option::Option<::std::string::String> {
        &self.ttl
    }
    pub fn display_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.display_name = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_display_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.display_name = input;
        self
    }
    pub fn get_display_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.display_name
    }
    pub fn enable_pull_request_preview(mut self, input: bool) -> Self {
        self.enable_pull_request_preview = ::std::option::Option::Some(input);
        self
    }
    pub fn set_enable_pull_request_preview(mut self, input: ::std::option::Option<bool>) -> Self {
        self.enable_pull_request_preview = input;
        self
    }
    pub fn get_enable_pull_request_preview(&self) -> &::std::option::Option<bool> {
        &self.enable_pull_request_preview
    }
    pub fn pull_request_environment_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.pull_request_environment_name = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_pull_request_environment_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.pull_request_environment_name = input;
        self
    }
    pub fn get_pull_request_environment_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.pull_request_environment_name
    }
    pub fn backend_environment_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.backend_environment_arn = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_backend_environment_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.backend_environment_arn = input;
        self
    }
    pub fn get_backend_environment_arn(&self) -> &::std::option::Option<::std::string::String> {
        &self.backend_environment_arn
    }
    pub fn build(self) -> ::std::result::Result<crate::operation::update_branch::UpdateBranchInput, ::aws_smithy_http::operation::error::BuildError> {
        ::std::result::Result::Ok(crate::operation::update_branch::UpdateBranchInput {
            app_id: self.app_id,
            branch_name: self.branch_name,
            description: self.description,
            framework: self.framework,
            stage: self.stage,
            enable_notification: self.enable_notification,
            enable_auto_build: self.enable_auto_build,
            environment_variables: self.environment_variables,
            basic_auth_credentials: self.basic_auth_credentials,
            enable_basic_auth: self.enable_basic_auth,
            enable_performance_mode: self.enable_performance_mode,
            build_spec: self.build_spec,
            ttl: self.ttl,
            display_name: self.display_name,
            enable_pull_request_preview: self.enable_pull_request_preview,
            pull_request_environment_name: self.pull_request_environment_name,
            backend_environment_arn: self.backend_environment_arn,
        })
    }
}
impl ::std::fmt::Debug for UpdateBranchInputBuilder {
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateBranchInputBuilder");
        formatter.field("app_id", &self.app_id);
        formatter.field("branch_name", &self.branch_name);
        formatter.field("description", &self.description);
        formatter.field("framework", &self.framework);
        formatter.field("stage", &self.stage);
        formatter.field("enable_notification", &self.enable_notification);
        formatter.field("enable_auto_build", &self.enable_auto_build);
        formatter.field("environment_variables", &self.environment_variables);
        formatter.field("basic_auth_credentials", &"*** Sensitive Data Redacted ***");
        formatter.field("enable_basic_auth", &self.enable_basic_auth);
        formatter.field("enable_performance_mode", &self.enable_performance_mode);
        formatter.field("build_spec", &"*** Sensitive Data Redacted ***");
        formatter.field("ttl", &self.ttl);
        formatter.field("display_name", &self.display_name);
        formatter.field("enable_pull_request_preview", &self.enable_pull_request_preview);
        formatter.field("pull_request_environment_name", &self.pull_request_environment_name);
        formatter.field("backend_environment_arn", &self.backend_environment_arn);
        formatter.finish()
    }
}