aws-sdk-macie2 0.8.0

AWS SDK for Amazon Macie 2
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)]
pub struct UpdateOrganizationConfigurationOutput {}
impl std::fmt::Debug for UpdateOrganizationConfigurationOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateOrganizationConfigurationOutput");
        formatter.finish()
    }
}
/// See [`UpdateOrganizationConfigurationOutput`](crate::output::UpdateOrganizationConfigurationOutput)
pub mod update_organization_configuration_output {
    /// A builder for [`UpdateOrganizationConfigurationOutput`](crate::output::UpdateOrganizationConfigurationOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`UpdateOrganizationConfigurationOutput`](crate::output::UpdateOrganizationConfigurationOutput)
        pub fn build(self) -> crate::output::UpdateOrganizationConfigurationOutput {
            crate::output::UpdateOrganizationConfigurationOutput {}
        }
    }
}
impl UpdateOrganizationConfigurationOutput {
    /// Creates a new builder-style object to manufacture [`UpdateOrganizationConfigurationOutput`](crate::output::UpdateOrganizationConfigurationOutput)
    pub fn builder() -> crate::output::update_organization_configuration_output::Builder {
        crate::output::update_organization_configuration_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct UpdateMemberSessionOutput {}
impl std::fmt::Debug for UpdateMemberSessionOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateMemberSessionOutput");
        formatter.finish()
    }
}
/// See [`UpdateMemberSessionOutput`](crate::output::UpdateMemberSessionOutput)
pub mod update_member_session_output {
    /// A builder for [`UpdateMemberSessionOutput`](crate::output::UpdateMemberSessionOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`UpdateMemberSessionOutput`](crate::output::UpdateMemberSessionOutput)
        pub fn build(self) -> crate::output::UpdateMemberSessionOutput {
            crate::output::UpdateMemberSessionOutput {}
        }
    }
}
impl UpdateMemberSessionOutput {
    /// Creates a new builder-style object to manufacture [`UpdateMemberSessionOutput`](crate::output::UpdateMemberSessionOutput)
    pub fn builder() -> crate::output::update_member_session_output::Builder {
        crate::output::update_member_session_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct UpdateMacieSessionOutput {}
impl std::fmt::Debug for UpdateMacieSessionOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateMacieSessionOutput");
        formatter.finish()
    }
}
/// See [`UpdateMacieSessionOutput`](crate::output::UpdateMacieSessionOutput)
pub mod update_macie_session_output {
    /// A builder for [`UpdateMacieSessionOutput`](crate::output::UpdateMacieSessionOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`UpdateMacieSessionOutput`](crate::output::UpdateMacieSessionOutput)
        pub fn build(self) -> crate::output::UpdateMacieSessionOutput {
            crate::output::UpdateMacieSessionOutput {}
        }
    }
}
impl UpdateMacieSessionOutput {
    /// Creates a new builder-style object to manufacture [`UpdateMacieSessionOutput`](crate::output::UpdateMacieSessionOutput)
    pub fn builder() -> crate::output::update_macie_session_output::Builder {
        crate::output::update_macie_session_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct UpdateFindingsFilterOutput {
    /// <p>The Amazon Resource Name (ARN) of the filter that was updated.</p>
    pub arn: std::option::Option<std::string::String>,
    /// <p>The unique identifier for the filter that was updated.</p>
    pub id: std::option::Option<std::string::String>,
}
impl UpdateFindingsFilterOutput {
    /// <p>The Amazon Resource Name (ARN) of the filter that was updated.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The unique identifier for the filter that was updated.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
}
impl std::fmt::Debug for UpdateFindingsFilterOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateFindingsFilterOutput");
        formatter.field("arn", &self.arn);
        formatter.field("id", &self.id);
        formatter.finish()
    }
}
/// See [`UpdateFindingsFilterOutput`](crate::output::UpdateFindingsFilterOutput)
pub mod update_findings_filter_output {
    /// A builder for [`UpdateFindingsFilterOutput`](crate::output::UpdateFindingsFilterOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) of the filter that was updated.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the filter that was updated.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The unique identifier for the filter that was updated.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The unique identifier for the filter that was updated.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// Consumes the builder and constructs a [`UpdateFindingsFilterOutput`](crate::output::UpdateFindingsFilterOutput)
        pub fn build(self) -> crate::output::UpdateFindingsFilterOutput {
            crate::output::UpdateFindingsFilterOutput {
                arn: self.arn,
                id: self.id,
            }
        }
    }
}
impl UpdateFindingsFilterOutput {
    /// Creates a new builder-style object to manufacture [`UpdateFindingsFilterOutput`](crate::output::UpdateFindingsFilterOutput)
    pub fn builder() -> crate::output::update_findings_filter_output::Builder {
        crate::output::update_findings_filter_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct UpdateClassificationJobOutput {}
impl std::fmt::Debug for UpdateClassificationJobOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateClassificationJobOutput");
        formatter.finish()
    }
}
/// See [`UpdateClassificationJobOutput`](crate::output::UpdateClassificationJobOutput)
pub mod update_classification_job_output {
    /// A builder for [`UpdateClassificationJobOutput`](crate::output::UpdateClassificationJobOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`UpdateClassificationJobOutput`](crate::output::UpdateClassificationJobOutput)
        pub fn build(self) -> crate::output::UpdateClassificationJobOutput {
            crate::output::UpdateClassificationJobOutput {}
        }
    }
}
impl UpdateClassificationJobOutput {
    /// Creates a new builder-style object to manufacture [`UpdateClassificationJobOutput`](crate::output::UpdateClassificationJobOutput)
    pub fn builder() -> crate::output::update_classification_job_output::Builder {
        crate::output::update_classification_job_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct UntagResourceOutput {}
impl std::fmt::Debug for UntagResourceOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UntagResourceOutput");
        formatter.finish()
    }
}
/// See [`UntagResourceOutput`](crate::output::UntagResourceOutput)
pub mod untag_resource_output {
    /// A builder for [`UntagResourceOutput`](crate::output::UntagResourceOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`UntagResourceOutput`](crate::output::UntagResourceOutput)
        pub fn build(self) -> crate::output::UntagResourceOutput {
            crate::output::UntagResourceOutput {}
        }
    }
}
impl UntagResourceOutput {
    /// Creates a new builder-style object to manufacture [`UntagResourceOutput`](crate::output::UntagResourceOutput)
    pub fn builder() -> crate::output::untag_resource_output::Builder {
        crate::output::untag_resource_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct TestCustomDataIdentifierOutput {
    /// <p>The number of occurrences of sample text that matched the criteria specified by the custom data identifier.</p>
    pub match_count: i32,
}
impl TestCustomDataIdentifierOutput {
    /// <p>The number of occurrences of sample text that matched the criteria specified by the custom data identifier.</p>
    pub fn match_count(&self) -> i32 {
        self.match_count
    }
}
impl std::fmt::Debug for TestCustomDataIdentifierOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("TestCustomDataIdentifierOutput");
        formatter.field("match_count", &self.match_count);
        formatter.finish()
    }
}
/// See [`TestCustomDataIdentifierOutput`](crate::output::TestCustomDataIdentifierOutput)
pub mod test_custom_data_identifier_output {
    /// A builder for [`TestCustomDataIdentifierOutput`](crate::output::TestCustomDataIdentifierOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) match_count: std::option::Option<i32>,
    }
    impl Builder {
        /// <p>The number of occurrences of sample text that matched the criteria specified by the custom data identifier.</p>
        pub fn match_count(mut self, input: i32) -> Self {
            self.match_count = Some(input);
            self
        }
        /// <p>The number of occurrences of sample text that matched the criteria specified by the custom data identifier.</p>
        pub fn set_match_count(mut self, input: std::option::Option<i32>) -> Self {
            self.match_count = input;
            self
        }
        /// Consumes the builder and constructs a [`TestCustomDataIdentifierOutput`](crate::output::TestCustomDataIdentifierOutput)
        pub fn build(self) -> crate::output::TestCustomDataIdentifierOutput {
            crate::output::TestCustomDataIdentifierOutput {
                match_count: self.match_count.unwrap_or_default(),
            }
        }
    }
}
impl TestCustomDataIdentifierOutput {
    /// Creates a new builder-style object to manufacture [`TestCustomDataIdentifierOutput`](crate::output::TestCustomDataIdentifierOutput)
    pub fn builder() -> crate::output::test_custom_data_identifier_output::Builder {
        crate::output::test_custom_data_identifier_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct TagResourceOutput {}
impl std::fmt::Debug for TagResourceOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("TagResourceOutput");
        formatter.finish()
    }
}
/// See [`TagResourceOutput`](crate::output::TagResourceOutput)
pub mod tag_resource_output {
    /// A builder for [`TagResourceOutput`](crate::output::TagResourceOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`TagResourceOutput`](crate::output::TagResourceOutput)
        pub fn build(self) -> crate::output::TagResourceOutput {
            crate::output::TagResourceOutput {}
        }
    }
}
impl TagResourceOutput {
    /// Creates a new builder-style object to manufacture [`TagResourceOutput`](crate::output::TagResourceOutput)
    pub fn builder() -> crate::output::tag_resource_output::Builder {
        crate::output::tag_resource_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct SearchResourcesOutput {
    /// <p>An array of objects, one for each resource that meets the filter criteria specified in the request.</p>
    pub matching_resources: std::option::Option<std::vec::Vec<crate::model::MatchingResource>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl SearchResourcesOutput {
    /// <p>An array of objects, one for each resource that meets the filter criteria specified in the request.</p>
    pub fn matching_resources(&self) -> std::option::Option<&[crate::model::MatchingResource]> {
        self.matching_resources.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for SearchResourcesOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("SearchResourcesOutput");
        formatter.field("matching_resources", &self.matching_resources);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`SearchResourcesOutput`](crate::output::SearchResourcesOutput)
pub mod search_resources_output {
    /// A builder for [`SearchResourcesOutput`](crate::output::SearchResourcesOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) matching_resources:
            std::option::Option<std::vec::Vec<crate::model::MatchingResource>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `matching_resources`.
        ///
        /// To override the contents of this collection use [`set_matching_resources`](Self::set_matching_resources).
        ///
        /// <p>An array of objects, one for each resource that meets the filter criteria specified in the request.</p>
        pub fn matching_resources(mut self, input: crate::model::MatchingResource) -> Self {
            let mut v = self.matching_resources.unwrap_or_default();
            v.push(input);
            self.matching_resources = Some(v);
            self
        }
        /// <p>An array of objects, one for each resource that meets the filter criteria specified in the request.</p>
        pub fn set_matching_resources(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::MatchingResource>>,
        ) -> Self {
            self.matching_resources = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`SearchResourcesOutput`](crate::output::SearchResourcesOutput)
        pub fn build(self) -> crate::output::SearchResourcesOutput {
            crate::output::SearchResourcesOutput {
                matching_resources: self.matching_resources,
                next_token: self.next_token,
            }
        }
    }
}
impl SearchResourcesOutput {
    /// Creates a new builder-style object to manufacture [`SearchResourcesOutput`](crate::output::SearchResourcesOutput)
    pub fn builder() -> crate::output::search_resources_output::Builder {
        crate::output::search_resources_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct PutFindingsPublicationConfigurationOutput {}
impl std::fmt::Debug for PutFindingsPublicationConfigurationOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("PutFindingsPublicationConfigurationOutput");
        formatter.finish()
    }
}
/// See [`PutFindingsPublicationConfigurationOutput`](crate::output::PutFindingsPublicationConfigurationOutput)
pub mod put_findings_publication_configuration_output {
    /// A builder for [`PutFindingsPublicationConfigurationOutput`](crate::output::PutFindingsPublicationConfigurationOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`PutFindingsPublicationConfigurationOutput`](crate::output::PutFindingsPublicationConfigurationOutput)
        pub fn build(self) -> crate::output::PutFindingsPublicationConfigurationOutput {
            crate::output::PutFindingsPublicationConfigurationOutput {}
        }
    }
}
impl PutFindingsPublicationConfigurationOutput {
    /// Creates a new builder-style object to manufacture [`PutFindingsPublicationConfigurationOutput`](crate::output::PutFindingsPublicationConfigurationOutput)
    pub fn builder() -> crate::output::put_findings_publication_configuration_output::Builder {
        crate::output::put_findings_publication_configuration_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct PutClassificationExportConfigurationOutput {
    /// <p>The location where the data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
    pub configuration: std::option::Option<crate::model::ClassificationExportConfiguration>,
}
impl PutClassificationExportConfigurationOutput {
    /// <p>The location where the data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
    pub fn configuration(
        &self,
    ) -> std::option::Option<&crate::model::ClassificationExportConfiguration> {
        self.configuration.as_ref()
    }
}
impl std::fmt::Debug for PutClassificationExportConfigurationOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("PutClassificationExportConfigurationOutput");
        formatter.field("configuration", &self.configuration);
        formatter.finish()
    }
}
/// See [`PutClassificationExportConfigurationOutput`](crate::output::PutClassificationExportConfigurationOutput)
pub mod put_classification_export_configuration_output {
    /// A builder for [`PutClassificationExportConfigurationOutput`](crate::output::PutClassificationExportConfigurationOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) configuration:
            std::option::Option<crate::model::ClassificationExportConfiguration>,
    }
    impl Builder {
        /// <p>The location where the data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
        pub fn configuration(
            mut self,
            input: crate::model::ClassificationExportConfiguration,
        ) -> Self {
            self.configuration = Some(input);
            self
        }
        /// <p>The location where the data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
        pub fn set_configuration(
            mut self,
            input: std::option::Option<crate::model::ClassificationExportConfiguration>,
        ) -> Self {
            self.configuration = input;
            self
        }
        /// Consumes the builder and constructs a [`PutClassificationExportConfigurationOutput`](crate::output::PutClassificationExportConfigurationOutput)
        pub fn build(self) -> crate::output::PutClassificationExportConfigurationOutput {
            crate::output::PutClassificationExportConfigurationOutput {
                configuration: self.configuration,
            }
        }
    }
}
impl PutClassificationExportConfigurationOutput {
    /// Creates a new builder-style object to manufacture [`PutClassificationExportConfigurationOutput`](crate::output::PutClassificationExportConfigurationOutput)
    pub fn builder() -> crate::output::put_classification_export_configuration_output::Builder {
        crate::output::put_classification_export_configuration_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListTagsForResourceOutput {
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the resource.</p>
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl ListTagsForResourceOutput {
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the resource.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
impl std::fmt::Debug for ListTagsForResourceOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListTagsForResourceOutput");
        formatter.field("tags", &self.tags);
        formatter.finish()
    }
}
/// See [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput)
pub mod list_tags_for_resource_output {
    /// A builder for [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the resource.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the resource.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput)
        pub fn build(self) -> crate::output::ListTagsForResourceOutput {
            crate::output::ListTagsForResourceOutput { tags: self.tags }
        }
    }
}
impl ListTagsForResourceOutput {
    /// Creates a new builder-style object to manufacture [`ListTagsForResourceOutput`](crate::output::ListTagsForResourceOutput)
    pub fn builder() -> crate::output::list_tags_for_resource_output::Builder {
        crate::output::list_tags_for_resource_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListOrganizationAdminAccountsOutput {
    /// <p>An array of objects, one for each delegated Amazon Macie administrator account for the organization. Only one of these accounts can have a status of ENABLED.</p>
    pub admin_accounts: std::option::Option<std::vec::Vec<crate::model::AdminAccount>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListOrganizationAdminAccountsOutput {
    /// <p>An array of objects, one for each delegated Amazon Macie administrator account for the organization. Only one of these accounts can have a status of ENABLED.</p>
    pub fn admin_accounts(&self) -> std::option::Option<&[crate::model::AdminAccount]> {
        self.admin_accounts.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListOrganizationAdminAccountsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListOrganizationAdminAccountsOutput");
        formatter.field("admin_accounts", &self.admin_accounts);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListOrganizationAdminAccountsOutput`](crate::output::ListOrganizationAdminAccountsOutput)
pub mod list_organization_admin_accounts_output {
    /// A builder for [`ListOrganizationAdminAccountsOutput`](crate::output::ListOrganizationAdminAccountsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) admin_accounts: std::option::Option<std::vec::Vec<crate::model::AdminAccount>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `admin_accounts`.
        ///
        /// To override the contents of this collection use [`set_admin_accounts`](Self::set_admin_accounts).
        ///
        /// <p>An array of objects, one for each delegated Amazon Macie administrator account for the organization. Only one of these accounts can have a status of ENABLED.</p>
        pub fn admin_accounts(mut self, input: crate::model::AdminAccount) -> Self {
            let mut v = self.admin_accounts.unwrap_or_default();
            v.push(input);
            self.admin_accounts = Some(v);
            self
        }
        /// <p>An array of objects, one for each delegated Amazon Macie administrator account for the organization. Only one of these accounts can have a status of ENABLED.</p>
        pub fn set_admin_accounts(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::AdminAccount>>,
        ) -> Self {
            self.admin_accounts = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListOrganizationAdminAccountsOutput`](crate::output::ListOrganizationAdminAccountsOutput)
        pub fn build(self) -> crate::output::ListOrganizationAdminAccountsOutput {
            crate::output::ListOrganizationAdminAccountsOutput {
                admin_accounts: self.admin_accounts,
                next_token: self.next_token,
            }
        }
    }
}
impl ListOrganizationAdminAccountsOutput {
    /// Creates a new builder-style object to manufacture [`ListOrganizationAdminAccountsOutput`](crate::output::ListOrganizationAdminAccountsOutput)
    pub fn builder() -> crate::output::list_organization_admin_accounts_output::Builder {
        crate::output::list_organization_admin_accounts_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListMembersOutput {
    /// <p>An array of objects, one for each account that's associated with the administrator account and meets the criteria specified in the request.</p>
    pub members: std::option::Option<std::vec::Vec<crate::model::Member>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListMembersOutput {
    /// <p>An array of objects, one for each account that's associated with the administrator account and meets the criteria specified in the request.</p>
    pub fn members(&self) -> std::option::Option<&[crate::model::Member]> {
        self.members.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListMembersOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListMembersOutput");
        formatter.field("members", &self.members);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListMembersOutput`](crate::output::ListMembersOutput)
pub mod list_members_output {
    /// A builder for [`ListMembersOutput`](crate::output::ListMembersOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) members: std::option::Option<std::vec::Vec<crate::model::Member>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `members`.
        ///
        /// To override the contents of this collection use [`set_members`](Self::set_members).
        ///
        /// <p>An array of objects, one for each account that's associated with the administrator account and meets the criteria specified in the request.</p>
        pub fn members(mut self, input: crate::model::Member) -> Self {
            let mut v = self.members.unwrap_or_default();
            v.push(input);
            self.members = Some(v);
            self
        }
        /// <p>An array of objects, one for each account that's associated with the administrator account and meets the criteria specified in the request.</p>
        pub fn set_members(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Member>>,
        ) -> Self {
            self.members = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListMembersOutput`](crate::output::ListMembersOutput)
        pub fn build(self) -> crate::output::ListMembersOutput {
            crate::output::ListMembersOutput {
                members: self.members,
                next_token: self.next_token,
            }
        }
    }
}
impl ListMembersOutput {
    /// Creates a new builder-style object to manufacture [`ListMembersOutput`](crate::output::ListMembersOutput)
    pub fn builder() -> crate::output::list_members_output::Builder {
        crate::output::list_members_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListManagedDataIdentifiersOutput {
    /// <p>An array of objects, one for each managed data identifier.</p>
    pub items: std::option::Option<std::vec::Vec<crate::model::ManagedDataIdentifierSummary>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListManagedDataIdentifiersOutput {
    /// <p>An array of objects, one for each managed data identifier.</p>
    pub fn items(&self) -> std::option::Option<&[crate::model::ManagedDataIdentifierSummary]> {
        self.items.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListManagedDataIdentifiersOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListManagedDataIdentifiersOutput");
        formatter.field("items", &self.items);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListManagedDataIdentifiersOutput`](crate::output::ListManagedDataIdentifiersOutput)
pub mod list_managed_data_identifiers_output {
    /// A builder for [`ListManagedDataIdentifiersOutput`](crate::output::ListManagedDataIdentifiersOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) items:
            std::option::Option<std::vec::Vec<crate::model::ManagedDataIdentifierSummary>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `items`.
        ///
        /// To override the contents of this collection use [`set_items`](Self::set_items).
        ///
        /// <p>An array of objects, one for each managed data identifier.</p>
        pub fn items(mut self, input: crate::model::ManagedDataIdentifierSummary) -> Self {
            let mut v = self.items.unwrap_or_default();
            v.push(input);
            self.items = Some(v);
            self
        }
        /// <p>An array of objects, one for each managed data identifier.</p>
        pub fn set_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::ManagedDataIdentifierSummary>>,
        ) -> Self {
            self.items = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListManagedDataIdentifiersOutput`](crate::output::ListManagedDataIdentifiersOutput)
        pub fn build(self) -> crate::output::ListManagedDataIdentifiersOutput {
            crate::output::ListManagedDataIdentifiersOutput {
                items: self.items,
                next_token: self.next_token,
            }
        }
    }
}
impl ListManagedDataIdentifiersOutput {
    /// Creates a new builder-style object to manufacture [`ListManagedDataIdentifiersOutput`](crate::output::ListManagedDataIdentifiersOutput)
    pub fn builder() -> crate::output::list_managed_data_identifiers_output::Builder {
        crate::output::list_managed_data_identifiers_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListInvitationsOutput {
    /// <p>An array of objects, one for each invitation that was received by the account.</p>
    pub invitations: std::option::Option<std::vec::Vec<crate::model::Invitation>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListInvitationsOutput {
    /// <p>An array of objects, one for each invitation that was received by the account.</p>
    pub fn invitations(&self) -> std::option::Option<&[crate::model::Invitation]> {
        self.invitations.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListInvitationsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListInvitationsOutput");
        formatter.field("invitations", &self.invitations);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListInvitationsOutput`](crate::output::ListInvitationsOutput)
pub mod list_invitations_output {
    /// A builder for [`ListInvitationsOutput`](crate::output::ListInvitationsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) invitations: std::option::Option<std::vec::Vec<crate::model::Invitation>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `invitations`.
        ///
        /// To override the contents of this collection use [`set_invitations`](Self::set_invitations).
        ///
        /// <p>An array of objects, one for each invitation that was received by the account.</p>
        pub fn invitations(mut self, input: crate::model::Invitation) -> Self {
            let mut v = self.invitations.unwrap_or_default();
            v.push(input);
            self.invitations = Some(v);
            self
        }
        /// <p>An array of objects, one for each invitation that was received by the account.</p>
        pub fn set_invitations(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Invitation>>,
        ) -> Self {
            self.invitations = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListInvitationsOutput`](crate::output::ListInvitationsOutput)
        pub fn build(self) -> crate::output::ListInvitationsOutput {
            crate::output::ListInvitationsOutput {
                invitations: self.invitations,
                next_token: self.next_token,
            }
        }
    }
}
impl ListInvitationsOutput {
    /// Creates a new builder-style object to manufacture [`ListInvitationsOutput`](crate::output::ListInvitationsOutput)
    pub fn builder() -> crate::output::list_invitations_output::Builder {
        crate::output::list_invitations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListFindingsFiltersOutput {
    /// <p>An array of objects, one for each filter that's associated with the account.</p>
    pub findings_filter_list_items:
        std::option::Option<std::vec::Vec<crate::model::FindingsFilterListItem>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListFindingsFiltersOutput {
    /// <p>An array of objects, one for each filter that's associated with the account.</p>
    pub fn findings_filter_list_items(
        &self,
    ) -> std::option::Option<&[crate::model::FindingsFilterListItem]> {
        self.findings_filter_list_items.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListFindingsFiltersOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListFindingsFiltersOutput");
        formatter.field(
            "findings_filter_list_items",
            &self.findings_filter_list_items,
        );
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListFindingsFiltersOutput`](crate::output::ListFindingsFiltersOutput)
pub mod list_findings_filters_output {
    /// A builder for [`ListFindingsFiltersOutput`](crate::output::ListFindingsFiltersOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) findings_filter_list_items:
            std::option::Option<std::vec::Vec<crate::model::FindingsFilterListItem>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `findings_filter_list_items`.
        ///
        /// To override the contents of this collection use [`set_findings_filter_list_items`](Self::set_findings_filter_list_items).
        ///
        /// <p>An array of objects, one for each filter that's associated with the account.</p>
        pub fn findings_filter_list_items(
            mut self,
            input: crate::model::FindingsFilterListItem,
        ) -> Self {
            let mut v = self.findings_filter_list_items.unwrap_or_default();
            v.push(input);
            self.findings_filter_list_items = Some(v);
            self
        }
        /// <p>An array of objects, one for each filter that's associated with the account.</p>
        pub fn set_findings_filter_list_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::FindingsFilterListItem>>,
        ) -> Self {
            self.findings_filter_list_items = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListFindingsFiltersOutput`](crate::output::ListFindingsFiltersOutput)
        pub fn build(self) -> crate::output::ListFindingsFiltersOutput {
            crate::output::ListFindingsFiltersOutput {
                findings_filter_list_items: self.findings_filter_list_items,
                next_token: self.next_token,
            }
        }
    }
}
impl ListFindingsFiltersOutput {
    /// Creates a new builder-style object to manufacture [`ListFindingsFiltersOutput`](crate::output::ListFindingsFiltersOutput)
    pub fn builder() -> crate::output::list_findings_filters_output::Builder {
        crate::output::list_findings_filters_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListFindingsOutput {
    /// <p>An array of strings, where each string is the unique identifier for a finding that meets the filter criteria specified in the request.</p>
    pub finding_ids: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListFindingsOutput {
    /// <p>An array of strings, where each string is the unique identifier for a finding that meets the filter criteria specified in the request.</p>
    pub fn finding_ids(&self) -> std::option::Option<&[std::string::String]> {
        self.finding_ids.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListFindingsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListFindingsOutput");
        formatter.field("finding_ids", &self.finding_ids);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListFindingsOutput`](crate::output::ListFindingsOutput)
pub mod list_findings_output {
    /// A builder for [`ListFindingsOutput`](crate::output::ListFindingsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) finding_ids: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `finding_ids`.
        ///
        /// To override the contents of this collection use [`set_finding_ids`](Self::set_finding_ids).
        ///
        /// <p>An array of strings, where each string is the unique identifier for a finding that meets the filter criteria specified in the request.</p>
        pub fn finding_ids(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.finding_ids.unwrap_or_default();
            v.push(input.into());
            self.finding_ids = Some(v);
            self
        }
        /// <p>An array of strings, where each string is the unique identifier for a finding that meets the filter criteria specified in the request.</p>
        pub fn set_finding_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.finding_ids = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListFindingsOutput`](crate::output::ListFindingsOutput)
        pub fn build(self) -> crate::output::ListFindingsOutput {
            crate::output::ListFindingsOutput {
                finding_ids: self.finding_ids,
                next_token: self.next_token,
            }
        }
    }
}
impl ListFindingsOutput {
    /// Creates a new builder-style object to manufacture [`ListFindingsOutput`](crate::output::ListFindingsOutput)
    pub fn builder() -> crate::output::list_findings_output::Builder {
        crate::output::list_findings_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListCustomDataIdentifiersOutput {
    /// <p>An array of objects, one for each custom data identifier.</p>
    pub items: std::option::Option<std::vec::Vec<crate::model::CustomDataIdentifierSummary>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListCustomDataIdentifiersOutput {
    /// <p>An array of objects, one for each custom data identifier.</p>
    pub fn items(&self) -> std::option::Option<&[crate::model::CustomDataIdentifierSummary]> {
        self.items.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListCustomDataIdentifiersOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListCustomDataIdentifiersOutput");
        formatter.field("items", &self.items);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListCustomDataIdentifiersOutput`](crate::output::ListCustomDataIdentifiersOutput)
pub mod list_custom_data_identifiers_output {
    /// A builder for [`ListCustomDataIdentifiersOutput`](crate::output::ListCustomDataIdentifiersOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) items:
            std::option::Option<std::vec::Vec<crate::model::CustomDataIdentifierSummary>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `items`.
        ///
        /// To override the contents of this collection use [`set_items`](Self::set_items).
        ///
        /// <p>An array of objects, one for each custom data identifier.</p>
        pub fn items(mut self, input: crate::model::CustomDataIdentifierSummary) -> Self {
            let mut v = self.items.unwrap_or_default();
            v.push(input);
            self.items = Some(v);
            self
        }
        /// <p>An array of objects, one for each custom data identifier.</p>
        pub fn set_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::CustomDataIdentifierSummary>>,
        ) -> Self {
            self.items = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListCustomDataIdentifiersOutput`](crate::output::ListCustomDataIdentifiersOutput)
        pub fn build(self) -> crate::output::ListCustomDataIdentifiersOutput {
            crate::output::ListCustomDataIdentifiersOutput {
                items: self.items,
                next_token: self.next_token,
            }
        }
    }
}
impl ListCustomDataIdentifiersOutput {
    /// Creates a new builder-style object to manufacture [`ListCustomDataIdentifiersOutput`](crate::output::ListCustomDataIdentifiersOutput)
    pub fn builder() -> crate::output::list_custom_data_identifiers_output::Builder {
        crate::output::list_custom_data_identifiers_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct ListClassificationJobsOutput {
    /// <p>An array of objects, one for each job that meets the filter criteria specified in the request.</p>
    pub items: std::option::Option<std::vec::Vec<crate::model::JobSummary>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl ListClassificationJobsOutput {
    /// <p>An array of objects, one for each job that meets the filter criteria specified in the request.</p>
    pub fn items(&self) -> std::option::Option<&[crate::model::JobSummary]> {
        self.items.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for ListClassificationJobsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("ListClassificationJobsOutput");
        formatter.field("items", &self.items);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`ListClassificationJobsOutput`](crate::output::ListClassificationJobsOutput)
pub mod list_classification_jobs_output {
    /// A builder for [`ListClassificationJobsOutput`](crate::output::ListClassificationJobsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) items: std::option::Option<std::vec::Vec<crate::model::JobSummary>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `items`.
        ///
        /// To override the contents of this collection use [`set_items`](Self::set_items).
        ///
        /// <p>An array of objects, one for each job that meets the filter criteria specified in the request.</p>
        pub fn items(mut self, input: crate::model::JobSummary) -> Self {
            let mut v = self.items.unwrap_or_default();
            v.push(input);
            self.items = Some(v);
            self
        }
        /// <p>An array of objects, one for each job that meets the filter criteria specified in the request.</p>
        pub fn set_items(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::JobSummary>>,
        ) -> Self {
            self.items = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`ListClassificationJobsOutput`](crate::output::ListClassificationJobsOutput)
        pub fn build(self) -> crate::output::ListClassificationJobsOutput {
            crate::output::ListClassificationJobsOutput {
                items: self.items,
                next_token: self.next_token,
            }
        }
    }
}
impl ListClassificationJobsOutput {
    /// Creates a new builder-style object to manufacture [`ListClassificationJobsOutput`](crate::output::ListClassificationJobsOutput)
    pub fn builder() -> crate::output::list_classification_jobs_output::Builder {
        crate::output::list_classification_jobs_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetUsageTotalsOutput {
    /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
    pub time_range: std::option::Option<crate::model::TimeRange>,
    /// <p>An array of objects that contains the results of the query. Each object contains the data for a specific usage metric.</p>
    pub usage_totals: std::option::Option<std::vec::Vec<crate::model::UsageTotal>>,
}
impl GetUsageTotalsOutput {
    /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
    pub fn time_range(&self) -> std::option::Option<&crate::model::TimeRange> {
        self.time_range.as_ref()
    }
    /// <p>An array of objects that contains the results of the query. Each object contains the data for a specific usage metric.</p>
    pub fn usage_totals(&self) -> std::option::Option<&[crate::model::UsageTotal]> {
        self.usage_totals.as_deref()
    }
}
impl std::fmt::Debug for GetUsageTotalsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetUsageTotalsOutput");
        formatter.field("time_range", &self.time_range);
        formatter.field("usage_totals", &self.usage_totals);
        formatter.finish()
    }
}
/// See [`GetUsageTotalsOutput`](crate::output::GetUsageTotalsOutput)
pub mod get_usage_totals_output {
    /// A builder for [`GetUsageTotalsOutput`](crate::output::GetUsageTotalsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) time_range: std::option::Option<crate::model::TimeRange>,
        pub(crate) usage_totals: std::option::Option<std::vec::Vec<crate::model::UsageTotal>>,
    }
    impl Builder {
        /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
        pub fn time_range(mut self, input: crate::model::TimeRange) -> Self {
            self.time_range = Some(input);
            self
        }
        /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
        pub fn set_time_range(
            mut self,
            input: std::option::Option<crate::model::TimeRange>,
        ) -> Self {
            self.time_range = input;
            self
        }
        /// Appends an item to `usage_totals`.
        ///
        /// To override the contents of this collection use [`set_usage_totals`](Self::set_usage_totals).
        ///
        /// <p>An array of objects that contains the results of the query. Each object contains the data for a specific usage metric.</p>
        pub fn usage_totals(mut self, input: crate::model::UsageTotal) -> Self {
            let mut v = self.usage_totals.unwrap_or_default();
            v.push(input);
            self.usage_totals = Some(v);
            self
        }
        /// <p>An array of objects that contains the results of the query. Each object contains the data for a specific usage metric.</p>
        pub fn set_usage_totals(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UsageTotal>>,
        ) -> Self {
            self.usage_totals = input;
            self
        }
        /// Consumes the builder and constructs a [`GetUsageTotalsOutput`](crate::output::GetUsageTotalsOutput)
        pub fn build(self) -> crate::output::GetUsageTotalsOutput {
            crate::output::GetUsageTotalsOutput {
                time_range: self.time_range,
                usage_totals: self.usage_totals,
            }
        }
    }
}
impl GetUsageTotalsOutput {
    /// Creates a new builder-style object to manufacture [`GetUsageTotalsOutput`](crate::output::GetUsageTotalsOutput)
    pub fn builder() -> crate::output::get_usage_totals_output::Builder {
        crate::output::get_usage_totals_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetUsageStatisticsOutput {
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
    /// <p>An array of objects that contains the results of the query. Each object contains the data for an account that meets the filter criteria specified in the request.</p>
    pub records: std::option::Option<std::vec::Vec<crate::model::UsageRecord>>,
    /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
    pub time_range: std::option::Option<crate::model::TimeRange>,
}
impl GetUsageStatisticsOutput {
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
    /// <p>An array of objects that contains the results of the query. Each object contains the data for an account that meets the filter criteria specified in the request.</p>
    pub fn records(&self) -> std::option::Option<&[crate::model::UsageRecord]> {
        self.records.as_deref()
    }
    /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
    pub fn time_range(&self) -> std::option::Option<&crate::model::TimeRange> {
        self.time_range.as_ref()
    }
}
impl std::fmt::Debug for GetUsageStatisticsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetUsageStatisticsOutput");
        formatter.field("next_token", &self.next_token);
        formatter.field("records", &self.records);
        formatter.field("time_range", &self.time_range);
        formatter.finish()
    }
}
/// See [`GetUsageStatisticsOutput`](crate::output::GetUsageStatisticsOutput)
pub mod get_usage_statistics_output {
    /// A builder for [`GetUsageStatisticsOutput`](crate::output::GetUsageStatisticsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) next_token: std::option::Option<std::string::String>,
        pub(crate) records: std::option::Option<std::vec::Vec<crate::model::UsageRecord>>,
        pub(crate) time_range: std::option::Option<crate::model::TimeRange>,
    }
    impl Builder {
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 `records`.
        ///
        /// To override the contents of this collection use [`set_records`](Self::set_records).
        ///
        /// <p>An array of objects that contains the results of the query. Each object contains the data for an account that meets the filter criteria specified in the request.</p>
        pub fn records(mut self, input: crate::model::UsageRecord) -> Self {
            let mut v = self.records.unwrap_or_default();
            v.push(input);
            self.records = Some(v);
            self
        }
        /// <p>An array of objects that contains the results of the query. Each object contains the data for an account that meets the filter criteria specified in the request.</p>
        pub fn set_records(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UsageRecord>>,
        ) -> Self {
            self.records = input;
            self
        }
        /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
        pub fn time_range(mut self, input: crate::model::TimeRange) -> Self {
            self.time_range = Some(input);
            self
        }
        /// <p>The inclusive time period that the usage data applies to. Possible values are: MONTH_TO_DATE, for the current calendar month to date; and, PAST_30_DAYS, for the preceding 30 days.</p>
        pub fn set_time_range(
            mut self,
            input: std::option::Option<crate::model::TimeRange>,
        ) -> Self {
            self.time_range = input;
            self
        }
        /// Consumes the builder and constructs a [`GetUsageStatisticsOutput`](crate::output::GetUsageStatisticsOutput)
        pub fn build(self) -> crate::output::GetUsageStatisticsOutput {
            crate::output::GetUsageStatisticsOutput {
                next_token: self.next_token,
                records: self.records,
                time_range: self.time_range,
            }
        }
    }
}
impl GetUsageStatisticsOutput {
    /// Creates a new builder-style object to manufacture [`GetUsageStatisticsOutput`](crate::output::GetUsageStatisticsOutput)
    pub fn builder() -> crate::output::get_usage_statistics_output::Builder {
        crate::output::get_usage_statistics_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetMemberOutput {
    /// <p>The Amazon Web Services account ID for the account.</p>
    pub account_id: std::option::Option<std::string::String>,
    /// <p>The Amazon Web Services account ID for the administrator account.</p>
    pub administrator_account_id: std::option::Option<std::string::String>,
    /// <p>The Amazon Resource Name (ARN) of the account.</p>
    pub arn: std::option::Option<std::string::String>,
    /// <p>The email address for the account.</p>
    pub email: std::option::Option<std::string::String>,
    /// <p>The date and time, in UTC and extended ISO 8601 format, when an Amazon Macie membership invitation was last sent to the account. This value is null if an invitation hasn't been sent to the account.</p>
    pub invited_at: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. This property has been replaced by the administratorAccountId property and is retained only for backward compatibility.</p>
    pub master_account_id: std::option::Option<std::string::String>,
    /// <p>The current status of the relationship between the account and the administrator account.</p>
    pub relationship_status: std::option::Option<crate::model::RelationshipStatus>,
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the member account in Amazon Macie.</p>
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
    /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the relationship between the account and the administrator account.</p>
    pub updated_at: std::option::Option<aws_smithy_types::DateTime>,
}
impl GetMemberOutput {
    /// <p>The Amazon Web Services account ID for the account.</p>
    pub fn account_id(&self) -> std::option::Option<&str> {
        self.account_id.as_deref()
    }
    /// <p>The Amazon Web Services account ID for the administrator account.</p>
    pub fn administrator_account_id(&self) -> std::option::Option<&str> {
        self.administrator_account_id.as_deref()
    }
    /// <p>The Amazon Resource Name (ARN) of the account.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The email address for the account.</p>
    pub fn email(&self) -> std::option::Option<&str> {
        self.email.as_deref()
    }
    /// <p>The date and time, in UTC and extended ISO 8601 format, when an Amazon Macie membership invitation was last sent to the account. This value is null if an invitation hasn't been sent to the account.</p>
    pub fn invited_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.invited_at.as_ref()
    }
    /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. This property has been replaced by the administratorAccountId property and is retained only for backward compatibility.</p>
    pub fn master_account_id(&self) -> std::option::Option<&str> {
        self.master_account_id.as_deref()
    }
    /// <p>The current status of the relationship between the account and the administrator account.</p>
    pub fn relationship_status(&self) -> std::option::Option<&crate::model::RelationshipStatus> {
        self.relationship_status.as_ref()
    }
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the member account in Amazon Macie.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
    /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the relationship between the account and the administrator account.</p>
    pub fn updated_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.updated_at.as_ref()
    }
}
impl std::fmt::Debug for GetMemberOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetMemberOutput");
        formatter.field("account_id", &self.account_id);
        formatter.field("administrator_account_id", &self.administrator_account_id);
        formatter.field("arn", &self.arn);
        formatter.field("email", &self.email);
        formatter.field("invited_at", &self.invited_at);
        formatter.field("master_account_id", &self.master_account_id);
        formatter.field("relationship_status", &self.relationship_status);
        formatter.field("tags", &self.tags);
        formatter.field("updated_at", &self.updated_at);
        formatter.finish()
    }
}
/// See [`GetMemberOutput`](crate::output::GetMemberOutput)
pub mod get_member_output {
    /// A builder for [`GetMemberOutput`](crate::output::GetMemberOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) account_id: std::option::Option<std::string::String>,
        pub(crate) administrator_account_id: std::option::Option<std::string::String>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) email: std::option::Option<std::string::String>,
        pub(crate) invited_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) master_account_id: std::option::Option<std::string::String>,
        pub(crate) relationship_status: std::option::Option<crate::model::RelationshipStatus>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
        pub(crate) updated_at: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        /// <p>The Amazon Web Services account ID for the account.</p>
        pub fn account_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.account_id = Some(input.into());
            self
        }
        /// <p>The Amazon Web Services account ID for the account.</p>
        pub fn set_account_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.account_id = input;
            self
        }
        /// <p>The Amazon Web Services account ID for the administrator account.</p>
        pub fn administrator_account_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.administrator_account_id = Some(input.into());
            self
        }
        /// <p>The Amazon Web Services account ID for the administrator account.</p>
        pub fn set_administrator_account_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.administrator_account_id = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the account.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the account.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The email address for the account.</p>
        pub fn email(mut self, input: impl Into<std::string::String>) -> Self {
            self.email = Some(input.into());
            self
        }
        /// <p>The email address for the account.</p>
        pub fn set_email(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.email = input;
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when an Amazon Macie membership invitation was last sent to the account. This value is null if an invitation hasn't been sent to the account.</p>
        pub fn invited_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.invited_at = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when an Amazon Macie membership invitation was last sent to the account. This value is null if an invitation hasn't been sent to the account.</p>
        pub fn set_invited_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.invited_at = input;
            self
        }
        /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. This property has been replaced by the administratorAccountId property and is retained only for backward compatibility.</p>
        pub fn master_account_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.master_account_id = Some(input.into());
            self
        }
        /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. This property has been replaced by the administratorAccountId property and is retained only for backward compatibility.</p>
        pub fn set_master_account_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.master_account_id = input;
            self
        }
        /// <p>The current status of the relationship between the account and the administrator account.</p>
        pub fn relationship_status(mut self, input: crate::model::RelationshipStatus) -> Self {
            self.relationship_status = Some(input);
            self
        }
        /// <p>The current status of the relationship between the account and the administrator account.</p>
        pub fn set_relationship_status(
            mut self,
            input: std::option::Option<crate::model::RelationshipStatus>,
        ) -> Self {
            self.relationship_status = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the member account in Amazon Macie.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the member account in Amazon Macie.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the relationship between the account and the administrator account.</p>
        pub fn updated_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.updated_at = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the relationship between the account and the administrator account.</p>
        pub fn set_updated_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.updated_at = input;
            self
        }
        /// Consumes the builder and constructs a [`GetMemberOutput`](crate::output::GetMemberOutput)
        pub fn build(self) -> crate::output::GetMemberOutput {
            crate::output::GetMemberOutput {
                account_id: self.account_id,
                administrator_account_id: self.administrator_account_id,
                arn: self.arn,
                email: self.email,
                invited_at: self.invited_at,
                master_account_id: self.master_account_id,
                relationship_status: self.relationship_status,
                tags: self.tags,
                updated_at: self.updated_at,
            }
        }
    }
}
impl GetMemberOutput {
    /// Creates a new builder-style object to manufacture [`GetMemberOutput`](crate::output::GetMemberOutput)
    pub fn builder() -> crate::output::get_member_output::Builder {
        crate::output::get_member_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetMasterAccountOutput {
    /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. If the accounts are associated by a Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
    pub master: std::option::Option<crate::model::Invitation>,
}
impl GetMasterAccountOutput {
    /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. If the accounts are associated by a Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
    pub fn master(&self) -> std::option::Option<&crate::model::Invitation> {
        self.master.as_ref()
    }
}
impl std::fmt::Debug for GetMasterAccountOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetMasterAccountOutput");
        formatter.field("master", &self.master);
        formatter.finish()
    }
}
/// See [`GetMasterAccountOutput`](crate::output::GetMasterAccountOutput)
pub mod get_master_account_output {
    /// A builder for [`GetMasterAccountOutput`](crate::output::GetMasterAccountOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) master: std::option::Option<crate::model::Invitation>,
    }
    impl Builder {
        /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. If the accounts are associated by a Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
        pub fn master(mut self, input: crate::model::Invitation) -> Self {
            self.master = Some(input);
            self
        }
        /// <p>(Deprecated) The Amazon Web Services account ID for the administrator account. If the accounts are associated by a Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
        pub fn set_master(mut self, input: std::option::Option<crate::model::Invitation>) -> Self {
            self.master = input;
            self
        }
        /// Consumes the builder and constructs a [`GetMasterAccountOutput`](crate::output::GetMasterAccountOutput)
        pub fn build(self) -> crate::output::GetMasterAccountOutput {
            crate::output::GetMasterAccountOutput {
                master: self.master,
            }
        }
    }
}
impl GetMasterAccountOutput {
    /// Creates a new builder-style object to manufacture [`GetMasterAccountOutput`](crate::output::GetMasterAccountOutput)
    pub fn builder() -> crate::output::get_master_account_output::Builder {
        crate::output::get_master_account_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetMacieSessionOutput {
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the Amazon Macie account was created.</p>
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The frequency with which Amazon Macie publishes updates to policy findings for the account. This includes publishing updates to Security Hub and Amazon EventBridge (formerly called Amazon CloudWatch Events).</p>
    pub finding_publishing_frequency: std::option::Option<crate::model::FindingPublishingFrequency>,
    /// <p>The Amazon Resource Name (ARN) of the service-linked role that allows Amazon Macie to monitor and analyze data in Amazon Web Services resources for the account.</p>
    pub service_role: std::option::Option<std::string::String>,
    /// <p>The current status of the Amazon Macie account. Possible values are: PAUSED, the account is enabled but all Macie activities are suspended (paused) for the account; and, ENABLED, the account is enabled and all Macie activities are enabled for the account.</p>
    pub status: std::option::Option<crate::model::MacieStatus>,
    /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the Amazon Macie account.</p>
    pub updated_at: std::option::Option<aws_smithy_types::DateTime>,
}
impl GetMacieSessionOutput {
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the Amazon Macie account was created.</p>
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    /// <p>The frequency with which Amazon Macie publishes updates to policy findings for the account. This includes publishing updates to Security Hub and Amazon EventBridge (formerly called Amazon CloudWatch Events).</p>
    pub fn finding_publishing_frequency(
        &self,
    ) -> std::option::Option<&crate::model::FindingPublishingFrequency> {
        self.finding_publishing_frequency.as_ref()
    }
    /// <p>The Amazon Resource Name (ARN) of the service-linked role that allows Amazon Macie to monitor and analyze data in Amazon Web Services resources for the account.</p>
    pub fn service_role(&self) -> std::option::Option<&str> {
        self.service_role.as_deref()
    }
    /// <p>The current status of the Amazon Macie account. Possible values are: PAUSED, the account is enabled but all Macie activities are suspended (paused) for the account; and, ENABLED, the account is enabled and all Macie activities are enabled for the account.</p>
    pub fn status(&self) -> std::option::Option<&crate::model::MacieStatus> {
        self.status.as_ref()
    }
    /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the Amazon Macie account.</p>
    pub fn updated_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.updated_at.as_ref()
    }
}
impl std::fmt::Debug for GetMacieSessionOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetMacieSessionOutput");
        formatter.field("created_at", &self.created_at);
        formatter.field(
            "finding_publishing_frequency",
            &self.finding_publishing_frequency,
        );
        formatter.field("service_role", &self.service_role);
        formatter.field("status", &self.status);
        formatter.field("updated_at", &self.updated_at);
        formatter.finish()
    }
}
/// See [`GetMacieSessionOutput`](crate::output::GetMacieSessionOutput)
pub mod get_macie_session_output {
    /// A builder for [`GetMacieSessionOutput`](crate::output::GetMacieSessionOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) finding_publishing_frequency:
            std::option::Option<crate::model::FindingPublishingFrequency>,
        pub(crate) service_role: std::option::Option<std::string::String>,
        pub(crate) status: std::option::Option<crate::model::MacieStatus>,
        pub(crate) updated_at: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the Amazon Macie account was created.</p>
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the Amazon Macie account was created.</p>
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        /// <p>The frequency with which Amazon Macie publishes updates to policy findings for the account. This includes publishing updates to Security Hub and Amazon EventBridge (formerly called Amazon CloudWatch Events).</p>
        pub fn finding_publishing_frequency(
            mut self,
            input: crate::model::FindingPublishingFrequency,
        ) -> Self {
            self.finding_publishing_frequency = Some(input);
            self
        }
        /// <p>The frequency with which Amazon Macie publishes updates to policy findings for the account. This includes publishing updates to Security Hub and Amazon EventBridge (formerly called Amazon CloudWatch Events).</p>
        pub fn set_finding_publishing_frequency(
            mut self,
            input: std::option::Option<crate::model::FindingPublishingFrequency>,
        ) -> Self {
            self.finding_publishing_frequency = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the service-linked role that allows Amazon Macie to monitor and analyze data in Amazon Web Services resources for the account.</p>
        pub fn service_role(mut self, input: impl Into<std::string::String>) -> Self {
            self.service_role = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the service-linked role that allows Amazon Macie to monitor and analyze data in Amazon Web Services resources for the account.</p>
        pub fn set_service_role(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.service_role = input;
            self
        }
        /// <p>The current status of the Amazon Macie account. Possible values are: PAUSED, the account is enabled but all Macie activities are suspended (paused) for the account; and, ENABLED, the account is enabled and all Macie activities are enabled for the account.</p>
        pub fn status(mut self, input: crate::model::MacieStatus) -> Self {
            self.status = Some(input);
            self
        }
        /// <p>The current status of the Amazon Macie account. Possible values are: PAUSED, the account is enabled but all Macie activities are suspended (paused) for the account; and, ENABLED, the account is enabled and all Macie activities are enabled for the account.</p>
        pub fn set_status(mut self, input: std::option::Option<crate::model::MacieStatus>) -> Self {
            self.status = input;
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the Amazon Macie account.</p>
        pub fn updated_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.updated_at = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, of the most recent change to the status of the Amazon Macie account.</p>
        pub fn set_updated_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.updated_at = input;
            self
        }
        /// Consumes the builder and constructs a [`GetMacieSessionOutput`](crate::output::GetMacieSessionOutput)
        pub fn build(self) -> crate::output::GetMacieSessionOutput {
            crate::output::GetMacieSessionOutput {
                created_at: self.created_at,
                finding_publishing_frequency: self.finding_publishing_frequency,
                service_role: self.service_role,
                status: self.status,
                updated_at: self.updated_at,
            }
        }
    }
}
impl GetMacieSessionOutput {
    /// Creates a new builder-style object to manufacture [`GetMacieSessionOutput`](crate::output::GetMacieSessionOutput)
    pub fn builder() -> crate::output::get_macie_session_output::Builder {
        crate::output::get_macie_session_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetInvitationsCountOutput {
    /// <p>The total number of invitations that were received by the account, not including the currently accepted invitation.</p>
    pub invitations_count: i64,
}
impl GetInvitationsCountOutput {
    /// <p>The total number of invitations that were received by the account, not including the currently accepted invitation.</p>
    pub fn invitations_count(&self) -> i64 {
        self.invitations_count
    }
}
impl std::fmt::Debug for GetInvitationsCountOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetInvitationsCountOutput");
        formatter.field("invitations_count", &self.invitations_count);
        formatter.finish()
    }
}
/// See [`GetInvitationsCountOutput`](crate::output::GetInvitationsCountOutput)
pub mod get_invitations_count_output {
    /// A builder for [`GetInvitationsCountOutput`](crate::output::GetInvitationsCountOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) invitations_count: std::option::Option<i64>,
    }
    impl Builder {
        /// <p>The total number of invitations that were received by the account, not including the currently accepted invitation.</p>
        pub fn invitations_count(mut self, input: i64) -> Self {
            self.invitations_count = Some(input);
            self
        }
        /// <p>The total number of invitations that were received by the account, not including the currently accepted invitation.</p>
        pub fn set_invitations_count(mut self, input: std::option::Option<i64>) -> Self {
            self.invitations_count = input;
            self
        }
        /// Consumes the builder and constructs a [`GetInvitationsCountOutput`](crate::output::GetInvitationsCountOutput)
        pub fn build(self) -> crate::output::GetInvitationsCountOutput {
            crate::output::GetInvitationsCountOutput {
                invitations_count: self.invitations_count.unwrap_or_default(),
            }
        }
    }
}
impl GetInvitationsCountOutput {
    /// Creates a new builder-style object to manufacture [`GetInvitationsCountOutput`](crate::output::GetInvitationsCountOutput)
    pub fn builder() -> crate::output::get_invitations_count_output::Builder {
        crate::output::get_invitations_count_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetFindingStatisticsOutput {
    /// <p>An array of objects, one for each group of findings that meet the filter criteria specified in the request.</p>
    pub counts_by_group: std::option::Option<std::vec::Vec<crate::model::GroupCount>>,
}
impl GetFindingStatisticsOutput {
    /// <p>An array of objects, one for each group of findings that meet the filter criteria specified in the request.</p>
    pub fn counts_by_group(&self) -> std::option::Option<&[crate::model::GroupCount]> {
        self.counts_by_group.as_deref()
    }
}
impl std::fmt::Debug for GetFindingStatisticsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetFindingStatisticsOutput");
        formatter.field("counts_by_group", &self.counts_by_group);
        formatter.finish()
    }
}
/// See [`GetFindingStatisticsOutput`](crate::output::GetFindingStatisticsOutput)
pub mod get_finding_statistics_output {
    /// A builder for [`GetFindingStatisticsOutput`](crate::output::GetFindingStatisticsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) counts_by_group: std::option::Option<std::vec::Vec<crate::model::GroupCount>>,
    }
    impl Builder {
        /// Appends an item to `counts_by_group`.
        ///
        /// To override the contents of this collection use [`set_counts_by_group`](Self::set_counts_by_group).
        ///
        /// <p>An array of objects, one for each group of findings that meet the filter criteria specified in the request.</p>
        pub fn counts_by_group(mut self, input: crate::model::GroupCount) -> Self {
            let mut v = self.counts_by_group.unwrap_or_default();
            v.push(input);
            self.counts_by_group = Some(v);
            self
        }
        /// <p>An array of objects, one for each group of findings that meet the filter criteria specified in the request.</p>
        pub fn set_counts_by_group(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::GroupCount>>,
        ) -> Self {
            self.counts_by_group = input;
            self
        }
        /// Consumes the builder and constructs a [`GetFindingStatisticsOutput`](crate::output::GetFindingStatisticsOutput)
        pub fn build(self) -> crate::output::GetFindingStatisticsOutput {
            crate::output::GetFindingStatisticsOutput {
                counts_by_group: self.counts_by_group,
            }
        }
    }
}
impl GetFindingStatisticsOutput {
    /// Creates a new builder-style object to manufacture [`GetFindingStatisticsOutput`](crate::output::GetFindingStatisticsOutput)
    pub fn builder() -> crate::output::get_finding_statistics_output::Builder {
        crate::output::get_finding_statistics_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetFindingsPublicationConfigurationOutput {
    /// <p>The configuration settings that determine which findings are published to Security Hub.</p>
    pub security_hub_configuration: std::option::Option<crate::model::SecurityHubConfiguration>,
}
impl GetFindingsPublicationConfigurationOutput {
    /// <p>The configuration settings that determine which findings are published to Security Hub.</p>
    pub fn security_hub_configuration(
        &self,
    ) -> std::option::Option<&crate::model::SecurityHubConfiguration> {
        self.security_hub_configuration.as_ref()
    }
}
impl std::fmt::Debug for GetFindingsPublicationConfigurationOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetFindingsPublicationConfigurationOutput");
        formatter.field(
            "security_hub_configuration",
            &self.security_hub_configuration,
        );
        formatter.finish()
    }
}
/// See [`GetFindingsPublicationConfigurationOutput`](crate::output::GetFindingsPublicationConfigurationOutput)
pub mod get_findings_publication_configuration_output {
    /// A builder for [`GetFindingsPublicationConfigurationOutput`](crate::output::GetFindingsPublicationConfigurationOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) security_hub_configuration:
            std::option::Option<crate::model::SecurityHubConfiguration>,
    }
    impl Builder {
        /// <p>The configuration settings that determine which findings are published to Security Hub.</p>
        pub fn security_hub_configuration(
            mut self,
            input: crate::model::SecurityHubConfiguration,
        ) -> Self {
            self.security_hub_configuration = Some(input);
            self
        }
        /// <p>The configuration settings that determine which findings are published to Security Hub.</p>
        pub fn set_security_hub_configuration(
            mut self,
            input: std::option::Option<crate::model::SecurityHubConfiguration>,
        ) -> Self {
            self.security_hub_configuration = input;
            self
        }
        /// Consumes the builder and constructs a [`GetFindingsPublicationConfigurationOutput`](crate::output::GetFindingsPublicationConfigurationOutput)
        pub fn build(self) -> crate::output::GetFindingsPublicationConfigurationOutput {
            crate::output::GetFindingsPublicationConfigurationOutput {
                security_hub_configuration: self.security_hub_configuration,
            }
        }
    }
}
impl GetFindingsPublicationConfigurationOutput {
    /// Creates a new builder-style object to manufacture [`GetFindingsPublicationConfigurationOutput`](crate::output::GetFindingsPublicationConfigurationOutput)
    pub fn builder() -> crate::output::get_findings_publication_configuration_output::Builder {
        crate::output::get_findings_publication_configuration_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetFindingsFilterOutput {
    /// <p>The action that's performed on findings that meet the filter criteria (findingCriteria). Possible values are: ARCHIVE, suppress (automatically archive) the findings; and, NOOP, don't perform any action on the findings.</p>
    pub action: std::option::Option<crate::model::FindingsFilterAction>,
    /// <p>The Amazon Resource Name (ARN) of the filter.</p>
    pub arn: std::option::Option<std::string::String>,
    /// <p>The custom description of the filter.</p>
    pub description: std::option::Option<std::string::String>,
    /// <p>The criteria that's used to filter findings.</p>
    pub finding_criteria: std::option::Option<crate::model::FindingCriteria>,
    /// <p>The unique identifier for the filter.</p>
    pub id: std::option::Option<std::string::String>,
    /// <p>The custom name of the filter.</p>
    pub name: std::option::Option<std::string::String>,
    /// <p>The position of the filter in the list of saved filters on the Amazon Macie console. This value also determines the order in which the filter is applied to findings, relative to other filters that are also applied to the findings.</p>
    pub position: i32,
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the filter.</p>
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl GetFindingsFilterOutput {
    /// <p>The action that's performed on findings that meet the filter criteria (findingCriteria). Possible values are: ARCHIVE, suppress (automatically archive) the findings; and, NOOP, don't perform any action on the findings.</p>
    pub fn action(&self) -> std::option::Option<&crate::model::FindingsFilterAction> {
        self.action.as_ref()
    }
    /// <p>The Amazon Resource Name (ARN) of the filter.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The custom description of the filter.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The criteria that's used to filter findings.</p>
    pub fn finding_criteria(&self) -> std::option::Option<&crate::model::FindingCriteria> {
        self.finding_criteria.as_ref()
    }
    /// <p>The unique identifier for the filter.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>The custom name of the filter.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The position of the filter in the list of saved filters on the Amazon Macie console. This value also determines the order in which the filter is applied to findings, relative to other filters that are also applied to the findings.</p>
    pub fn position(&self) -> i32 {
        self.position
    }
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the filter.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
impl std::fmt::Debug for GetFindingsFilterOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetFindingsFilterOutput");
        formatter.field("action", &self.action);
        formatter.field("arn", &self.arn);
        formatter.field("description", &self.description);
        formatter.field("finding_criteria", &self.finding_criteria);
        formatter.field("id", &self.id);
        formatter.field("name", &self.name);
        formatter.field("position", &self.position);
        formatter.field("tags", &self.tags);
        formatter.finish()
    }
}
/// See [`GetFindingsFilterOutput`](crate::output::GetFindingsFilterOutput)
pub mod get_findings_filter_output {
    /// A builder for [`GetFindingsFilterOutput`](crate::output::GetFindingsFilterOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) action: std::option::Option<crate::model::FindingsFilterAction>,
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) finding_criteria: std::option::Option<crate::model::FindingCriteria>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) position: std::option::Option<i32>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The action that's performed on findings that meet the filter criteria (findingCriteria). Possible values are: ARCHIVE, suppress (automatically archive) the findings; and, NOOP, don't perform any action on the findings.</p>
        pub fn action(mut self, input: crate::model::FindingsFilterAction) -> Self {
            self.action = Some(input);
            self
        }
        /// <p>The action that's performed on findings that meet the filter criteria (findingCriteria). Possible values are: ARCHIVE, suppress (automatically archive) the findings; and, NOOP, don't perform any action on the findings.</p>
        pub fn set_action(
            mut self,
            input: std::option::Option<crate::model::FindingsFilterAction>,
        ) -> Self {
            self.action = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the filter.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the filter.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The custom description of the filter.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The custom description of the filter.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The criteria that's used to filter findings.</p>
        pub fn finding_criteria(mut self, input: crate::model::FindingCriteria) -> Self {
            self.finding_criteria = Some(input);
            self
        }
        /// <p>The criteria that's used to filter findings.</p>
        pub fn set_finding_criteria(
            mut self,
            input: std::option::Option<crate::model::FindingCriteria>,
        ) -> Self {
            self.finding_criteria = input;
            self
        }
        /// <p>The unique identifier for the filter.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The unique identifier for the filter.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// <p>The custom name of the filter.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The custom name of the filter.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The position of the filter in the list of saved filters on the Amazon Macie console. This value also determines the order in which the filter is applied to findings, relative to other filters that are also applied to the findings.</p>
        pub fn position(mut self, input: i32) -> Self {
            self.position = Some(input);
            self
        }
        /// <p>The position of the filter in the list of saved filters on the Amazon Macie console. This value also determines the order in which the filter is applied to findings, relative to other filters that are also applied to the findings.</p>
        pub fn set_position(mut self, input: std::option::Option<i32>) -> Self {
            self.position = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the filter.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the filter.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`GetFindingsFilterOutput`](crate::output::GetFindingsFilterOutput)
        pub fn build(self) -> crate::output::GetFindingsFilterOutput {
            crate::output::GetFindingsFilterOutput {
                action: self.action,
                arn: self.arn,
                description: self.description,
                finding_criteria: self.finding_criteria,
                id: self.id,
                name: self.name,
                position: self.position.unwrap_or_default(),
                tags: self.tags,
            }
        }
    }
}
impl GetFindingsFilterOutput {
    /// Creates a new builder-style object to manufacture [`GetFindingsFilterOutput`](crate::output::GetFindingsFilterOutput)
    pub fn builder() -> crate::output::get_findings_filter_output::Builder {
        crate::output::get_findings_filter_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetFindingsOutput {
    /// <p>An array of objects, one for each finding that meets the criteria specified in the request.</p>
    pub findings: std::option::Option<std::vec::Vec<crate::model::Finding>>,
}
impl GetFindingsOutput {
    /// <p>An array of objects, one for each finding that meets the criteria specified in the request.</p>
    pub fn findings(&self) -> std::option::Option<&[crate::model::Finding]> {
        self.findings.as_deref()
    }
}
impl std::fmt::Debug for GetFindingsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetFindingsOutput");
        formatter.field("findings", &self.findings);
        formatter.finish()
    }
}
/// See [`GetFindingsOutput`](crate::output::GetFindingsOutput)
pub mod get_findings_output {
    /// A builder for [`GetFindingsOutput`](crate::output::GetFindingsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) findings: std::option::Option<std::vec::Vec<crate::model::Finding>>,
    }
    impl Builder {
        /// Appends an item to `findings`.
        ///
        /// To override the contents of this collection use [`set_findings`](Self::set_findings).
        ///
        /// <p>An array of objects, one for each finding that meets the criteria specified in the request.</p>
        pub fn findings(mut self, input: crate::model::Finding) -> Self {
            let mut v = self.findings.unwrap_or_default();
            v.push(input);
            self.findings = Some(v);
            self
        }
        /// <p>An array of objects, one for each finding that meets the criteria specified in the request.</p>
        pub fn set_findings(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::Finding>>,
        ) -> Self {
            self.findings = input;
            self
        }
        /// Consumes the builder and constructs a [`GetFindingsOutput`](crate::output::GetFindingsOutput)
        pub fn build(self) -> crate::output::GetFindingsOutput {
            crate::output::GetFindingsOutput {
                findings: self.findings,
            }
        }
    }
}
impl GetFindingsOutput {
    /// Creates a new builder-style object to manufacture [`GetFindingsOutput`](crate::output::GetFindingsOutput)
    pub fn builder() -> crate::output::get_findings_output::Builder {
        crate::output::get_findings_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetCustomDataIdentifierOutput {
    /// <p>The Amazon Resource Name (ARN) of the custom data identifier.</p>
    pub arn: std::option::Option<std::string::String>,
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the custom data identifier was created.</p>
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>Specifies whether the custom data identifier was deleted. If you delete a custom data identifier, Amazon Macie doesn't delete it permanently. Instead, it soft deletes the identifier.</p>
    pub deleted: bool,
    /// <p>The custom description of the custom data identifier.</p>
    pub description: std::option::Option<std::string::String>,
    /// <p>The unique identifier for the custom data identifier.</p>
    pub id: std::option::Option<std::string::String>,
    /// <p>An array that lists specific character sequences (<i>ignore words</i>) to exclude from the results. If the text matched by the regular expression contains any string in this array, Amazon Macie ignores it. Ignore words are case sensitive.</p>
    pub ignore_words: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>An array that lists specific character sequences (<i>keywords</i>), one of which must be within proximity (maximumMatchDistance) of the regular expression to match. Keywords aren't case sensitive.</p>
    pub keywords: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The maximum number of characters that can exist between text that matches the regular expression and the character sequences specified by the keywords array. Amazon Macie includes or excludes a result based on the proximity of a keyword to text that matches the regular expression.</p>
    pub maximum_match_distance: i32,
    /// <p>The custom name of the custom data identifier.</p>
    pub name: std::option::Option<std::string::String>,
    /// <p>The regular expression (<i>regex</i>) that defines the pattern to match.</p>
    pub regex: std::option::Option<std::string::String>,
    /// <p>Specifies the severity that's assigned to findings that the custom data identifier produces, based on the number of occurrences of text that matches the custom data identifier's detection criteria. By default, Amazon Macie creates findings for S3 objects that contain at least one occurrence of text that matches the detection criteria, and Macie assigns the MEDIUM severity to those findings.</p>
    pub severity_levels: std::option::Option<std::vec::Vec<crate::model::SeverityLevel>>,
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the custom data identifier.</p>
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
}
impl GetCustomDataIdentifierOutput {
    /// <p>The Amazon Resource Name (ARN) of the custom data identifier.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the custom data identifier was created.</p>
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    /// <p>Specifies whether the custom data identifier was deleted. If you delete a custom data identifier, Amazon Macie doesn't delete it permanently. Instead, it soft deletes the identifier.</p>
    pub fn deleted(&self) -> bool {
        self.deleted
    }
    /// <p>The custom description of the custom data identifier.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The unique identifier for the custom data identifier.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
    /// <p>An array that lists specific character sequences (<i>ignore words</i>) to exclude from the results. If the text matched by the regular expression contains any string in this array, Amazon Macie ignores it. Ignore words are case sensitive.</p>
    pub fn ignore_words(&self) -> std::option::Option<&[std::string::String]> {
        self.ignore_words.as_deref()
    }
    /// <p>An array that lists specific character sequences (<i>keywords</i>), one of which must be within proximity (maximumMatchDistance) of the regular expression to match. Keywords aren't case sensitive.</p>
    pub fn keywords(&self) -> std::option::Option<&[std::string::String]> {
        self.keywords.as_deref()
    }
    /// <p>The maximum number of characters that can exist between text that matches the regular expression and the character sequences specified by the keywords array. Amazon Macie includes or excludes a result based on the proximity of a keyword to text that matches the regular expression.</p>
    pub fn maximum_match_distance(&self) -> i32 {
        self.maximum_match_distance
    }
    /// <p>The custom name of the custom data identifier.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The regular expression (<i>regex</i>) that defines the pattern to match.</p>
    pub fn regex(&self) -> std::option::Option<&str> {
        self.regex.as_deref()
    }
    /// <p>Specifies the severity that's assigned to findings that the custom data identifier produces, based on the number of occurrences of text that matches the custom data identifier's detection criteria. By default, Amazon Macie creates findings for S3 objects that contain at least one occurrence of text that matches the detection criteria, and Macie assigns the MEDIUM severity to those findings.</p>
    pub fn severity_levels(&self) -> std::option::Option<&[crate::model::SeverityLevel]> {
        self.severity_levels.as_deref()
    }
    /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the custom data identifier.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
}
impl std::fmt::Debug for GetCustomDataIdentifierOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetCustomDataIdentifierOutput");
        formatter.field("arn", &self.arn);
        formatter.field("created_at", &self.created_at);
        formatter.field("deleted", &self.deleted);
        formatter.field("description", &self.description);
        formatter.field("id", &self.id);
        formatter.field("ignore_words", &self.ignore_words);
        formatter.field("keywords", &self.keywords);
        formatter.field("maximum_match_distance", &self.maximum_match_distance);
        formatter.field("name", &self.name);
        formatter.field("regex", &self.regex);
        formatter.field("severity_levels", &self.severity_levels);
        formatter.field("tags", &self.tags);
        formatter.finish()
    }
}
/// See [`GetCustomDataIdentifierOutput`](crate::output::GetCustomDataIdentifierOutput)
pub mod get_custom_data_identifier_output {
    /// A builder for [`GetCustomDataIdentifierOutput`](crate::output::GetCustomDataIdentifierOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) deleted: std::option::Option<bool>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
        pub(crate) ignore_words: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) keywords: std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) maximum_match_distance: std::option::Option<i32>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) regex: std::option::Option<std::string::String>,
        pub(crate) severity_levels: std::option::Option<std::vec::Vec<crate::model::SeverityLevel>>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) of the custom data identifier.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the custom data identifier.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the custom data identifier was created.</p>
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the custom data identifier was created.</p>
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        /// <p>Specifies whether the custom data identifier was deleted. If you delete a custom data identifier, Amazon Macie doesn't delete it permanently. Instead, it soft deletes the identifier.</p>
        pub fn deleted(mut self, input: bool) -> Self {
            self.deleted = Some(input);
            self
        }
        /// <p>Specifies whether the custom data identifier was deleted. If you delete a custom data identifier, Amazon Macie doesn't delete it permanently. Instead, it soft deletes the identifier.</p>
        pub fn set_deleted(mut self, input: std::option::Option<bool>) -> Self {
            self.deleted = input;
            self
        }
        /// <p>The custom description of the custom data identifier.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The custom description of the custom data identifier.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>The unique identifier for the custom data identifier.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The unique identifier for the custom data identifier.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// Appends an item to `ignore_words`.
        ///
        /// To override the contents of this collection use [`set_ignore_words`](Self::set_ignore_words).
        ///
        /// <p>An array that lists specific character sequences (<i>ignore words</i>) to exclude from the results. If the text matched by the regular expression contains any string in this array, Amazon Macie ignores it. Ignore words are case sensitive.</p>
        pub fn ignore_words(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.ignore_words.unwrap_or_default();
            v.push(input.into());
            self.ignore_words = Some(v);
            self
        }
        /// <p>An array that lists specific character sequences (<i>ignore words</i>) to exclude from the results. If the text matched by the regular expression contains any string in this array, Amazon Macie ignores it. Ignore words are case sensitive.</p>
        pub fn set_ignore_words(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.ignore_words = input;
            self
        }
        /// Appends an item to `keywords`.
        ///
        /// To override the contents of this collection use [`set_keywords`](Self::set_keywords).
        ///
        /// <p>An array that lists specific character sequences (<i>keywords</i>), one of which must be within proximity (maximumMatchDistance) of the regular expression to match. Keywords aren't case sensitive.</p>
        pub fn keywords(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.keywords.unwrap_or_default();
            v.push(input.into());
            self.keywords = Some(v);
            self
        }
        /// <p>An array that lists specific character sequences (<i>keywords</i>), one of which must be within proximity (maximumMatchDistance) of the regular expression to match. Keywords aren't case sensitive.</p>
        pub fn set_keywords(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.keywords = input;
            self
        }
        /// <p>The maximum number of characters that can exist between text that matches the regular expression and the character sequences specified by the keywords array. Amazon Macie includes or excludes a result based on the proximity of a keyword to text that matches the regular expression.</p>
        pub fn maximum_match_distance(mut self, input: i32) -> Self {
            self.maximum_match_distance = Some(input);
            self
        }
        /// <p>The maximum number of characters that can exist between text that matches the regular expression and the character sequences specified by the keywords array. Amazon Macie includes or excludes a result based on the proximity of a keyword to text that matches the regular expression.</p>
        pub fn set_maximum_match_distance(mut self, input: std::option::Option<i32>) -> Self {
            self.maximum_match_distance = input;
            self
        }
        /// <p>The custom name of the custom data identifier.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The custom name of the custom data identifier.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The regular expression (<i>regex</i>) that defines the pattern to match.</p>
        pub fn regex(mut self, input: impl Into<std::string::String>) -> Self {
            self.regex = Some(input.into());
            self
        }
        /// <p>The regular expression (<i>regex</i>) that defines the pattern to match.</p>
        pub fn set_regex(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.regex = input;
            self
        }
        /// Appends an item to `severity_levels`.
        ///
        /// To override the contents of this collection use [`set_severity_levels`](Self::set_severity_levels).
        ///
        /// <p>Specifies the severity that's assigned to findings that the custom data identifier produces, based on the number of occurrences of text that matches the custom data identifier's detection criteria. By default, Amazon Macie creates findings for S3 objects that contain at least one occurrence of text that matches the detection criteria, and Macie assigns the MEDIUM severity to those findings.</p>
        pub fn severity_levels(mut self, input: crate::model::SeverityLevel) -> Self {
            let mut v = self.severity_levels.unwrap_or_default();
            v.push(input);
            self.severity_levels = Some(v);
            self
        }
        /// <p>Specifies the severity that's assigned to findings that the custom data identifier produces, based on the number of occurrences of text that matches the custom data identifier's detection criteria. By default, Amazon Macie creates findings for S3 objects that contain at least one occurrence of text that matches the detection criteria, and Macie assigns the MEDIUM severity to those findings.</p>
        pub fn set_severity_levels(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::SeverityLevel>>,
        ) -> Self {
            self.severity_levels = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the custom data identifier.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>A map of key-value pairs that identifies the tags (keys and values) that are associated with the custom data identifier.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// Consumes the builder and constructs a [`GetCustomDataIdentifierOutput`](crate::output::GetCustomDataIdentifierOutput)
        pub fn build(self) -> crate::output::GetCustomDataIdentifierOutput {
            crate::output::GetCustomDataIdentifierOutput {
                arn: self.arn,
                created_at: self.created_at,
                deleted: self.deleted.unwrap_or_default(),
                description: self.description,
                id: self.id,
                ignore_words: self.ignore_words,
                keywords: self.keywords,
                maximum_match_distance: self.maximum_match_distance.unwrap_or_default(),
                name: self.name,
                regex: self.regex,
                severity_levels: self.severity_levels,
                tags: self.tags,
            }
        }
    }
}
impl GetCustomDataIdentifierOutput {
    /// Creates a new builder-style object to manufacture [`GetCustomDataIdentifierOutput`](crate::output::GetCustomDataIdentifierOutput)
    pub fn builder() -> crate::output::get_custom_data_identifier_output::Builder {
        crate::output::get_custom_data_identifier_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetClassificationExportConfigurationOutput {
    /// <p>The location where data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
    pub configuration: std::option::Option<crate::model::ClassificationExportConfiguration>,
}
impl GetClassificationExportConfigurationOutput {
    /// <p>The location where data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
    pub fn configuration(
        &self,
    ) -> std::option::Option<&crate::model::ClassificationExportConfiguration> {
        self.configuration.as_ref()
    }
}
impl std::fmt::Debug for GetClassificationExportConfigurationOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetClassificationExportConfigurationOutput");
        formatter.field("configuration", &self.configuration);
        formatter.finish()
    }
}
/// See [`GetClassificationExportConfigurationOutput`](crate::output::GetClassificationExportConfigurationOutput)
pub mod get_classification_export_configuration_output {
    /// A builder for [`GetClassificationExportConfigurationOutput`](crate::output::GetClassificationExportConfigurationOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) configuration:
            std::option::Option<crate::model::ClassificationExportConfiguration>,
    }
    impl Builder {
        /// <p>The location where data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
        pub fn configuration(
            mut self,
            input: crate::model::ClassificationExportConfiguration,
        ) -> Self {
            self.configuration = Some(input);
            self
        }
        /// <p>The location where data classification results are stored, and the encryption settings that are used when storing results in that location.</p>
        pub fn set_configuration(
            mut self,
            input: std::option::Option<crate::model::ClassificationExportConfiguration>,
        ) -> Self {
            self.configuration = input;
            self
        }
        /// Consumes the builder and constructs a [`GetClassificationExportConfigurationOutput`](crate::output::GetClassificationExportConfigurationOutput)
        pub fn build(self) -> crate::output::GetClassificationExportConfigurationOutput {
            crate::output::GetClassificationExportConfigurationOutput {
                configuration: self.configuration,
            }
        }
    }
}
impl GetClassificationExportConfigurationOutput {
    /// Creates a new builder-style object to manufacture [`GetClassificationExportConfigurationOutput`](crate::output::GetClassificationExportConfigurationOutput)
    pub fn builder() -> crate::output::get_classification_export_configuration_output::Builder {
        crate::output::get_classification_export_configuration_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetBucketStatisticsOutput {
    /// <p>The total number of buckets.</p>
    pub bucket_count: i64,
    /// <p>The total number of buckets that are publicly accessible based on a combination of permissions settings for each bucket.</p>
    pub bucket_count_by_effective_permission:
        std::option::Option<crate::model::BucketCountByEffectivePermission>,
    /// <p>The total number of buckets that use certain types of server-side encryption to encrypt new objects by default. This object also reports the total number of buckets that don't encrypt new objects by default.</p>
    pub bucket_count_by_encryption_type:
        std::option::Option<crate::model::BucketCountByEncryptionType>,
    /// <p>The total number of buckets whose bucket policies do or don't require server-side encryption of objects when objects are uploaded to the buckets.</p>
    pub bucket_count_by_object_encryption_requirement:
        std::option::Option<crate::model::BucketCountPolicyAllowsUnencryptedObjectUploads>,
    /// <p>The total number of buckets that are or aren't shared with another Amazon Web Services account.</p>
    pub bucket_count_by_shared_access_type:
        std::option::Option<crate::model::BucketCountBySharedAccessType>,
    /// <p>The total number of objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
    pub classifiable_object_count: i64,
    /// <p>The total storage size, in bytes, of all the objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
    /// <p>If versioning is enabled for any of the buckets, Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of all applicable objects in the buckets.</p>
    pub classifiable_size_in_bytes: i64,
    /// <p>The date and time, in UTC and extended ISO 8601 format, when Amazon Macie most recently retrieved both bucket and object metadata from Amazon S3 for the buckets.</p>
    pub last_updated: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>The total number of objects in the buckets.</p>
    pub object_count: i64,
    /// <p>The total storage size, in bytes, of the buckets.</p>
    /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each object in those buckets. This value doesn't reflect the storage size of all versions of the objects in the buckets.</p>
    pub size_in_bytes: i64,
    /// <p>The total storage size, in bytes, of the objects that are compressed (.gz, .gzip, .zip) files in the buckets.</p>
    /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of the applicable objects in the buckets.</p>
    pub size_in_bytes_compressed: i64,
    /// <p>The total number of objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
    pub unclassifiable_object_count: std::option::Option<crate::model::ObjectLevelStatistics>,
    /// <p>The total storage size, in bytes, of the objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
    pub unclassifiable_object_size_in_bytes:
        std::option::Option<crate::model::ObjectLevelStatistics>,
}
impl GetBucketStatisticsOutput {
    /// <p>The total number of buckets.</p>
    pub fn bucket_count(&self) -> i64 {
        self.bucket_count
    }
    /// <p>The total number of buckets that are publicly accessible based on a combination of permissions settings for each bucket.</p>
    pub fn bucket_count_by_effective_permission(
        &self,
    ) -> std::option::Option<&crate::model::BucketCountByEffectivePermission> {
        self.bucket_count_by_effective_permission.as_ref()
    }
    /// <p>The total number of buckets that use certain types of server-side encryption to encrypt new objects by default. This object also reports the total number of buckets that don't encrypt new objects by default.</p>
    pub fn bucket_count_by_encryption_type(
        &self,
    ) -> std::option::Option<&crate::model::BucketCountByEncryptionType> {
        self.bucket_count_by_encryption_type.as_ref()
    }
    /// <p>The total number of buckets whose bucket policies do or don't require server-side encryption of objects when objects are uploaded to the buckets.</p>
    pub fn bucket_count_by_object_encryption_requirement(
        &self,
    ) -> std::option::Option<&crate::model::BucketCountPolicyAllowsUnencryptedObjectUploads> {
        self.bucket_count_by_object_encryption_requirement.as_ref()
    }
    /// <p>The total number of buckets that are or aren't shared with another Amazon Web Services account.</p>
    pub fn bucket_count_by_shared_access_type(
        &self,
    ) -> std::option::Option<&crate::model::BucketCountBySharedAccessType> {
        self.bucket_count_by_shared_access_type.as_ref()
    }
    /// <p>The total number of objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
    pub fn classifiable_object_count(&self) -> i64 {
        self.classifiable_object_count
    }
    /// <p>The total storage size, in bytes, of all the objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
    /// <p>If versioning is enabled for any of the buckets, Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of all applicable objects in the buckets.</p>
    pub fn classifiable_size_in_bytes(&self) -> i64 {
        self.classifiable_size_in_bytes
    }
    /// <p>The date and time, in UTC and extended ISO 8601 format, when Amazon Macie most recently retrieved both bucket and object metadata from Amazon S3 for the buckets.</p>
    pub fn last_updated(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_updated.as_ref()
    }
    /// <p>The total number of objects in the buckets.</p>
    pub fn object_count(&self) -> i64 {
        self.object_count
    }
    /// <p>The total storage size, in bytes, of the buckets.</p>
    /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each object in those buckets. This value doesn't reflect the storage size of all versions of the objects in the buckets.</p>
    pub fn size_in_bytes(&self) -> i64 {
        self.size_in_bytes
    }
    /// <p>The total storage size, in bytes, of the objects that are compressed (.gz, .gzip, .zip) files in the buckets.</p>
    /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of the applicable objects in the buckets.</p>
    pub fn size_in_bytes_compressed(&self) -> i64 {
        self.size_in_bytes_compressed
    }
    /// <p>The total number of objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
    pub fn unclassifiable_object_count(
        &self,
    ) -> std::option::Option<&crate::model::ObjectLevelStatistics> {
        self.unclassifiable_object_count.as_ref()
    }
    /// <p>The total storage size, in bytes, of the objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
    pub fn unclassifiable_object_size_in_bytes(
        &self,
    ) -> std::option::Option<&crate::model::ObjectLevelStatistics> {
        self.unclassifiable_object_size_in_bytes.as_ref()
    }
}
impl std::fmt::Debug for GetBucketStatisticsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetBucketStatisticsOutput");
        formatter.field("bucket_count", &self.bucket_count);
        formatter.field(
            "bucket_count_by_effective_permission",
            &self.bucket_count_by_effective_permission,
        );
        formatter.field(
            "bucket_count_by_encryption_type",
            &self.bucket_count_by_encryption_type,
        );
        formatter.field(
            "bucket_count_by_object_encryption_requirement",
            &self.bucket_count_by_object_encryption_requirement,
        );
        formatter.field(
            "bucket_count_by_shared_access_type",
            &self.bucket_count_by_shared_access_type,
        );
        formatter.field("classifiable_object_count", &self.classifiable_object_count);
        formatter.field(
            "classifiable_size_in_bytes",
            &self.classifiable_size_in_bytes,
        );
        formatter.field("last_updated", &self.last_updated);
        formatter.field("object_count", &self.object_count);
        formatter.field("size_in_bytes", &self.size_in_bytes);
        formatter.field("size_in_bytes_compressed", &self.size_in_bytes_compressed);
        formatter.field(
            "unclassifiable_object_count",
            &self.unclassifiable_object_count,
        );
        formatter.field(
            "unclassifiable_object_size_in_bytes",
            &self.unclassifiable_object_size_in_bytes,
        );
        formatter.finish()
    }
}
/// See [`GetBucketStatisticsOutput`](crate::output::GetBucketStatisticsOutput)
pub mod get_bucket_statistics_output {
    /// A builder for [`GetBucketStatisticsOutput`](crate::output::GetBucketStatisticsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) bucket_count: std::option::Option<i64>,
        pub(crate) bucket_count_by_effective_permission:
            std::option::Option<crate::model::BucketCountByEffectivePermission>,
        pub(crate) bucket_count_by_encryption_type:
            std::option::Option<crate::model::BucketCountByEncryptionType>,
        pub(crate) bucket_count_by_object_encryption_requirement:
            std::option::Option<crate::model::BucketCountPolicyAllowsUnencryptedObjectUploads>,
        pub(crate) bucket_count_by_shared_access_type:
            std::option::Option<crate::model::BucketCountBySharedAccessType>,
        pub(crate) classifiable_object_count: std::option::Option<i64>,
        pub(crate) classifiable_size_in_bytes: std::option::Option<i64>,
        pub(crate) last_updated: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) object_count: std::option::Option<i64>,
        pub(crate) size_in_bytes: std::option::Option<i64>,
        pub(crate) size_in_bytes_compressed: std::option::Option<i64>,
        pub(crate) unclassifiable_object_count:
            std::option::Option<crate::model::ObjectLevelStatistics>,
        pub(crate) unclassifiable_object_size_in_bytes:
            std::option::Option<crate::model::ObjectLevelStatistics>,
    }
    impl Builder {
        /// <p>The total number of buckets.</p>
        pub fn bucket_count(mut self, input: i64) -> Self {
            self.bucket_count = Some(input);
            self
        }
        /// <p>The total number of buckets.</p>
        pub fn set_bucket_count(mut self, input: std::option::Option<i64>) -> Self {
            self.bucket_count = input;
            self
        }
        /// <p>The total number of buckets that are publicly accessible based on a combination of permissions settings for each bucket.</p>
        pub fn bucket_count_by_effective_permission(
            mut self,
            input: crate::model::BucketCountByEffectivePermission,
        ) -> Self {
            self.bucket_count_by_effective_permission = Some(input);
            self
        }
        /// <p>The total number of buckets that are publicly accessible based on a combination of permissions settings for each bucket.</p>
        pub fn set_bucket_count_by_effective_permission(
            mut self,
            input: std::option::Option<crate::model::BucketCountByEffectivePermission>,
        ) -> Self {
            self.bucket_count_by_effective_permission = input;
            self
        }
        /// <p>The total number of buckets that use certain types of server-side encryption to encrypt new objects by default. This object also reports the total number of buckets that don't encrypt new objects by default.</p>
        pub fn bucket_count_by_encryption_type(
            mut self,
            input: crate::model::BucketCountByEncryptionType,
        ) -> Self {
            self.bucket_count_by_encryption_type = Some(input);
            self
        }
        /// <p>The total number of buckets that use certain types of server-side encryption to encrypt new objects by default. This object also reports the total number of buckets that don't encrypt new objects by default.</p>
        pub fn set_bucket_count_by_encryption_type(
            mut self,
            input: std::option::Option<crate::model::BucketCountByEncryptionType>,
        ) -> Self {
            self.bucket_count_by_encryption_type = input;
            self
        }
        /// <p>The total number of buckets whose bucket policies do or don't require server-side encryption of objects when objects are uploaded to the buckets.</p>
        pub fn bucket_count_by_object_encryption_requirement(
            mut self,
            input: crate::model::BucketCountPolicyAllowsUnencryptedObjectUploads,
        ) -> Self {
            self.bucket_count_by_object_encryption_requirement = Some(input);
            self
        }
        /// <p>The total number of buckets whose bucket policies do or don't require server-side encryption of objects when objects are uploaded to the buckets.</p>
        pub fn set_bucket_count_by_object_encryption_requirement(
            mut self,
            input: std::option::Option<
                crate::model::BucketCountPolicyAllowsUnencryptedObjectUploads,
            >,
        ) -> Self {
            self.bucket_count_by_object_encryption_requirement = input;
            self
        }
        /// <p>The total number of buckets that are or aren't shared with another Amazon Web Services account.</p>
        pub fn bucket_count_by_shared_access_type(
            mut self,
            input: crate::model::BucketCountBySharedAccessType,
        ) -> Self {
            self.bucket_count_by_shared_access_type = Some(input);
            self
        }
        /// <p>The total number of buckets that are or aren't shared with another Amazon Web Services account.</p>
        pub fn set_bucket_count_by_shared_access_type(
            mut self,
            input: std::option::Option<crate::model::BucketCountBySharedAccessType>,
        ) -> Self {
            self.bucket_count_by_shared_access_type = input;
            self
        }
        /// <p>The total number of objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
        pub fn classifiable_object_count(mut self, input: i64) -> Self {
            self.classifiable_object_count = Some(input);
            self
        }
        /// <p>The total number of objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
        pub fn set_classifiable_object_count(mut self, input: std::option::Option<i64>) -> Self {
            self.classifiable_object_count = input;
            self
        }
        /// <p>The total storage size, in bytes, of all the objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
        /// <p>If versioning is enabled for any of the buckets, Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of all applicable objects in the buckets.</p>
        pub fn classifiable_size_in_bytes(mut self, input: i64) -> Self {
            self.classifiable_size_in_bytes = Some(input);
            self
        }
        /// <p>The total storage size, in bytes, of all the objects that Amazon Macie can analyze in the buckets. These objects use a supported storage class and have a file name extension for a supported file or storage format.</p>
        /// <p>If versioning is enabled for any of the buckets, Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of all applicable objects in the buckets.</p>
        pub fn set_classifiable_size_in_bytes(mut self, input: std::option::Option<i64>) -> Self {
            self.classifiable_size_in_bytes = input;
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when Amazon Macie most recently retrieved both bucket and object metadata from Amazon S3 for the buckets.</p>
        pub fn last_updated(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_updated = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when Amazon Macie most recently retrieved both bucket and object metadata from Amazon S3 for the buckets.</p>
        pub fn set_last_updated(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_updated = input;
            self
        }
        /// <p>The total number of objects in the buckets.</p>
        pub fn object_count(mut self, input: i64) -> Self {
            self.object_count = Some(input);
            self
        }
        /// <p>The total number of objects in the buckets.</p>
        pub fn set_object_count(mut self, input: std::option::Option<i64>) -> Self {
            self.object_count = input;
            self
        }
        /// <p>The total storage size, in bytes, of the buckets.</p>
        /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each object in those buckets. This value doesn't reflect the storage size of all versions of the objects in the buckets.</p>
        pub fn size_in_bytes(mut self, input: i64) -> Self {
            self.size_in_bytes = Some(input);
            self
        }
        /// <p>The total storage size, in bytes, of the buckets.</p>
        /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each object in those buckets. This value doesn't reflect the storage size of all versions of the objects in the buckets.</p>
        pub fn set_size_in_bytes(mut self, input: std::option::Option<i64>) -> Self {
            self.size_in_bytes = input;
            self
        }
        /// <p>The total storage size, in bytes, of the objects that are compressed (.gz, .gzip, .zip) files in the buckets.</p>
        /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of the applicable objects in the buckets.</p>
        pub fn size_in_bytes_compressed(mut self, input: i64) -> Self {
            self.size_in_bytes_compressed = Some(input);
            self
        }
        /// <p>The total storage size, in bytes, of the objects that are compressed (.gz, .gzip, .zip) files in the buckets.</p>
        /// <p>If versioning is enabled for any of the buckets, Amazon Macie calculates this value based on the size of the latest version of each applicable object in those buckets. This value doesn't reflect the storage size of all versions of the applicable objects in the buckets.</p>
        pub fn set_size_in_bytes_compressed(mut self, input: std::option::Option<i64>) -> Self {
            self.size_in_bytes_compressed = input;
            self
        }
        /// <p>The total number of objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
        pub fn unclassifiable_object_count(
            mut self,
            input: crate::model::ObjectLevelStatistics,
        ) -> Self {
            self.unclassifiable_object_count = Some(input);
            self
        }
        /// <p>The total number of objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
        pub fn set_unclassifiable_object_count(
            mut self,
            input: std::option::Option<crate::model::ObjectLevelStatistics>,
        ) -> Self {
            self.unclassifiable_object_count = input;
            self
        }
        /// <p>The total storage size, in bytes, of the objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
        pub fn unclassifiable_object_size_in_bytes(
            mut self,
            input: crate::model::ObjectLevelStatistics,
        ) -> Self {
            self.unclassifiable_object_size_in_bytes = Some(input);
            self
        }
        /// <p>The total storage size, in bytes, of the objects that Amazon Macie can't analyze in the buckets. These objects don't use a supported storage class or don't have a file name extension for a supported file or storage format.</p>
        pub fn set_unclassifiable_object_size_in_bytes(
            mut self,
            input: std::option::Option<crate::model::ObjectLevelStatistics>,
        ) -> Self {
            self.unclassifiable_object_size_in_bytes = input;
            self
        }
        /// Consumes the builder and constructs a [`GetBucketStatisticsOutput`](crate::output::GetBucketStatisticsOutput)
        pub fn build(self) -> crate::output::GetBucketStatisticsOutput {
            crate::output::GetBucketStatisticsOutput {
                bucket_count: self.bucket_count.unwrap_or_default(),
                bucket_count_by_effective_permission: self.bucket_count_by_effective_permission,
                bucket_count_by_encryption_type: self.bucket_count_by_encryption_type,
                bucket_count_by_object_encryption_requirement: self
                    .bucket_count_by_object_encryption_requirement,
                bucket_count_by_shared_access_type: self.bucket_count_by_shared_access_type,
                classifiable_object_count: self.classifiable_object_count.unwrap_or_default(),
                classifiable_size_in_bytes: self.classifiable_size_in_bytes.unwrap_or_default(),
                last_updated: self.last_updated,
                object_count: self.object_count.unwrap_or_default(),
                size_in_bytes: self.size_in_bytes.unwrap_or_default(),
                size_in_bytes_compressed: self.size_in_bytes_compressed.unwrap_or_default(),
                unclassifiable_object_count: self.unclassifiable_object_count,
                unclassifiable_object_size_in_bytes: self.unclassifiable_object_size_in_bytes,
            }
        }
    }
}
impl GetBucketStatisticsOutput {
    /// Creates a new builder-style object to manufacture [`GetBucketStatisticsOutput`](crate::output::GetBucketStatisticsOutput)
    pub fn builder() -> crate::output::get_bucket_statistics_output::Builder {
        crate::output::get_bucket_statistics_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetAdministratorAccountOutput {
    /// <p>The Amazon Web Services account ID for the administrator account. If the accounts are associated by an Amazon Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
    pub administrator: std::option::Option<crate::model::Invitation>,
}
impl GetAdministratorAccountOutput {
    /// <p>The Amazon Web Services account ID for the administrator account. If the accounts are associated by an Amazon Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
    pub fn administrator(&self) -> std::option::Option<&crate::model::Invitation> {
        self.administrator.as_ref()
    }
}
impl std::fmt::Debug for GetAdministratorAccountOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetAdministratorAccountOutput");
        formatter.field("administrator", &self.administrator);
        formatter.finish()
    }
}
/// See [`GetAdministratorAccountOutput`](crate::output::GetAdministratorAccountOutput)
pub mod get_administrator_account_output {
    /// A builder for [`GetAdministratorAccountOutput`](crate::output::GetAdministratorAccountOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) administrator: std::option::Option<crate::model::Invitation>,
    }
    impl Builder {
        /// <p>The Amazon Web Services account ID for the administrator account. If the accounts are associated by an Amazon Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
        pub fn administrator(mut self, input: crate::model::Invitation) -> Self {
            self.administrator = Some(input);
            self
        }
        /// <p>The Amazon Web Services account ID for the administrator account. If the accounts are associated by an Amazon Macie membership invitation, this object also provides details about the invitation that was sent to establish the relationship between the accounts.</p>
        pub fn set_administrator(
            mut self,
            input: std::option::Option<crate::model::Invitation>,
        ) -> Self {
            self.administrator = input;
            self
        }
        /// Consumes the builder and constructs a [`GetAdministratorAccountOutput`](crate::output::GetAdministratorAccountOutput)
        pub fn build(self) -> crate::output::GetAdministratorAccountOutput {
            crate::output::GetAdministratorAccountOutput {
                administrator: self.administrator,
            }
        }
    }
}
impl GetAdministratorAccountOutput {
    /// Creates a new builder-style object to manufacture [`GetAdministratorAccountOutput`](crate::output::GetAdministratorAccountOutput)
    pub fn builder() -> crate::output::get_administrator_account_output::Builder {
        crate::output::get_administrator_account_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct EnableOrganizationAdminAccountOutput {}
impl std::fmt::Debug for EnableOrganizationAdminAccountOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("EnableOrganizationAdminAccountOutput");
        formatter.finish()
    }
}
/// See [`EnableOrganizationAdminAccountOutput`](crate::output::EnableOrganizationAdminAccountOutput)
pub mod enable_organization_admin_account_output {
    /// A builder for [`EnableOrganizationAdminAccountOutput`](crate::output::EnableOrganizationAdminAccountOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`EnableOrganizationAdminAccountOutput`](crate::output::EnableOrganizationAdminAccountOutput)
        pub fn build(self) -> crate::output::EnableOrganizationAdminAccountOutput {
            crate::output::EnableOrganizationAdminAccountOutput {}
        }
    }
}
impl EnableOrganizationAdminAccountOutput {
    /// Creates a new builder-style object to manufacture [`EnableOrganizationAdminAccountOutput`](crate::output::EnableOrganizationAdminAccountOutput)
    pub fn builder() -> crate::output::enable_organization_admin_account_output::Builder {
        crate::output::enable_organization_admin_account_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct EnableMacieOutput {}
impl std::fmt::Debug for EnableMacieOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("EnableMacieOutput");
        formatter.finish()
    }
}
/// See [`EnableMacieOutput`](crate::output::EnableMacieOutput)
pub mod enable_macie_output {
    /// A builder for [`EnableMacieOutput`](crate::output::EnableMacieOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`EnableMacieOutput`](crate::output::EnableMacieOutput)
        pub fn build(self) -> crate::output::EnableMacieOutput {
            crate::output::EnableMacieOutput {}
        }
    }
}
impl EnableMacieOutput {
    /// Creates a new builder-style object to manufacture [`EnableMacieOutput`](crate::output::EnableMacieOutput)
    pub fn builder() -> crate::output::enable_macie_output::Builder {
        crate::output::enable_macie_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DisassociateMemberOutput {}
impl std::fmt::Debug for DisassociateMemberOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DisassociateMemberOutput");
        formatter.finish()
    }
}
/// See [`DisassociateMemberOutput`](crate::output::DisassociateMemberOutput)
pub mod disassociate_member_output {
    /// A builder for [`DisassociateMemberOutput`](crate::output::DisassociateMemberOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DisassociateMemberOutput`](crate::output::DisassociateMemberOutput)
        pub fn build(self) -> crate::output::DisassociateMemberOutput {
            crate::output::DisassociateMemberOutput {}
        }
    }
}
impl DisassociateMemberOutput {
    /// Creates a new builder-style object to manufacture [`DisassociateMemberOutput`](crate::output::DisassociateMemberOutput)
    pub fn builder() -> crate::output::disassociate_member_output::Builder {
        crate::output::disassociate_member_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DisassociateFromMasterAccountOutput {}
impl std::fmt::Debug for DisassociateFromMasterAccountOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DisassociateFromMasterAccountOutput");
        formatter.finish()
    }
}
/// See [`DisassociateFromMasterAccountOutput`](crate::output::DisassociateFromMasterAccountOutput)
pub mod disassociate_from_master_account_output {
    /// A builder for [`DisassociateFromMasterAccountOutput`](crate::output::DisassociateFromMasterAccountOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DisassociateFromMasterAccountOutput`](crate::output::DisassociateFromMasterAccountOutput)
        pub fn build(self) -> crate::output::DisassociateFromMasterAccountOutput {
            crate::output::DisassociateFromMasterAccountOutput {}
        }
    }
}
impl DisassociateFromMasterAccountOutput {
    /// Creates a new builder-style object to manufacture [`DisassociateFromMasterAccountOutput`](crate::output::DisassociateFromMasterAccountOutput)
    pub fn builder() -> crate::output::disassociate_from_master_account_output::Builder {
        crate::output::disassociate_from_master_account_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DisassociateFromAdministratorAccountOutput {}
impl std::fmt::Debug for DisassociateFromAdministratorAccountOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DisassociateFromAdministratorAccountOutput");
        formatter.finish()
    }
}
/// See [`DisassociateFromAdministratorAccountOutput`](crate::output::DisassociateFromAdministratorAccountOutput)
pub mod disassociate_from_administrator_account_output {
    /// A builder for [`DisassociateFromAdministratorAccountOutput`](crate::output::DisassociateFromAdministratorAccountOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DisassociateFromAdministratorAccountOutput`](crate::output::DisassociateFromAdministratorAccountOutput)
        pub fn build(self) -> crate::output::DisassociateFromAdministratorAccountOutput {
            crate::output::DisassociateFromAdministratorAccountOutput {}
        }
    }
}
impl DisassociateFromAdministratorAccountOutput {
    /// Creates a new builder-style object to manufacture [`DisassociateFromAdministratorAccountOutput`](crate::output::DisassociateFromAdministratorAccountOutput)
    pub fn builder() -> crate::output::disassociate_from_administrator_account_output::Builder {
        crate::output::disassociate_from_administrator_account_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DisableOrganizationAdminAccountOutput {}
impl std::fmt::Debug for DisableOrganizationAdminAccountOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DisableOrganizationAdminAccountOutput");
        formatter.finish()
    }
}
/// See [`DisableOrganizationAdminAccountOutput`](crate::output::DisableOrganizationAdminAccountOutput)
pub mod disable_organization_admin_account_output {
    /// A builder for [`DisableOrganizationAdminAccountOutput`](crate::output::DisableOrganizationAdminAccountOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DisableOrganizationAdminAccountOutput`](crate::output::DisableOrganizationAdminAccountOutput)
        pub fn build(self) -> crate::output::DisableOrganizationAdminAccountOutput {
            crate::output::DisableOrganizationAdminAccountOutput {}
        }
    }
}
impl DisableOrganizationAdminAccountOutput {
    /// Creates a new builder-style object to manufacture [`DisableOrganizationAdminAccountOutput`](crate::output::DisableOrganizationAdminAccountOutput)
    pub fn builder() -> crate::output::disable_organization_admin_account_output::Builder {
        crate::output::disable_organization_admin_account_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DisableMacieOutput {}
impl std::fmt::Debug for DisableMacieOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DisableMacieOutput");
        formatter.finish()
    }
}
/// See [`DisableMacieOutput`](crate::output::DisableMacieOutput)
pub mod disable_macie_output {
    /// A builder for [`DisableMacieOutput`](crate::output::DisableMacieOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DisableMacieOutput`](crate::output::DisableMacieOutput)
        pub fn build(self) -> crate::output::DisableMacieOutput {
            crate::output::DisableMacieOutput {}
        }
    }
}
impl DisableMacieOutput {
    /// Creates a new builder-style object to manufacture [`DisableMacieOutput`](crate::output::DisableMacieOutput)
    pub fn builder() -> crate::output::disable_macie_output::Builder {
        crate::output::disable_macie_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DescribeOrganizationConfigurationOutput {
    /// <p>Specifies whether Amazon Macie is enabled automatically for accounts that are added to the organization.</p>
    pub auto_enable: bool,
    /// <p>Specifies whether the maximum number of Amazon Macie member accounts are part of the organization.</p>
    pub max_account_limit_reached: bool,
}
impl DescribeOrganizationConfigurationOutput {
    /// <p>Specifies whether Amazon Macie is enabled automatically for accounts that are added to the organization.</p>
    pub fn auto_enable(&self) -> bool {
        self.auto_enable
    }
    /// <p>Specifies whether the maximum number of Amazon Macie member accounts are part of the organization.</p>
    pub fn max_account_limit_reached(&self) -> bool {
        self.max_account_limit_reached
    }
}
impl std::fmt::Debug for DescribeOrganizationConfigurationOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DescribeOrganizationConfigurationOutput");
        formatter.field("auto_enable", &self.auto_enable);
        formatter.field("max_account_limit_reached", &self.max_account_limit_reached);
        formatter.finish()
    }
}
/// See [`DescribeOrganizationConfigurationOutput`](crate::output::DescribeOrganizationConfigurationOutput)
pub mod describe_organization_configuration_output {
    /// A builder for [`DescribeOrganizationConfigurationOutput`](crate::output::DescribeOrganizationConfigurationOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) auto_enable: std::option::Option<bool>,
        pub(crate) max_account_limit_reached: std::option::Option<bool>,
    }
    impl Builder {
        /// <p>Specifies whether Amazon Macie is enabled automatically for accounts that are added to the organization.</p>
        pub fn auto_enable(mut self, input: bool) -> Self {
            self.auto_enable = Some(input);
            self
        }
        /// <p>Specifies whether Amazon Macie is enabled automatically for accounts that are added to the organization.</p>
        pub fn set_auto_enable(mut self, input: std::option::Option<bool>) -> Self {
            self.auto_enable = input;
            self
        }
        /// <p>Specifies whether the maximum number of Amazon Macie member accounts are part of the organization.</p>
        pub fn max_account_limit_reached(mut self, input: bool) -> Self {
            self.max_account_limit_reached = Some(input);
            self
        }
        /// <p>Specifies whether the maximum number of Amazon Macie member accounts are part of the organization.</p>
        pub fn set_max_account_limit_reached(mut self, input: std::option::Option<bool>) -> Self {
            self.max_account_limit_reached = input;
            self
        }
        /// Consumes the builder and constructs a [`DescribeOrganizationConfigurationOutput`](crate::output::DescribeOrganizationConfigurationOutput)
        pub fn build(self) -> crate::output::DescribeOrganizationConfigurationOutput {
            crate::output::DescribeOrganizationConfigurationOutput {
                auto_enable: self.auto_enable.unwrap_or_default(),
                max_account_limit_reached: self.max_account_limit_reached.unwrap_or_default(),
            }
        }
    }
}
impl DescribeOrganizationConfigurationOutput {
    /// Creates a new builder-style object to manufacture [`DescribeOrganizationConfigurationOutput`](crate::output::DescribeOrganizationConfigurationOutput)
    pub fn builder() -> crate::output::describe_organization_configuration_output::Builder {
        crate::output::describe_organization_configuration_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DescribeClassificationJobOutput {
    /// <p>The token that was provided to ensure the idempotency of the request to create the job.</p>
    pub client_token: std::option::Option<std::string::String>,
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the job was created.</p>
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>An array of unique identifiers, one for each custom data identifier that the job uses to analyze data. This value is null if the job uses only managed data identifiers to analyze data.</p>
    pub custom_data_identifier_ids: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The custom description of the job.</p>
    pub description: std::option::Option<std::string::String>,
    /// <p>For a recurring job, specifies whether you configured the job to analyze all existing, eligible objects immediately after the job was created (true). If you configured the job to analyze only those objects that were created or changed after the job was created and before the job's first scheduled run, this value is false. This value is also false for a one-time job.</p>
    pub initial_run: bool,
    /// <p>The Amazon Resource Name (ARN) of the job.</p>
    pub job_arn: std::option::Option<std::string::String>,
    /// <p>The unique identifier for the job.</p>
    pub job_id: std::option::Option<std::string::String>,
    /// <p>The current status of the job. Possible values are:</p>
    /// <ul>
    /// <li><p>CANCELLED - You cancelled the job or, if it's a one-time job, you paused the job and didn't resume it within 30 days.</p></li>
    /// <li><p>COMPLETE - For a one-time job, Amazon Macie finished processing the data specified for the job. This value doesn't apply to recurring jobs.</p></li>
    /// <li><p>IDLE - For a recurring job, the previous scheduled run is complete and the next scheduled run is pending. This value doesn't apply to one-time jobs.</p></li>
    /// <li><p>PAUSED - Macie started running the job but additional processing would exceed the monthly sensitive data discovery quota for your account or one or more member accounts that the job analyzes data for.</p></li>
    /// <li><p>RUNNING - For a one-time job, the job is in progress. For a recurring job, a scheduled run is in progress.</p></li>
    /// <li><p>USER_PAUSED - You paused the job. If you paused the job while it had a status of RUNNING and you don't resume it within 30 days of pausing it, the job or job run will expire and be cancelled, depending on the job's type. To check the expiration date, refer to the UserPausedDetails.jobExpiresAt property.</p></li>
    /// </ul>
    pub job_status: std::option::Option<crate::model::JobStatus>,
    /// <p>The schedule for running the job. Possible values are:</p>
    /// <ul>
    /// <li><p>ONE_TIME - The job runs only once.</p></li>
    /// <li><p>SCHEDULED - The job runs on a daily, weekly, or monthly basis. The scheduleFrequency property indicates the recurrence pattern for the job.</p></li>
    /// </ul>
    pub job_type: std::option::Option<crate::model::JobType>,
    /// <p>Specifies whether any account- or bucket-level access errors occurred when the job ran. For a recurring job, this value indicates the error status of the job's most recent run.</p>
    pub last_run_error_status: std::option::Option<crate::model::LastRunErrorStatus>,
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the job started. If the job is a recurring job, this value indicates when the most recent run started.</p>
    pub last_run_time: std::option::Option<aws_smithy_types::DateTime>,
    /// <p>An array of unique identifiers, one for each managed data identifier that the job is explicitly configured to include (use) or exclude (not use) when it analyzes data. Inclusion or exclusion depends on the managed data identifier selection type specified for the job (managedDataIdentifierSelector). This value is null if the job's managed data identifier selection type is ALL or the job uses only custom data identifiers (customDataIdentifierIds) to analyze data.</p>
    pub managed_data_identifier_ids: std::option::Option<std::vec::Vec<std::string::String>>,
    /// <p>The selection type that determines which managed data identifiers the job uses to analyze data. Possible values are:</p>
    /// <ul>
    /// <li><p>ALL - Use all the managed data identifiers that Amazon Macie provides.</p></li>
    /// <li><p>EXCLUDE - Use all the managed data identifiers that Macie provides except the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
    /// <li><p>INCLUDE - Use only the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
    /// <li><p>NONE - Don't use any managed data identifiers.</p></li>
    /// </ul>
    /// <p>If this value is null, the job uses all managed data identifiers. If this value is null, ALL, or EXCLUDE for a recurring job, the job also uses new managed data identifiers as they are released.</p>
    pub managed_data_identifier_selector:
        std::option::Option<crate::model::ManagedDataIdentifierSelector>,
    /// <p>The custom name of the job.</p>
    pub name: std::option::Option<std::string::String>,
    /// <p>The S3 buckets that contain the objects to analyze, and the scope of that analysis.</p>
    pub s3_job_definition: std::option::Option<crate::model::S3JobDefinition>,
    /// <p>The sampling depth, as a percentage, that determines the percentage of eligible objects that the job analyzes.</p>
    pub sampling_percentage: i32,
    /// <p>The recurrence pattern for running the job. This value is null if the job is configured to run only once.</p>
    pub schedule_frequency: std::option::Option<crate::model::JobScheduleFrequency>,
    /// <p>The number of times that the job has run and processing statistics for the job's current run.</p>
    pub statistics: std::option::Option<crate::model::Statistics>,
    /// <p>A map of key-value pairs that specifies which tags (keys and values) are associated with the classification job.</p>
    pub tags:
        std::option::Option<std::collections::HashMap<std::string::String, std::string::String>>,
    /// <p>If the current status of the job is USER_PAUSED, specifies when the job was paused and when the job or job run will expire and be cancelled if it isn't resumed. This value is present only if the value for jobStatus is USER_PAUSED.</p>
    pub user_paused_details: std::option::Option<crate::model::UserPausedDetails>,
}
impl DescribeClassificationJobOutput {
    /// <p>The token that was provided to ensure the idempotency of the request to create the job.</p>
    pub fn client_token(&self) -> std::option::Option<&str> {
        self.client_token.as_deref()
    }
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the job was created.</p>
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    /// <p>An array of unique identifiers, one for each custom data identifier that the job uses to analyze data. This value is null if the job uses only managed data identifiers to analyze data.</p>
    pub fn custom_data_identifier_ids(&self) -> std::option::Option<&[std::string::String]> {
        self.custom_data_identifier_ids.as_deref()
    }
    /// <p>The custom description of the job.</p>
    pub fn description(&self) -> std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>For a recurring job, specifies whether you configured the job to analyze all existing, eligible objects immediately after the job was created (true). If you configured the job to analyze only those objects that were created or changed after the job was created and before the job's first scheduled run, this value is false. This value is also false for a one-time job.</p>
    pub fn initial_run(&self) -> bool {
        self.initial_run
    }
    /// <p>The Amazon Resource Name (ARN) of the job.</p>
    pub fn job_arn(&self) -> std::option::Option<&str> {
        self.job_arn.as_deref()
    }
    /// <p>The unique identifier for the job.</p>
    pub fn job_id(&self) -> std::option::Option<&str> {
        self.job_id.as_deref()
    }
    /// <p>The current status of the job. Possible values are:</p>
    /// <ul>
    /// <li><p>CANCELLED - You cancelled the job or, if it's a one-time job, you paused the job and didn't resume it within 30 days.</p></li>
    /// <li><p>COMPLETE - For a one-time job, Amazon Macie finished processing the data specified for the job. This value doesn't apply to recurring jobs.</p></li>
    /// <li><p>IDLE - For a recurring job, the previous scheduled run is complete and the next scheduled run is pending. This value doesn't apply to one-time jobs.</p></li>
    /// <li><p>PAUSED - Macie started running the job but additional processing would exceed the monthly sensitive data discovery quota for your account or one or more member accounts that the job analyzes data for.</p></li>
    /// <li><p>RUNNING - For a one-time job, the job is in progress. For a recurring job, a scheduled run is in progress.</p></li>
    /// <li><p>USER_PAUSED - You paused the job. If you paused the job while it had a status of RUNNING and you don't resume it within 30 days of pausing it, the job or job run will expire and be cancelled, depending on the job's type. To check the expiration date, refer to the UserPausedDetails.jobExpiresAt property.</p></li>
    /// </ul>
    pub fn job_status(&self) -> std::option::Option<&crate::model::JobStatus> {
        self.job_status.as_ref()
    }
    /// <p>The schedule for running the job. Possible values are:</p>
    /// <ul>
    /// <li><p>ONE_TIME - The job runs only once.</p></li>
    /// <li><p>SCHEDULED - The job runs on a daily, weekly, or monthly basis. The scheduleFrequency property indicates the recurrence pattern for the job.</p></li>
    /// </ul>
    pub fn job_type(&self) -> std::option::Option<&crate::model::JobType> {
        self.job_type.as_ref()
    }
    /// <p>Specifies whether any account- or bucket-level access errors occurred when the job ran. For a recurring job, this value indicates the error status of the job's most recent run.</p>
    pub fn last_run_error_status(&self) -> std::option::Option<&crate::model::LastRunErrorStatus> {
        self.last_run_error_status.as_ref()
    }
    /// <p>The date and time, in UTC and extended ISO 8601 format, when the job started. If the job is a recurring job, this value indicates when the most recent run started.</p>
    pub fn last_run_time(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.last_run_time.as_ref()
    }
    /// <p>An array of unique identifiers, one for each managed data identifier that the job is explicitly configured to include (use) or exclude (not use) when it analyzes data. Inclusion or exclusion depends on the managed data identifier selection type specified for the job (managedDataIdentifierSelector). This value is null if the job's managed data identifier selection type is ALL or the job uses only custom data identifiers (customDataIdentifierIds) to analyze data.</p>
    pub fn managed_data_identifier_ids(&self) -> std::option::Option<&[std::string::String]> {
        self.managed_data_identifier_ids.as_deref()
    }
    /// <p>The selection type that determines which managed data identifiers the job uses to analyze data. Possible values are:</p>
    /// <ul>
    /// <li><p>ALL - Use all the managed data identifiers that Amazon Macie provides.</p></li>
    /// <li><p>EXCLUDE - Use all the managed data identifiers that Macie provides except the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
    /// <li><p>INCLUDE - Use only the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
    /// <li><p>NONE - Don't use any managed data identifiers.</p></li>
    /// </ul>
    /// <p>If this value is null, the job uses all managed data identifiers. If this value is null, ALL, or EXCLUDE for a recurring job, the job also uses new managed data identifiers as they are released.</p>
    pub fn managed_data_identifier_selector(
        &self,
    ) -> std::option::Option<&crate::model::ManagedDataIdentifierSelector> {
        self.managed_data_identifier_selector.as_ref()
    }
    /// <p>The custom name of the job.</p>
    pub fn name(&self) -> std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>The S3 buckets that contain the objects to analyze, and the scope of that analysis.</p>
    pub fn s3_job_definition(&self) -> std::option::Option<&crate::model::S3JobDefinition> {
        self.s3_job_definition.as_ref()
    }
    /// <p>The sampling depth, as a percentage, that determines the percentage of eligible objects that the job analyzes.</p>
    pub fn sampling_percentage(&self) -> i32 {
        self.sampling_percentage
    }
    /// <p>The recurrence pattern for running the job. This value is null if the job is configured to run only once.</p>
    pub fn schedule_frequency(&self) -> std::option::Option<&crate::model::JobScheduleFrequency> {
        self.schedule_frequency.as_ref()
    }
    /// <p>The number of times that the job has run and processing statistics for the job's current run.</p>
    pub fn statistics(&self) -> std::option::Option<&crate::model::Statistics> {
        self.statistics.as_ref()
    }
    /// <p>A map of key-value pairs that specifies which tags (keys and values) are associated with the classification job.</p>
    pub fn tags(
        &self,
    ) -> std::option::Option<&std::collections::HashMap<std::string::String, std::string::String>>
    {
        self.tags.as_ref()
    }
    /// <p>If the current status of the job is USER_PAUSED, specifies when the job was paused and when the job or job run will expire and be cancelled if it isn't resumed. This value is present only if the value for jobStatus is USER_PAUSED.</p>
    pub fn user_paused_details(&self) -> std::option::Option<&crate::model::UserPausedDetails> {
        self.user_paused_details.as_ref()
    }
}
impl std::fmt::Debug for DescribeClassificationJobOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DescribeClassificationJobOutput");
        formatter.field("client_token", &self.client_token);
        formatter.field("created_at", &self.created_at);
        formatter.field(
            "custom_data_identifier_ids",
            &self.custom_data_identifier_ids,
        );
        formatter.field("description", &self.description);
        formatter.field("initial_run", &self.initial_run);
        formatter.field("job_arn", &self.job_arn);
        formatter.field("job_id", &self.job_id);
        formatter.field("job_status", &self.job_status);
        formatter.field("job_type", &self.job_type);
        formatter.field("last_run_error_status", &self.last_run_error_status);
        formatter.field("last_run_time", &self.last_run_time);
        formatter.field(
            "managed_data_identifier_ids",
            &self.managed_data_identifier_ids,
        );
        formatter.field(
            "managed_data_identifier_selector",
            &self.managed_data_identifier_selector,
        );
        formatter.field("name", &self.name);
        formatter.field("s3_job_definition", &self.s3_job_definition);
        formatter.field("sampling_percentage", &self.sampling_percentage);
        formatter.field("schedule_frequency", &self.schedule_frequency);
        formatter.field("statistics", &self.statistics);
        formatter.field("tags", &self.tags);
        formatter.field("user_paused_details", &self.user_paused_details);
        formatter.finish()
    }
}
/// See [`DescribeClassificationJobOutput`](crate::output::DescribeClassificationJobOutput)
pub mod describe_classification_job_output {
    /// A builder for [`DescribeClassificationJobOutput`](crate::output::DescribeClassificationJobOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) client_token: std::option::Option<std::string::String>,
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) custom_data_identifier_ids:
            std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) description: std::option::Option<std::string::String>,
        pub(crate) initial_run: std::option::Option<bool>,
        pub(crate) job_arn: std::option::Option<std::string::String>,
        pub(crate) job_id: std::option::Option<std::string::String>,
        pub(crate) job_status: std::option::Option<crate::model::JobStatus>,
        pub(crate) job_type: std::option::Option<crate::model::JobType>,
        pub(crate) last_run_error_status: std::option::Option<crate::model::LastRunErrorStatus>,
        pub(crate) last_run_time: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) managed_data_identifier_ids:
            std::option::Option<std::vec::Vec<std::string::String>>,
        pub(crate) managed_data_identifier_selector:
            std::option::Option<crate::model::ManagedDataIdentifierSelector>,
        pub(crate) name: std::option::Option<std::string::String>,
        pub(crate) s3_job_definition: std::option::Option<crate::model::S3JobDefinition>,
        pub(crate) sampling_percentage: std::option::Option<i32>,
        pub(crate) schedule_frequency: std::option::Option<crate::model::JobScheduleFrequency>,
        pub(crate) statistics: std::option::Option<crate::model::Statistics>,
        pub(crate) tags: std::option::Option<
            std::collections::HashMap<std::string::String, std::string::String>,
        >,
        pub(crate) user_paused_details: std::option::Option<crate::model::UserPausedDetails>,
    }
    impl Builder {
        /// <p>The token that was provided to ensure the idempotency of the request to create the job.</p>
        pub fn client_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.client_token = Some(input.into());
            self
        }
        /// <p>The token that was provided to ensure the idempotency of the request to create the job.</p>
        pub fn set_client_token(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.client_token = input;
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the job was created.</p>
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the job was created.</p>
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        /// Appends an item to `custom_data_identifier_ids`.
        ///
        /// To override the contents of this collection use [`set_custom_data_identifier_ids`](Self::set_custom_data_identifier_ids).
        ///
        /// <p>An array of unique identifiers, one for each custom data identifier that the job uses to analyze data. This value is null if the job uses only managed data identifiers to analyze data.</p>
        pub fn custom_data_identifier_ids(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.custom_data_identifier_ids.unwrap_or_default();
            v.push(input.into());
            self.custom_data_identifier_ids = Some(v);
            self
        }
        /// <p>An array of unique identifiers, one for each custom data identifier that the job uses to analyze data. This value is null if the job uses only managed data identifiers to analyze data.</p>
        pub fn set_custom_data_identifier_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.custom_data_identifier_ids = input;
            self
        }
        /// <p>The custom description of the job.</p>
        pub fn description(mut self, input: impl Into<std::string::String>) -> Self {
            self.description = Some(input.into());
            self
        }
        /// <p>The custom description of the job.</p>
        pub fn set_description(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.description = input;
            self
        }
        /// <p>For a recurring job, specifies whether you configured the job to analyze all existing, eligible objects immediately after the job was created (true). If you configured the job to analyze only those objects that were created or changed after the job was created and before the job's first scheduled run, this value is false. This value is also false for a one-time job.</p>
        pub fn initial_run(mut self, input: bool) -> Self {
            self.initial_run = Some(input);
            self
        }
        /// <p>For a recurring job, specifies whether you configured the job to analyze all existing, eligible objects immediately after the job was created (true). If you configured the job to analyze only those objects that were created or changed after the job was created and before the job's first scheduled run, this value is false. This value is also false for a one-time job.</p>
        pub fn set_initial_run(mut self, input: std::option::Option<bool>) -> Self {
            self.initial_run = input;
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the job.</p>
        pub fn job_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the job.</p>
        pub fn set_job_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_arn = input;
            self
        }
        /// <p>The unique identifier for the job.</p>
        pub fn job_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_id = Some(input.into());
            self
        }
        /// <p>The unique identifier for the job.</p>
        pub fn set_job_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_id = input;
            self
        }
        /// <p>The current status of the job. Possible values are:</p>
        /// <ul>
        /// <li><p>CANCELLED - You cancelled the job or, if it's a one-time job, you paused the job and didn't resume it within 30 days.</p></li>
        /// <li><p>COMPLETE - For a one-time job, Amazon Macie finished processing the data specified for the job. This value doesn't apply to recurring jobs.</p></li>
        /// <li><p>IDLE - For a recurring job, the previous scheduled run is complete and the next scheduled run is pending. This value doesn't apply to one-time jobs.</p></li>
        /// <li><p>PAUSED - Macie started running the job but additional processing would exceed the monthly sensitive data discovery quota for your account or one or more member accounts that the job analyzes data for.</p></li>
        /// <li><p>RUNNING - For a one-time job, the job is in progress. For a recurring job, a scheduled run is in progress.</p></li>
        /// <li><p>USER_PAUSED - You paused the job. If you paused the job while it had a status of RUNNING and you don't resume it within 30 days of pausing it, the job or job run will expire and be cancelled, depending on the job's type. To check the expiration date, refer to the UserPausedDetails.jobExpiresAt property.</p></li>
        /// </ul>
        pub fn job_status(mut self, input: crate::model::JobStatus) -> Self {
            self.job_status = Some(input);
            self
        }
        /// <p>The current status of the job. Possible values are:</p>
        /// <ul>
        /// <li><p>CANCELLED - You cancelled the job or, if it's a one-time job, you paused the job and didn't resume it within 30 days.</p></li>
        /// <li><p>COMPLETE - For a one-time job, Amazon Macie finished processing the data specified for the job. This value doesn't apply to recurring jobs.</p></li>
        /// <li><p>IDLE - For a recurring job, the previous scheduled run is complete and the next scheduled run is pending. This value doesn't apply to one-time jobs.</p></li>
        /// <li><p>PAUSED - Macie started running the job but additional processing would exceed the monthly sensitive data discovery quota for your account or one or more member accounts that the job analyzes data for.</p></li>
        /// <li><p>RUNNING - For a one-time job, the job is in progress. For a recurring job, a scheduled run is in progress.</p></li>
        /// <li><p>USER_PAUSED - You paused the job. If you paused the job while it had a status of RUNNING and you don't resume it within 30 days of pausing it, the job or job run will expire and be cancelled, depending on the job's type. To check the expiration date, refer to the UserPausedDetails.jobExpiresAt property.</p></li>
        /// </ul>
        pub fn set_job_status(
            mut self,
            input: std::option::Option<crate::model::JobStatus>,
        ) -> Self {
            self.job_status = input;
            self
        }
        /// <p>The schedule for running the job. Possible values are:</p>
        /// <ul>
        /// <li><p>ONE_TIME - The job runs only once.</p></li>
        /// <li><p>SCHEDULED - The job runs on a daily, weekly, or monthly basis. The scheduleFrequency property indicates the recurrence pattern for the job.</p></li>
        /// </ul>
        pub fn job_type(mut self, input: crate::model::JobType) -> Self {
            self.job_type = Some(input);
            self
        }
        /// <p>The schedule for running the job. Possible values are:</p>
        /// <ul>
        /// <li><p>ONE_TIME - The job runs only once.</p></li>
        /// <li><p>SCHEDULED - The job runs on a daily, weekly, or monthly basis. The scheduleFrequency property indicates the recurrence pattern for the job.</p></li>
        /// </ul>
        pub fn set_job_type(mut self, input: std::option::Option<crate::model::JobType>) -> Self {
            self.job_type = input;
            self
        }
        /// <p>Specifies whether any account- or bucket-level access errors occurred when the job ran. For a recurring job, this value indicates the error status of the job's most recent run.</p>
        pub fn last_run_error_status(mut self, input: crate::model::LastRunErrorStatus) -> Self {
            self.last_run_error_status = Some(input);
            self
        }
        /// <p>Specifies whether any account- or bucket-level access errors occurred when the job ran. For a recurring job, this value indicates the error status of the job's most recent run.</p>
        pub fn set_last_run_error_status(
            mut self,
            input: std::option::Option<crate::model::LastRunErrorStatus>,
        ) -> Self {
            self.last_run_error_status = input;
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the job started. If the job is a recurring job, this value indicates when the most recent run started.</p>
        pub fn last_run_time(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.last_run_time = Some(input);
            self
        }
        /// <p>The date and time, in UTC and extended ISO 8601 format, when the job started. If the job is a recurring job, this value indicates when the most recent run started.</p>
        pub fn set_last_run_time(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.last_run_time = input;
            self
        }
        /// Appends an item to `managed_data_identifier_ids`.
        ///
        /// To override the contents of this collection use [`set_managed_data_identifier_ids`](Self::set_managed_data_identifier_ids).
        ///
        /// <p>An array of unique identifiers, one for each managed data identifier that the job is explicitly configured to include (use) or exclude (not use) when it analyzes data. Inclusion or exclusion depends on the managed data identifier selection type specified for the job (managedDataIdentifierSelector). This value is null if the job's managed data identifier selection type is ALL or the job uses only custom data identifiers (customDataIdentifierIds) to analyze data.</p>
        pub fn managed_data_identifier_ids(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            let mut v = self.managed_data_identifier_ids.unwrap_or_default();
            v.push(input.into());
            self.managed_data_identifier_ids = Some(v);
            self
        }
        /// <p>An array of unique identifiers, one for each managed data identifier that the job is explicitly configured to include (use) or exclude (not use) when it analyzes data. Inclusion or exclusion depends on the managed data identifier selection type specified for the job (managedDataIdentifierSelector). This value is null if the job's managed data identifier selection type is ALL or the job uses only custom data identifiers (customDataIdentifierIds) to analyze data.</p>
        pub fn set_managed_data_identifier_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.managed_data_identifier_ids = input;
            self
        }
        /// <p>The selection type that determines which managed data identifiers the job uses to analyze data. Possible values are:</p>
        /// <ul>
        /// <li><p>ALL - Use all the managed data identifiers that Amazon Macie provides.</p></li>
        /// <li><p>EXCLUDE - Use all the managed data identifiers that Macie provides except the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
        /// <li><p>INCLUDE - Use only the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
        /// <li><p>NONE - Don't use any managed data identifiers.</p></li>
        /// </ul>
        /// <p>If this value is null, the job uses all managed data identifiers. If this value is null, ALL, or EXCLUDE for a recurring job, the job also uses new managed data identifiers as they are released.</p>
        pub fn managed_data_identifier_selector(
            mut self,
            input: crate::model::ManagedDataIdentifierSelector,
        ) -> Self {
            self.managed_data_identifier_selector = Some(input);
            self
        }
        /// <p>The selection type that determines which managed data identifiers the job uses to analyze data. Possible values are:</p>
        /// <ul>
        /// <li><p>ALL - Use all the managed data identifiers that Amazon Macie provides.</p></li>
        /// <li><p>EXCLUDE - Use all the managed data identifiers that Macie provides except the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
        /// <li><p>INCLUDE - Use only the managed data identifiers specified by the managedDataIdentifierIds property.</p></li>
        /// <li><p>NONE - Don't use any managed data identifiers.</p></li>
        /// </ul>
        /// <p>If this value is null, the job uses all managed data identifiers. If this value is null, ALL, or EXCLUDE for a recurring job, the job also uses new managed data identifiers as they are released.</p>
        pub fn set_managed_data_identifier_selector(
            mut self,
            input: std::option::Option<crate::model::ManagedDataIdentifierSelector>,
        ) -> Self {
            self.managed_data_identifier_selector = input;
            self
        }
        /// <p>The custom name of the job.</p>
        pub fn name(mut self, input: impl Into<std::string::String>) -> Self {
            self.name = Some(input.into());
            self
        }
        /// <p>The custom name of the job.</p>
        pub fn set_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.name = input;
            self
        }
        /// <p>The S3 buckets that contain the objects to analyze, and the scope of that analysis.</p>
        pub fn s3_job_definition(mut self, input: crate::model::S3JobDefinition) -> Self {
            self.s3_job_definition = Some(input);
            self
        }
        /// <p>The S3 buckets that contain the objects to analyze, and the scope of that analysis.</p>
        pub fn set_s3_job_definition(
            mut self,
            input: std::option::Option<crate::model::S3JobDefinition>,
        ) -> Self {
            self.s3_job_definition = input;
            self
        }
        /// <p>The sampling depth, as a percentage, that determines the percentage of eligible objects that the job analyzes.</p>
        pub fn sampling_percentage(mut self, input: i32) -> Self {
            self.sampling_percentage = Some(input);
            self
        }
        /// <p>The sampling depth, as a percentage, that determines the percentage of eligible objects that the job analyzes.</p>
        pub fn set_sampling_percentage(mut self, input: std::option::Option<i32>) -> Self {
            self.sampling_percentage = input;
            self
        }
        /// <p>The recurrence pattern for running the job. This value is null if the job is configured to run only once.</p>
        pub fn schedule_frequency(mut self, input: crate::model::JobScheduleFrequency) -> Self {
            self.schedule_frequency = Some(input);
            self
        }
        /// <p>The recurrence pattern for running the job. This value is null if the job is configured to run only once.</p>
        pub fn set_schedule_frequency(
            mut self,
            input: std::option::Option<crate::model::JobScheduleFrequency>,
        ) -> Self {
            self.schedule_frequency = input;
            self
        }
        /// <p>The number of times that the job has run and processing statistics for the job's current run.</p>
        pub fn statistics(mut self, input: crate::model::Statistics) -> Self {
            self.statistics = Some(input);
            self
        }
        /// <p>The number of times that the job has run and processing statistics for the job's current run.</p>
        pub fn set_statistics(
            mut self,
            input: std::option::Option<crate::model::Statistics>,
        ) -> Self {
            self.statistics = input;
            self
        }
        /// Adds a key-value pair to `tags`.
        ///
        /// To override the contents of this collection use [`set_tags`](Self::set_tags).
        ///
        /// <p>A map of key-value pairs that specifies which tags (keys and values) are associated with the classification job.</p>
        pub fn tags(
            mut self,
            k: impl Into<std::string::String>,
            v: impl Into<std::string::String>,
        ) -> Self {
            let mut hash_map = self.tags.unwrap_or_default();
            hash_map.insert(k.into(), v.into());
            self.tags = Some(hash_map);
            self
        }
        /// <p>A map of key-value pairs that specifies which tags (keys and values) are associated with the classification job.</p>
        pub fn set_tags(
            mut self,
            input: std::option::Option<
                std::collections::HashMap<std::string::String, std::string::String>,
            >,
        ) -> Self {
            self.tags = input;
            self
        }
        /// <p>If the current status of the job is USER_PAUSED, specifies when the job was paused and when the job or job run will expire and be cancelled if it isn't resumed. This value is present only if the value for jobStatus is USER_PAUSED.</p>
        pub fn user_paused_details(mut self, input: crate::model::UserPausedDetails) -> Self {
            self.user_paused_details = Some(input);
            self
        }
        /// <p>If the current status of the job is USER_PAUSED, specifies when the job was paused and when the job or job run will expire and be cancelled if it isn't resumed. This value is present only if the value for jobStatus is USER_PAUSED.</p>
        pub fn set_user_paused_details(
            mut self,
            input: std::option::Option<crate::model::UserPausedDetails>,
        ) -> Self {
            self.user_paused_details = input;
            self
        }
        /// Consumes the builder and constructs a [`DescribeClassificationJobOutput`](crate::output::DescribeClassificationJobOutput)
        pub fn build(self) -> crate::output::DescribeClassificationJobOutput {
            crate::output::DescribeClassificationJobOutput {
                client_token: self.client_token,
                created_at: self.created_at,
                custom_data_identifier_ids: self.custom_data_identifier_ids,
                description: self.description,
                initial_run: self.initial_run.unwrap_or_default(),
                job_arn: self.job_arn,
                job_id: self.job_id,
                job_status: self.job_status,
                job_type: self.job_type,
                last_run_error_status: self.last_run_error_status,
                last_run_time: self.last_run_time,
                managed_data_identifier_ids: self.managed_data_identifier_ids,
                managed_data_identifier_selector: self.managed_data_identifier_selector,
                name: self.name,
                s3_job_definition: self.s3_job_definition,
                sampling_percentage: self.sampling_percentage.unwrap_or_default(),
                schedule_frequency: self.schedule_frequency,
                statistics: self.statistics,
                tags: self.tags,
                user_paused_details: self.user_paused_details,
            }
        }
    }
}
impl DescribeClassificationJobOutput {
    /// Creates a new builder-style object to manufacture [`DescribeClassificationJobOutput`](crate::output::DescribeClassificationJobOutput)
    pub fn builder() -> crate::output::describe_classification_job_output::Builder {
        crate::output::describe_classification_job_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DescribeBucketsOutput {
    /// <p>An array of objects, one for each bucket that meets the filter criteria specified in the request.</p>
    pub buckets: std::option::Option<std::vec::Vec<crate::model::BucketMetadata>>,
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub next_token: std::option::Option<std::string::String>,
}
impl DescribeBucketsOutput {
    /// <p>An array of objects, one for each bucket that meets the filter criteria specified in the request.</p>
    pub fn buckets(&self) -> std::option::Option<&[crate::model::BucketMetadata]> {
        self.buckets.as_deref()
    }
    /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
    pub fn next_token(&self) -> std::option::Option<&str> {
        self.next_token.as_deref()
    }
}
impl std::fmt::Debug for DescribeBucketsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DescribeBucketsOutput");
        formatter.field("buckets", &self.buckets);
        formatter.field("next_token", &self.next_token);
        formatter.finish()
    }
}
/// See [`DescribeBucketsOutput`](crate::output::DescribeBucketsOutput)
pub mod describe_buckets_output {
    /// A builder for [`DescribeBucketsOutput`](crate::output::DescribeBucketsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) buckets: std::option::Option<std::vec::Vec<crate::model::BucketMetadata>>,
        pub(crate) next_token: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// Appends an item to `buckets`.
        ///
        /// To override the contents of this collection use [`set_buckets`](Self::set_buckets).
        ///
        /// <p>An array of objects, one for each bucket that meets the filter criteria specified in the request.</p>
        pub fn buckets(mut self, input: crate::model::BucketMetadata) -> Self {
            let mut v = self.buckets.unwrap_or_default();
            v.push(input);
            self.buckets = Some(v);
            self
        }
        /// <p>An array of objects, one for each bucket that meets the filter criteria specified in the request.</p>
        pub fn set_buckets(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::BucketMetadata>>,
        ) -> Self {
            self.buckets = input;
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</p>
        pub fn next_token(mut self, input: impl Into<std::string::String>) -> Self {
            self.next_token = Some(input.into());
            self
        }
        /// <p>The string to use in a subsequent request to get the next page of results in a paginated response. This value is null if there are no additional pages.</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 [`DescribeBucketsOutput`](crate::output::DescribeBucketsOutput)
        pub fn build(self) -> crate::output::DescribeBucketsOutput {
            crate::output::DescribeBucketsOutput {
                buckets: self.buckets,
                next_token: self.next_token,
            }
        }
    }
}
impl DescribeBucketsOutput {
    /// Creates a new builder-style object to manufacture [`DescribeBucketsOutput`](crate::output::DescribeBucketsOutput)
    pub fn builder() -> crate::output::describe_buckets_output::Builder {
        crate::output::describe_buckets_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DeleteMemberOutput {}
impl std::fmt::Debug for DeleteMemberOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DeleteMemberOutput");
        formatter.finish()
    }
}
/// See [`DeleteMemberOutput`](crate::output::DeleteMemberOutput)
pub mod delete_member_output {
    /// A builder for [`DeleteMemberOutput`](crate::output::DeleteMemberOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DeleteMemberOutput`](crate::output::DeleteMemberOutput)
        pub fn build(self) -> crate::output::DeleteMemberOutput {
            crate::output::DeleteMemberOutput {}
        }
    }
}
impl DeleteMemberOutput {
    /// Creates a new builder-style object to manufacture [`DeleteMemberOutput`](crate::output::DeleteMemberOutput)
    pub fn builder() -> crate::output::delete_member_output::Builder {
        crate::output::delete_member_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DeleteInvitationsOutput {
    /// <p>An array of objects, one for each account whose invitation hasn't been deleted. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
    pub unprocessed_accounts: std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
}
impl DeleteInvitationsOutput {
    /// <p>An array of objects, one for each account whose invitation hasn't been deleted. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
    pub fn unprocessed_accounts(&self) -> std::option::Option<&[crate::model::UnprocessedAccount]> {
        self.unprocessed_accounts.as_deref()
    }
}
impl std::fmt::Debug for DeleteInvitationsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DeleteInvitationsOutput");
        formatter.field("unprocessed_accounts", &self.unprocessed_accounts);
        formatter.finish()
    }
}
/// See [`DeleteInvitationsOutput`](crate::output::DeleteInvitationsOutput)
pub mod delete_invitations_output {
    /// A builder for [`DeleteInvitationsOutput`](crate::output::DeleteInvitationsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) unprocessed_accounts:
            std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
    }
    impl Builder {
        /// Appends an item to `unprocessed_accounts`.
        ///
        /// To override the contents of this collection use [`set_unprocessed_accounts`](Self::set_unprocessed_accounts).
        ///
        /// <p>An array of objects, one for each account whose invitation hasn't been deleted. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
        pub fn unprocessed_accounts(mut self, input: crate::model::UnprocessedAccount) -> Self {
            let mut v = self.unprocessed_accounts.unwrap_or_default();
            v.push(input);
            self.unprocessed_accounts = Some(v);
            self
        }
        /// <p>An array of objects, one for each account whose invitation hasn't been deleted. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
        pub fn set_unprocessed_accounts(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
        ) -> Self {
            self.unprocessed_accounts = input;
            self
        }
        /// Consumes the builder and constructs a [`DeleteInvitationsOutput`](crate::output::DeleteInvitationsOutput)
        pub fn build(self) -> crate::output::DeleteInvitationsOutput {
            crate::output::DeleteInvitationsOutput {
                unprocessed_accounts: self.unprocessed_accounts,
            }
        }
    }
}
impl DeleteInvitationsOutput {
    /// Creates a new builder-style object to manufacture [`DeleteInvitationsOutput`](crate::output::DeleteInvitationsOutput)
    pub fn builder() -> crate::output::delete_invitations_output::Builder {
        crate::output::delete_invitations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DeleteFindingsFilterOutput {}
impl std::fmt::Debug for DeleteFindingsFilterOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DeleteFindingsFilterOutput");
        formatter.finish()
    }
}
/// See [`DeleteFindingsFilterOutput`](crate::output::DeleteFindingsFilterOutput)
pub mod delete_findings_filter_output {
    /// A builder for [`DeleteFindingsFilterOutput`](crate::output::DeleteFindingsFilterOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DeleteFindingsFilterOutput`](crate::output::DeleteFindingsFilterOutput)
        pub fn build(self) -> crate::output::DeleteFindingsFilterOutput {
            crate::output::DeleteFindingsFilterOutput {}
        }
    }
}
impl DeleteFindingsFilterOutput {
    /// Creates a new builder-style object to manufacture [`DeleteFindingsFilterOutput`](crate::output::DeleteFindingsFilterOutput)
    pub fn builder() -> crate::output::delete_findings_filter_output::Builder {
        crate::output::delete_findings_filter_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DeleteCustomDataIdentifierOutput {}
impl std::fmt::Debug for DeleteCustomDataIdentifierOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DeleteCustomDataIdentifierOutput");
        formatter.finish()
    }
}
/// See [`DeleteCustomDataIdentifierOutput`](crate::output::DeleteCustomDataIdentifierOutput)
pub mod delete_custom_data_identifier_output {
    /// A builder for [`DeleteCustomDataIdentifierOutput`](crate::output::DeleteCustomDataIdentifierOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`DeleteCustomDataIdentifierOutput`](crate::output::DeleteCustomDataIdentifierOutput)
        pub fn build(self) -> crate::output::DeleteCustomDataIdentifierOutput {
            crate::output::DeleteCustomDataIdentifierOutput {}
        }
    }
}
impl DeleteCustomDataIdentifierOutput {
    /// Creates a new builder-style object to manufacture [`DeleteCustomDataIdentifierOutput`](crate::output::DeleteCustomDataIdentifierOutput)
    pub fn builder() -> crate::output::delete_custom_data_identifier_output::Builder {
        crate::output::delete_custom_data_identifier_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DeclineInvitationsOutput {
    /// <p>An array of objects, one for each account whose invitation hasn't been declined. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
    pub unprocessed_accounts: std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
}
impl DeclineInvitationsOutput {
    /// <p>An array of objects, one for each account whose invitation hasn't been declined. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
    pub fn unprocessed_accounts(&self) -> std::option::Option<&[crate::model::UnprocessedAccount]> {
        self.unprocessed_accounts.as_deref()
    }
}
impl std::fmt::Debug for DeclineInvitationsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DeclineInvitationsOutput");
        formatter.field("unprocessed_accounts", &self.unprocessed_accounts);
        formatter.finish()
    }
}
/// See [`DeclineInvitationsOutput`](crate::output::DeclineInvitationsOutput)
pub mod decline_invitations_output {
    /// A builder for [`DeclineInvitationsOutput`](crate::output::DeclineInvitationsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) unprocessed_accounts:
            std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
    }
    impl Builder {
        /// Appends an item to `unprocessed_accounts`.
        ///
        /// To override the contents of this collection use [`set_unprocessed_accounts`](Self::set_unprocessed_accounts).
        ///
        /// <p>An array of objects, one for each account whose invitation hasn't been declined. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
        pub fn unprocessed_accounts(mut self, input: crate::model::UnprocessedAccount) -> Self {
            let mut v = self.unprocessed_accounts.unwrap_or_default();
            v.push(input);
            self.unprocessed_accounts = Some(v);
            self
        }
        /// <p>An array of objects, one for each account whose invitation hasn't been declined. Each object identifies the account and explains why the request hasn't been processed for that account.</p>
        pub fn set_unprocessed_accounts(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
        ) -> Self {
            self.unprocessed_accounts = input;
            self
        }
        /// Consumes the builder and constructs a [`DeclineInvitationsOutput`](crate::output::DeclineInvitationsOutput)
        pub fn build(self) -> crate::output::DeclineInvitationsOutput {
            crate::output::DeclineInvitationsOutput {
                unprocessed_accounts: self.unprocessed_accounts,
            }
        }
    }
}
impl DeclineInvitationsOutput {
    /// Creates a new builder-style object to manufacture [`DeclineInvitationsOutput`](crate::output::DeclineInvitationsOutput)
    pub fn builder() -> crate::output::decline_invitations_output::Builder {
        crate::output::decline_invitations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct CreateSampleFindingsOutput {}
impl std::fmt::Debug for CreateSampleFindingsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("CreateSampleFindingsOutput");
        formatter.finish()
    }
}
/// See [`CreateSampleFindingsOutput`](crate::output::CreateSampleFindingsOutput)
pub mod create_sample_findings_output {
    /// A builder for [`CreateSampleFindingsOutput`](crate::output::CreateSampleFindingsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`CreateSampleFindingsOutput`](crate::output::CreateSampleFindingsOutput)
        pub fn build(self) -> crate::output::CreateSampleFindingsOutput {
            crate::output::CreateSampleFindingsOutput {}
        }
    }
}
impl CreateSampleFindingsOutput {
    /// Creates a new builder-style object to manufacture [`CreateSampleFindingsOutput`](crate::output::CreateSampleFindingsOutput)
    pub fn builder() -> crate::output::create_sample_findings_output::Builder {
        crate::output::create_sample_findings_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct CreateMemberOutput {
    /// <p>The Amazon Resource Name (ARN) of the account that was associated with the administrator account.</p>
    pub arn: std::option::Option<std::string::String>,
}
impl CreateMemberOutput {
    /// <p>The Amazon Resource Name (ARN) of the account that was associated with the administrator account.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
}
impl std::fmt::Debug for CreateMemberOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("CreateMemberOutput");
        formatter.field("arn", &self.arn);
        formatter.finish()
    }
}
/// See [`CreateMemberOutput`](crate::output::CreateMemberOutput)
pub mod create_member_output {
    /// A builder for [`CreateMemberOutput`](crate::output::CreateMemberOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) of the account that was associated with the administrator account.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the account that was associated with the administrator account.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateMemberOutput`](crate::output::CreateMemberOutput)
        pub fn build(self) -> crate::output::CreateMemberOutput {
            crate::output::CreateMemberOutput { arn: self.arn }
        }
    }
}
impl CreateMemberOutput {
    /// Creates a new builder-style object to manufacture [`CreateMemberOutput`](crate::output::CreateMemberOutput)
    pub fn builder() -> crate::output::create_member_output::Builder {
        crate::output::create_member_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct CreateInvitationsOutput {
    /// <p>An array of objects, one for each account whose invitation hasn't been processed. Each object identifies the account and explains why the invitation hasn't been processed for the account.</p>
    pub unprocessed_accounts: std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
}
impl CreateInvitationsOutput {
    /// <p>An array of objects, one for each account whose invitation hasn't been processed. Each object identifies the account and explains why the invitation hasn't been processed for the account.</p>
    pub fn unprocessed_accounts(&self) -> std::option::Option<&[crate::model::UnprocessedAccount]> {
        self.unprocessed_accounts.as_deref()
    }
}
impl std::fmt::Debug for CreateInvitationsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("CreateInvitationsOutput");
        formatter.field("unprocessed_accounts", &self.unprocessed_accounts);
        formatter.finish()
    }
}
/// See [`CreateInvitationsOutput`](crate::output::CreateInvitationsOutput)
pub mod create_invitations_output {
    /// A builder for [`CreateInvitationsOutput`](crate::output::CreateInvitationsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) unprocessed_accounts:
            std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
    }
    impl Builder {
        /// Appends an item to `unprocessed_accounts`.
        ///
        /// To override the contents of this collection use [`set_unprocessed_accounts`](Self::set_unprocessed_accounts).
        ///
        /// <p>An array of objects, one for each account whose invitation hasn't been processed. Each object identifies the account and explains why the invitation hasn't been processed for the account.</p>
        pub fn unprocessed_accounts(mut self, input: crate::model::UnprocessedAccount) -> Self {
            let mut v = self.unprocessed_accounts.unwrap_or_default();
            v.push(input);
            self.unprocessed_accounts = Some(v);
            self
        }
        /// <p>An array of objects, one for each account whose invitation hasn't been processed. Each object identifies the account and explains why the invitation hasn't been processed for the account.</p>
        pub fn set_unprocessed_accounts(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::UnprocessedAccount>>,
        ) -> Self {
            self.unprocessed_accounts = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateInvitationsOutput`](crate::output::CreateInvitationsOutput)
        pub fn build(self) -> crate::output::CreateInvitationsOutput {
            crate::output::CreateInvitationsOutput {
                unprocessed_accounts: self.unprocessed_accounts,
            }
        }
    }
}
impl CreateInvitationsOutput {
    /// Creates a new builder-style object to manufacture [`CreateInvitationsOutput`](crate::output::CreateInvitationsOutput)
    pub fn builder() -> crate::output::create_invitations_output::Builder {
        crate::output::create_invitations_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct CreateFindingsFilterOutput {
    /// <p>The Amazon Resource Name (ARN) of the filter that was created.</p>
    pub arn: std::option::Option<std::string::String>,
    /// <p>The unique identifier for the filter that was created.</p>
    pub id: std::option::Option<std::string::String>,
}
impl CreateFindingsFilterOutput {
    /// <p>The Amazon Resource Name (ARN) of the filter that was created.</p>
    pub fn arn(&self) -> std::option::Option<&str> {
        self.arn.as_deref()
    }
    /// <p>The unique identifier for the filter that was created.</p>
    pub fn id(&self) -> std::option::Option<&str> {
        self.id.as_deref()
    }
}
impl std::fmt::Debug for CreateFindingsFilterOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("CreateFindingsFilterOutput");
        formatter.field("arn", &self.arn);
        formatter.field("id", &self.id);
        formatter.finish()
    }
}
/// See [`CreateFindingsFilterOutput`](crate::output::CreateFindingsFilterOutput)
pub mod create_findings_filter_output {
    /// A builder for [`CreateFindingsFilterOutput`](crate::output::CreateFindingsFilterOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) arn: std::option::Option<std::string::String>,
        pub(crate) id: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) of the filter that was created.</p>
        pub fn arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the filter that was created.</p>
        pub fn set_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.arn = input;
            self
        }
        /// <p>The unique identifier for the filter that was created.</p>
        pub fn id(mut self, input: impl Into<std::string::String>) -> Self {
            self.id = Some(input.into());
            self
        }
        /// <p>The unique identifier for the filter that was created.</p>
        pub fn set_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.id = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateFindingsFilterOutput`](crate::output::CreateFindingsFilterOutput)
        pub fn build(self) -> crate::output::CreateFindingsFilterOutput {
            crate::output::CreateFindingsFilterOutput {
                arn: self.arn,
                id: self.id,
            }
        }
    }
}
impl CreateFindingsFilterOutput {
    /// Creates a new builder-style object to manufacture [`CreateFindingsFilterOutput`](crate::output::CreateFindingsFilterOutput)
    pub fn builder() -> crate::output::create_findings_filter_output::Builder {
        crate::output::create_findings_filter_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct CreateCustomDataIdentifierOutput {
    /// <p>The unique identifier for the custom data identifier that was created.</p>
    pub custom_data_identifier_id: std::option::Option<std::string::String>,
}
impl CreateCustomDataIdentifierOutput {
    /// <p>The unique identifier for the custom data identifier that was created.</p>
    pub fn custom_data_identifier_id(&self) -> std::option::Option<&str> {
        self.custom_data_identifier_id.as_deref()
    }
}
impl std::fmt::Debug for CreateCustomDataIdentifierOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("CreateCustomDataIdentifierOutput");
        formatter.field("custom_data_identifier_id", &self.custom_data_identifier_id);
        formatter.finish()
    }
}
/// See [`CreateCustomDataIdentifierOutput`](crate::output::CreateCustomDataIdentifierOutput)
pub mod create_custom_data_identifier_output {
    /// A builder for [`CreateCustomDataIdentifierOutput`](crate::output::CreateCustomDataIdentifierOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) custom_data_identifier_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The unique identifier for the custom data identifier that was created.</p>
        pub fn custom_data_identifier_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.custom_data_identifier_id = Some(input.into());
            self
        }
        /// <p>The unique identifier for the custom data identifier that was created.</p>
        pub fn set_custom_data_identifier_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.custom_data_identifier_id = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateCustomDataIdentifierOutput`](crate::output::CreateCustomDataIdentifierOutput)
        pub fn build(self) -> crate::output::CreateCustomDataIdentifierOutput {
            crate::output::CreateCustomDataIdentifierOutput {
                custom_data_identifier_id: self.custom_data_identifier_id,
            }
        }
    }
}
impl CreateCustomDataIdentifierOutput {
    /// Creates a new builder-style object to manufacture [`CreateCustomDataIdentifierOutput`](crate::output::CreateCustomDataIdentifierOutput)
    pub fn builder() -> crate::output::create_custom_data_identifier_output::Builder {
        crate::output::create_custom_data_identifier_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct CreateClassificationJobOutput {
    /// <p>The Amazon Resource Name (ARN) of the job.</p>
    pub job_arn: std::option::Option<std::string::String>,
    /// <p>The unique identifier for the job.</p>
    pub job_id: std::option::Option<std::string::String>,
}
impl CreateClassificationJobOutput {
    /// <p>The Amazon Resource Name (ARN) of the job.</p>
    pub fn job_arn(&self) -> std::option::Option<&str> {
        self.job_arn.as_deref()
    }
    /// <p>The unique identifier for the job.</p>
    pub fn job_id(&self) -> std::option::Option<&str> {
        self.job_id.as_deref()
    }
}
impl std::fmt::Debug for CreateClassificationJobOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("CreateClassificationJobOutput");
        formatter.field("job_arn", &self.job_arn);
        formatter.field("job_id", &self.job_id);
        formatter.finish()
    }
}
/// See [`CreateClassificationJobOutput`](crate::output::CreateClassificationJobOutput)
pub mod create_classification_job_output {
    /// A builder for [`CreateClassificationJobOutput`](crate::output::CreateClassificationJobOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) job_arn: std::option::Option<std::string::String>,
        pub(crate) job_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>The Amazon Resource Name (ARN) of the job.</p>
        pub fn job_arn(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_arn = Some(input.into());
            self
        }
        /// <p>The Amazon Resource Name (ARN) of the job.</p>
        pub fn set_job_arn(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_arn = input;
            self
        }
        /// <p>The unique identifier for the job.</p>
        pub fn job_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_id = Some(input.into());
            self
        }
        /// <p>The unique identifier for the job.</p>
        pub fn set_job_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_id = input;
            self
        }
        /// Consumes the builder and constructs a [`CreateClassificationJobOutput`](crate::output::CreateClassificationJobOutput)
        pub fn build(self) -> crate::output::CreateClassificationJobOutput {
            crate::output::CreateClassificationJobOutput {
                job_arn: self.job_arn,
                job_id: self.job_id,
            }
        }
    }
}
impl CreateClassificationJobOutput {
    /// Creates a new builder-style object to manufacture [`CreateClassificationJobOutput`](crate::output::CreateClassificationJobOutput)
    pub fn builder() -> crate::output::create_classification_job_output::Builder {
        crate::output::create_classification_job_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct BatchGetCustomDataIdentifiersOutput {
    /// <p>An array of objects, one for each custom data identifier that meets the criteria specified in the request.</p>
    pub custom_data_identifiers:
        std::option::Option<std::vec::Vec<crate::model::BatchGetCustomDataIdentifierSummary>>,
    /// <p>An array of custom data identifier IDs, one for each custom data identifier that was specified in the request but doesn't correlate to an existing custom data identifier.</p>
    pub not_found_identifier_ids: std::option::Option<std::vec::Vec<std::string::String>>,
}
impl BatchGetCustomDataIdentifiersOutput {
    /// <p>An array of objects, one for each custom data identifier that meets the criteria specified in the request.</p>
    pub fn custom_data_identifiers(
        &self,
    ) -> std::option::Option<&[crate::model::BatchGetCustomDataIdentifierSummary]> {
        self.custom_data_identifiers.as_deref()
    }
    /// <p>An array of custom data identifier IDs, one for each custom data identifier that was specified in the request but doesn't correlate to an existing custom data identifier.</p>
    pub fn not_found_identifier_ids(&self) -> std::option::Option<&[std::string::String]> {
        self.not_found_identifier_ids.as_deref()
    }
}
impl std::fmt::Debug for BatchGetCustomDataIdentifiersOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("BatchGetCustomDataIdentifiersOutput");
        formatter.field("custom_data_identifiers", &self.custom_data_identifiers);
        formatter.field("not_found_identifier_ids", &self.not_found_identifier_ids);
        formatter.finish()
    }
}
/// See [`BatchGetCustomDataIdentifiersOutput`](crate::output::BatchGetCustomDataIdentifiersOutput)
pub mod batch_get_custom_data_identifiers_output {
    /// A builder for [`BatchGetCustomDataIdentifiersOutput`](crate::output::BatchGetCustomDataIdentifiersOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) custom_data_identifiers:
            std::option::Option<std::vec::Vec<crate::model::BatchGetCustomDataIdentifierSummary>>,
        pub(crate) not_found_identifier_ids:
            std::option::Option<std::vec::Vec<std::string::String>>,
    }
    impl Builder {
        /// Appends an item to `custom_data_identifiers`.
        ///
        /// To override the contents of this collection use [`set_custom_data_identifiers`](Self::set_custom_data_identifiers).
        ///
        /// <p>An array of objects, one for each custom data identifier that meets the criteria specified in the request.</p>
        pub fn custom_data_identifiers(
            mut self,
            input: crate::model::BatchGetCustomDataIdentifierSummary,
        ) -> Self {
            let mut v = self.custom_data_identifiers.unwrap_or_default();
            v.push(input);
            self.custom_data_identifiers = Some(v);
            self
        }
        /// <p>An array of objects, one for each custom data identifier that meets the criteria specified in the request.</p>
        pub fn set_custom_data_identifiers(
            mut self,
            input: std::option::Option<
                std::vec::Vec<crate::model::BatchGetCustomDataIdentifierSummary>,
            >,
        ) -> Self {
            self.custom_data_identifiers = input;
            self
        }
        /// Appends an item to `not_found_identifier_ids`.
        ///
        /// To override the contents of this collection use [`set_not_found_identifier_ids`](Self::set_not_found_identifier_ids).
        ///
        /// <p>An array of custom data identifier IDs, one for each custom data identifier that was specified in the request but doesn't correlate to an existing custom data identifier.</p>
        pub fn not_found_identifier_ids(mut self, input: impl Into<std::string::String>) -> Self {
            let mut v = self.not_found_identifier_ids.unwrap_or_default();
            v.push(input.into());
            self.not_found_identifier_ids = Some(v);
            self
        }
        /// <p>An array of custom data identifier IDs, one for each custom data identifier that was specified in the request but doesn't correlate to an existing custom data identifier.</p>
        pub fn set_not_found_identifier_ids(
            mut self,
            input: std::option::Option<std::vec::Vec<std::string::String>>,
        ) -> Self {
            self.not_found_identifier_ids = input;
            self
        }
        /// Consumes the builder and constructs a [`BatchGetCustomDataIdentifiersOutput`](crate::output::BatchGetCustomDataIdentifiersOutput)
        pub fn build(self) -> crate::output::BatchGetCustomDataIdentifiersOutput {
            crate::output::BatchGetCustomDataIdentifiersOutput {
                custom_data_identifiers: self.custom_data_identifiers,
                not_found_identifier_ids: self.not_found_identifier_ids,
            }
        }
    }
}
impl BatchGetCustomDataIdentifiersOutput {
    /// Creates a new builder-style object to manufacture [`BatchGetCustomDataIdentifiersOutput`](crate::output::BatchGetCustomDataIdentifiersOutput)
    pub fn builder() -> crate::output::batch_get_custom_data_identifiers_output::Builder {
        crate::output::batch_get_custom_data_identifiers_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct AcceptInvitationOutput {}
impl std::fmt::Debug for AcceptInvitationOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("AcceptInvitationOutput");
        formatter.finish()
    }
}
/// See [`AcceptInvitationOutput`](crate::output::AcceptInvitationOutput)
pub mod accept_invitation_output {
    /// A builder for [`AcceptInvitationOutput`](crate::output::AcceptInvitationOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {}
    impl Builder {
        /// Consumes the builder and constructs a [`AcceptInvitationOutput`](crate::output::AcceptInvitationOutput)
        pub fn build(self) -> crate::output::AcceptInvitationOutput {
            crate::output::AcceptInvitationOutput {}
        }
    }
}
impl AcceptInvitationOutput {
    /// Creates a new builder-style object to manufacture [`AcceptInvitationOutput`](crate::output::AcceptInvitationOutput)
    pub fn builder() -> crate::output::accept_invitation_output::Builder {
        crate::output::accept_invitation_output::Builder::default()
    }
}