1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct CreateInsightInput {
    /// <p>The name of the custom insight to create.</p>
    pub name: ::std::option::Option<::std::string::String>,
    /// <p>One or more attributes used to filter the findings included in the insight. The insight only includes findings that match the criteria defined in the filters.</p>
    pub filters: ::std::option::Option<crate::types::AwsSecurityFindingFilters>,
    /// <p>The attribute used to group the findings for the insight. The grouping attribute identifies the type of item that the insight applies to. For example, if an insight is grouped by resource identifier, then the insight produces a list of resource identifiers.</p>
    pub group_by_attribute: ::std::option::Option<::std::string::String>,
}
impl CreateInsightInput {
    /// <p>The name of the custom insight to create.</p>
    pub fn name(&self) -> ::std::option::Option<&str> {
        self.name.as_deref()
    }
    /// <p>One or more attributes used to filter the findings included in the insight. The insight only includes findings that match the criteria defined in the filters.</p>
    pub fn filters(&self) -> ::std::option::Option<&crate::types::AwsSecurityFindingFilters> {
        self.filters.as_ref()
    }
    /// <p>The attribute used to group the findings for the insight. The grouping attribute identifies the type of item that the insight applies to. For example, if an insight is grouped by resource identifier, then the insight produces a list of resource identifiers.</p>
    pub fn group_by_attribute(&self) -> ::std::option::Option<&str> {
        self.group_by_attribute.as_deref()
    }
}
impl CreateInsightInput {
    /// Creates a new builder-style object to manufacture [`CreateInsightInput`](crate::operation::create_insight::CreateInsightInput).
    pub fn builder() -> crate::operation::create_insight::builders::CreateInsightInputBuilder {
        crate::operation::create_insight::builders::CreateInsightInputBuilder::default()
    }
}

/// A builder for [`CreateInsightInput`](crate::operation::create_insight::CreateInsightInput).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct CreateInsightInputBuilder {
    pub(crate) name: ::std::option::Option<::std::string::String>,
    pub(crate) filters: ::std::option::Option<crate::types::AwsSecurityFindingFilters>,
    pub(crate) group_by_attribute: ::std::option::Option<::std::string::String>,
}
impl CreateInsightInputBuilder {
    /// <p>The name of the custom insight to create.</p>
    /// This field is required.
    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The name of the custom insight to create.</p>
    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.name = input;
        self
    }
    /// <p>The name of the custom insight to create.</p>
    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.name
    }
    /// <p>One or more attributes used to filter the findings included in the insight. The insight only includes findings that match the criteria defined in the filters.</p>
    /// This field is required.
    pub fn filters(mut self, input: crate::types::AwsSecurityFindingFilters) -> Self {
        self.filters = ::std::option::Option::Some(input);
        self
    }
    /// <p>One or more attributes used to filter the findings included in the insight. The insight only includes findings that match the criteria defined in the filters.</p>
    pub fn set_filters(mut self, input: ::std::option::Option<crate::types::AwsSecurityFindingFilters>) -> Self {
        self.filters = input;
        self
    }
    /// <p>One or more attributes used to filter the findings included in the insight. The insight only includes findings that match the criteria defined in the filters.</p>
    pub fn get_filters(&self) -> &::std::option::Option<crate::types::AwsSecurityFindingFilters> {
        &self.filters
    }
    /// <p>The attribute used to group the findings for the insight. The grouping attribute identifies the type of item that the insight applies to. For example, if an insight is grouped by resource identifier, then the insight produces a list of resource identifiers.</p>
    /// This field is required.
    pub fn group_by_attribute(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.group_by_attribute = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The attribute used to group the findings for the insight. The grouping attribute identifies the type of item that the insight applies to. For example, if an insight is grouped by resource identifier, then the insight produces a list of resource identifiers.</p>
    pub fn set_group_by_attribute(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.group_by_attribute = input;
        self
    }
    /// <p>The attribute used to group the findings for the insight. The grouping attribute identifies the type of item that the insight applies to. For example, if an insight is grouped by resource identifier, then the insight produces a list of resource identifiers.</p>
    pub fn get_group_by_attribute(&self) -> &::std::option::Option<::std::string::String> {
        &self.group_by_attribute
    }
    /// Consumes the builder and constructs a [`CreateInsightInput`](crate::operation::create_insight::CreateInsightInput).
    pub fn build(
        self,
    ) -> ::std::result::Result<crate::operation::create_insight::CreateInsightInput, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::operation::create_insight::CreateInsightInput {
            name: self.name,
            filters: self.filters,
            group_by_attribute: self.group_by_attribute,
        })
    }
}