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/iot/IoT_EXPORTS.h>
8 #include <aws/iot/IoTRequest.h>
9 #include <aws/iot/model/AuditFrequency.h>
10 #include <aws/core/utils/memory/stl/AWSString.h>
11 #include <aws/iot/model/DayOfWeek.h>
12 #include <aws/core/utils/memory/stl/AWSVector.h>
13 #include <aws/iot/model/Tag.h>
14 #include <utility>
15 
16 namespace Aws
17 {
18 namespace IoT
19 {
20 namespace Model
21 {
22 
23   /**
24    */
25   class AWS_IOT_API CreateScheduledAuditRequest : public IoTRequest
26   {
27   public:
28     CreateScheduledAuditRequest();
29 
30     // Service request name is the Operation name which will send this request out,
31     // each operation should has unique request name, so that we can get operation's name from this request.
32     // Note: this is not true for response, multiple operations may have the same response name,
33     // so we can not get operation's name from response.
GetServiceRequestName()34     inline virtual const char* GetServiceRequestName() const override { return "CreateScheduledAudit"; }
35 
36     Aws::String SerializePayload() const override;
37 
38 
39     /**
40      * <p>How often the scheduled audit takes place, either <code>DAILY</code>,
41      * <code>WEEKLY</code>, <code>BIWEEKLY</code> or <code>MONTHLY</code>. The start
42      * time of each audit is determined by the system.</p>
43      */
GetFrequency()44     inline const AuditFrequency& GetFrequency() const{ return m_frequency; }
45 
46     /**
47      * <p>How often the scheduled audit takes place, either <code>DAILY</code>,
48      * <code>WEEKLY</code>, <code>BIWEEKLY</code> or <code>MONTHLY</code>. The start
49      * time of each audit is determined by the system.</p>
50      */
FrequencyHasBeenSet()51     inline bool FrequencyHasBeenSet() const { return m_frequencyHasBeenSet; }
52 
53     /**
54      * <p>How often the scheduled audit takes place, either <code>DAILY</code>,
55      * <code>WEEKLY</code>, <code>BIWEEKLY</code> or <code>MONTHLY</code>. The start
56      * time of each audit is determined by the system.</p>
57      */
SetFrequency(const AuditFrequency & value)58     inline void SetFrequency(const AuditFrequency& value) { m_frequencyHasBeenSet = true; m_frequency = value; }
59 
60     /**
61      * <p>How often the scheduled audit takes place, either <code>DAILY</code>,
62      * <code>WEEKLY</code>, <code>BIWEEKLY</code> or <code>MONTHLY</code>. The start
63      * time of each audit is determined by the system.</p>
64      */
SetFrequency(AuditFrequency && value)65     inline void SetFrequency(AuditFrequency&& value) { m_frequencyHasBeenSet = true; m_frequency = std::move(value); }
66 
67     /**
68      * <p>How often the scheduled audit takes place, either <code>DAILY</code>,
69      * <code>WEEKLY</code>, <code>BIWEEKLY</code> or <code>MONTHLY</code>. The start
70      * time of each audit is determined by the system.</p>
71      */
WithFrequency(const AuditFrequency & value)72     inline CreateScheduledAuditRequest& WithFrequency(const AuditFrequency& value) { SetFrequency(value); return *this;}
73 
74     /**
75      * <p>How often the scheduled audit takes place, either <code>DAILY</code>,
76      * <code>WEEKLY</code>, <code>BIWEEKLY</code> or <code>MONTHLY</code>. The start
77      * time of each audit is determined by the system.</p>
78      */
WithFrequency(AuditFrequency && value)79     inline CreateScheduledAuditRequest& WithFrequency(AuditFrequency&& value) { SetFrequency(std::move(value)); return *this;}
80 
81 
82     /**
83      * <p>The day of the month on which the scheduled audit takes place. This can be
84      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
85      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
86      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
87      * of the month.</p>
88      */
GetDayOfMonth()89     inline const Aws::String& GetDayOfMonth() const{ return m_dayOfMonth; }
90 
91     /**
92      * <p>The day of the month on which the scheduled audit takes place. This can be
93      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
94      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
95      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
96      * of the month.</p>
97      */
DayOfMonthHasBeenSet()98     inline bool DayOfMonthHasBeenSet() const { return m_dayOfMonthHasBeenSet; }
99 
100     /**
101      * <p>The day of the month on which the scheduled audit takes place. This can be
102      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
103      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
104      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
105      * of the month.</p>
106      */
SetDayOfMonth(const Aws::String & value)107     inline void SetDayOfMonth(const Aws::String& value) { m_dayOfMonthHasBeenSet = true; m_dayOfMonth = value; }
108 
109     /**
110      * <p>The day of the month on which the scheduled audit takes place. This can be
111      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
112      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
113      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
114      * of the month.</p>
115      */
SetDayOfMonth(Aws::String && value)116     inline void SetDayOfMonth(Aws::String&& value) { m_dayOfMonthHasBeenSet = true; m_dayOfMonth = std::move(value); }
117 
118     /**
119      * <p>The day of the month on which the scheduled audit takes place. This can be
120      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
121      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
122      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
123      * of the month.</p>
124      */
SetDayOfMonth(const char * value)125     inline void SetDayOfMonth(const char* value) { m_dayOfMonthHasBeenSet = true; m_dayOfMonth.assign(value); }
126 
127     /**
128      * <p>The day of the month on which the scheduled audit takes place. This can be
129      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
130      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
131      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
132      * of the month.</p>
133      */
WithDayOfMonth(const Aws::String & value)134     inline CreateScheduledAuditRequest& WithDayOfMonth(const Aws::String& value) { SetDayOfMonth(value); return *this;}
135 
136     /**
137      * <p>The day of the month on which the scheduled audit takes place. This can be
138      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
139      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
140      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
141      * of the month.</p>
142      */
WithDayOfMonth(Aws::String && value)143     inline CreateScheduledAuditRequest& WithDayOfMonth(Aws::String&& value) { SetDayOfMonth(std::move(value)); return *this;}
144 
145     /**
146      * <p>The day of the month on which the scheduled audit takes place. This can be
147      * "1" through "31" or "LAST". This field is required if the "frequency" parameter
148      * is set to <code>MONTHLY</code>. If days 29 to 31 are specified, and the month
149      * doesn't have that many days, the audit takes place on the <code>LAST</code> day
150      * of the month.</p>
151      */
WithDayOfMonth(const char * value)152     inline CreateScheduledAuditRequest& WithDayOfMonth(const char* value) { SetDayOfMonth(value); return *this;}
153 
154 
155     /**
156      * <p>The day of the week on which the scheduled audit takes place, either
157      * <code>SUN</code>, <code>MON</code>, <code>TUE</code>, <code>WED</code>,
158      * <code>THU</code>, <code>FRI</code>, or <code>SAT</code>. This field is required
159      * if the <code>frequency</code> parameter is set to <code>WEEKLY</code> or
160      * <code>BIWEEKLY</code>.</p>
161      */
GetDayOfWeek()162     inline const DayOfWeek& GetDayOfWeek() const{ return m_dayOfWeek; }
163 
164     /**
165      * <p>The day of the week on which the scheduled audit takes place, either
166      * <code>SUN</code>, <code>MON</code>, <code>TUE</code>, <code>WED</code>,
167      * <code>THU</code>, <code>FRI</code>, or <code>SAT</code>. This field is required
168      * if the <code>frequency</code> parameter is set to <code>WEEKLY</code> or
169      * <code>BIWEEKLY</code>.</p>
170      */
DayOfWeekHasBeenSet()171     inline bool DayOfWeekHasBeenSet() const { return m_dayOfWeekHasBeenSet; }
172 
173     /**
174      * <p>The day of the week on which the scheduled audit takes place, either
175      * <code>SUN</code>, <code>MON</code>, <code>TUE</code>, <code>WED</code>,
176      * <code>THU</code>, <code>FRI</code>, or <code>SAT</code>. This field is required
177      * if the <code>frequency</code> parameter is set to <code>WEEKLY</code> or
178      * <code>BIWEEKLY</code>.</p>
179      */
SetDayOfWeek(const DayOfWeek & value)180     inline void SetDayOfWeek(const DayOfWeek& value) { m_dayOfWeekHasBeenSet = true; m_dayOfWeek = value; }
181 
182     /**
183      * <p>The day of the week on which the scheduled audit takes place, either
184      * <code>SUN</code>, <code>MON</code>, <code>TUE</code>, <code>WED</code>,
185      * <code>THU</code>, <code>FRI</code>, or <code>SAT</code>. This field is required
186      * if the <code>frequency</code> parameter is set to <code>WEEKLY</code> or
187      * <code>BIWEEKLY</code>.</p>
188      */
SetDayOfWeek(DayOfWeek && value)189     inline void SetDayOfWeek(DayOfWeek&& value) { m_dayOfWeekHasBeenSet = true; m_dayOfWeek = std::move(value); }
190 
191     /**
192      * <p>The day of the week on which the scheduled audit takes place, either
193      * <code>SUN</code>, <code>MON</code>, <code>TUE</code>, <code>WED</code>,
194      * <code>THU</code>, <code>FRI</code>, or <code>SAT</code>. This field is required
195      * if the <code>frequency</code> parameter is set to <code>WEEKLY</code> or
196      * <code>BIWEEKLY</code>.</p>
197      */
WithDayOfWeek(const DayOfWeek & value)198     inline CreateScheduledAuditRequest& WithDayOfWeek(const DayOfWeek& value) { SetDayOfWeek(value); return *this;}
199 
200     /**
201      * <p>The day of the week on which the scheduled audit takes place, either
202      * <code>SUN</code>, <code>MON</code>, <code>TUE</code>, <code>WED</code>,
203      * <code>THU</code>, <code>FRI</code>, or <code>SAT</code>. This field is required
204      * if the <code>frequency</code> parameter is set to <code>WEEKLY</code> or
205      * <code>BIWEEKLY</code>.</p>
206      */
WithDayOfWeek(DayOfWeek && value)207     inline CreateScheduledAuditRequest& WithDayOfWeek(DayOfWeek&& value) { SetDayOfWeek(std::move(value)); return *this;}
208 
209 
210     /**
211      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
212      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
213      * list of all checks, including those that are enabled or use
214      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
215      * enabled.)</p>
216      */
GetTargetCheckNames()217     inline const Aws::Vector<Aws::String>& GetTargetCheckNames() const{ return m_targetCheckNames; }
218 
219     /**
220      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
221      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
222      * list of all checks, including those that are enabled or use
223      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
224      * enabled.)</p>
225      */
TargetCheckNamesHasBeenSet()226     inline bool TargetCheckNamesHasBeenSet() const { return m_targetCheckNamesHasBeenSet; }
227 
228     /**
229      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
230      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
231      * list of all checks, including those that are enabled or use
232      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
233      * enabled.)</p>
234      */
SetTargetCheckNames(const Aws::Vector<Aws::String> & value)235     inline void SetTargetCheckNames(const Aws::Vector<Aws::String>& value) { m_targetCheckNamesHasBeenSet = true; m_targetCheckNames = value; }
236 
237     /**
238      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
239      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
240      * list of all checks, including those that are enabled or use
241      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
242      * enabled.)</p>
243      */
SetTargetCheckNames(Aws::Vector<Aws::String> && value)244     inline void SetTargetCheckNames(Aws::Vector<Aws::String>&& value) { m_targetCheckNamesHasBeenSet = true; m_targetCheckNames = std::move(value); }
245 
246     /**
247      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
248      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
249      * list of all checks, including those that are enabled or use
250      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
251      * enabled.)</p>
252      */
WithTargetCheckNames(const Aws::Vector<Aws::String> & value)253     inline CreateScheduledAuditRequest& WithTargetCheckNames(const Aws::Vector<Aws::String>& value) { SetTargetCheckNames(value); return *this;}
254 
255     /**
256      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
257      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
258      * list of all checks, including those that are enabled or use
259      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
260      * enabled.)</p>
261      */
WithTargetCheckNames(Aws::Vector<Aws::String> && value)262     inline CreateScheduledAuditRequest& WithTargetCheckNames(Aws::Vector<Aws::String>&& value) { SetTargetCheckNames(std::move(value)); return *this;}
263 
264     /**
265      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
266      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
267      * list of all checks, including those that are enabled or use
268      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
269      * enabled.)</p>
270      */
AddTargetCheckNames(const Aws::String & value)271     inline CreateScheduledAuditRequest& AddTargetCheckNames(const Aws::String& value) { m_targetCheckNamesHasBeenSet = true; m_targetCheckNames.push_back(value); return *this; }
272 
273     /**
274      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
275      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
276      * list of all checks, including those that are enabled or use
277      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
278      * enabled.)</p>
279      */
AddTargetCheckNames(Aws::String && value)280     inline CreateScheduledAuditRequest& AddTargetCheckNames(Aws::String&& value) { m_targetCheckNamesHasBeenSet = true; m_targetCheckNames.push_back(std::move(value)); return *this; }
281 
282     /**
283      * <p>Which checks are performed during the scheduled audit. Checks must be enabled
284      * for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the
285      * list of all checks, including those that are enabled or use
286      * <code>UpdateAccountAuditConfiguration</code> to select which checks are
287      * enabled.)</p>
288      */
AddTargetCheckNames(const char * value)289     inline CreateScheduledAuditRequest& AddTargetCheckNames(const char* value) { m_targetCheckNamesHasBeenSet = true; m_targetCheckNames.push_back(value); return *this; }
290 
291 
292     /**
293      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
294      */
GetScheduledAuditName()295     inline const Aws::String& GetScheduledAuditName() const{ return m_scheduledAuditName; }
296 
297     /**
298      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
299      */
ScheduledAuditNameHasBeenSet()300     inline bool ScheduledAuditNameHasBeenSet() const { return m_scheduledAuditNameHasBeenSet; }
301 
302     /**
303      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
304      */
SetScheduledAuditName(const Aws::String & value)305     inline void SetScheduledAuditName(const Aws::String& value) { m_scheduledAuditNameHasBeenSet = true; m_scheduledAuditName = value; }
306 
307     /**
308      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
309      */
SetScheduledAuditName(Aws::String && value)310     inline void SetScheduledAuditName(Aws::String&& value) { m_scheduledAuditNameHasBeenSet = true; m_scheduledAuditName = std::move(value); }
311 
312     /**
313      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
314      */
SetScheduledAuditName(const char * value)315     inline void SetScheduledAuditName(const char* value) { m_scheduledAuditNameHasBeenSet = true; m_scheduledAuditName.assign(value); }
316 
317     /**
318      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
319      */
WithScheduledAuditName(const Aws::String & value)320     inline CreateScheduledAuditRequest& WithScheduledAuditName(const Aws::String& value) { SetScheduledAuditName(value); return *this;}
321 
322     /**
323      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
324      */
WithScheduledAuditName(Aws::String && value)325     inline CreateScheduledAuditRequest& WithScheduledAuditName(Aws::String&& value) { SetScheduledAuditName(std::move(value)); return *this;}
326 
327     /**
328      * <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
329      */
WithScheduledAuditName(const char * value)330     inline CreateScheduledAuditRequest& WithScheduledAuditName(const char* value) { SetScheduledAuditName(value); return *this;}
331 
332 
333     /**
334      * <p>Metadata that can be used to manage the scheduled audit.</p>
335      */
GetTags()336     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
337 
338     /**
339      * <p>Metadata that can be used to manage the scheduled audit.</p>
340      */
TagsHasBeenSet()341     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
342 
343     /**
344      * <p>Metadata that can be used to manage the scheduled audit.</p>
345      */
SetTags(const Aws::Vector<Tag> & value)346     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
347 
348     /**
349      * <p>Metadata that can be used to manage the scheduled audit.</p>
350      */
SetTags(Aws::Vector<Tag> && value)351     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
352 
353     /**
354      * <p>Metadata that can be used to manage the scheduled audit.</p>
355      */
WithTags(const Aws::Vector<Tag> & value)356     inline CreateScheduledAuditRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
357 
358     /**
359      * <p>Metadata that can be used to manage the scheduled audit.</p>
360      */
WithTags(Aws::Vector<Tag> && value)361     inline CreateScheduledAuditRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
362 
363     /**
364      * <p>Metadata that can be used to manage the scheduled audit.</p>
365      */
AddTags(const Tag & value)366     inline CreateScheduledAuditRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
367 
368     /**
369      * <p>Metadata that can be used to manage the scheduled audit.</p>
370      */
AddTags(Tag && value)371     inline CreateScheduledAuditRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
372 
373   private:
374 
375     AuditFrequency m_frequency;
376     bool m_frequencyHasBeenSet;
377 
378     Aws::String m_dayOfMonth;
379     bool m_dayOfMonthHasBeenSet;
380 
381     DayOfWeek m_dayOfWeek;
382     bool m_dayOfWeekHasBeenSet;
383 
384     Aws::Vector<Aws::String> m_targetCheckNames;
385     bool m_targetCheckNamesHasBeenSet;
386 
387     Aws::String m_scheduledAuditName;
388     bool m_scheduledAuditNameHasBeenSet;
389 
390     Aws::Vector<Tag> m_tags;
391     bool m_tagsHasBeenSet;
392   };
393 
394 } // namespace Model
395 } // namespace IoT
396 } // namespace Aws
397