aws-sdk-computeoptimizer 0.24.0

AWS SDK for AWS Compute Optimizer
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct UpdateEnrollmentStatusOutput {
    /// <p>The enrollment status of the account.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::Status>,
    /// <p>The reason for the enrollment status of the account. For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
    #[doc(hidden)]
    pub status_reason: std::option::Option<std::string::String>,
}
impl UpdateEnrollmentStatusOutput {
    /// <p>The enrollment status of the account.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::Status> {
        self.status.as_ref()
    }
    /// <p>The reason for the enrollment status of the account. For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
    pub fn status_reason(&self) -> std::option::Option<&str> {
        self.status_reason.as_deref()
    }
}
/// See [`UpdateEnrollmentStatusOutput`](crate::output::UpdateEnrollmentStatusOutput).
pub mod update_enrollment_status_output {

    /// A builder for [`UpdateEnrollmentStatusOutput`](crate::output::UpdateEnrollmentStatusOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) status: std::option::Option<crate::model::Status>,
        pub(crate) status_reason: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The enrollment status of the account.</p>
        pub fn status(mut self, input: crate::model::Status) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The enrollment status of the account.</p>
        pub fn set_status(mut self, input: std::option::Option<crate::model::Status>) -> Self {
            self.status = input;
            self
        }
        /// <p>The reason for the enrollment status of the account. For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
        pub fn status_reason(mut self, input: impl Into<std::string::String>) -> Self {
            self.status_reason = Some(input.into());
            self
        }
        /// <p>The reason for the enrollment status of the account. For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
        pub fn set_status_reason(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.status_reason = input;
            self
        }
        /// Consumes the builder and constructs a [`UpdateEnrollmentStatusOutput`](crate::output::UpdateEnrollmentStatusOutput).
        pub fn build(self) -> crate::output::UpdateEnrollmentStatusOutput {
            crate::output::UpdateEnrollmentStatusOutput {
                status: self.status,
                status_reason: self.status_reason,
            }
        }
    }
}
impl UpdateEnrollmentStatusOutput {
    /// Creates a new builder-style object to manufacture [`UpdateEnrollmentStatusOutput`](crate::output::UpdateEnrollmentStatusOutput).
    pub fn builder() -> crate::output::update_enrollment_status_output::Builder {
        crate::output::update_enrollment_status_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct PutRecommendationPreferencesOutput {}
/// See [`PutRecommendationPreferencesOutput`](crate::output::PutRecommendationPreferencesOutput).
pub mod put_recommendation_preferences_output {

    /// A builder for [`PutRecommendationPreferencesOutput`](crate::output::PutRecommendationPreferencesOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`PutRecommendationPreferencesOutput`](crate::output::PutRecommendationPreferencesOutput).
        pub fn build(self) -> crate::output::PutRecommendationPreferencesOutput {
            crate::output::PutRecommendationPreferencesOutput {}
        }
    }
}
impl PutRecommendationPreferencesOutput {
    /// Creates a new builder-style object to manufacture [`PutRecommendationPreferencesOutput`](crate::output::PutRecommendationPreferencesOutput).
    pub fn builder() -> crate::output::put_recommendation_preferences_output::Builder {
        crate::output::put_recommendation_preferences_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetRecommendationSummariesOutput {
    /// <p>The token to use to advance to the next page of recommendation summaries.</p>
    /// <p>This value is null when there are no more pages of recommendation summaries to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>An array of objects that summarize a recommendation.</p>
    #[doc(hidden)]
    pub recommendation_summaries:
        std::option::Option<std::vec::Vec<crate::model::RecommendationSummary>>,
}
impl GetRecommendationSummariesOutput {
    /// <p>The token to use to advance to the next page of recommendation summaries.</p>
    /// <p>This value is null when there are no more pages of recommendation summaries to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>An array of objects that summarize a recommendation.</p>
    pub fn recommendation_summaries(
        &self,
    ) -> std::option::Option<&[crate::model::RecommendationSummary]> {
        self.recommendation_summaries.as_deref()
    }
}
/// See [`GetRecommendationSummariesOutput`](crate::output::GetRecommendationSummariesOutput).
pub mod get_recommendation_summaries_output {

    /// A builder for [`GetRecommendationSummariesOutput`](crate::output::GetRecommendationSummariesOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) recommendation_summaries:
            std::option::Option<std::vec::Vec<crate::model::RecommendationSummary>>,
    }
    impl Builder {
        /// <p>The token to use to advance to the next page of recommendation summaries.</p>
        /// <p>This value is null when there are no more pages of recommendation summaries to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of recommendation summaries.</p>
        /// <p>This value is null when there are no more pages of recommendation summaries to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `recommendation_summaries`.
        ///
        /// To override the contents of this collection use [`set_recommendation_summaries`](Self::set_recommendation_summaries).
        ///
        /// <p>An array of objects that summarize a recommendation.</p>
        pub fn recommendation_summaries(
            mut self,
            input: crate::model::RecommendationSummary,
        ) -> Self {
            let mut v = self.recommendation_summaries.unwrap_or_default();
            v.push(input);
            self.recommendation_summaries = Some(v);
            self
        }
        /// <p>An array of objects that summarize a recommendation.</p>
        pub fn set_recommendation_summaries(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RecommendationSummary>>,
        ) -> Self {
            self.recommendation_summaries = input;
            self
        }
        /// Consumes the builder and constructs a [`GetRecommendationSummariesOutput`](crate::output::GetRecommendationSummariesOutput).
        pub fn build(self) -> crate::output::GetRecommendationSummariesOutput {
            crate::output::GetRecommendationSummariesOutput {
                next_token: self.next_token,
                recommendation_summaries: self.recommendation_summaries,
            }
        }
    }
}
impl GetRecommendationSummariesOutput {
    /// Creates a new builder-style object to manufacture [`GetRecommendationSummariesOutput`](crate::output::GetRecommendationSummariesOutput).
    pub fn builder() -> crate::output::get_recommendation_summaries_output::Builder {
        crate::output::get_recommendation_summaries_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetRecommendationPreferencesOutput {
    /// <p>The token to use to advance to the next page of recommendation preferences.</p>
    /// <p>This value is null when there are no more pages of recommendation preferences to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>An array of objects that describe recommendation preferences.</p>
    #[doc(hidden)]
    pub recommendation_preferences_details:
        std::option::Option<std::vec::Vec<crate::model::RecommendationPreferencesDetail>>,
}
impl GetRecommendationPreferencesOutput {
    /// <p>The token to use to advance to the next page of recommendation preferences.</p>
    /// <p>This value is null when there are no more pages of recommendation preferences to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>An array of objects that describe recommendation preferences.</p>
    pub fn recommendation_preferences_details(
        &self,
    ) -> std::option::Option<&[crate::model::RecommendationPreferencesDetail]> {
        self.recommendation_preferences_details.as_deref()
    }
}
/// See [`GetRecommendationPreferencesOutput`](crate::output::GetRecommendationPreferencesOutput).
pub mod get_recommendation_preferences_output {

    /// A builder for [`GetRecommendationPreferencesOutput`](crate::output::GetRecommendationPreferencesOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) recommendation_preferences_details:
            std::option::Option<std::vec::Vec<crate::model::RecommendationPreferencesDetail>>,
    }
    impl Builder {
        /// <p>The token to use to advance to the next page of recommendation preferences.</p>
        /// <p>This value is null when there are no more pages of recommendation preferences to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of recommendation preferences.</p>
        /// <p>This value is null when there are no more pages of recommendation preferences to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `recommendation_preferences_details`.
        ///
        /// To override the contents of this collection use [`set_recommendation_preferences_details`](Self::set_recommendation_preferences_details).
        ///
        /// <p>An array of objects that describe recommendation preferences.</p>
        pub fn recommendation_preferences_details(
            mut self,
            input: crate::model::RecommendationPreferencesDetail,
        ) -> Self {
            let mut v = self.recommendation_preferences_details.unwrap_or_default();
            v.push(input);
            self.recommendation_preferences_details = Some(v);
            self
        }
        /// <p>An array of objects that describe recommendation preferences.</p>
        pub fn set_recommendation_preferences_details(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::RecommendationPreferencesDetail>,
            >,
        ) -> Self {
            self.recommendation_preferences_details = input;
            self
        }
        /// Consumes the builder and constructs a [`GetRecommendationPreferencesOutput`](crate::output::GetRecommendationPreferencesOutput).
        pub fn build(self) -> crate::output::GetRecommendationPreferencesOutput {
            crate::output::GetRecommendationPreferencesOutput {
                next_token: self.next_token,
                recommendation_preferences_details: self.recommendation_preferences_details,
            }
        }
    }
}
impl GetRecommendationPreferencesOutput {
    /// Creates a new builder-style object to manufacture [`GetRecommendationPreferencesOutput`](crate::output::GetRecommendationPreferencesOutput).
    pub fn builder() -> crate::output::get_recommendation_preferences_output::Builder {
        crate::output::get_recommendation_preferences_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetLambdaFunctionRecommendationsOutput {
    /// <p>The token to use to advance to the next page of function recommendations.</p>
    /// <p>This value is null when there are no more pages of function recommendations to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>An array of objects that describe function recommendations.</p>
    #[doc(hidden)]
    pub lambda_function_recommendations:
        std::option::Option<std::vec::Vec<crate::model::LambdaFunctionRecommendation>>,
}
impl GetLambdaFunctionRecommendationsOutput {
    /// <p>The token to use to advance to the next page of function recommendations.</p>
    /// <p>This value is null when there are no more pages of function recommendations to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>An array of objects that describe function recommendations.</p>
    pub fn lambda_function_recommendations(
        &self,
    ) -> std::option::Option<&[crate::model::LambdaFunctionRecommendation]> {
        self.lambda_function_recommendations.as_deref()
    }
}
/// See [`GetLambdaFunctionRecommendationsOutput`](crate::output::GetLambdaFunctionRecommendationsOutput).
pub mod get_lambda_function_recommendations_output {

    /// A builder for [`GetLambdaFunctionRecommendationsOutput`](crate::output::GetLambdaFunctionRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) lambda_function_recommendations:
            std::option::Option<std::vec::Vec<crate::model::LambdaFunctionRecommendation>>,
    }
    impl Builder {
        /// <p>The token to use to advance to the next page of function recommendations.</p>
        /// <p>This value is null when there are no more pages of function recommendations to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of function recommendations.</p>
        /// <p>This value is null when there are no more pages of function recommendations to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `lambda_function_recommendations`.
        ///
        /// To override the contents of this collection use [`set_lambda_function_recommendations`](Self::set_lambda_function_recommendations).
        ///
        /// <p>An array of objects that describe function recommendations.</p>
        pub fn lambda_function_recommendations(
            mut self,
            input: crate::model::LambdaFunctionRecommendation,
        ) -> Self {
            let mut v = self.lambda_function_recommendations.unwrap_or_default();
            v.push(input);
            self.lambda_function_recommendations = Some(v);
            self
        }
        /// <p>An array of objects that describe function recommendations.</p>
        pub fn set_lambda_function_recommendations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::LambdaFunctionRecommendation>>,
        ) -> Self {
            self.lambda_function_recommendations = input;
            self
        }
        /// Consumes the builder and constructs a [`GetLambdaFunctionRecommendationsOutput`](crate::output::GetLambdaFunctionRecommendationsOutput).
        pub fn build(self) -> crate::output::GetLambdaFunctionRecommendationsOutput {
            crate::output::GetLambdaFunctionRecommendationsOutput {
                next_token: self.next_token,
                lambda_function_recommendations: self.lambda_function_recommendations,
            }
        }
    }
}
impl GetLambdaFunctionRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`GetLambdaFunctionRecommendationsOutput`](crate::output::GetLambdaFunctionRecommendationsOutput).
    pub fn builder() -> crate::output::get_lambda_function_recommendations_output::Builder {
        crate::output::get_lambda_function_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEnrollmentStatusesForOrganizationOutput {
    /// <p>An array of objects that describe the enrollment statuses of organization member accounts.</p>
    #[doc(hidden)]
    pub account_enrollment_statuses:
        std::option::Option<std::vec::Vec<crate::model::AccountEnrollmentStatus>>,
    /// <p>The token to use to advance to the next page of account enrollment statuses.</p>
    /// <p>This value is null when there are no more pages of account enrollment statuses to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
}
impl GetEnrollmentStatusesForOrganizationOutput {
    /// <p>An array of objects that describe the enrollment statuses of organization member accounts.</p>
    pub fn account_enrollment_statuses(
        &self,
    ) -> std::option::Option<&[crate::model::AccountEnrollmentStatus]> {
        self.account_enrollment_statuses.as_deref()
    }
    /// <p>The token to use to advance to the next page of account enrollment statuses.</p>
    /// <p>This value is null when there are no more pages of account enrollment statuses to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
/// See [`GetEnrollmentStatusesForOrganizationOutput`](crate::output::GetEnrollmentStatusesForOrganizationOutput).
pub mod get_enrollment_statuses_for_organization_output {

    /// A builder for [`GetEnrollmentStatusesForOrganizationOutput`](crate::output::GetEnrollmentStatusesForOrganizationOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) account_enrollment_statuses:
            std::option::Option<std::vec::Vec<crate::model::AccountEnrollmentStatus>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `account_enrollment_statuses`.
        ///
        /// To override the contents of this collection use [`set_account_enrollment_statuses`](Self::set_account_enrollment_statuses).
        ///
        /// <p>An array of objects that describe the enrollment statuses of organization member accounts.</p>
        pub fn account_enrollment_statuses(
            mut self,
            input: crate::model::AccountEnrollmentStatus,
        ) -> Self {
            let mut v = self.account_enrollment_statuses.unwrap_or_default();
            v.push(input);
            self.account_enrollment_statuses = Some(v);
            self
        }
        /// <p>An array of objects that describe the enrollment statuses of organization member accounts.</p>
        pub fn set_account_enrollment_statuses(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::AccountEnrollmentStatus>>,
        ) -> Self {
            self.account_enrollment_statuses = input;
            self
        }
        /// <p>The token to use to advance to the next page of account enrollment statuses.</p>
        /// <p>This value is null when there are no more pages of account enrollment statuses to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of account enrollment statuses.</p>
        /// <p>This value is null when there are no more pages of account enrollment statuses to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEnrollmentStatusesForOrganizationOutput`](crate::output::GetEnrollmentStatusesForOrganizationOutput).
        pub fn build(self) -> crate::output::GetEnrollmentStatusesForOrganizationOutput {
            crate::output::GetEnrollmentStatusesForOrganizationOutput {
                account_enrollment_statuses: self.account_enrollment_statuses,
                next_token: self.next_token,
            }
        }
    }
}
impl GetEnrollmentStatusesForOrganizationOutput {
    /// Creates a new builder-style object to manufacture [`GetEnrollmentStatusesForOrganizationOutput`](crate::output::GetEnrollmentStatusesForOrganizationOutput).
    pub fn builder() -> crate::output::get_enrollment_statuses_for_organization_output::Builder {
        crate::output::get_enrollment_statuses_for_organization_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEnrollmentStatusOutput {
    /// <p>The enrollment status of the account.</p>
    #[doc(hidden)]
    pub status: std::option::Option<crate::model::Status>,
    /// <p>The reason for the enrollment status of the account.</p>
    /// <p>For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
    #[doc(hidden)]
    pub status_reason: std::option::Option<std::string::String>,
    /// <p>Confirms the enrollment status of member accounts of the organization, if the account is a management account of an organization.</p>
    #[doc(hidden)]
    pub member_accounts_enrolled: bool,
    /// <p>The Unix epoch timestamp, in seconds, of when the account enrollment status was last updated.</p>
    #[doc(hidden)]
    pub last_updated_timestamp: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The count of organization member accounts that are opted in to the service, if your account is an organization management account.</p>
    #[doc(hidden)]
    pub number_of_member_accounts_opted_in: std::option::Option<i32>,
}
impl GetEnrollmentStatusOutput {
    /// <p>The enrollment status of the account.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::Status> {
        self.status.as_ref()
    }
    /// <p>The reason for the enrollment status of the account.</p>
    /// <p>For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
    pub fn status_reason(&self) -> std::option::Option<&str> {
        self.status_reason.as_deref()
    }
    /// <p>Confirms the enrollment status of member accounts of the organization, if the account is a management account of an organization.</p>
    pub fn member_accounts_enrolled(&self) -> bool {
        self.member_accounts_enrolled
    }
    /// <p>The Unix epoch timestamp, in seconds, of when the account enrollment status was last updated.</p>
    pub fn last_updated_timestamp(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_updated_timestamp.as_ref()
    }
    /// <p>The count of organization member accounts that are opted in to the service, if your account is an organization management account.</p>
    pub fn number_of_member_accounts_opted_in(&self) -> std::option::Option<i32> {
        self.number_of_member_accounts_opted_in
    }
}
/// See [`GetEnrollmentStatusOutput`](crate::output::GetEnrollmentStatusOutput).
pub mod get_enrollment_status_output {

    /// A builder for [`GetEnrollmentStatusOutput`](crate::output::GetEnrollmentStatusOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) status: std::option::Option<crate::model::Status>,
        pub(crate) status_reason: std::option::Option<std::string::String>,
        pub(crate) member_accounts_enrolled: std::option::Option<bool>,
        pub(crate) last_updated_timestamp: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) number_of_member_accounts_opted_in: std::option::Option<i32>,
    }
    impl Builder {
        /// <p>The enrollment status of the account.</p>
        pub fn status(mut self, input: crate::model::Status) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The enrollment status of the account.</p>
        pub fn set_status(mut self, input: std::option::Option<crate::model::Status>) -> Self {
            self.status = input;
            self
        }
        /// <p>The reason for the enrollment status of the account.</p>
        /// <p>For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
        pub fn status_reason(mut self, input: impl Into<std::string::String>) -> Self {
            self.status_reason = Some(input.into());
            self
        }
        /// <p>The reason for the enrollment status of the account.</p>
        /// <p>For example, an account might show a status of <code>Pending</code> because member accounts of an organization require more time to be enrolled in the service.</p>
        pub fn set_status_reason(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.status_reason = input;
            self
        }
        /// <p>Confirms the enrollment status of member accounts of the organization, if the account is a management account of an organization.</p>
        pub fn member_accounts_enrolled(mut self, input: bool) -> Self {
            self.member_accounts_enrolled = Some(input);
            self
        }
        /// <p>Confirms the enrollment status of member accounts of the organization, if the account is a management account of an organization.</p>
        pub fn set_member_accounts_enrolled(mut self, input: std::option::Option<bool>) -> Self {
            self.member_accounts_enrolled = input;
            self
        }
        /// <p>The Unix epoch timestamp, in seconds, of when the account enrollment status was last updated.</p>
        pub fn last_updated_timestamp(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_updated_timestamp = Some(input);
            self
        }
        /// <p>The Unix epoch timestamp, in seconds, of when the account enrollment status was last updated.</p>
        pub fn set_last_updated_timestamp(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_updated_timestamp = input;
            self
        }
        /// <p>The count of organization member accounts that are opted in to the service, if your account is an organization management account.</p>
        pub fn number_of_member_accounts_opted_in(mut self, input: i32) -> Self {
            self.number_of_member_accounts_opted_in = Some(input);
            self
        }
        /// <p>The count of organization member accounts that are opted in to the service, if your account is an organization management account.</p>
        pub fn set_number_of_member_accounts_opted_in(
            mut self,
            input: std::option::Option<i32>,
        ) -> Self {
            self.number_of_member_accounts_opted_in = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEnrollmentStatusOutput`](crate::output::GetEnrollmentStatusOutput).
        pub fn build(self) -> crate::output::GetEnrollmentStatusOutput {
            crate::output::GetEnrollmentStatusOutput {
                status: self.status,
                status_reason: self.status_reason,
                member_accounts_enrolled: self.member_accounts_enrolled.unwrap_or_default(),
                last_updated_timestamp: self.last_updated_timestamp,
                number_of_member_accounts_opted_in: self.number_of_member_accounts_opted_in,
            }
        }
    }
}
impl GetEnrollmentStatusOutput {
    /// Creates a new builder-style object to manufacture [`GetEnrollmentStatusOutput`](crate::output::GetEnrollmentStatusOutput).
    pub fn builder() -> crate::output::get_enrollment_status_output::Builder {
        crate::output::get_enrollment_status_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEffectiveRecommendationPreferencesOutput {
    /// <p>The status of the enhanced infrastructure metrics recommendation preference. Considers all applicable preferences that you might have set at the resource, account, and organization level.</p>
    /// <p>A status of <code>Active</code> confirms that the preference is applied in the latest recommendation refresh, and a status of <code>Inactive</code> confirms that it's not yet applied to recommendations.</p>
    /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetAutoScalingGroupRecommendations</code> and <code>GetEC2InstanceRecommendations</code> actions.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
    #[doc(hidden)]
    pub enhanced_infrastructure_metrics:
        std::option::Option<crate::model::EnhancedInfrastructureMetrics>,
    /// <p>The provider of the external metrics recommendation preference. Considers all applicable preferences that you might have set at the account and organization level.</p>
    /// <p>If the preference is applied in the latest recommendation refresh, an object with a valid <code>source</code> value appears in the response. If the preference isn't applied to the recommendations already, then this object doesn't appear in the response.</p>
    /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetEC2InstanceRecommendations</code> actions.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
    #[doc(hidden)]
    pub external_metrics_preference: std::option::Option<crate::model::ExternalMetricsPreference>,
}
impl GetEffectiveRecommendationPreferencesOutput {
    /// <p>The status of the enhanced infrastructure metrics recommendation preference. Considers all applicable preferences that you might have set at the resource, account, and organization level.</p>
    /// <p>A status of <code>Active</code> confirms that the preference is applied in the latest recommendation refresh, and a status of <code>Inactive</code> confirms that it's not yet applied to recommendations.</p>
    /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetAutoScalingGroupRecommendations</code> and <code>GetEC2InstanceRecommendations</code> actions.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
    pub fn enhanced_infrastructure_metrics(
        &self,
    ) -> std::option::Option<&crate::model::EnhancedInfrastructureMetrics> {
        self.enhanced_infrastructure_metrics.as_ref()
    }
    /// <p>The provider of the external metrics recommendation preference. Considers all applicable preferences that you might have set at the account and organization level.</p>
    /// <p>If the preference is applied in the latest recommendation refresh, an object with a valid <code>source</code> value appears in the response. If the preference isn't applied to the recommendations already, then this object doesn't appear in the response.</p>
    /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetEC2InstanceRecommendations</code> actions.</p>
    /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
    pub fn external_metrics_preference(
        &self,
    ) -> std::option::Option<&crate::model::ExternalMetricsPreference> {
        self.external_metrics_preference.as_ref()
    }
}
/// See [`GetEffectiveRecommendationPreferencesOutput`](crate::output::GetEffectiveRecommendationPreferencesOutput).
pub mod get_effective_recommendation_preferences_output {

    /// A builder for [`GetEffectiveRecommendationPreferencesOutput`](crate::output::GetEffectiveRecommendationPreferencesOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) enhanced_infrastructure_metrics:
            std::option::Option<crate::model::EnhancedInfrastructureMetrics>,
        pub(crate) external_metrics_preference:
            std::option::Option<crate::model::ExternalMetricsPreference>,
    }
    impl Builder {
        /// <p>The status of the enhanced infrastructure metrics recommendation preference. Considers all applicable preferences that you might have set at the resource, account, and organization level.</p>
        /// <p>A status of <code>Active</code> confirms that the preference is applied in the latest recommendation refresh, and a status of <code>Inactive</code> confirms that it's not yet applied to recommendations.</p>
        /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetAutoScalingGroupRecommendations</code> and <code>GetEC2InstanceRecommendations</code> actions.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
        pub fn enhanced_infrastructure_metrics(
            mut self,
            input: crate::model::EnhancedInfrastructureMetrics,
        ) -> Self {
            self.enhanced_infrastructure_metrics = Some(input);
            self
        }
        /// <p>The status of the enhanced infrastructure metrics recommendation preference. Considers all applicable preferences that you might have set at the resource, account, and organization level.</p>
        /// <p>A status of <code>Active</code> confirms that the preference is applied in the latest recommendation refresh, and a status of <code>Inactive</code> confirms that it's not yet applied to recommendations.</p>
        /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetAutoScalingGroupRecommendations</code> and <code>GetEC2InstanceRecommendations</code> actions.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
        pub fn set_enhanced_infrastructure_metrics(
            mut self,
            input: std::option::Option<crate::model::EnhancedInfrastructureMetrics>,
        ) -> Self {
            self.enhanced_infrastructure_metrics = input;
            self
        }
        /// <p>The provider of the external metrics recommendation preference. Considers all applicable preferences that you might have set at the account and organization level.</p>
        /// <p>If the preference is applied in the latest recommendation refresh, an object with a valid <code>source</code> value appears in the response. If the preference isn't applied to the recommendations already, then this object doesn't appear in the response.</p>
        /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetEC2InstanceRecommendations</code> actions.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
        pub fn external_metrics_preference(
            mut self,
            input: crate::model::ExternalMetricsPreference,
        ) -> Self {
            self.external_metrics_preference = Some(input);
            self
        }
        /// <p>The provider of the external metrics recommendation preference. Considers all applicable preferences that you might have set at the account and organization level.</p>
        /// <p>If the preference is applied in the latest recommendation refresh, an object with a valid <code>source</code> value appears in the response. If the preference isn't applied to the recommendations already, then this object doesn't appear in the response.</p>
        /// <p>To validate whether the preference is applied to your last generated set of recommendations, review the <code>effectiveRecommendationPreferences</code> value in the response of the <code>GetEC2InstanceRecommendations</code> actions.</p>
        /// <p>For more information, see <a href="https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html">Enhanced infrastructure metrics</a> in the <i>Compute Optimizer User Guide</i>.</p>
        pub fn set_external_metrics_preference(
            mut self,
            input: std::option::Option<crate::model::ExternalMetricsPreference>,
        ) -> Self {
            self.external_metrics_preference = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEffectiveRecommendationPreferencesOutput`](crate::output::GetEffectiveRecommendationPreferencesOutput).
        pub fn build(self) -> crate::output::GetEffectiveRecommendationPreferencesOutput {
            crate::output::GetEffectiveRecommendationPreferencesOutput {
                enhanced_infrastructure_metrics: self.enhanced_infrastructure_metrics,
                external_metrics_preference: self.external_metrics_preference,
            }
        }
    }
}
impl GetEffectiveRecommendationPreferencesOutput {
    /// Creates a new builder-style object to manufacture [`GetEffectiveRecommendationPreferencesOutput`](crate::output::GetEffectiveRecommendationPreferencesOutput).
    pub fn builder() -> crate::output::get_effective_recommendation_preferences_output::Builder {
        crate::output::get_effective_recommendation_preferences_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEcsServiceRecommendationsOutput {
    /// <p> The token to advance to the next page of ECS service recommendations. </p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p> An array of objects that describe the ECS service recommendations. </p>
    #[doc(hidden)]
    pub ecs_service_recommendations:
        std::option::Option<std::vec::Vec<crate::model::EcsServiceRecommendation>>,
    /// <p> An array of objects that describe errors of the request. </p>
    #[doc(hidden)]
    pub errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
}
impl GetEcsServiceRecommendationsOutput {
    /// <p> The token to advance to the next page of ECS service recommendations. </p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p> An array of objects that describe the ECS service recommendations. </p>
    pub fn ecs_service_recommendations(
        &self,
    ) -> std::option::Option<&[crate::model::EcsServiceRecommendation]> {
        self.ecs_service_recommendations.as_deref()
    }
    /// <p> An array of objects that describe errors of the request. </p>
    pub fn errors(&self) -> std::option::Option<&[crate::model::GetRecommendationError]> {
        self.errors.as_deref()
    }
}
/// See [`GetEcsServiceRecommendationsOutput`](crate::output::GetEcsServiceRecommendationsOutput).
pub mod get_ecs_service_recommendations_output {

    /// A builder for [`GetEcsServiceRecommendationsOutput`](crate::output::GetEcsServiceRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) ecs_service_recommendations:
            std::option::Option<std::vec::Vec<crate::model::EcsServiceRecommendation>>,
        pub(crate) errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
    }
    impl Builder {
        /// <p> The token to advance to the next page of ECS service recommendations. </p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p> The token to advance to the next page of ECS service recommendations. </p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `ecs_service_recommendations`.
        ///
        /// To override the contents of this collection use [`set_ecs_service_recommendations`](Self::set_ecs_service_recommendations).
        ///
        /// <p> An array of objects that describe the ECS service recommendations. </p>
        pub fn ecs_service_recommendations(
            mut self,
            input: crate::model::EcsServiceRecommendation,
        ) -> Self {
            let mut v = self.ecs_service_recommendations.unwrap_or_default();
            v.push(input);
            self.ecs_service_recommendations = Some(v);
            self
        }
        /// <p> An array of objects that describe the ECS service recommendations. </p>
        pub fn set_ecs_service_recommendations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::EcsServiceRecommendation>>,
        ) -> Self {
            self.ecs_service_recommendations = input;
            self
        }
        /// Appends an item to `errors`.
        ///
        /// To override the contents of this collection use [`set_errors`](Self::set_errors).
        ///
        /// <p> An array of objects that describe errors of the request. </p>
        pub fn errors(mut self, input: crate::model::GetRecommendationError) -> Self {
            let mut v = self.errors.unwrap_or_default();
            v.push(input);
            self.errors = Some(v);
            self
        }
        /// <p> An array of objects that describe errors of the request. </p>
        pub fn set_errors(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
        ) -> Self {
            self.errors = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEcsServiceRecommendationsOutput`](crate::output::GetEcsServiceRecommendationsOutput).
        pub fn build(self) -> crate::output::GetEcsServiceRecommendationsOutput {
            crate::output::GetEcsServiceRecommendationsOutput {
                next_token: self.next_token,
                ecs_service_recommendations: self.ecs_service_recommendations,
                errors: self.errors,
            }
        }
    }
}
impl GetEcsServiceRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`GetEcsServiceRecommendationsOutput`](crate::output::GetEcsServiceRecommendationsOutput).
    pub fn builder() -> crate::output::get_ecs_service_recommendations_output::Builder {
        crate::output::get_ecs_service_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEcsServiceRecommendationProjectedMetricsOutput {
    /// <p> An array of objects that describes the projected metrics. </p>
    #[doc(hidden)]
    pub recommended_option_projected_metrics: std::option::Option<
        std::vec::Vec<crate::model::EcsServiceRecommendedOptionProjectedMetric>,
    >,
}
impl GetEcsServiceRecommendationProjectedMetricsOutput {
    /// <p> An array of objects that describes the projected metrics. </p>
    pub fn recommended_option_projected_metrics(
        &self,
    ) -> std::option::Option<&[crate::model::EcsServiceRecommendedOptionProjectedMetric]> {
        self.recommended_option_projected_metrics.as_deref()
    }
}
/// See [`GetEcsServiceRecommendationProjectedMetricsOutput`](crate::output::GetEcsServiceRecommendationProjectedMetricsOutput).
pub mod get_ecs_service_recommendation_projected_metrics_output {

    /// A builder for [`GetEcsServiceRecommendationProjectedMetricsOutput`](crate::output::GetEcsServiceRecommendationProjectedMetricsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) recommended_option_projected_metrics: std::option::Option<
            std::vec::Vec<crate::model::EcsServiceRecommendedOptionProjectedMetric>,
        >,
    }
    impl Builder {
        /// Appends an item to `recommended_option_projected_metrics`.
        ///
        /// To override the contents of this collection use [`set_recommended_option_projected_metrics`](Self::set_recommended_option_projected_metrics).
        ///
        /// <p> An array of objects that describes the projected metrics. </p>
        pub fn recommended_option_projected_metrics(
            mut self,
            input: crate::model::EcsServiceRecommendedOptionProjectedMetric,
        ) -> Self {
            let mut v = self
                .recommended_option_projected_metrics
                .unwrap_or_default();
            v.push(input);
            self.recommended_option_projected_metrics = Some(v);
            self
        }
        /// <p> An array of objects that describes the projected metrics. </p>
        pub fn set_recommended_option_projected_metrics(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::EcsServiceRecommendedOptionProjectedMetric>,
            >,
        ) -> Self {
            self.recommended_option_projected_metrics = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEcsServiceRecommendationProjectedMetricsOutput`](crate::output::GetEcsServiceRecommendationProjectedMetricsOutput).
        pub fn build(self) -> crate::output::GetEcsServiceRecommendationProjectedMetricsOutput {
            crate::output::GetEcsServiceRecommendationProjectedMetricsOutput {
                recommended_option_projected_metrics: self.recommended_option_projected_metrics,
            }
        }
    }
}
impl GetEcsServiceRecommendationProjectedMetricsOutput {
    /// Creates a new builder-style object to manufacture [`GetEcsServiceRecommendationProjectedMetricsOutput`](crate::output::GetEcsServiceRecommendationProjectedMetricsOutput).
    pub fn builder(
    ) -> crate::output::get_ecs_service_recommendation_projected_metrics_output::Builder {
        crate::output::get_ecs_service_recommendation_projected_metrics_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEc2RecommendationProjectedMetricsOutput {
    /// <p>An array of objects that describes projected metrics.</p>
    #[doc(hidden)]
    pub recommended_option_projected_metrics:
        std::option::Option<std::vec::Vec<crate::model::RecommendedOptionProjectedMetric>>,
}
impl GetEc2RecommendationProjectedMetricsOutput {
    /// <p>An array of objects that describes projected metrics.</p>
    pub fn recommended_option_projected_metrics(
        &self,
    ) -> std::option::Option<&[crate::model::RecommendedOptionProjectedMetric]> {
        self.recommended_option_projected_metrics.as_deref()
    }
}
/// See [`GetEc2RecommendationProjectedMetricsOutput`](crate::output::GetEc2RecommendationProjectedMetricsOutput).
pub mod get_ec2_recommendation_projected_metrics_output {

    /// A builder for [`GetEc2RecommendationProjectedMetricsOutput`](crate::output::GetEc2RecommendationProjectedMetricsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) recommended_option_projected_metrics:
            std::option::Option<std::vec::Vec<crate::model::RecommendedOptionProjectedMetric>>,
    }
    impl Builder {
        /// Appends an item to `recommended_option_projected_metrics`.
        ///
        /// To override the contents of this collection use [`set_recommended_option_projected_metrics`](Self::set_recommended_option_projected_metrics).
        ///
        /// <p>An array of objects that describes projected metrics.</p>
        pub fn recommended_option_projected_metrics(
            mut self,
            input: crate::model::RecommendedOptionProjectedMetric,
        ) -> Self {
            let mut v = self
                .recommended_option_projected_metrics
                .unwrap_or_default();
            v.push(input);
            self.recommended_option_projected_metrics = Some(v);
            self
        }
        /// <p>An array of objects that describes projected metrics.</p>
        pub fn set_recommended_option_projected_metrics(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::RecommendedOptionProjectedMetric>,
            >,
        ) -> Self {
            self.recommended_option_projected_metrics = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEc2RecommendationProjectedMetricsOutput`](crate::output::GetEc2RecommendationProjectedMetricsOutput).
        pub fn build(self) -> crate::output::GetEc2RecommendationProjectedMetricsOutput {
            crate::output::GetEc2RecommendationProjectedMetricsOutput {
                recommended_option_projected_metrics: self.recommended_option_projected_metrics,
            }
        }
    }
}
impl GetEc2RecommendationProjectedMetricsOutput {
    /// Creates a new builder-style object to manufacture [`GetEc2RecommendationProjectedMetricsOutput`](crate::output::GetEc2RecommendationProjectedMetricsOutput).
    pub fn builder() -> crate::output::get_ec2_recommendation_projected_metrics_output::Builder {
        crate::output::get_ec2_recommendation_projected_metrics_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEc2InstanceRecommendationsOutput {
    /// <p>The token to use to advance to the next page of instance recommendations.</p>
    /// <p>This value is null when there are no more pages of instance recommendations to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>An array of objects that describe instance recommendations.</p>
    #[doc(hidden)]
    pub instance_recommendations:
        std::option::Option<std::vec::Vec<crate::model::InstanceRecommendation>>,
    /// <p>An array of objects that describe errors of the request.</p>
    /// <p>For example, an error is returned if you request recommendations for an instance of an unsupported instance family.</p>
    #[doc(hidden)]
    pub errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
}
impl GetEc2InstanceRecommendationsOutput {
    /// <p>The token to use to advance to the next page of instance recommendations.</p>
    /// <p>This value is null when there are no more pages of instance recommendations to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>An array of objects that describe instance recommendations.</p>
    pub fn instance_recommendations(
        &self,
    ) -> std::option::Option<&[crate::model::InstanceRecommendation]> {
        self.instance_recommendations.as_deref()
    }
    /// <p>An array of objects that describe errors of the request.</p>
    /// <p>For example, an error is returned if you request recommendations for an instance of an unsupported instance family.</p>
    pub fn errors(&self) -> std::option::Option<&[crate::model::GetRecommendationError]> {
        self.errors.as_deref()
    }
}
/// See [`GetEc2InstanceRecommendationsOutput`](crate::output::GetEc2InstanceRecommendationsOutput).
pub mod get_ec2_instance_recommendations_output {

    /// A builder for [`GetEc2InstanceRecommendationsOutput`](crate::output::GetEc2InstanceRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) instance_recommendations:
            std::option::Option<std::vec::Vec<crate::model::InstanceRecommendation>>,
        pub(crate) errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
    }
    impl Builder {
        /// <p>The token to use to advance to the next page of instance recommendations.</p>
        /// <p>This value is null when there are no more pages of instance recommendations to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of instance recommendations.</p>
        /// <p>This value is null when there are no more pages of instance recommendations to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `instance_recommendations`.
        ///
        /// To override the contents of this collection use [`set_instance_recommendations`](Self::set_instance_recommendations).
        ///
        /// <p>An array of objects that describe instance recommendations.</p>
        pub fn instance_recommendations(
            mut self,
            input: crate::model::InstanceRecommendation,
        ) -> Self {
            let mut v = self.instance_recommendations.unwrap_or_default();
            v.push(input);
            self.instance_recommendations = Some(v);
            self
        }
        /// <p>An array of objects that describe instance recommendations.</p>
        pub fn set_instance_recommendations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::InstanceRecommendation>>,
        ) -> Self {
            self.instance_recommendations = input;
            self
        }
        /// Appends an item to `errors`.
        ///
        /// To override the contents of this collection use [`set_errors`](Self::set_errors).
        ///
        /// <p>An array of objects that describe errors of the request.</p>
        /// <p>For example, an error is returned if you request recommendations for an instance of an unsupported instance family.</p>
        pub fn errors(mut self, input: crate::model::GetRecommendationError) -> Self {
            let mut v = self.errors.unwrap_or_default();
            v.push(input);
            self.errors = Some(v);
            self
        }
        /// <p>An array of objects that describe errors of the request.</p>
        /// <p>For example, an error is returned if you request recommendations for an instance of an unsupported instance family.</p>
        pub fn set_errors(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
        ) -> Self {
            self.errors = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEc2InstanceRecommendationsOutput`](crate::output::GetEc2InstanceRecommendationsOutput).
        pub fn build(self) -> crate::output::GetEc2InstanceRecommendationsOutput {
            crate::output::GetEc2InstanceRecommendationsOutput {
                next_token: self.next_token,
                instance_recommendations: self.instance_recommendations,
                errors: self.errors,
            }
        }
    }
}
impl GetEc2InstanceRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`GetEc2InstanceRecommendationsOutput`](crate::output::GetEc2InstanceRecommendationsOutput).
    pub fn builder() -> crate::output::get_ec2_instance_recommendations_output::Builder {
        crate::output::get_ec2_instance_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetEbsVolumeRecommendationsOutput {
    /// <p>The token to use to advance to the next page of volume recommendations.</p>
    /// <p>This value is null when there are no more pages of volume recommendations to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>An array of objects that describe volume recommendations.</p>
    #[doc(hidden)]
    pub volume_recommendations:
        std::option::Option<std::vec::Vec<crate::model::VolumeRecommendation>>,
    /// <p>An array of objects that describe errors of the request.</p>
    /// <p>For example, an error is returned if you request recommendations for an unsupported volume.</p>
    #[doc(hidden)]
    pub errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
}
impl GetEbsVolumeRecommendationsOutput {
    /// <p>The token to use to advance to the next page of volume recommendations.</p>
    /// <p>This value is null when there are no more pages of volume recommendations to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>An array of objects that describe volume recommendations.</p>
    pub fn volume_recommendations(
        &self,
    ) -> std::option::Option<&[crate::model::VolumeRecommendation]> {
        self.volume_recommendations.as_deref()
    }
    /// <p>An array of objects that describe errors of the request.</p>
    /// <p>For example, an error is returned if you request recommendations for an unsupported volume.</p>
    pub fn errors(&self) -> std::option::Option<&[crate::model::GetRecommendationError]> {
        self.errors.as_deref()
    }
}
/// See [`GetEbsVolumeRecommendationsOutput`](crate::output::GetEbsVolumeRecommendationsOutput).
pub mod get_ebs_volume_recommendations_output {

    /// A builder for [`GetEbsVolumeRecommendationsOutput`](crate::output::GetEbsVolumeRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) volume_recommendations:
            std::option::Option<std::vec::Vec<crate::model::VolumeRecommendation>>,
        pub(crate) errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
    }
    impl Builder {
        /// <p>The token to use to advance to the next page of volume recommendations.</p>
        /// <p>This value is null when there are no more pages of volume recommendations to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of volume recommendations.</p>
        /// <p>This value is null when there are no more pages of volume recommendations to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `volume_recommendations`.
        ///
        /// To override the contents of this collection use [`set_volume_recommendations`](Self::set_volume_recommendations).
        ///
        /// <p>An array of objects that describe volume recommendations.</p>
        pub fn volume_recommendations(mut self, input: crate::model::VolumeRecommendation) -> Self {
            let mut v = self.volume_recommendations.unwrap_or_default();
            v.push(input);
            self.volume_recommendations = Some(v);
            self
        }
        /// <p>An array of objects that describe volume recommendations.</p>
        pub fn set_volume_recommendations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::VolumeRecommendation>>,
        ) -> Self {
            self.volume_recommendations = input;
            self
        }
        /// Appends an item to `errors`.
        ///
        /// To override the contents of this collection use [`set_errors`](Self::set_errors).
        ///
        /// <p>An array of objects that describe errors of the request.</p>
        /// <p>For example, an error is returned if you request recommendations for an unsupported volume.</p>
        pub fn errors(mut self, input: crate::model::GetRecommendationError) -> Self {
            let mut v = self.errors.unwrap_or_default();
            v.push(input);
            self.errors = Some(v);
            self
        }
        /// <p>An array of objects that describe errors of the request.</p>
        /// <p>For example, an error is returned if you request recommendations for an unsupported volume.</p>
        pub fn set_errors(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
        ) -> Self {
            self.errors = input;
            self
        }
        /// Consumes the builder and constructs a [`GetEbsVolumeRecommendationsOutput`](crate::output::GetEbsVolumeRecommendationsOutput).
        pub fn build(self) -> crate::output::GetEbsVolumeRecommendationsOutput {
            crate::output::GetEbsVolumeRecommendationsOutput {
                next_token: self.next_token,
                volume_recommendations: self.volume_recommendations,
                errors: self.errors,
            }
        }
    }
}
impl GetEbsVolumeRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`GetEbsVolumeRecommendationsOutput`](crate::output::GetEbsVolumeRecommendationsOutput).
    pub fn builder() -> crate::output::get_ebs_volume_recommendations_output::Builder {
        crate::output::get_ebs_volume_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct GetAutoScalingGroupRecommendationsOutput {
    /// <p>The token to use to advance to the next page of Auto Scaling group recommendations.</p>
    /// <p>This value is null when there are no more pages of Auto Scaling group recommendations to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
    /// <p>An array of objects that describe Auto Scaling group recommendations.</p>
    #[doc(hidden)]
    pub auto_scaling_group_recommendations:
        std::option::Option<std::vec::Vec<crate::model::AutoScalingGroupRecommendation>>,
    /// <p>An array of objects that describe errors of the request.</p>
    /// <p>For example, an error is returned if you request recommendations for an unsupported Auto Scaling group.</p>
    #[doc(hidden)]
    pub errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
}
impl GetAutoScalingGroupRecommendationsOutput {
    /// <p>The token to use to advance to the next page of Auto Scaling group recommendations.</p>
    /// <p>This value is null when there are no more pages of Auto Scaling group recommendations to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>An array of objects that describe Auto Scaling group recommendations.</p>
    pub fn auto_scaling_group_recommendations(
        &self,
    ) -> std::option::Option<&[crate::model::AutoScalingGroupRecommendation]> {
        self.auto_scaling_group_recommendations.as_deref()
    }
    /// <p>An array of objects that describe errors of the request.</p>
    /// <p>For example, an error is returned if you request recommendations for an unsupported Auto Scaling group.</p>
    pub fn errors(&self) -> std::option::Option<&[crate::model::GetRecommendationError]> {
        self.errors.as_deref()
    }
}
/// See [`GetAutoScalingGroupRecommendationsOutput`](crate::output::GetAutoScalingGroupRecommendationsOutput).
pub mod get_auto_scaling_group_recommendations_output {

    /// A builder for [`GetAutoScalingGroupRecommendationsOutput`](crate::output::GetAutoScalingGroupRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) auto_scaling_group_recommendations:
            std::option::Option<std::vec::Vec<crate::model::AutoScalingGroupRecommendation>>,
        pub(crate) errors: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
    }
    impl Builder {
        /// <p>The token to use to advance to the next page of Auto Scaling group recommendations.</p>
        /// <p>This value is null when there are no more pages of Auto Scaling group recommendations to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of Auto Scaling group recommendations.</p>
        /// <p>This value is null when there are no more pages of Auto Scaling group recommendations to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Appends an item to `auto_scaling_group_recommendations`.
        ///
        /// To override the contents of this collection use [`set_auto_scaling_group_recommendations`](Self::set_auto_scaling_group_recommendations).
        ///
        /// <p>An array of objects that describe Auto Scaling group recommendations.</p>
        pub fn auto_scaling_group_recommendations(
            mut self,
            input: crate::model::AutoScalingGroupRecommendation,
        ) -> Self {
            let mut v = self.auto_scaling_group_recommendations.unwrap_or_default();
            v.push(input);
            self.auto_scaling_group_recommendations = Some(v);
            self
        }
        /// <p>An array of objects that describe Auto Scaling group recommendations.</p>
        pub fn set_auto_scaling_group_recommendations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::AutoScalingGroupRecommendation>>,
        ) -> Self {
            self.auto_scaling_group_recommendations = input;
            self
        }
        /// Appends an item to `errors`.
        ///
        /// To override the contents of this collection use [`set_errors`](Self::set_errors).
        ///
        /// <p>An array of objects that describe errors of the request.</p>
        /// <p>For example, an error is returned if you request recommendations for an unsupported Auto Scaling group.</p>
        pub fn errors(mut self, input: crate::model::GetRecommendationError) -> Self {
            let mut v = self.errors.unwrap_or_default();
            v.push(input);
            self.errors = Some(v);
            self
        }
        /// <p>An array of objects that describe errors of the request.</p>
        /// <p>For example, an error is returned if you request recommendations for an unsupported Auto Scaling group.</p>
        pub fn set_errors(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::GetRecommendationError>>,
        ) -> Self {
            self.errors = input;
            self
        }
        /// Consumes the builder and constructs a [`GetAutoScalingGroupRecommendationsOutput`](crate::output::GetAutoScalingGroupRecommendationsOutput).
        pub fn build(self) -> crate::output::GetAutoScalingGroupRecommendationsOutput {
            crate::output::GetAutoScalingGroupRecommendationsOutput {
                next_token: self.next_token,
                auto_scaling_group_recommendations: self.auto_scaling_group_recommendations,
                errors: self.errors,
            }
        }
    }
}
impl GetAutoScalingGroupRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`GetAutoScalingGroupRecommendationsOutput`](crate::output::GetAutoScalingGroupRecommendationsOutput).
    pub fn builder() -> crate::output::get_auto_scaling_group_recommendations_output::Builder {
        crate::output::get_auto_scaling_group_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ExportLambdaFunctionRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    #[doc(hidden)]
    pub job_id: std::option::Option<std::string::String>,
    /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
    #[doc(hidden)]
    pub s3_destination: std::option::Option<crate::model::S3Destination>,
}
impl ExportLambdaFunctionRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    pub fn job_id(&self) -> std::option::Option<&str> {
        self.job_id.as_deref()
    }
    /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
    pub fn s3_destination(&self) -> std::option::Option<&crate::model::S3Destination> {
        self.s3_destination.as_ref()
    }
}
/// See [`ExportLambdaFunctionRecommendationsOutput`](crate::output::ExportLambdaFunctionRecommendationsOutput).
pub mod export_lambda_function_recommendations_output {

    /// A builder for [`ExportLambdaFunctionRecommendationsOutput`](crate::output::ExportLambdaFunctionRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) job_id: std::option::Option<std::string::String>,
        pub(crate) s3_destination: std::option::Option<crate::model::S3Destination>,
    }
    impl Builder {
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn job_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_id = Some(input.into());
            self
        }
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn set_job_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_id = input;
            self
        }
        /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
        pub fn s3_destination(mut self, input: crate::model::S3Destination) -> Self {
            self.s3_destination = Some(input);
            self
        }
        /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
        pub fn set_s3_destination(
            mut self,
            input: std::option::Option<crate::model::S3Destination>,
        ) -> Self {
            self.s3_destination = input;
            self
        }
        /// Consumes the builder and constructs a [`ExportLambdaFunctionRecommendationsOutput`](crate::output::ExportLambdaFunctionRecommendationsOutput).
        pub fn build(self) -> crate::output::ExportLambdaFunctionRecommendationsOutput {
            crate::output::ExportLambdaFunctionRecommendationsOutput {
                job_id: self.job_id,
                s3_destination: self.s3_destination,
            }
        }
    }
}
impl ExportLambdaFunctionRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`ExportLambdaFunctionRecommendationsOutput`](crate::output::ExportLambdaFunctionRecommendationsOutput).
    pub fn builder() -> crate::output::export_lambda_function_recommendations_output::Builder {
        crate::output::export_lambda_function_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ExportEcsServiceRecommendationsOutput {
    /// <p> The identification number of the export job. </p>
    /// <p>To view the status of an export job, use the <code>DescribeRecommendationExportJobs</code> action and specify the job ID. </p>
    #[doc(hidden)]
    pub job_id: std::option::Option<std::string::String>,
    /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
    #[doc(hidden)]
    pub s3_destination: std::option::Option<crate::model::S3Destination>,
}
impl ExportEcsServiceRecommendationsOutput {
    /// <p> The identification number of the export job. </p>
    /// <p>To view the status of an export job, use the <code>DescribeRecommendationExportJobs</code> action and specify the job ID. </p>
    pub fn job_id(&self) -> std::option::Option<&str> {
        self.job_id.as_deref()
    }
    /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
    pub fn s3_destination(&self) -> std::option::Option<&crate::model::S3Destination> {
        self.s3_destination.as_ref()
    }
}
/// See [`ExportEcsServiceRecommendationsOutput`](crate::output::ExportEcsServiceRecommendationsOutput).
pub mod export_ecs_service_recommendations_output {

    /// A builder for [`ExportEcsServiceRecommendationsOutput`](crate::output::ExportEcsServiceRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) job_id: std::option::Option<std::string::String>,
        pub(crate) s3_destination: std::option::Option<crate::model::S3Destination>,
    }
    impl Builder {
        /// <p> The identification number of the export job. </p>
        /// <p>To view the status of an export job, use the <code>DescribeRecommendationExportJobs</code> action and specify the job ID. </p>
        pub fn job_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_id = Some(input.into());
            self
        }
        /// <p> The identification number of the export job. </p>
        /// <p>To view the status of an export job, use the <code>DescribeRecommendationExportJobs</code> action and specify the job ID. </p>
        pub fn set_job_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_id = input;
            self
        }
        /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
        pub fn s3_destination(mut self, input: crate::model::S3Destination) -> Self {
            self.s3_destination = Some(input);
            self
        }
        /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
        pub fn set_s3_destination(
            mut self,
            input: std::option::Option<crate::model::S3Destination>,
        ) -> Self {
            self.s3_destination = input;
            self
        }
        /// Consumes the builder and constructs a [`ExportEcsServiceRecommendationsOutput`](crate::output::ExportEcsServiceRecommendationsOutput).
        pub fn build(self) -> crate::output::ExportEcsServiceRecommendationsOutput {
            crate::output::ExportEcsServiceRecommendationsOutput {
                job_id: self.job_id,
                s3_destination: self.s3_destination,
            }
        }
    }
}
impl ExportEcsServiceRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`ExportEcsServiceRecommendationsOutput`](crate::output::ExportEcsServiceRecommendationsOutput).
    pub fn builder() -> crate::output::export_ecs_service_recommendations_output::Builder {
        crate::output::export_ecs_service_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ExportEc2InstanceRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    #[doc(hidden)]
    pub job_id: std::option::Option<std::string::String>,
    /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
    #[doc(hidden)]
    pub s3_destination: std::option::Option<crate::model::S3Destination>,
}
impl ExportEc2InstanceRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    pub fn job_id(&self) -> std::option::Option<&str> {
        self.job_id.as_deref()
    }
    /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
    pub fn s3_destination(&self) -> std::option::Option<&crate::model::S3Destination> {
        self.s3_destination.as_ref()
    }
}
/// See [`ExportEc2InstanceRecommendationsOutput`](crate::output::ExportEc2InstanceRecommendationsOutput).
pub mod export_ec2_instance_recommendations_output {

    /// A builder for [`ExportEc2InstanceRecommendationsOutput`](crate::output::ExportEc2InstanceRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) job_id: std::option::Option<std::string::String>,
        pub(crate) s3_destination: std::option::Option<crate::model::S3Destination>,
    }
    impl Builder {
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn job_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_id = Some(input.into());
            self
        }
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn set_job_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_id = input;
            self
        }
        /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
        pub fn s3_destination(mut self, input: crate::model::S3Destination) -> Self {
            self.s3_destination = Some(input);
            self
        }
        /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
        pub fn set_s3_destination(
            mut self,
            input: std::option::Option<crate::model::S3Destination>,
        ) -> Self {
            self.s3_destination = input;
            self
        }
        /// Consumes the builder and constructs a [`ExportEc2InstanceRecommendationsOutput`](crate::output::ExportEc2InstanceRecommendationsOutput).
        pub fn build(self) -> crate::output::ExportEc2InstanceRecommendationsOutput {
            crate::output::ExportEc2InstanceRecommendationsOutput {
                job_id: self.job_id,
                s3_destination: self.s3_destination,
            }
        }
    }
}
impl ExportEc2InstanceRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`ExportEc2InstanceRecommendationsOutput`](crate::output::ExportEc2InstanceRecommendationsOutput).
    pub fn builder() -> crate::output::export_ec2_instance_recommendations_output::Builder {
        crate::output::export_ec2_instance_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ExportEbsVolumeRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    #[doc(hidden)]
    pub job_id: std::option::Option<std::string::String>,
    /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
    #[doc(hidden)]
    pub s3_destination: std::option::Option<crate::model::S3Destination>,
}
impl ExportEbsVolumeRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    pub fn job_id(&self) -> std::option::Option<&str> {
        self.job_id.as_deref()
    }
    /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
    pub fn s3_destination(&self) -> std::option::Option<&crate::model::S3Destination> {
        self.s3_destination.as_ref()
    }
}
/// See [`ExportEbsVolumeRecommendationsOutput`](crate::output::ExportEbsVolumeRecommendationsOutput).
pub mod export_ebs_volume_recommendations_output {

    /// A builder for [`ExportEbsVolumeRecommendationsOutput`](crate::output::ExportEbsVolumeRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) job_id: std::option::Option<std::string::String>,
        pub(crate) s3_destination: std::option::Option<crate::model::S3Destination>,
    }
    impl Builder {
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn job_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_id = Some(input.into());
            self
        }
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn set_job_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_id = input;
            self
        }
        /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
        pub fn s3_destination(mut self, input: crate::model::S3Destination) -> Self {
            self.s3_destination = Some(input);
            self
        }
        /// <p>Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and object keys of a recommendations export file, and its associated metadata file.</p>
        pub fn set_s3_destination(
            mut self,
            input: std::option::Option<crate::model::S3Destination>,
        ) -> Self {
            self.s3_destination = input;
            self
        }
        /// Consumes the builder and constructs a [`ExportEbsVolumeRecommendationsOutput`](crate::output::ExportEbsVolumeRecommendationsOutput).
        pub fn build(self) -> crate::output::ExportEbsVolumeRecommendationsOutput {
            crate::output::ExportEbsVolumeRecommendationsOutput {
                job_id: self.job_id,
                s3_destination: self.s3_destination,
            }
        }
    }
}
impl ExportEbsVolumeRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`ExportEbsVolumeRecommendationsOutput`](crate::output::ExportEbsVolumeRecommendationsOutput).
    pub fn builder() -> crate::output::export_ebs_volume_recommendations_output::Builder {
        crate::output::export_ebs_volume_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct ExportAutoScalingGroupRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    #[doc(hidden)]
    pub job_id: std::option::Option<std::string::String>,
    /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
    #[doc(hidden)]
    pub s3_destination: std::option::Option<crate::model::S3Destination>,
}
impl ExportAutoScalingGroupRecommendationsOutput {
    /// <p>The identification number of the export job.</p>
    /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
    pub fn job_id(&self) -> std::option::Option<&str> {
        self.job_id.as_deref()
    }
    /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
    pub fn s3_destination(&self) -> std::option::Option<&crate::model::S3Destination> {
        self.s3_destination.as_ref()
    }
}
/// See [`ExportAutoScalingGroupRecommendationsOutput`](crate::output::ExportAutoScalingGroupRecommendationsOutput).
pub mod export_auto_scaling_group_recommendations_output {

    /// A builder for [`ExportAutoScalingGroupRecommendationsOutput`](crate::output::ExportAutoScalingGroupRecommendationsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) job_id: std::option::Option<std::string::String>,
        pub(crate) s3_destination: std::option::Option<crate::model::S3Destination>,
    }
    impl Builder {
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn job_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_id = Some(input.into());
            self
        }
        /// <p>The identification number of the export job.</p>
        /// <p>Use the <code>DescribeRecommendationExportJobs</code> action, and specify the job ID to view the status of an export job.</p>
        pub fn set_job_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_id = input;
            self
        }
        /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
        pub fn s3_destination(mut self, input: crate::model::S3Destination) -> Self {
            self.s3_destination = Some(input);
            self
        }
        /// <p>An object that describes the destination Amazon S3 bucket of a recommendations export file.</p>
        pub fn set_s3_destination(
            mut self,
            input: std::option::Option<crate::model::S3Destination>,
        ) -> Self {
            self.s3_destination = input;
            self
        }
        /// Consumes the builder and constructs a [`ExportAutoScalingGroupRecommendationsOutput`](crate::output::ExportAutoScalingGroupRecommendationsOutput).
        pub fn build(self) -> crate::output::ExportAutoScalingGroupRecommendationsOutput {
            crate::output::ExportAutoScalingGroupRecommendationsOutput {
                job_id: self.job_id,
                s3_destination: self.s3_destination,
            }
        }
    }
}
impl ExportAutoScalingGroupRecommendationsOutput {
    /// Creates a new builder-style object to manufacture [`ExportAutoScalingGroupRecommendationsOutput`](crate::output::ExportAutoScalingGroupRecommendationsOutput).
    pub fn builder() -> crate::output::export_auto_scaling_group_recommendations_output::Builder {
        crate::output::export_auto_scaling_group_recommendations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct DescribeRecommendationExportJobsOutput {
    /// <p>An array of objects that describe recommendation export jobs.</p>
    #[doc(hidden)]
    pub recommendation_export_jobs:
        std::option::Option<std::vec::Vec<crate::model::RecommendationExportJob>>,
    /// <p>The token to use to advance to the next page of export jobs.</p>
    /// <p>This value is null when there are no more pages of export jobs to return.</p>
    #[doc(hidden)]
    pub next_token: std::option::Option<std::string::String>,
}
impl DescribeRecommendationExportJobsOutput {
    /// <p>An array of objects that describe recommendation export jobs.</p>
    pub fn recommendation_export_jobs(
        &self,
    ) -> std::option::Option<&[crate::model::RecommendationExportJob]> {
        self.recommendation_export_jobs.as_deref()
    }
    /// <p>The token to use to advance to the next page of export jobs.</p>
    /// <p>This value is null when there are no more pages of export jobs to return.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
/// See [`DescribeRecommendationExportJobsOutput`](crate::output::DescribeRecommendationExportJobsOutput).
pub mod describe_recommendation_export_jobs_output {

    /// A builder for [`DescribeRecommendationExportJobsOutput`](crate::output::DescribeRecommendationExportJobsOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) recommendation_export_jobs:
            std::option::Option<std::vec::Vec<crate::model::RecommendationExportJob>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `recommendation_export_jobs`.
        ///
        /// To override the contents of this collection use [`set_recommendation_export_jobs`](Self::set_recommendation_export_jobs).
        ///
        /// <p>An array of objects that describe recommendation export jobs.</p>
        pub fn recommendation_export_jobs(
            mut self,
            input: crate::model::RecommendationExportJob,
        ) -> Self {
            let mut v = self.recommendation_export_jobs.unwrap_or_default();
            v.push(input);
            self.recommendation_export_jobs = Some(v);
            self
        }
        /// <p>An array of objects that describe recommendation export jobs.</p>
        pub fn set_recommendation_export_jobs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::RecommendationExportJob>>,
        ) -> Self {
            self.recommendation_export_jobs = input;
            self
        }
        /// <p>The token to use to advance to the next page of export jobs.</p>
        /// <p>This value is null when there are no more pages of export jobs to return.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The token to use to advance to the next page of export jobs.</p>
        /// <p>This value is null when there are no more pages of export jobs to return.</p>
        pub fn set_next_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.next_token = input;
            self
        }
        /// Consumes the builder and constructs a [`DescribeRecommendationExportJobsOutput`](crate::output::DescribeRecommendationExportJobsOutput).
        pub fn build(self) -> crate::output::DescribeRecommendationExportJobsOutput {
            crate::output::DescribeRecommendationExportJobsOutput {
                recommendation_export_jobs: self.recommendation_export_jobs,
                next_token: self.next_token,
            }
        }
    }
}
impl DescribeRecommendationExportJobsOutput {
    /// Creates a new builder-style object to manufacture [`DescribeRecommendationExportJobsOutput`](crate::output::DescribeRecommendationExportJobsOutput).
    pub fn builder() -> crate::output::describe_recommendation_export_jobs_output::Builder {
        crate::output::describe_recommendation_export_jobs_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct DeleteRecommendationPreferencesOutput {}
/// See [`DeleteRecommendationPreferencesOutput`](crate::output::DeleteRecommendationPreferencesOutput).
pub mod delete_recommendation_preferences_output {

    /// A builder for [`DeleteRecommendationPreferencesOutput`](crate::output::DeleteRecommendationPreferencesOutput).
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DeleteRecommendationPreferencesOutput`](crate::output::DeleteRecommendationPreferencesOutput).
        pub fn build(self) -> crate::output::DeleteRecommendationPreferencesOutput {
            crate::output::DeleteRecommendationPreferencesOutput {}
        }
    }
}
impl DeleteRecommendationPreferencesOutput {
    /// Creates a new builder-style object to manufacture [`DeleteRecommendationPreferencesOutput`](crate::output::DeleteRecommendationPreferencesOutput).
    pub fn builder() -> crate::output::delete_recommendation_preferences_output::Builder {
        crate::output::delete_recommendation_preferences_output::Builder::default()
    }
}