1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/macie2/Macie2_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSVector.h>
9 #include <aws/macie2/model/Scoping.h>
10 #include <aws/macie2/model/S3BucketCriteriaForJob.h>
11 #include <aws/macie2/model/S3BucketDefinitionForJob.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace Macie2
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>Specifies which S3 buckets contain the objects that a classification job
31    * analyzes, and the scope of that analysis. The bucket specification can be static
32    * (bucketDefinitions) or dynamic (bucketCriteria). If it's static, the job
33    * analyzes objects in the same predefined set of buckets each time the job runs.
34    * If it's dynamic, the job analyzes objects in any buckets that match the
35    * specified criteria each time the job starts to run.</p><p><h3>See Also:</h3>
36    * <a
37    * href="http://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/S3JobDefinition">AWS
38    * API Reference</a></p>
39    */
40   class AWS_MACIE2_API S3JobDefinition
41   {
42   public:
43     S3JobDefinition();
44     S3JobDefinition(Aws::Utils::Json::JsonView jsonValue);
45     S3JobDefinition& operator=(Aws::Utils::Json::JsonView jsonValue);
46     Aws::Utils::Json::JsonValue Jsonize() const;
47 
48 
49     /**
50      * <p>An array of objects, one for each Amazon Web Services account that owns
51      * specific S3 buckets to analyze. Each object specifies the account ID for an
52      * account and one or more buckets to analyze for that account. A job's definition
53      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
54      */
GetBucketDefinitions()55     inline const Aws::Vector<S3BucketDefinitionForJob>& GetBucketDefinitions() const{ return m_bucketDefinitions; }
56 
57     /**
58      * <p>An array of objects, one for each Amazon Web Services account that owns
59      * specific S3 buckets to analyze. Each object specifies the account ID for an
60      * account and one or more buckets to analyze for that account. A job's definition
61      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
62      */
BucketDefinitionsHasBeenSet()63     inline bool BucketDefinitionsHasBeenSet() const { return m_bucketDefinitionsHasBeenSet; }
64 
65     /**
66      * <p>An array of objects, one for each Amazon Web Services account that owns
67      * specific S3 buckets to analyze. Each object specifies the account ID for an
68      * account and one or more buckets to analyze for that account. A job's definition
69      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
70      */
SetBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob> & value)71     inline void SetBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob>& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions = value; }
72 
73     /**
74      * <p>An array of objects, one for each Amazon Web Services account that owns
75      * specific S3 buckets to analyze. Each object specifies the account ID for an
76      * account and one or more buckets to analyze for that account. A job's definition
77      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
78      */
SetBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob> && value)79     inline void SetBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob>&& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions = std::move(value); }
80 
81     /**
82      * <p>An array of objects, one for each Amazon Web Services account that owns
83      * specific S3 buckets to analyze. Each object specifies the account ID for an
84      * account and one or more buckets to analyze for that account. A job's definition
85      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
86      */
WithBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob> & value)87     inline S3JobDefinition& WithBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob>& value) { SetBucketDefinitions(value); return *this;}
88 
89     /**
90      * <p>An array of objects, one for each Amazon Web Services account that owns
91      * specific S3 buckets to analyze. Each object specifies the account ID for an
92      * account and one or more buckets to analyze for that account. A job's definition
93      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
94      */
WithBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob> && value)95     inline S3JobDefinition& WithBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob>&& value) { SetBucketDefinitions(std::move(value)); return *this;}
96 
97     /**
98      * <p>An array of objects, one for each Amazon Web Services account that owns
99      * specific S3 buckets to analyze. Each object specifies the account ID for an
100      * account and one or more buckets to analyze for that account. A job's definition
101      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
102      */
AddBucketDefinitions(const S3BucketDefinitionForJob & value)103     inline S3JobDefinition& AddBucketDefinitions(const S3BucketDefinitionForJob& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions.push_back(value); return *this; }
104 
105     /**
106      * <p>An array of objects, one for each Amazon Web Services account that owns
107      * specific S3 buckets to analyze. Each object specifies the account ID for an
108      * account and one or more buckets to analyze for that account. A job's definition
109      * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p>
110      */
AddBucketDefinitions(S3BucketDefinitionForJob && value)111     inline S3JobDefinition& AddBucketDefinitions(S3BucketDefinitionForJob&& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions.push_back(std::move(value)); return *this; }
112 
113 
114     /**
115      * <p>The property- and tag-based conditions that determine which S3 objects to
116      * include or exclude from the analysis. Each time the job runs, the job uses these
117      * criteria to determine which objects to analyze.</p>
118      */
GetScoping()119     inline const Scoping& GetScoping() const{ return m_scoping; }
120 
121     /**
122      * <p>The property- and tag-based conditions that determine which S3 objects to
123      * include or exclude from the analysis. Each time the job runs, the job uses these
124      * criteria to determine which objects to analyze.</p>
125      */
ScopingHasBeenSet()126     inline bool ScopingHasBeenSet() const { return m_scopingHasBeenSet; }
127 
128     /**
129      * <p>The property- and tag-based conditions that determine which S3 objects to
130      * include or exclude from the analysis. Each time the job runs, the job uses these
131      * criteria to determine which objects to analyze.</p>
132      */
SetScoping(const Scoping & value)133     inline void SetScoping(const Scoping& value) { m_scopingHasBeenSet = true; m_scoping = value; }
134 
135     /**
136      * <p>The property- and tag-based conditions that determine which S3 objects to
137      * include or exclude from the analysis. Each time the job runs, the job uses these
138      * criteria to determine which objects to analyze.</p>
139      */
SetScoping(Scoping && value)140     inline void SetScoping(Scoping&& value) { m_scopingHasBeenSet = true; m_scoping = std::move(value); }
141 
142     /**
143      * <p>The property- and tag-based conditions that determine which S3 objects to
144      * include or exclude from the analysis. Each time the job runs, the job uses these
145      * criteria to determine which objects to analyze.</p>
146      */
WithScoping(const Scoping & value)147     inline S3JobDefinition& WithScoping(const Scoping& value) { SetScoping(value); return *this;}
148 
149     /**
150      * <p>The property- and tag-based conditions that determine which S3 objects to
151      * include or exclude from the analysis. Each time the job runs, the job uses these
152      * criteria to determine which objects to analyze.</p>
153      */
WithScoping(Scoping && value)154     inline S3JobDefinition& WithScoping(Scoping&& value) { SetScoping(std::move(value)); return *this;}
155 
156 
157     /**
158      * <p>The property- and tag-based conditions that determine which S3 buckets to
159      * include or exclude from the analysis. Each time the job runs, the job uses these
160      * criteria to determine which buckets contain objects to analyze. A job's
161      * definition can contain a bucketCriteria object or a bucketDefinitions array, not
162      * both.</p>
163      */
GetBucketCriteria()164     inline const S3BucketCriteriaForJob& GetBucketCriteria() const{ return m_bucketCriteria; }
165 
166     /**
167      * <p>The property- and tag-based conditions that determine which S3 buckets to
168      * include or exclude from the analysis. Each time the job runs, the job uses these
169      * criteria to determine which buckets contain objects to analyze. A job's
170      * definition can contain a bucketCriteria object or a bucketDefinitions array, not
171      * both.</p>
172      */
BucketCriteriaHasBeenSet()173     inline bool BucketCriteriaHasBeenSet() const { return m_bucketCriteriaHasBeenSet; }
174 
175     /**
176      * <p>The property- and tag-based conditions that determine which S3 buckets to
177      * include or exclude from the analysis. Each time the job runs, the job uses these
178      * criteria to determine which buckets contain objects to analyze. A job's
179      * definition can contain a bucketCriteria object or a bucketDefinitions array, not
180      * both.</p>
181      */
SetBucketCriteria(const S3BucketCriteriaForJob & value)182     inline void SetBucketCriteria(const S3BucketCriteriaForJob& value) { m_bucketCriteriaHasBeenSet = true; m_bucketCriteria = value; }
183 
184     /**
185      * <p>The property- and tag-based conditions that determine which S3 buckets to
186      * include or exclude from the analysis. Each time the job runs, the job uses these
187      * criteria to determine which buckets contain objects to analyze. A job's
188      * definition can contain a bucketCriteria object or a bucketDefinitions array, not
189      * both.</p>
190      */
SetBucketCriteria(S3BucketCriteriaForJob && value)191     inline void SetBucketCriteria(S3BucketCriteriaForJob&& value) { m_bucketCriteriaHasBeenSet = true; m_bucketCriteria = std::move(value); }
192 
193     /**
194      * <p>The property- and tag-based conditions that determine which S3 buckets to
195      * include or exclude from the analysis. Each time the job runs, the job uses these
196      * criteria to determine which buckets contain objects to analyze. A job's
197      * definition can contain a bucketCriteria object or a bucketDefinitions array, not
198      * both.</p>
199      */
WithBucketCriteria(const S3BucketCriteriaForJob & value)200     inline S3JobDefinition& WithBucketCriteria(const S3BucketCriteriaForJob& value) { SetBucketCriteria(value); return *this;}
201 
202     /**
203      * <p>The property- and tag-based conditions that determine which S3 buckets to
204      * include or exclude from the analysis. Each time the job runs, the job uses these
205      * criteria to determine which buckets contain objects to analyze. A job's
206      * definition can contain a bucketCriteria object or a bucketDefinitions array, not
207      * both.</p>
208      */
WithBucketCriteria(S3BucketCriteriaForJob && value)209     inline S3JobDefinition& WithBucketCriteria(S3BucketCriteriaForJob&& value) { SetBucketCriteria(std::move(value)); return *this;}
210 
211   private:
212 
213     Aws::Vector<S3BucketDefinitionForJob> m_bucketDefinitions;
214     bool m_bucketDefinitionsHasBeenSet;
215 
216     Scoping m_scoping;
217     bool m_scopingHasBeenSet;
218 
219     S3BucketCriteriaForJob m_bucketCriteria;
220     bool m_bucketCriteriaHasBeenSet;
221   };
222 
223 } // namespace Model
224 } // namespace Macie2
225 } // namespace Aws
226