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/cloudtrail/CloudTrail_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <utility>
10 
11 namespace Aws
12 {
13 namespace Utils
14 {
15 namespace Json
16 {
17   class JsonValue;
18   class JsonView;
19 } // namespace Json
20 } // namespace Utils
21 namespace CloudTrail
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p>The settings for a trail.</p><p><h3>See Also:</h3>   <a
28    * href="http://docs.aws.amazon.com/goto/WebAPI/cloudtrail-2013-11-01/Trail">AWS
29    * API Reference</a></p>
30    */
31   class AWS_CLOUDTRAIL_API Trail
32   {
33   public:
34     Trail();
35     Trail(Aws::Utils::Json::JsonView jsonValue);
36     Trail& operator=(Aws::Utils::Json::JsonView jsonValue);
37     Aws::Utils::Json::JsonValue Jsonize() const;
38 
39 
40     /**
41      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
42      * 128 characters.</p>
43      */
GetName()44     inline const Aws::String& GetName() const{ return m_name; }
45 
46     /**
47      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
48      * 128 characters.</p>
49      */
NameHasBeenSet()50     inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
51 
52     /**
53      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
54      * 128 characters.</p>
55      */
SetName(const Aws::String & value)56     inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
57 
58     /**
59      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
60      * 128 characters.</p>
61      */
SetName(Aws::String && value)62     inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
63 
64     /**
65      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
66      * 128 characters.</p>
67      */
SetName(const char * value)68     inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
69 
70     /**
71      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
72      * 128 characters.</p>
73      */
WithName(const Aws::String & value)74     inline Trail& WithName(const Aws::String& value) { SetName(value); return *this;}
75 
76     /**
77      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
78      * 128 characters.</p>
79      */
WithName(Aws::String && value)80     inline Trail& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
81 
82     /**
83      * <p>Name of the trail set by calling <a>CreateTrail</a>. The maximum length is
84      * 128 characters.</p>
85      */
WithName(const char * value)86     inline Trail& WithName(const char* value) { SetName(value); return *this;}
87 
88 
89     /**
90      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
91      * See <a
92      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
93      * S3 Bucket Naming Requirements</a>.</p>
94      */
GetS3BucketName()95     inline const Aws::String& GetS3BucketName() const{ return m_s3BucketName; }
96 
97     /**
98      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
99      * See <a
100      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
101      * S3 Bucket Naming Requirements</a>.</p>
102      */
S3BucketNameHasBeenSet()103     inline bool S3BucketNameHasBeenSet() const { return m_s3BucketNameHasBeenSet; }
104 
105     /**
106      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
107      * See <a
108      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
109      * S3 Bucket Naming Requirements</a>.</p>
110      */
SetS3BucketName(const Aws::String & value)111     inline void SetS3BucketName(const Aws::String& value) { m_s3BucketNameHasBeenSet = true; m_s3BucketName = value; }
112 
113     /**
114      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
115      * See <a
116      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
117      * S3 Bucket Naming Requirements</a>.</p>
118      */
SetS3BucketName(Aws::String && value)119     inline void SetS3BucketName(Aws::String&& value) { m_s3BucketNameHasBeenSet = true; m_s3BucketName = std::move(value); }
120 
121     /**
122      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
123      * See <a
124      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
125      * S3 Bucket Naming Requirements</a>.</p>
126      */
SetS3BucketName(const char * value)127     inline void SetS3BucketName(const char* value) { m_s3BucketNameHasBeenSet = true; m_s3BucketName.assign(value); }
128 
129     /**
130      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
131      * See <a
132      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
133      * S3 Bucket Naming Requirements</a>.</p>
134      */
WithS3BucketName(const Aws::String & value)135     inline Trail& WithS3BucketName(const Aws::String& value) { SetS3BucketName(value); return *this;}
136 
137     /**
138      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
139      * See <a
140      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
141      * S3 Bucket Naming Requirements</a>.</p>
142      */
WithS3BucketName(Aws::String && value)143     inline Trail& WithS3BucketName(Aws::String&& value) { SetS3BucketName(std::move(value)); return *this;}
144 
145     /**
146      * <p>Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.
147      * See <a
148      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create_trail_naming_policy.html">Amazon
149      * S3 Bucket Naming Requirements</a>.</p>
150      */
WithS3BucketName(const char * value)151     inline Trail& WithS3BucketName(const char* value) { SetS3BucketName(value); return *this;}
152 
153 
154     /**
155      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
156      * you have designated for log file delivery. For more information, see <a
157      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
158      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
159      */
GetS3KeyPrefix()160     inline const Aws::String& GetS3KeyPrefix() const{ return m_s3KeyPrefix; }
161 
162     /**
163      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
164      * you have designated for log file delivery. For more information, see <a
165      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
166      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
167      */
S3KeyPrefixHasBeenSet()168     inline bool S3KeyPrefixHasBeenSet() const { return m_s3KeyPrefixHasBeenSet; }
169 
170     /**
171      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
172      * you have designated for log file delivery. For more information, see <a
173      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
174      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
175      */
SetS3KeyPrefix(const Aws::String & value)176     inline void SetS3KeyPrefix(const Aws::String& value) { m_s3KeyPrefixHasBeenSet = true; m_s3KeyPrefix = value; }
177 
178     /**
179      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
180      * you have designated for log file delivery. For more information, see <a
181      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
182      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
183      */
SetS3KeyPrefix(Aws::String && value)184     inline void SetS3KeyPrefix(Aws::String&& value) { m_s3KeyPrefixHasBeenSet = true; m_s3KeyPrefix = std::move(value); }
185 
186     /**
187      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
188      * you have designated for log file delivery. For more information, see <a
189      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
190      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
191      */
SetS3KeyPrefix(const char * value)192     inline void SetS3KeyPrefix(const char* value) { m_s3KeyPrefixHasBeenSet = true; m_s3KeyPrefix.assign(value); }
193 
194     /**
195      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
196      * you have designated for log file delivery. For more information, see <a
197      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
198      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
199      */
WithS3KeyPrefix(const Aws::String & value)200     inline Trail& WithS3KeyPrefix(const Aws::String& value) { SetS3KeyPrefix(value); return *this;}
201 
202     /**
203      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
204      * you have designated for log file delivery. For more information, see <a
205      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
206      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
207      */
WithS3KeyPrefix(Aws::String && value)208     inline Trail& WithS3KeyPrefix(Aws::String&& value) { SetS3KeyPrefix(std::move(value)); return *this;}
209 
210     /**
211      * <p>Specifies the Amazon S3 key prefix that comes after the name of the bucket
212      * you have designated for log file delivery. For more information, see <a
213      * href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html">Finding
214      * Your CloudTrail Log Files</a>. The maximum length is 200 characters.</p>
215      */
WithS3KeyPrefix(const char * value)216     inline Trail& WithS3KeyPrefix(const char* value) { SetS3KeyPrefix(value); return *this;}
217 
218 
219     /**
220      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
221      * notifications when log files are delivered. The following is the format of a
222      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
223      */
GetSnsTopicARN()224     inline const Aws::String& GetSnsTopicARN() const{ return m_snsTopicARN; }
225 
226     /**
227      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
228      * notifications when log files are delivered. The following is the format of a
229      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
230      */
SnsTopicARNHasBeenSet()231     inline bool SnsTopicARNHasBeenSet() const { return m_snsTopicARNHasBeenSet; }
232 
233     /**
234      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
235      * notifications when log files are delivered. The following is the format of a
236      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
237      */
SetSnsTopicARN(const Aws::String & value)238     inline void SetSnsTopicARN(const Aws::String& value) { m_snsTopicARNHasBeenSet = true; m_snsTopicARN = value; }
239 
240     /**
241      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
242      * notifications when log files are delivered. The following is the format of a
243      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
244      */
SetSnsTopicARN(Aws::String && value)245     inline void SetSnsTopicARN(Aws::String&& value) { m_snsTopicARNHasBeenSet = true; m_snsTopicARN = std::move(value); }
246 
247     /**
248      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
249      * notifications when log files are delivered. The following is the format of a
250      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
251      */
SetSnsTopicARN(const char * value)252     inline void SetSnsTopicARN(const char* value) { m_snsTopicARNHasBeenSet = true; m_snsTopicARN.assign(value); }
253 
254     /**
255      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
256      * notifications when log files are delivered. The following is the format of a
257      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
258      */
WithSnsTopicARN(const Aws::String & value)259     inline Trail& WithSnsTopicARN(const Aws::String& value) { SetSnsTopicARN(value); return *this;}
260 
261     /**
262      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
263      * notifications when log files are delivered. The following is the format of a
264      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
265      */
WithSnsTopicARN(Aws::String && value)266     inline Trail& WithSnsTopicARN(Aws::String&& value) { SetSnsTopicARN(std::move(value)); return *this;}
267 
268     /**
269      * <p>Specifies the ARN of the Amazon SNS topic that CloudTrail uses to send
270      * notifications when log files are delivered. The following is the format of a
271      * topic ARN.</p> <p> <code>arn:aws:sns:us-east-2:123456789012:MyTopic</code> </p>
272      */
WithSnsTopicARN(const char * value)273     inline Trail& WithSnsTopicARN(const char* value) { SetSnsTopicARN(value); return *this;}
274 
275 
276     /**
277      * <p>Set to <b>True</b> to include Amazon Web Services API calls from Amazon Web
278      * Services global services such as IAM. Otherwise, <b>False</b>.</p>
279      */
GetIncludeGlobalServiceEvents()280     inline bool GetIncludeGlobalServiceEvents() const{ return m_includeGlobalServiceEvents; }
281 
282     /**
283      * <p>Set to <b>True</b> to include Amazon Web Services API calls from Amazon Web
284      * Services global services such as IAM. Otherwise, <b>False</b>.</p>
285      */
IncludeGlobalServiceEventsHasBeenSet()286     inline bool IncludeGlobalServiceEventsHasBeenSet() const { return m_includeGlobalServiceEventsHasBeenSet; }
287 
288     /**
289      * <p>Set to <b>True</b> to include Amazon Web Services API calls from Amazon Web
290      * Services global services such as IAM. Otherwise, <b>False</b>.</p>
291      */
SetIncludeGlobalServiceEvents(bool value)292     inline void SetIncludeGlobalServiceEvents(bool value) { m_includeGlobalServiceEventsHasBeenSet = true; m_includeGlobalServiceEvents = value; }
293 
294     /**
295      * <p>Set to <b>True</b> to include Amazon Web Services API calls from Amazon Web
296      * Services global services such as IAM. Otherwise, <b>False</b>.</p>
297      */
WithIncludeGlobalServiceEvents(bool value)298     inline Trail& WithIncludeGlobalServiceEvents(bool value) { SetIncludeGlobalServiceEvents(value); return *this;}
299 
300 
301     /**
302      * <p>Specifies whether the trail exists only in one region or exists in all
303      * regions.</p>
304      */
GetIsMultiRegionTrail()305     inline bool GetIsMultiRegionTrail() const{ return m_isMultiRegionTrail; }
306 
307     /**
308      * <p>Specifies whether the trail exists only in one region or exists in all
309      * regions.</p>
310      */
IsMultiRegionTrailHasBeenSet()311     inline bool IsMultiRegionTrailHasBeenSet() const { return m_isMultiRegionTrailHasBeenSet; }
312 
313     /**
314      * <p>Specifies whether the trail exists only in one region or exists in all
315      * regions.</p>
316      */
SetIsMultiRegionTrail(bool value)317     inline void SetIsMultiRegionTrail(bool value) { m_isMultiRegionTrailHasBeenSet = true; m_isMultiRegionTrail = value; }
318 
319     /**
320      * <p>Specifies whether the trail exists only in one region or exists in all
321      * regions.</p>
322      */
WithIsMultiRegionTrail(bool value)323     inline Trail& WithIsMultiRegionTrail(bool value) { SetIsMultiRegionTrail(value); return *this;}
324 
325 
326     /**
327      * <p>The region in which the trail was created.</p>
328      */
GetHomeRegion()329     inline const Aws::String& GetHomeRegion() const{ return m_homeRegion; }
330 
331     /**
332      * <p>The region in which the trail was created.</p>
333      */
HomeRegionHasBeenSet()334     inline bool HomeRegionHasBeenSet() const { return m_homeRegionHasBeenSet; }
335 
336     /**
337      * <p>The region in which the trail was created.</p>
338      */
SetHomeRegion(const Aws::String & value)339     inline void SetHomeRegion(const Aws::String& value) { m_homeRegionHasBeenSet = true; m_homeRegion = value; }
340 
341     /**
342      * <p>The region in which the trail was created.</p>
343      */
SetHomeRegion(Aws::String && value)344     inline void SetHomeRegion(Aws::String&& value) { m_homeRegionHasBeenSet = true; m_homeRegion = std::move(value); }
345 
346     /**
347      * <p>The region in which the trail was created.</p>
348      */
SetHomeRegion(const char * value)349     inline void SetHomeRegion(const char* value) { m_homeRegionHasBeenSet = true; m_homeRegion.assign(value); }
350 
351     /**
352      * <p>The region in which the trail was created.</p>
353      */
WithHomeRegion(const Aws::String & value)354     inline Trail& WithHomeRegion(const Aws::String& value) { SetHomeRegion(value); return *this;}
355 
356     /**
357      * <p>The region in which the trail was created.</p>
358      */
WithHomeRegion(Aws::String && value)359     inline Trail& WithHomeRegion(Aws::String&& value) { SetHomeRegion(std::move(value)); return *this;}
360 
361     /**
362      * <p>The region in which the trail was created.</p>
363      */
WithHomeRegion(const char * value)364     inline Trail& WithHomeRegion(const char* value) { SetHomeRegion(value); return *this;}
365 
366 
367     /**
368      * <p>Specifies the ARN of the trail. The following is the format of a trail
369      * ARN.</p> <p>
370      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
371      */
GetTrailARN()372     inline const Aws::String& GetTrailARN() const{ return m_trailARN; }
373 
374     /**
375      * <p>Specifies the ARN of the trail. The following is the format of a trail
376      * ARN.</p> <p>
377      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
378      */
TrailARNHasBeenSet()379     inline bool TrailARNHasBeenSet() const { return m_trailARNHasBeenSet; }
380 
381     /**
382      * <p>Specifies the ARN of the trail. The following is the format of a trail
383      * ARN.</p> <p>
384      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
385      */
SetTrailARN(const Aws::String & value)386     inline void SetTrailARN(const Aws::String& value) { m_trailARNHasBeenSet = true; m_trailARN = value; }
387 
388     /**
389      * <p>Specifies the ARN of the trail. The following is the format of a trail
390      * ARN.</p> <p>
391      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
392      */
SetTrailARN(Aws::String && value)393     inline void SetTrailARN(Aws::String&& value) { m_trailARNHasBeenSet = true; m_trailARN = std::move(value); }
394 
395     /**
396      * <p>Specifies the ARN of the trail. The following is the format of a trail
397      * ARN.</p> <p>
398      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
399      */
SetTrailARN(const char * value)400     inline void SetTrailARN(const char* value) { m_trailARNHasBeenSet = true; m_trailARN.assign(value); }
401 
402     /**
403      * <p>Specifies the ARN of the trail. The following is the format of a trail
404      * ARN.</p> <p>
405      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
406      */
WithTrailARN(const Aws::String & value)407     inline Trail& WithTrailARN(const Aws::String& value) { SetTrailARN(value); return *this;}
408 
409     /**
410      * <p>Specifies the ARN of the trail. The following is the format of a trail
411      * ARN.</p> <p>
412      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
413      */
WithTrailARN(Aws::String && value)414     inline Trail& WithTrailARN(Aws::String&& value) { SetTrailARN(std::move(value)); return *this;}
415 
416     /**
417      * <p>Specifies the ARN of the trail. The following is the format of a trail
418      * ARN.</p> <p>
419      * <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code> </p>
420      */
WithTrailARN(const char * value)421     inline Trail& WithTrailARN(const char* value) { SetTrailARN(value); return *this;}
422 
423 
424     /**
425      * <p>Specifies whether log file validation is enabled.</p>
426      */
GetLogFileValidationEnabled()427     inline bool GetLogFileValidationEnabled() const{ return m_logFileValidationEnabled; }
428 
429     /**
430      * <p>Specifies whether log file validation is enabled.</p>
431      */
LogFileValidationEnabledHasBeenSet()432     inline bool LogFileValidationEnabledHasBeenSet() const { return m_logFileValidationEnabledHasBeenSet; }
433 
434     /**
435      * <p>Specifies whether log file validation is enabled.</p>
436      */
SetLogFileValidationEnabled(bool value)437     inline void SetLogFileValidationEnabled(bool value) { m_logFileValidationEnabledHasBeenSet = true; m_logFileValidationEnabled = value; }
438 
439     /**
440      * <p>Specifies whether log file validation is enabled.</p>
441      */
WithLogFileValidationEnabled(bool value)442     inline Trail& WithLogFileValidationEnabled(bool value) { SetLogFileValidationEnabled(value); return *this;}
443 
444 
445     /**
446      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
447      * the log group to which CloudTrail logs will be delivered.</p>
448      */
GetCloudWatchLogsLogGroupArn()449     inline const Aws::String& GetCloudWatchLogsLogGroupArn() const{ return m_cloudWatchLogsLogGroupArn; }
450 
451     /**
452      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
453      * the log group to which CloudTrail logs will be delivered.</p>
454      */
CloudWatchLogsLogGroupArnHasBeenSet()455     inline bool CloudWatchLogsLogGroupArnHasBeenSet() const { return m_cloudWatchLogsLogGroupArnHasBeenSet; }
456 
457     /**
458      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
459      * the log group to which CloudTrail logs will be delivered.</p>
460      */
SetCloudWatchLogsLogGroupArn(const Aws::String & value)461     inline void SetCloudWatchLogsLogGroupArn(const Aws::String& value) { m_cloudWatchLogsLogGroupArnHasBeenSet = true; m_cloudWatchLogsLogGroupArn = value; }
462 
463     /**
464      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
465      * the log group to which CloudTrail logs will be delivered.</p>
466      */
SetCloudWatchLogsLogGroupArn(Aws::String && value)467     inline void SetCloudWatchLogsLogGroupArn(Aws::String&& value) { m_cloudWatchLogsLogGroupArnHasBeenSet = true; m_cloudWatchLogsLogGroupArn = std::move(value); }
468 
469     /**
470      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
471      * the log group to which CloudTrail logs will be delivered.</p>
472      */
SetCloudWatchLogsLogGroupArn(const char * value)473     inline void SetCloudWatchLogsLogGroupArn(const char* value) { m_cloudWatchLogsLogGroupArnHasBeenSet = true; m_cloudWatchLogsLogGroupArn.assign(value); }
474 
475     /**
476      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
477      * the log group to which CloudTrail logs will be delivered.</p>
478      */
WithCloudWatchLogsLogGroupArn(const Aws::String & value)479     inline Trail& WithCloudWatchLogsLogGroupArn(const Aws::String& value) { SetCloudWatchLogsLogGroupArn(value); return *this;}
480 
481     /**
482      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
483      * the log group to which CloudTrail logs will be delivered.</p>
484      */
WithCloudWatchLogsLogGroupArn(Aws::String && value)485     inline Trail& WithCloudWatchLogsLogGroupArn(Aws::String&& value) { SetCloudWatchLogsLogGroupArn(std::move(value)); return *this;}
486 
487     /**
488      * <p>Specifies an Amazon Resource Name (ARN), a unique identifier that represents
489      * the log group to which CloudTrail logs will be delivered.</p>
490      */
WithCloudWatchLogsLogGroupArn(const char * value)491     inline Trail& WithCloudWatchLogsLogGroupArn(const char* value) { SetCloudWatchLogsLogGroupArn(value); return *this;}
492 
493 
494     /**
495      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
496      * user's log group.</p>
497      */
GetCloudWatchLogsRoleArn()498     inline const Aws::String& GetCloudWatchLogsRoleArn() const{ return m_cloudWatchLogsRoleArn; }
499 
500     /**
501      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
502      * user's log group.</p>
503      */
CloudWatchLogsRoleArnHasBeenSet()504     inline bool CloudWatchLogsRoleArnHasBeenSet() const { return m_cloudWatchLogsRoleArnHasBeenSet; }
505 
506     /**
507      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
508      * user's log group.</p>
509      */
SetCloudWatchLogsRoleArn(const Aws::String & value)510     inline void SetCloudWatchLogsRoleArn(const Aws::String& value) { m_cloudWatchLogsRoleArnHasBeenSet = true; m_cloudWatchLogsRoleArn = value; }
511 
512     /**
513      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
514      * user's log group.</p>
515      */
SetCloudWatchLogsRoleArn(Aws::String && value)516     inline void SetCloudWatchLogsRoleArn(Aws::String&& value) { m_cloudWatchLogsRoleArnHasBeenSet = true; m_cloudWatchLogsRoleArn = std::move(value); }
517 
518     /**
519      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
520      * user's log group.</p>
521      */
SetCloudWatchLogsRoleArn(const char * value)522     inline void SetCloudWatchLogsRoleArn(const char* value) { m_cloudWatchLogsRoleArnHasBeenSet = true; m_cloudWatchLogsRoleArn.assign(value); }
523 
524     /**
525      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
526      * user's log group.</p>
527      */
WithCloudWatchLogsRoleArn(const Aws::String & value)528     inline Trail& WithCloudWatchLogsRoleArn(const Aws::String& value) { SetCloudWatchLogsRoleArn(value); return *this;}
529 
530     /**
531      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
532      * user's log group.</p>
533      */
WithCloudWatchLogsRoleArn(Aws::String && value)534     inline Trail& WithCloudWatchLogsRoleArn(Aws::String&& value) { SetCloudWatchLogsRoleArn(std::move(value)); return *this;}
535 
536     /**
537      * <p>Specifies the role for the CloudWatch Logs endpoint to assume to write to a
538      * user's log group.</p>
539      */
WithCloudWatchLogsRoleArn(const char * value)540     inline Trail& WithCloudWatchLogsRoleArn(const char* value) { SetCloudWatchLogsRoleArn(value); return *this;}
541 
542 
543     /**
544      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
545      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
546      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
547      * </p>
548      */
GetKmsKeyId()549     inline const Aws::String& GetKmsKeyId() const{ return m_kmsKeyId; }
550 
551     /**
552      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
553      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
554      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
555      * </p>
556      */
KmsKeyIdHasBeenSet()557     inline bool KmsKeyIdHasBeenSet() const { return m_kmsKeyIdHasBeenSet; }
558 
559     /**
560      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
561      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
562      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
563      * </p>
564      */
SetKmsKeyId(const Aws::String & value)565     inline void SetKmsKeyId(const Aws::String& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = value; }
566 
567     /**
568      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
569      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
570      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
571      * </p>
572      */
SetKmsKeyId(Aws::String && value)573     inline void SetKmsKeyId(Aws::String&& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = std::move(value); }
574 
575     /**
576      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
577      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
578      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
579      * </p>
580      */
SetKmsKeyId(const char * value)581     inline void SetKmsKeyId(const char* value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId.assign(value); }
582 
583     /**
584      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
585      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
586      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
587      * </p>
588      */
WithKmsKeyId(const Aws::String & value)589     inline Trail& WithKmsKeyId(const Aws::String& value) { SetKmsKeyId(value); return *this;}
590 
591     /**
592      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
593      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
594      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
595      * </p>
596      */
WithKmsKeyId(Aws::String && value)597     inline Trail& WithKmsKeyId(Aws::String&& value) { SetKmsKeyId(std::move(value)); return *this;}
598 
599     /**
600      * <p>Specifies the KMS key ID that encrypts the logs delivered by CloudTrail. The
601      * value is a fully specified ARN to a KMS key in the following format.</p> <p>
602      * <code>arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012</code>
603      * </p>
604      */
WithKmsKeyId(const char * value)605     inline Trail& WithKmsKeyId(const char* value) { SetKmsKeyId(value); return *this;}
606 
607 
608     /**
609      * <p>Specifies if the trail has custom event selectors.</p>
610      */
GetHasCustomEventSelectors()611     inline bool GetHasCustomEventSelectors() const{ return m_hasCustomEventSelectors; }
612 
613     /**
614      * <p>Specifies if the trail has custom event selectors.</p>
615      */
HasCustomEventSelectorsHasBeenSet()616     inline bool HasCustomEventSelectorsHasBeenSet() const { return m_hasCustomEventSelectorsHasBeenSet; }
617 
618     /**
619      * <p>Specifies if the trail has custom event selectors.</p>
620      */
SetHasCustomEventSelectors(bool value)621     inline void SetHasCustomEventSelectors(bool value) { m_hasCustomEventSelectorsHasBeenSet = true; m_hasCustomEventSelectors = value; }
622 
623     /**
624      * <p>Specifies if the trail has custom event selectors.</p>
625      */
WithHasCustomEventSelectors(bool value)626     inline Trail& WithHasCustomEventSelectors(bool value) { SetHasCustomEventSelectors(value); return *this;}
627 
628 
629     /**
630      * <p>Specifies whether a trail has insight types specified in an
631      * <code>InsightSelector</code> list.</p>
632      */
GetHasInsightSelectors()633     inline bool GetHasInsightSelectors() const{ return m_hasInsightSelectors; }
634 
635     /**
636      * <p>Specifies whether a trail has insight types specified in an
637      * <code>InsightSelector</code> list.</p>
638      */
HasInsightSelectorsHasBeenSet()639     inline bool HasInsightSelectorsHasBeenSet() const { return m_hasInsightSelectorsHasBeenSet; }
640 
641     /**
642      * <p>Specifies whether a trail has insight types specified in an
643      * <code>InsightSelector</code> list.</p>
644      */
SetHasInsightSelectors(bool value)645     inline void SetHasInsightSelectors(bool value) { m_hasInsightSelectorsHasBeenSet = true; m_hasInsightSelectors = value; }
646 
647     /**
648      * <p>Specifies whether a trail has insight types specified in an
649      * <code>InsightSelector</code> list.</p>
650      */
WithHasInsightSelectors(bool value)651     inline Trail& WithHasInsightSelectors(bool value) { SetHasInsightSelectors(value); return *this;}
652 
653 
654     /**
655      * <p>Specifies whether the trail is an organization trail.</p>
656      */
GetIsOrganizationTrail()657     inline bool GetIsOrganizationTrail() const{ return m_isOrganizationTrail; }
658 
659     /**
660      * <p>Specifies whether the trail is an organization trail.</p>
661      */
IsOrganizationTrailHasBeenSet()662     inline bool IsOrganizationTrailHasBeenSet() const { return m_isOrganizationTrailHasBeenSet; }
663 
664     /**
665      * <p>Specifies whether the trail is an organization trail.</p>
666      */
SetIsOrganizationTrail(bool value)667     inline void SetIsOrganizationTrail(bool value) { m_isOrganizationTrailHasBeenSet = true; m_isOrganizationTrail = value; }
668 
669     /**
670      * <p>Specifies whether the trail is an organization trail.</p>
671      */
WithIsOrganizationTrail(bool value)672     inline Trail& WithIsOrganizationTrail(bool value) { SetIsOrganizationTrail(value); return *this;}
673 
674   private:
675 
676     Aws::String m_name;
677     bool m_nameHasBeenSet;
678 
679     Aws::String m_s3BucketName;
680     bool m_s3BucketNameHasBeenSet;
681 
682     Aws::String m_s3KeyPrefix;
683     bool m_s3KeyPrefixHasBeenSet;
684 
685     Aws::String m_snsTopicARN;
686     bool m_snsTopicARNHasBeenSet;
687 
688     bool m_includeGlobalServiceEvents;
689     bool m_includeGlobalServiceEventsHasBeenSet;
690 
691     bool m_isMultiRegionTrail;
692     bool m_isMultiRegionTrailHasBeenSet;
693 
694     Aws::String m_homeRegion;
695     bool m_homeRegionHasBeenSet;
696 
697     Aws::String m_trailARN;
698     bool m_trailARNHasBeenSet;
699 
700     bool m_logFileValidationEnabled;
701     bool m_logFileValidationEnabledHasBeenSet;
702 
703     Aws::String m_cloudWatchLogsLogGroupArn;
704     bool m_cloudWatchLogsLogGroupArnHasBeenSet;
705 
706     Aws::String m_cloudWatchLogsRoleArn;
707     bool m_cloudWatchLogsRoleArnHasBeenSet;
708 
709     Aws::String m_kmsKeyId;
710     bool m_kmsKeyIdHasBeenSet;
711 
712     bool m_hasCustomEventSelectors;
713     bool m_hasCustomEventSelectorsHasBeenSet;
714 
715     bool m_hasInsightSelectors;
716     bool m_hasInsightSelectorsHasBeenSet;
717 
718     bool m_isOrganizationTrail;
719     bool m_isOrganizationTrailHasBeenSet;
720   };
721 
722 } // namespace Model
723 } // namespace CloudTrail
724 } // namespace Aws
725