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/fms/FMS_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/core/utils/DateTime.h>
11 #include <aws/core/utils/memory/stl/AWSMap.h>
12 #include <aws/fms/model/ComplianceViolator.h>
13 #include <aws/fms/model/DependentServiceName.h>
14 #include <utility>
15 
16 namespace Aws
17 {
18 namespace Utils
19 {
20 namespace Json
21 {
22   class JsonValue;
23   class JsonView;
24 } // namespace Json
25 } // namespace Utils
26 namespace FMS
27 {
28 namespace Model
29 {
30 
31   /**
32    * <p>Describes the noncompliant resources in a member account for a specific
33    * Firewall Manager policy. A maximum of 100 entries are displayed. If more than
34    * 100 resources are noncompliant, <code>EvaluationLimitExceeded</code> is set to
35    * <code>True</code>.</p><p><h3>See Also:</h3>   <a
36    * href="http://docs.aws.amazon.com/goto/WebAPI/fms-2018-01-01/PolicyComplianceDetail">AWS
37    * API Reference</a></p>
38    */
39   class AWS_FMS_API PolicyComplianceDetail
40   {
41   public:
42     PolicyComplianceDetail();
43     PolicyComplianceDetail(Aws::Utils::Json::JsonView jsonValue);
44     PolicyComplianceDetail& operator=(Aws::Utils::Json::JsonView jsonValue);
45     Aws::Utils::Json::JsonValue Jsonize() const;
46 
47 
48     /**
49      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
50      */
GetPolicyOwner()51     inline const Aws::String& GetPolicyOwner() const{ return m_policyOwner; }
52 
53     /**
54      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
55      */
PolicyOwnerHasBeenSet()56     inline bool PolicyOwnerHasBeenSet() const { return m_policyOwnerHasBeenSet; }
57 
58     /**
59      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
60      */
SetPolicyOwner(const Aws::String & value)61     inline void SetPolicyOwner(const Aws::String& value) { m_policyOwnerHasBeenSet = true; m_policyOwner = value; }
62 
63     /**
64      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
65      */
SetPolicyOwner(Aws::String && value)66     inline void SetPolicyOwner(Aws::String&& value) { m_policyOwnerHasBeenSet = true; m_policyOwner = std::move(value); }
67 
68     /**
69      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
70      */
SetPolicyOwner(const char * value)71     inline void SetPolicyOwner(const char* value) { m_policyOwnerHasBeenSet = true; m_policyOwner.assign(value); }
72 
73     /**
74      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
75      */
WithPolicyOwner(const Aws::String & value)76     inline PolicyComplianceDetail& WithPolicyOwner(const Aws::String& value) { SetPolicyOwner(value); return *this;}
77 
78     /**
79      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
80      */
WithPolicyOwner(Aws::String && value)81     inline PolicyComplianceDetail& WithPolicyOwner(Aws::String&& value) { SetPolicyOwner(std::move(value)); return *this;}
82 
83     /**
84      * <p>The Amazon Web Services account that created the Firewall Manager policy.</p>
85      */
WithPolicyOwner(const char * value)86     inline PolicyComplianceDetail& WithPolicyOwner(const char* value) { SetPolicyOwner(value); return *this;}
87 
88 
89     /**
90      * <p>The ID of the Firewall Manager policy.</p>
91      */
GetPolicyId()92     inline const Aws::String& GetPolicyId() const{ return m_policyId; }
93 
94     /**
95      * <p>The ID of the Firewall Manager policy.</p>
96      */
PolicyIdHasBeenSet()97     inline bool PolicyIdHasBeenSet() const { return m_policyIdHasBeenSet; }
98 
99     /**
100      * <p>The ID of the Firewall Manager policy.</p>
101      */
SetPolicyId(const Aws::String & value)102     inline void SetPolicyId(const Aws::String& value) { m_policyIdHasBeenSet = true; m_policyId = value; }
103 
104     /**
105      * <p>The ID of the Firewall Manager policy.</p>
106      */
SetPolicyId(Aws::String && value)107     inline void SetPolicyId(Aws::String&& value) { m_policyIdHasBeenSet = true; m_policyId = std::move(value); }
108 
109     /**
110      * <p>The ID of the Firewall Manager policy.</p>
111      */
SetPolicyId(const char * value)112     inline void SetPolicyId(const char* value) { m_policyIdHasBeenSet = true; m_policyId.assign(value); }
113 
114     /**
115      * <p>The ID of the Firewall Manager policy.</p>
116      */
WithPolicyId(const Aws::String & value)117     inline PolicyComplianceDetail& WithPolicyId(const Aws::String& value) { SetPolicyId(value); return *this;}
118 
119     /**
120      * <p>The ID of the Firewall Manager policy.</p>
121      */
WithPolicyId(Aws::String && value)122     inline PolicyComplianceDetail& WithPolicyId(Aws::String&& value) { SetPolicyId(std::move(value)); return *this;}
123 
124     /**
125      * <p>The ID of the Firewall Manager policy.</p>
126      */
WithPolicyId(const char * value)127     inline PolicyComplianceDetail& WithPolicyId(const char* value) { SetPolicyId(value); return *this;}
128 
129 
130     /**
131      * <p>The Amazon Web Services account ID.</p>
132      */
GetMemberAccount()133     inline const Aws::String& GetMemberAccount() const{ return m_memberAccount; }
134 
135     /**
136      * <p>The Amazon Web Services account ID.</p>
137      */
MemberAccountHasBeenSet()138     inline bool MemberAccountHasBeenSet() const { return m_memberAccountHasBeenSet; }
139 
140     /**
141      * <p>The Amazon Web Services account ID.</p>
142      */
SetMemberAccount(const Aws::String & value)143     inline void SetMemberAccount(const Aws::String& value) { m_memberAccountHasBeenSet = true; m_memberAccount = value; }
144 
145     /**
146      * <p>The Amazon Web Services account ID.</p>
147      */
SetMemberAccount(Aws::String && value)148     inline void SetMemberAccount(Aws::String&& value) { m_memberAccountHasBeenSet = true; m_memberAccount = std::move(value); }
149 
150     /**
151      * <p>The Amazon Web Services account ID.</p>
152      */
SetMemberAccount(const char * value)153     inline void SetMemberAccount(const char* value) { m_memberAccountHasBeenSet = true; m_memberAccount.assign(value); }
154 
155     /**
156      * <p>The Amazon Web Services account ID.</p>
157      */
WithMemberAccount(const Aws::String & value)158     inline PolicyComplianceDetail& WithMemberAccount(const Aws::String& value) { SetMemberAccount(value); return *this;}
159 
160     /**
161      * <p>The Amazon Web Services account ID.</p>
162      */
WithMemberAccount(Aws::String && value)163     inline PolicyComplianceDetail& WithMemberAccount(Aws::String&& value) { SetMemberAccount(std::move(value)); return *this;}
164 
165     /**
166      * <p>The Amazon Web Services account ID.</p>
167      */
WithMemberAccount(const char * value)168     inline PolicyComplianceDetail& WithMemberAccount(const char* value) { SetMemberAccount(value); return *this;}
169 
170 
171     /**
172      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
173      * policy or that aren't in compliance with the security group policy.</p>
174      */
GetViolators()175     inline const Aws::Vector<ComplianceViolator>& GetViolators() const{ return m_violators; }
176 
177     /**
178      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
179      * policy or that aren't in compliance with the security group policy.</p>
180      */
ViolatorsHasBeenSet()181     inline bool ViolatorsHasBeenSet() const { return m_violatorsHasBeenSet; }
182 
183     /**
184      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
185      * policy or that aren't in compliance with the security group policy.</p>
186      */
SetViolators(const Aws::Vector<ComplianceViolator> & value)187     inline void SetViolators(const Aws::Vector<ComplianceViolator>& value) { m_violatorsHasBeenSet = true; m_violators = value; }
188 
189     /**
190      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
191      * policy or that aren't in compliance with the security group policy.</p>
192      */
SetViolators(Aws::Vector<ComplianceViolator> && value)193     inline void SetViolators(Aws::Vector<ComplianceViolator>&& value) { m_violatorsHasBeenSet = true; m_violators = std::move(value); }
194 
195     /**
196      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
197      * policy or that aren't in compliance with the security group policy.</p>
198      */
WithViolators(const Aws::Vector<ComplianceViolator> & value)199     inline PolicyComplianceDetail& WithViolators(const Aws::Vector<ComplianceViolator>& value) { SetViolators(value); return *this;}
200 
201     /**
202      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
203      * policy or that aren't in compliance with the security group policy.</p>
204      */
WithViolators(Aws::Vector<ComplianceViolator> && value)205     inline PolicyComplianceDetail& WithViolators(Aws::Vector<ComplianceViolator>&& value) { SetViolators(std::move(value)); return *this;}
206 
207     /**
208      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
209      * policy or that aren't in compliance with the security group policy.</p>
210      */
AddViolators(const ComplianceViolator & value)211     inline PolicyComplianceDetail& AddViolators(const ComplianceViolator& value) { m_violatorsHasBeenSet = true; m_violators.push_back(value); return *this; }
212 
213     /**
214      * <p>An array of resources that aren't protected by the WAF or Shield Advanced
215      * policy or that aren't in compliance with the security group policy.</p>
216      */
AddViolators(ComplianceViolator && value)217     inline PolicyComplianceDetail& AddViolators(ComplianceViolator&& value) { m_violatorsHasBeenSet = true; m_violators.push_back(std::move(value)); return *this; }
218 
219 
220     /**
221      * <p>Indicates if over 100 resources are noncompliant with the Firewall Manager
222      * policy.</p>
223      */
GetEvaluationLimitExceeded()224     inline bool GetEvaluationLimitExceeded() const{ return m_evaluationLimitExceeded; }
225 
226     /**
227      * <p>Indicates if over 100 resources are noncompliant with the Firewall Manager
228      * policy.</p>
229      */
EvaluationLimitExceededHasBeenSet()230     inline bool EvaluationLimitExceededHasBeenSet() const { return m_evaluationLimitExceededHasBeenSet; }
231 
232     /**
233      * <p>Indicates if over 100 resources are noncompliant with the Firewall Manager
234      * policy.</p>
235      */
SetEvaluationLimitExceeded(bool value)236     inline void SetEvaluationLimitExceeded(bool value) { m_evaluationLimitExceededHasBeenSet = true; m_evaluationLimitExceeded = value; }
237 
238     /**
239      * <p>Indicates if over 100 resources are noncompliant with the Firewall Manager
240      * policy.</p>
241      */
WithEvaluationLimitExceeded(bool value)242     inline PolicyComplianceDetail& WithEvaluationLimitExceeded(bool value) { SetEvaluationLimitExceeded(value); return *this;}
243 
244 
245     /**
246      * <p>A timestamp that indicates when the returned information should be considered
247      * out of date.</p>
248      */
GetExpiredAt()249     inline const Aws::Utils::DateTime& GetExpiredAt() const{ return m_expiredAt; }
250 
251     /**
252      * <p>A timestamp that indicates when the returned information should be considered
253      * out of date.</p>
254      */
ExpiredAtHasBeenSet()255     inline bool ExpiredAtHasBeenSet() const { return m_expiredAtHasBeenSet; }
256 
257     /**
258      * <p>A timestamp that indicates when the returned information should be considered
259      * out of date.</p>
260      */
SetExpiredAt(const Aws::Utils::DateTime & value)261     inline void SetExpiredAt(const Aws::Utils::DateTime& value) { m_expiredAtHasBeenSet = true; m_expiredAt = value; }
262 
263     /**
264      * <p>A timestamp that indicates when the returned information should be considered
265      * out of date.</p>
266      */
SetExpiredAt(Aws::Utils::DateTime && value)267     inline void SetExpiredAt(Aws::Utils::DateTime&& value) { m_expiredAtHasBeenSet = true; m_expiredAt = std::move(value); }
268 
269     /**
270      * <p>A timestamp that indicates when the returned information should be considered
271      * out of date.</p>
272      */
WithExpiredAt(const Aws::Utils::DateTime & value)273     inline PolicyComplianceDetail& WithExpiredAt(const Aws::Utils::DateTime& value) { SetExpiredAt(value); return *this;}
274 
275     /**
276      * <p>A timestamp that indicates when the returned information should be considered
277      * out of date.</p>
278      */
WithExpiredAt(Aws::Utils::DateTime && value)279     inline PolicyComplianceDetail& WithExpiredAt(Aws::Utils::DateTime&& value) { SetExpiredAt(std::move(value)); return *this;}
280 
281 
282     /**
283      * <p>Details about problems with dependent services, such as WAF or Config, and
284      * the error message received that indicates the problem with the service.</p>
285      */
GetIssueInfoMap()286     inline const Aws::Map<DependentServiceName, Aws::String>& GetIssueInfoMap() const{ return m_issueInfoMap; }
287 
288     /**
289      * <p>Details about problems with dependent services, such as WAF or Config, and
290      * the error message received that indicates the problem with the service.</p>
291      */
IssueInfoMapHasBeenSet()292     inline bool IssueInfoMapHasBeenSet() const { return m_issueInfoMapHasBeenSet; }
293 
294     /**
295      * <p>Details about problems with dependent services, such as WAF or Config, and
296      * the error message received that indicates the problem with the service.</p>
297      */
SetIssueInfoMap(const Aws::Map<DependentServiceName,Aws::String> & value)298     inline void SetIssueInfoMap(const Aws::Map<DependentServiceName, Aws::String>& value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap = value; }
299 
300     /**
301      * <p>Details about problems with dependent services, such as WAF or Config, and
302      * the error message received that indicates the problem with the service.</p>
303      */
SetIssueInfoMap(Aws::Map<DependentServiceName,Aws::String> && value)304     inline void SetIssueInfoMap(Aws::Map<DependentServiceName, Aws::String>&& value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap = std::move(value); }
305 
306     /**
307      * <p>Details about problems with dependent services, such as WAF or Config, and
308      * the error message received that indicates the problem with the service.</p>
309      */
WithIssueInfoMap(const Aws::Map<DependentServiceName,Aws::String> & value)310     inline PolicyComplianceDetail& WithIssueInfoMap(const Aws::Map<DependentServiceName, Aws::String>& value) { SetIssueInfoMap(value); return *this;}
311 
312     /**
313      * <p>Details about problems with dependent services, such as WAF or Config, and
314      * the error message received that indicates the problem with the service.</p>
315      */
WithIssueInfoMap(Aws::Map<DependentServiceName,Aws::String> && value)316     inline PolicyComplianceDetail& WithIssueInfoMap(Aws::Map<DependentServiceName, Aws::String>&& value) { SetIssueInfoMap(std::move(value)); return *this;}
317 
318     /**
319      * <p>Details about problems with dependent services, such as WAF or Config, and
320      * the error message received that indicates the problem with the service.</p>
321      */
AddIssueInfoMap(const DependentServiceName & key,const Aws::String & value)322     inline PolicyComplianceDetail& AddIssueInfoMap(const DependentServiceName& key, const Aws::String& value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap.emplace(key, value); return *this; }
323 
324     /**
325      * <p>Details about problems with dependent services, such as WAF or Config, and
326      * the error message received that indicates the problem with the service.</p>
327      */
AddIssueInfoMap(DependentServiceName && key,const Aws::String & value)328     inline PolicyComplianceDetail& AddIssueInfoMap(DependentServiceName&& key, const Aws::String& value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap.emplace(std::move(key), value); return *this; }
329 
330     /**
331      * <p>Details about problems with dependent services, such as WAF or Config, and
332      * the error message received that indicates the problem with the service.</p>
333      */
AddIssueInfoMap(const DependentServiceName & key,Aws::String && value)334     inline PolicyComplianceDetail& AddIssueInfoMap(const DependentServiceName& key, Aws::String&& value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap.emplace(key, std::move(value)); return *this; }
335 
336     /**
337      * <p>Details about problems with dependent services, such as WAF or Config, and
338      * the error message received that indicates the problem with the service.</p>
339      */
AddIssueInfoMap(DependentServiceName && key,Aws::String && value)340     inline PolicyComplianceDetail& AddIssueInfoMap(DependentServiceName&& key, Aws::String&& value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap.emplace(std::move(key), std::move(value)); return *this; }
341 
342     /**
343      * <p>Details about problems with dependent services, such as WAF or Config, and
344      * the error message received that indicates the problem with the service.</p>
345      */
AddIssueInfoMap(DependentServiceName && key,const char * value)346     inline PolicyComplianceDetail& AddIssueInfoMap(DependentServiceName&& key, const char* value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap.emplace(std::move(key), value); return *this; }
347 
348     /**
349      * <p>Details about problems with dependent services, such as WAF or Config, and
350      * the error message received that indicates the problem with the service.</p>
351      */
AddIssueInfoMap(const DependentServiceName & key,const char * value)352     inline PolicyComplianceDetail& AddIssueInfoMap(const DependentServiceName& key, const char* value) { m_issueInfoMapHasBeenSet = true; m_issueInfoMap.emplace(key, value); return *this; }
353 
354   private:
355 
356     Aws::String m_policyOwner;
357     bool m_policyOwnerHasBeenSet;
358 
359     Aws::String m_policyId;
360     bool m_policyIdHasBeenSet;
361 
362     Aws::String m_memberAccount;
363     bool m_memberAccountHasBeenSet;
364 
365     Aws::Vector<ComplianceViolator> m_violators;
366     bool m_violatorsHasBeenSet;
367 
368     bool m_evaluationLimitExceeded;
369     bool m_evaluationLimitExceededHasBeenSet;
370 
371     Aws::Utils::DateTime m_expiredAt;
372     bool m_expiredAtHasBeenSet;
373 
374     Aws::Map<DependentServiceName, Aws::String> m_issueInfoMap;
375     bool m_issueInfoMapHasBeenSet;
376   };
377 
378 } // namespace Model
379 } // namespace FMS
380 } // namespace Aws
381