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/core/utils/memory/stl/AWSVector.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/pinpoint/model/WaitTime.h>
11 #include <aws/pinpoint/model/MultiConditionalBranch.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace Pinpoint
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p>Specifies the settings for a multivariate split activity in a journey. This
31    * type of activity sends participants down one of as many as five paths (including
32    * a default <i>Else</i> path) in a journey, based on conditions that you
33    * specify.</p> <p>To create multivariate split activities that send
34    * participants down different paths based on push notification events (such as
35    * Open or Received events), your mobile app has to specify the User ID and
36    * Endpoint ID values. For more information, see <a
37    * href="https://docs.aws.amazon.com/pinpoint/latest/developerguide/integrate.html">Integrating
38    * Amazon Pinpoint with your application</a> in the <i>Amazon Pinpoint Developer
39    * Guide</i>.</p><p><h3>See Also:</h3>   <a
40    * href="http://docs.aws.amazon.com/goto/WebAPI/pinpoint-2016-12-01/MultiConditionalSplitActivity">AWS
41    * API Reference</a></p>
42    */
43   class AWS_PINPOINT_API MultiConditionalSplitActivity
44   {
45   public:
46     MultiConditionalSplitActivity();
47     MultiConditionalSplitActivity(Aws::Utils::Json::JsonView jsonValue);
48     MultiConditionalSplitActivity& operator=(Aws::Utils::Json::JsonView jsonValue);
49     Aws::Utils::Json::JsonValue Jsonize() const;
50 
51 
52     /**
53      * <p>The paths for the activity, including the conditions for entering each path
54      * and the activity to perform for each path.</p>
55      */
GetBranches()56     inline const Aws::Vector<MultiConditionalBranch>& GetBranches() const{ return m_branches; }
57 
58     /**
59      * <p>The paths for the activity, including the conditions for entering each path
60      * and the activity to perform for each path.</p>
61      */
BranchesHasBeenSet()62     inline bool BranchesHasBeenSet() const { return m_branchesHasBeenSet; }
63 
64     /**
65      * <p>The paths for the activity, including the conditions for entering each path
66      * and the activity to perform for each path.</p>
67      */
SetBranches(const Aws::Vector<MultiConditionalBranch> & value)68     inline void SetBranches(const Aws::Vector<MultiConditionalBranch>& value) { m_branchesHasBeenSet = true; m_branches = value; }
69 
70     /**
71      * <p>The paths for the activity, including the conditions for entering each path
72      * and the activity to perform for each path.</p>
73      */
SetBranches(Aws::Vector<MultiConditionalBranch> && value)74     inline void SetBranches(Aws::Vector<MultiConditionalBranch>&& value) { m_branchesHasBeenSet = true; m_branches = std::move(value); }
75 
76     /**
77      * <p>The paths for the activity, including the conditions for entering each path
78      * and the activity to perform for each path.</p>
79      */
WithBranches(const Aws::Vector<MultiConditionalBranch> & value)80     inline MultiConditionalSplitActivity& WithBranches(const Aws::Vector<MultiConditionalBranch>& value) { SetBranches(value); return *this;}
81 
82     /**
83      * <p>The paths for the activity, including the conditions for entering each path
84      * and the activity to perform for each path.</p>
85      */
WithBranches(Aws::Vector<MultiConditionalBranch> && value)86     inline MultiConditionalSplitActivity& WithBranches(Aws::Vector<MultiConditionalBranch>&& value) { SetBranches(std::move(value)); return *this;}
87 
88     /**
89      * <p>The paths for the activity, including the conditions for entering each path
90      * and the activity to perform for each path.</p>
91      */
AddBranches(const MultiConditionalBranch & value)92     inline MultiConditionalSplitActivity& AddBranches(const MultiConditionalBranch& value) { m_branchesHasBeenSet = true; m_branches.push_back(value); return *this; }
93 
94     /**
95      * <p>The paths for the activity, including the conditions for entering each path
96      * and the activity to perform for each path.</p>
97      */
AddBranches(MultiConditionalBranch && value)98     inline MultiConditionalSplitActivity& AddBranches(MultiConditionalBranch&& value) { m_branchesHasBeenSet = true; m_branches.push_back(std::move(value)); return *this; }
99 
100 
101     /**
102      * <p>The unique identifier for the activity to perform for participants who don't
103      * meet any of the conditions specified for other paths in the activity.</p>
104      */
GetDefaultActivity()105     inline const Aws::String& GetDefaultActivity() const{ return m_defaultActivity; }
106 
107     /**
108      * <p>The unique identifier for the activity to perform for participants who don't
109      * meet any of the conditions specified for other paths in the activity.</p>
110      */
DefaultActivityHasBeenSet()111     inline bool DefaultActivityHasBeenSet() const { return m_defaultActivityHasBeenSet; }
112 
113     /**
114      * <p>The unique identifier for the activity to perform for participants who don't
115      * meet any of the conditions specified for other paths in the activity.</p>
116      */
SetDefaultActivity(const Aws::String & value)117     inline void SetDefaultActivity(const Aws::String& value) { m_defaultActivityHasBeenSet = true; m_defaultActivity = value; }
118 
119     /**
120      * <p>The unique identifier for the activity to perform for participants who don't
121      * meet any of the conditions specified for other paths in the activity.</p>
122      */
SetDefaultActivity(Aws::String && value)123     inline void SetDefaultActivity(Aws::String&& value) { m_defaultActivityHasBeenSet = true; m_defaultActivity = std::move(value); }
124 
125     /**
126      * <p>The unique identifier for the activity to perform for participants who don't
127      * meet any of the conditions specified for other paths in the activity.</p>
128      */
SetDefaultActivity(const char * value)129     inline void SetDefaultActivity(const char* value) { m_defaultActivityHasBeenSet = true; m_defaultActivity.assign(value); }
130 
131     /**
132      * <p>The unique identifier for the activity to perform for participants who don't
133      * meet any of the conditions specified for other paths in the activity.</p>
134      */
WithDefaultActivity(const Aws::String & value)135     inline MultiConditionalSplitActivity& WithDefaultActivity(const Aws::String& value) { SetDefaultActivity(value); return *this;}
136 
137     /**
138      * <p>The unique identifier for the activity to perform for participants who don't
139      * meet any of the conditions specified for other paths in the activity.</p>
140      */
WithDefaultActivity(Aws::String && value)141     inline MultiConditionalSplitActivity& WithDefaultActivity(Aws::String&& value) { SetDefaultActivity(std::move(value)); return *this;}
142 
143     /**
144      * <p>The unique identifier for the activity to perform for participants who don't
145      * meet any of the conditions specified for other paths in the activity.</p>
146      */
WithDefaultActivity(const char * value)147     inline MultiConditionalSplitActivity& WithDefaultActivity(const char* value) { SetDefaultActivity(value); return *this;}
148 
149 
150     /**
151      * <p>The amount of time to wait or the date and time when Amazon Pinpoint
152      * determines whether the conditions are met.</p>
153      */
GetEvaluationWaitTime()154     inline const WaitTime& GetEvaluationWaitTime() const{ return m_evaluationWaitTime; }
155 
156     /**
157      * <p>The amount of time to wait or the date and time when Amazon Pinpoint
158      * determines whether the conditions are met.</p>
159      */
EvaluationWaitTimeHasBeenSet()160     inline bool EvaluationWaitTimeHasBeenSet() const { return m_evaluationWaitTimeHasBeenSet; }
161 
162     /**
163      * <p>The amount of time to wait or the date and time when Amazon Pinpoint
164      * determines whether the conditions are met.</p>
165      */
SetEvaluationWaitTime(const WaitTime & value)166     inline void SetEvaluationWaitTime(const WaitTime& value) { m_evaluationWaitTimeHasBeenSet = true; m_evaluationWaitTime = value; }
167 
168     /**
169      * <p>The amount of time to wait or the date and time when Amazon Pinpoint
170      * determines whether the conditions are met.</p>
171      */
SetEvaluationWaitTime(WaitTime && value)172     inline void SetEvaluationWaitTime(WaitTime&& value) { m_evaluationWaitTimeHasBeenSet = true; m_evaluationWaitTime = std::move(value); }
173 
174     /**
175      * <p>The amount of time to wait or the date and time when Amazon Pinpoint
176      * determines whether the conditions are met.</p>
177      */
WithEvaluationWaitTime(const WaitTime & value)178     inline MultiConditionalSplitActivity& WithEvaluationWaitTime(const WaitTime& value) { SetEvaluationWaitTime(value); return *this;}
179 
180     /**
181      * <p>The amount of time to wait or the date and time when Amazon Pinpoint
182      * determines whether the conditions are met.</p>
183      */
WithEvaluationWaitTime(WaitTime && value)184     inline MultiConditionalSplitActivity& WithEvaluationWaitTime(WaitTime&& value) { SetEvaluationWaitTime(std::move(value)); return *this;}
185 
186   private:
187 
188     Aws::Vector<MultiConditionalBranch> m_branches;
189     bool m_branchesHasBeenSet;
190 
191     Aws::String m_defaultActivity;
192     bool m_defaultActivityHasBeenSet;
193 
194     WaitTime m_evaluationWaitTime;
195     bool m_evaluationWaitTimeHasBeenSet;
196   };
197 
198 } // namespace Model
199 } // namespace Pinpoint
200 } // namespace Aws
201