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/pinpoint/Pinpoint_EXPORTS.h>
8 #include <aws/pinpoint/model/CustomMessageActivity.h>
9 #include <aws/pinpoint/model/ConditionalSplitActivity.h>
10 #include <aws/core/utils/memory/stl/AWSString.h>
11 #include <aws/pinpoint/model/EmailMessageActivity.h>
12 #include <aws/pinpoint/model/HoldoutActivity.h>
13 #include <aws/pinpoint/model/MultiConditionalSplitActivity.h>
14 #include <aws/pinpoint/model/PushMessageActivity.h>
15 #include <aws/pinpoint/model/RandomSplitActivity.h>
16 #include <aws/pinpoint/model/SMSMessageActivity.h>
17 #include <aws/pinpoint/model/WaitActivity.h>
18 #include <aws/pinpoint/model/ContactCenterActivity.h>
19 #include <utility>
20 
21 namespace Aws
22 {
23 namespace Utils
24 {
25 namespace Json
26 {
27   class JsonValue;
28   class JsonView;
29 } // namespace Json
30 } // namespace Utils
31 namespace Pinpoint
32 {
33 namespace Model
34 {
35 
36   /**
37    * <p>Specifies the configuration and other settings for an activity in a
38    * journey.</p><p><h3>See Also:</h3>   <a
39    * href="http://docs.aws.amazon.com/goto/WebAPI/pinpoint-2016-12-01/Activity">AWS
40    * API Reference</a></p>
41    */
42   class AWS_PINPOINT_API Activity
43   {
44   public:
45     Activity();
46     Activity(Aws::Utils::Json::JsonView jsonValue);
47     Activity& operator=(Aws::Utils::Json::JsonView jsonValue);
48     Aws::Utils::Json::JsonValue Jsonize() const;
49 
50 
51     /**
52      * <p>The settings for a custom message activity. This type of activity calls an
53      * AWS Lambda function or web hook that sends messages to participants.</p>
54      */
GetCUSTOM()55     inline const CustomMessageActivity& GetCUSTOM() const{ return m_cUSTOM; }
56 
57     /**
58      * <p>The settings for a custom message activity. This type of activity calls an
59      * AWS Lambda function or web hook that sends messages to participants.</p>
60      */
CUSTOMHasBeenSet()61     inline bool CUSTOMHasBeenSet() const { return m_cUSTOMHasBeenSet; }
62 
63     /**
64      * <p>The settings for a custom message activity. This type of activity calls an
65      * AWS Lambda function or web hook that sends messages to participants.</p>
66      */
SetCUSTOM(const CustomMessageActivity & value)67     inline void SetCUSTOM(const CustomMessageActivity& value) { m_cUSTOMHasBeenSet = true; m_cUSTOM = value; }
68 
69     /**
70      * <p>The settings for a custom message activity. This type of activity calls an
71      * AWS Lambda function or web hook that sends messages to participants.</p>
72      */
SetCUSTOM(CustomMessageActivity && value)73     inline void SetCUSTOM(CustomMessageActivity&& value) { m_cUSTOMHasBeenSet = true; m_cUSTOM = std::move(value); }
74 
75     /**
76      * <p>The settings for a custom message activity. This type of activity calls an
77      * AWS Lambda function or web hook that sends messages to participants.</p>
78      */
WithCUSTOM(const CustomMessageActivity & value)79     inline Activity& WithCUSTOM(const CustomMessageActivity& value) { SetCUSTOM(value); return *this;}
80 
81     /**
82      * <p>The settings for a custom message activity. This type of activity calls an
83      * AWS Lambda function or web hook that sends messages to participants.</p>
84      */
WithCUSTOM(CustomMessageActivity && value)85     inline Activity& WithCUSTOM(CustomMessageActivity&& value) { SetCUSTOM(std::move(value)); return *this;}
86 
87 
88     /**
89      * <p>The settings for a yes/no split activity. This type of activity sends
90      * participants down one of two paths in a journey, based on conditions that you
91      * specify.</p>
92      */
GetConditionalSplit()93     inline const ConditionalSplitActivity& GetConditionalSplit() const{ return m_conditionalSplit; }
94 
95     /**
96      * <p>The settings for a yes/no split activity. This type of activity sends
97      * participants down one of two paths in a journey, based on conditions that you
98      * specify.</p>
99      */
ConditionalSplitHasBeenSet()100     inline bool ConditionalSplitHasBeenSet() const { return m_conditionalSplitHasBeenSet; }
101 
102     /**
103      * <p>The settings for a yes/no split activity. This type of activity sends
104      * participants down one of two paths in a journey, based on conditions that you
105      * specify.</p>
106      */
SetConditionalSplit(const ConditionalSplitActivity & value)107     inline void SetConditionalSplit(const ConditionalSplitActivity& value) { m_conditionalSplitHasBeenSet = true; m_conditionalSplit = value; }
108 
109     /**
110      * <p>The settings for a yes/no split activity. This type of activity sends
111      * participants down one of two paths in a journey, based on conditions that you
112      * specify.</p>
113      */
SetConditionalSplit(ConditionalSplitActivity && value)114     inline void SetConditionalSplit(ConditionalSplitActivity&& value) { m_conditionalSplitHasBeenSet = true; m_conditionalSplit = std::move(value); }
115 
116     /**
117      * <p>The settings for a yes/no split activity. This type of activity sends
118      * participants down one of two paths in a journey, based on conditions that you
119      * specify.</p>
120      */
WithConditionalSplit(const ConditionalSplitActivity & value)121     inline Activity& WithConditionalSplit(const ConditionalSplitActivity& value) { SetConditionalSplit(value); return *this;}
122 
123     /**
124      * <p>The settings for a yes/no split activity. This type of activity sends
125      * participants down one of two paths in a journey, based on conditions that you
126      * specify.</p>
127      */
WithConditionalSplit(ConditionalSplitActivity && value)128     inline Activity& WithConditionalSplit(ConditionalSplitActivity&& value) { SetConditionalSplit(std::move(value)); return *this;}
129 
130 
131     /**
132      * <p>The custom description of the activity.</p>
133      */
GetDescription()134     inline const Aws::String& GetDescription() const{ return m_description; }
135 
136     /**
137      * <p>The custom description of the activity.</p>
138      */
DescriptionHasBeenSet()139     inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; }
140 
141     /**
142      * <p>The custom description of the activity.</p>
143      */
SetDescription(const Aws::String & value)144     inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; }
145 
146     /**
147      * <p>The custom description of the activity.</p>
148      */
SetDescription(Aws::String && value)149     inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); }
150 
151     /**
152      * <p>The custom description of the activity.</p>
153      */
SetDescription(const char * value)154     inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); }
155 
156     /**
157      * <p>The custom description of the activity.</p>
158      */
WithDescription(const Aws::String & value)159     inline Activity& WithDescription(const Aws::String& value) { SetDescription(value); return *this;}
160 
161     /**
162      * <p>The custom description of the activity.</p>
163      */
WithDescription(Aws::String && value)164     inline Activity& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;}
165 
166     /**
167      * <p>The custom description of the activity.</p>
168      */
WithDescription(const char * value)169     inline Activity& WithDescription(const char* value) { SetDescription(value); return *this;}
170 
171 
172     /**
173      * <p>The settings for an email activity. This type of activity sends an email
174      * message to participants.</p>
175      */
GetEMAIL()176     inline const EmailMessageActivity& GetEMAIL() const{ return m_eMAIL; }
177 
178     /**
179      * <p>The settings for an email activity. This type of activity sends an email
180      * message to participants.</p>
181      */
EMAILHasBeenSet()182     inline bool EMAILHasBeenSet() const { return m_eMAILHasBeenSet; }
183 
184     /**
185      * <p>The settings for an email activity. This type of activity sends an email
186      * message to participants.</p>
187      */
SetEMAIL(const EmailMessageActivity & value)188     inline void SetEMAIL(const EmailMessageActivity& value) { m_eMAILHasBeenSet = true; m_eMAIL = value; }
189 
190     /**
191      * <p>The settings for an email activity. This type of activity sends an email
192      * message to participants.</p>
193      */
SetEMAIL(EmailMessageActivity && value)194     inline void SetEMAIL(EmailMessageActivity&& value) { m_eMAILHasBeenSet = true; m_eMAIL = std::move(value); }
195 
196     /**
197      * <p>The settings for an email activity. This type of activity sends an email
198      * message to participants.</p>
199      */
WithEMAIL(const EmailMessageActivity & value)200     inline Activity& WithEMAIL(const EmailMessageActivity& value) { SetEMAIL(value); return *this;}
201 
202     /**
203      * <p>The settings for an email activity. This type of activity sends an email
204      * message to participants.</p>
205      */
WithEMAIL(EmailMessageActivity && value)206     inline Activity& WithEMAIL(EmailMessageActivity&& value) { SetEMAIL(std::move(value)); return *this;}
207 
208 
209     /**
210      * <p>The settings for a holdout activity. This type of activity stops a journey
211      * for a specified percentage of participants.</p>
212      */
GetHoldout()213     inline const HoldoutActivity& GetHoldout() const{ return m_holdout; }
214 
215     /**
216      * <p>The settings for a holdout activity. This type of activity stops a journey
217      * for a specified percentage of participants.</p>
218      */
HoldoutHasBeenSet()219     inline bool HoldoutHasBeenSet() const { return m_holdoutHasBeenSet; }
220 
221     /**
222      * <p>The settings for a holdout activity. This type of activity stops a journey
223      * for a specified percentage of participants.</p>
224      */
SetHoldout(const HoldoutActivity & value)225     inline void SetHoldout(const HoldoutActivity& value) { m_holdoutHasBeenSet = true; m_holdout = value; }
226 
227     /**
228      * <p>The settings for a holdout activity. This type of activity stops a journey
229      * for a specified percentage of participants.</p>
230      */
SetHoldout(HoldoutActivity && value)231     inline void SetHoldout(HoldoutActivity&& value) { m_holdoutHasBeenSet = true; m_holdout = std::move(value); }
232 
233     /**
234      * <p>The settings for a holdout activity. This type of activity stops a journey
235      * for a specified percentage of participants.</p>
236      */
WithHoldout(const HoldoutActivity & value)237     inline Activity& WithHoldout(const HoldoutActivity& value) { SetHoldout(value); return *this;}
238 
239     /**
240      * <p>The settings for a holdout activity. This type of activity stops a journey
241      * for a specified percentage of participants.</p>
242      */
WithHoldout(HoldoutActivity && value)243     inline Activity& WithHoldout(HoldoutActivity&& value) { SetHoldout(std::move(value)); return *this;}
244 
245 
246     /**
247      * <p>The settings for a multivariate split activity. This type of activity sends
248      * participants down one of as many as five paths (including a default <i>Else</i>
249      * path) in a journey, based on conditions that you specify.</p>
250      */
GetMultiCondition()251     inline const MultiConditionalSplitActivity& GetMultiCondition() const{ return m_multiCondition; }
252 
253     /**
254      * <p>The settings for a multivariate split activity. This type of activity sends
255      * participants down one of as many as five paths (including a default <i>Else</i>
256      * path) in a journey, based on conditions that you specify.</p>
257      */
MultiConditionHasBeenSet()258     inline bool MultiConditionHasBeenSet() const { return m_multiConditionHasBeenSet; }
259 
260     /**
261      * <p>The settings for a multivariate split activity. This type of activity sends
262      * participants down one of as many as five paths (including a default <i>Else</i>
263      * path) in a journey, based on conditions that you specify.</p>
264      */
SetMultiCondition(const MultiConditionalSplitActivity & value)265     inline void SetMultiCondition(const MultiConditionalSplitActivity& value) { m_multiConditionHasBeenSet = true; m_multiCondition = value; }
266 
267     /**
268      * <p>The settings for a multivariate split activity. This type of activity sends
269      * participants down one of as many as five paths (including a default <i>Else</i>
270      * path) in a journey, based on conditions that you specify.</p>
271      */
SetMultiCondition(MultiConditionalSplitActivity && value)272     inline void SetMultiCondition(MultiConditionalSplitActivity&& value) { m_multiConditionHasBeenSet = true; m_multiCondition = std::move(value); }
273 
274     /**
275      * <p>The settings for a multivariate split activity. This type of activity sends
276      * participants down one of as many as five paths (including a default <i>Else</i>
277      * path) in a journey, based on conditions that you specify.</p>
278      */
WithMultiCondition(const MultiConditionalSplitActivity & value)279     inline Activity& WithMultiCondition(const MultiConditionalSplitActivity& value) { SetMultiCondition(value); return *this;}
280 
281     /**
282      * <p>The settings for a multivariate split activity. This type of activity sends
283      * participants down one of as many as five paths (including a default <i>Else</i>
284      * path) in a journey, based on conditions that you specify.</p>
285      */
WithMultiCondition(MultiConditionalSplitActivity && value)286     inline Activity& WithMultiCondition(MultiConditionalSplitActivity&& value) { SetMultiCondition(std::move(value)); return *this;}
287 
288 
289     /**
290      * <p>The settings for a push notification activity. This type of activity sends a
291      * push notification to participants.</p>
292      */
GetPUSH()293     inline const PushMessageActivity& GetPUSH() const{ return m_pUSH; }
294 
295     /**
296      * <p>The settings for a push notification activity. This type of activity sends a
297      * push notification to participants.</p>
298      */
PUSHHasBeenSet()299     inline bool PUSHHasBeenSet() const { return m_pUSHHasBeenSet; }
300 
301     /**
302      * <p>The settings for a push notification activity. This type of activity sends a
303      * push notification to participants.</p>
304      */
SetPUSH(const PushMessageActivity & value)305     inline void SetPUSH(const PushMessageActivity& value) { m_pUSHHasBeenSet = true; m_pUSH = value; }
306 
307     /**
308      * <p>The settings for a push notification activity. This type of activity sends a
309      * push notification to participants.</p>
310      */
SetPUSH(PushMessageActivity && value)311     inline void SetPUSH(PushMessageActivity&& value) { m_pUSHHasBeenSet = true; m_pUSH = std::move(value); }
312 
313     /**
314      * <p>The settings for a push notification activity. This type of activity sends a
315      * push notification to participants.</p>
316      */
WithPUSH(const PushMessageActivity & value)317     inline Activity& WithPUSH(const PushMessageActivity& value) { SetPUSH(value); return *this;}
318 
319     /**
320      * <p>The settings for a push notification activity. This type of activity sends a
321      * push notification to participants.</p>
322      */
WithPUSH(PushMessageActivity && value)323     inline Activity& WithPUSH(PushMessageActivity&& value) { SetPUSH(std::move(value)); return *this;}
324 
325 
326     /**
327      * <p>The settings for a random split activity. This type of activity randomly
328      * sends specified percentages of participants down one of as many as five paths in
329      * a journey, based on conditions that you specify.</p>
330      */
GetRandomSplit()331     inline const RandomSplitActivity& GetRandomSplit() const{ return m_randomSplit; }
332 
333     /**
334      * <p>The settings for a random split activity. This type of activity randomly
335      * sends specified percentages of participants down one of as many as five paths in
336      * a journey, based on conditions that you specify.</p>
337      */
RandomSplitHasBeenSet()338     inline bool RandomSplitHasBeenSet() const { return m_randomSplitHasBeenSet; }
339 
340     /**
341      * <p>The settings for a random split activity. This type of activity randomly
342      * sends specified percentages of participants down one of as many as five paths in
343      * a journey, based on conditions that you specify.</p>
344      */
SetRandomSplit(const RandomSplitActivity & value)345     inline void SetRandomSplit(const RandomSplitActivity& value) { m_randomSplitHasBeenSet = true; m_randomSplit = value; }
346 
347     /**
348      * <p>The settings for a random split activity. This type of activity randomly
349      * sends specified percentages of participants down one of as many as five paths in
350      * a journey, based on conditions that you specify.</p>
351      */
SetRandomSplit(RandomSplitActivity && value)352     inline void SetRandomSplit(RandomSplitActivity&& value) { m_randomSplitHasBeenSet = true; m_randomSplit = std::move(value); }
353 
354     /**
355      * <p>The settings for a random split activity. This type of activity randomly
356      * sends specified percentages of participants down one of as many as five paths in
357      * a journey, based on conditions that you specify.</p>
358      */
WithRandomSplit(const RandomSplitActivity & value)359     inline Activity& WithRandomSplit(const RandomSplitActivity& value) { SetRandomSplit(value); return *this;}
360 
361     /**
362      * <p>The settings for a random split activity. This type of activity randomly
363      * sends specified percentages of participants down one of as many as five paths in
364      * a journey, based on conditions that you specify.</p>
365      */
WithRandomSplit(RandomSplitActivity && value)366     inline Activity& WithRandomSplit(RandomSplitActivity&& value) { SetRandomSplit(std::move(value)); return *this;}
367 
368 
369     /**
370      * <p>The settings for an SMS activity. This type of activity sends a text message
371      * to participants.</p>
372      */
GetSMS()373     inline const SMSMessageActivity& GetSMS() const{ return m_sMS; }
374 
375     /**
376      * <p>The settings for an SMS activity. This type of activity sends a text message
377      * to participants.</p>
378      */
SMSHasBeenSet()379     inline bool SMSHasBeenSet() const { return m_sMSHasBeenSet; }
380 
381     /**
382      * <p>The settings for an SMS activity. This type of activity sends a text message
383      * to participants.</p>
384      */
SetSMS(const SMSMessageActivity & value)385     inline void SetSMS(const SMSMessageActivity& value) { m_sMSHasBeenSet = true; m_sMS = value; }
386 
387     /**
388      * <p>The settings for an SMS activity. This type of activity sends a text message
389      * to participants.</p>
390      */
SetSMS(SMSMessageActivity && value)391     inline void SetSMS(SMSMessageActivity&& value) { m_sMSHasBeenSet = true; m_sMS = std::move(value); }
392 
393     /**
394      * <p>The settings for an SMS activity. This type of activity sends a text message
395      * to participants.</p>
396      */
WithSMS(const SMSMessageActivity & value)397     inline Activity& WithSMS(const SMSMessageActivity& value) { SetSMS(value); return *this;}
398 
399     /**
400      * <p>The settings for an SMS activity. This type of activity sends a text message
401      * to participants.</p>
402      */
WithSMS(SMSMessageActivity && value)403     inline Activity& WithSMS(SMSMessageActivity&& value) { SetSMS(std::move(value)); return *this;}
404 
405 
406     /**
407      * <p>The settings for a wait activity. This type of activity waits for a certain
408      * amount of time or until a specific date and time before moving participants to
409      * the next activity in a journey.</p>
410      */
GetWait()411     inline const WaitActivity& GetWait() const{ return m_wait; }
412 
413     /**
414      * <p>The settings for a wait activity. This type of activity waits for a certain
415      * amount of time or until a specific date and time before moving participants to
416      * the next activity in a journey.</p>
417      */
WaitHasBeenSet()418     inline bool WaitHasBeenSet() const { return m_waitHasBeenSet; }
419 
420     /**
421      * <p>The settings for a wait activity. This type of activity waits for a certain
422      * amount of time or until a specific date and time before moving participants to
423      * the next activity in a journey.</p>
424      */
SetWait(const WaitActivity & value)425     inline void SetWait(const WaitActivity& value) { m_waitHasBeenSet = true; m_wait = value; }
426 
427     /**
428      * <p>The settings for a wait activity. This type of activity waits for a certain
429      * amount of time or until a specific date and time before moving participants to
430      * the next activity in a journey.</p>
431      */
SetWait(WaitActivity && value)432     inline void SetWait(WaitActivity&& value) { m_waitHasBeenSet = true; m_wait = std::move(value); }
433 
434     /**
435      * <p>The settings for a wait activity. This type of activity waits for a certain
436      * amount of time or until a specific date and time before moving participants to
437      * the next activity in a journey.</p>
438      */
WithWait(const WaitActivity & value)439     inline Activity& WithWait(const WaitActivity& value) { SetWait(value); return *this;}
440 
441     /**
442      * <p>The settings for a wait activity. This type of activity waits for a certain
443      * amount of time or until a specific date and time before moving participants to
444      * the next activity in a journey.</p>
445      */
WithWait(WaitActivity && value)446     inline Activity& WithWait(WaitActivity&& value) { SetWait(std::move(value)); return *this;}
447 
448 
449     /**
450      * <p>The settings for a connect activity. This type of activity initiates a
451      * contact center call to participants.</p>
452      */
GetContactCenter()453     inline const ContactCenterActivity& GetContactCenter() const{ return m_contactCenter; }
454 
455     /**
456      * <p>The settings for a connect activity. This type of activity initiates a
457      * contact center call to participants.</p>
458      */
ContactCenterHasBeenSet()459     inline bool ContactCenterHasBeenSet() const { return m_contactCenterHasBeenSet; }
460 
461     /**
462      * <p>The settings for a connect activity. This type of activity initiates a
463      * contact center call to participants.</p>
464      */
SetContactCenter(const ContactCenterActivity & value)465     inline void SetContactCenter(const ContactCenterActivity& value) { m_contactCenterHasBeenSet = true; m_contactCenter = value; }
466 
467     /**
468      * <p>The settings for a connect activity. This type of activity initiates a
469      * contact center call to participants.</p>
470      */
SetContactCenter(ContactCenterActivity && value)471     inline void SetContactCenter(ContactCenterActivity&& value) { m_contactCenterHasBeenSet = true; m_contactCenter = std::move(value); }
472 
473     /**
474      * <p>The settings for a connect activity. This type of activity initiates a
475      * contact center call to participants.</p>
476      */
WithContactCenter(const ContactCenterActivity & value)477     inline Activity& WithContactCenter(const ContactCenterActivity& value) { SetContactCenter(value); return *this;}
478 
479     /**
480      * <p>The settings for a connect activity. This type of activity initiates a
481      * contact center call to participants.</p>
482      */
WithContactCenter(ContactCenterActivity && value)483     inline Activity& WithContactCenter(ContactCenterActivity&& value) { SetContactCenter(std::move(value)); return *this;}
484 
485   private:
486 
487     CustomMessageActivity m_cUSTOM;
488     bool m_cUSTOMHasBeenSet;
489 
490     ConditionalSplitActivity m_conditionalSplit;
491     bool m_conditionalSplitHasBeenSet;
492 
493     Aws::String m_description;
494     bool m_descriptionHasBeenSet;
495 
496     EmailMessageActivity m_eMAIL;
497     bool m_eMAILHasBeenSet;
498 
499     HoldoutActivity m_holdout;
500     bool m_holdoutHasBeenSet;
501 
502     MultiConditionalSplitActivity m_multiCondition;
503     bool m_multiConditionHasBeenSet;
504 
505     PushMessageActivity m_pUSH;
506     bool m_pUSHHasBeenSet;
507 
508     RandomSplitActivity m_randomSplit;
509     bool m_randomSplitHasBeenSet;
510 
511     SMSMessageActivity m_sMS;
512     bool m_sMSHasBeenSet;
513 
514     WaitActivity m_wait;
515     bool m_waitHasBeenSet;
516 
517     ContactCenterActivity m_contactCenter;
518     bool m_contactCenterHasBeenSet;
519   };
520 
521 } // namespace Model
522 } // namespace Pinpoint
523 } // namespace Aws
524