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-email/PinpointEmail_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSVector.h>
9 #include <aws/pinpoint-email/model/KinesisFirehoseDestination.h>
10 #include <aws/pinpoint-email/model/CloudWatchDestination.h>
11 #include <aws/pinpoint-email/model/SnsDestination.h>
12 #include <aws/pinpoint-email/model/PinpointDestination.h>
13 #include <aws/pinpoint-email/model/EventType.h>
14 #include <utility>
15 
16 namespace Aws
17 {
18 namespace Utils
19 {
20 namespace Json
21 {
22   class JsonValue;
23   class JsonView;
24 } // namespace Json
25 } // namespace Utils
26 namespace PinpointEmail
27 {
28 namespace Model
29 {
30 
31   /**
32    * <p>An object that defines the event destination. Specifically, it defines which
33    * services receive events from emails sent using the configuration set that the
34    * event destination is associated with. Also defines the types of events that are
35    * sent to the event destination.</p><p><h3>See Also:</h3>   <a
36    * href="http://docs.aws.amazon.com/goto/WebAPI/pinpoint-email-2018-07-26/EventDestinationDefinition">AWS
37    * API Reference</a></p>
38    */
39   class AWS_PINPOINTEMAIL_API EventDestinationDefinition
40   {
41   public:
42     EventDestinationDefinition();
43     EventDestinationDefinition(Aws::Utils::Json::JsonView jsonValue);
44     EventDestinationDefinition& operator=(Aws::Utils::Json::JsonView jsonValue);
45     Aws::Utils::Json::JsonValue Jsonize() const;
46 
47 
48     /**
49      * <p>If <code>true</code>, the event destination is enabled. When the event
50      * destination is enabled, the specified event types are sent to the destinations
51      * in this <code>EventDestinationDefinition</code>.</p> <p>If <code>false</code>,
52      * the event destination is disabled. When the event destination is disabled,
53      * events aren't sent to the specified destinations.</p>
54      */
GetEnabled()55     inline bool GetEnabled() const{ return m_enabled; }
56 
57     /**
58      * <p>If <code>true</code>, the event destination is enabled. When the event
59      * destination is enabled, the specified event types are sent to the destinations
60      * in this <code>EventDestinationDefinition</code>.</p> <p>If <code>false</code>,
61      * the event destination is disabled. When the event destination is disabled,
62      * events aren't sent to the specified destinations.</p>
63      */
EnabledHasBeenSet()64     inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; }
65 
66     /**
67      * <p>If <code>true</code>, the event destination is enabled. When the event
68      * destination is enabled, the specified event types are sent to the destinations
69      * in this <code>EventDestinationDefinition</code>.</p> <p>If <code>false</code>,
70      * the event destination is disabled. When the event destination is disabled,
71      * events aren't sent to the specified destinations.</p>
72      */
SetEnabled(bool value)73     inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; }
74 
75     /**
76      * <p>If <code>true</code>, the event destination is enabled. When the event
77      * destination is enabled, the specified event types are sent to the destinations
78      * in this <code>EventDestinationDefinition</code>.</p> <p>If <code>false</code>,
79      * the event destination is disabled. When the event destination is disabled,
80      * events aren't sent to the specified destinations.</p>
81      */
WithEnabled(bool value)82     inline EventDestinationDefinition& WithEnabled(bool value) { SetEnabled(value); return *this;}
83 
84 
85     /**
86      * <p>An array that specifies which events Amazon Pinpoint should send to the
87      * destinations in this <code>EventDestinationDefinition</code>.</p>
88      */
GetMatchingEventTypes()89     inline const Aws::Vector<EventType>& GetMatchingEventTypes() const{ return m_matchingEventTypes; }
90 
91     /**
92      * <p>An array that specifies which events Amazon Pinpoint should send to the
93      * destinations in this <code>EventDestinationDefinition</code>.</p>
94      */
MatchingEventTypesHasBeenSet()95     inline bool MatchingEventTypesHasBeenSet() const { return m_matchingEventTypesHasBeenSet; }
96 
97     /**
98      * <p>An array that specifies which events Amazon Pinpoint should send to the
99      * destinations in this <code>EventDestinationDefinition</code>.</p>
100      */
SetMatchingEventTypes(const Aws::Vector<EventType> & value)101     inline void SetMatchingEventTypes(const Aws::Vector<EventType>& value) { m_matchingEventTypesHasBeenSet = true; m_matchingEventTypes = value; }
102 
103     /**
104      * <p>An array that specifies which events Amazon Pinpoint should send to the
105      * destinations in this <code>EventDestinationDefinition</code>.</p>
106      */
SetMatchingEventTypes(Aws::Vector<EventType> && value)107     inline void SetMatchingEventTypes(Aws::Vector<EventType>&& value) { m_matchingEventTypesHasBeenSet = true; m_matchingEventTypes = std::move(value); }
108 
109     /**
110      * <p>An array that specifies which events Amazon Pinpoint should send to the
111      * destinations in this <code>EventDestinationDefinition</code>.</p>
112      */
WithMatchingEventTypes(const Aws::Vector<EventType> & value)113     inline EventDestinationDefinition& WithMatchingEventTypes(const Aws::Vector<EventType>& value) { SetMatchingEventTypes(value); return *this;}
114 
115     /**
116      * <p>An array that specifies which events Amazon Pinpoint should send to the
117      * destinations in this <code>EventDestinationDefinition</code>.</p>
118      */
WithMatchingEventTypes(Aws::Vector<EventType> && value)119     inline EventDestinationDefinition& WithMatchingEventTypes(Aws::Vector<EventType>&& value) { SetMatchingEventTypes(std::move(value)); return *this;}
120 
121     /**
122      * <p>An array that specifies which events Amazon Pinpoint should send to the
123      * destinations in this <code>EventDestinationDefinition</code>.</p>
124      */
AddMatchingEventTypes(const EventType & value)125     inline EventDestinationDefinition& AddMatchingEventTypes(const EventType& value) { m_matchingEventTypesHasBeenSet = true; m_matchingEventTypes.push_back(value); return *this; }
126 
127     /**
128      * <p>An array that specifies which events Amazon Pinpoint should send to the
129      * destinations in this <code>EventDestinationDefinition</code>.</p>
130      */
AddMatchingEventTypes(EventType && value)131     inline EventDestinationDefinition& AddMatchingEventTypes(EventType&& value) { m_matchingEventTypesHasBeenSet = true; m_matchingEventTypes.push_back(std::move(value)); return *this; }
132 
133 
134     /**
135      * <p>An object that defines an Amazon Kinesis Data Firehose destination for email
136      * events. You can use Amazon Kinesis Data Firehose to stream data to other
137      * services, such as Amazon S3 and Amazon Redshift.</p>
138      */
GetKinesisFirehoseDestination()139     inline const KinesisFirehoseDestination& GetKinesisFirehoseDestination() const{ return m_kinesisFirehoseDestination; }
140 
141     /**
142      * <p>An object that defines an Amazon Kinesis Data Firehose destination for email
143      * events. You can use Amazon Kinesis Data Firehose to stream data to other
144      * services, such as Amazon S3 and Amazon Redshift.</p>
145      */
KinesisFirehoseDestinationHasBeenSet()146     inline bool KinesisFirehoseDestinationHasBeenSet() const { return m_kinesisFirehoseDestinationHasBeenSet; }
147 
148     /**
149      * <p>An object that defines an Amazon Kinesis Data Firehose destination for email
150      * events. You can use Amazon Kinesis Data Firehose to stream data to other
151      * services, such as Amazon S3 and Amazon Redshift.</p>
152      */
SetKinesisFirehoseDestination(const KinesisFirehoseDestination & value)153     inline void SetKinesisFirehoseDestination(const KinesisFirehoseDestination& value) { m_kinesisFirehoseDestinationHasBeenSet = true; m_kinesisFirehoseDestination = value; }
154 
155     /**
156      * <p>An object that defines an Amazon Kinesis Data Firehose destination for email
157      * events. You can use Amazon Kinesis Data Firehose to stream data to other
158      * services, such as Amazon S3 and Amazon Redshift.</p>
159      */
SetKinesisFirehoseDestination(KinesisFirehoseDestination && value)160     inline void SetKinesisFirehoseDestination(KinesisFirehoseDestination&& value) { m_kinesisFirehoseDestinationHasBeenSet = true; m_kinesisFirehoseDestination = std::move(value); }
161 
162     /**
163      * <p>An object that defines an Amazon Kinesis Data Firehose destination for email
164      * events. You can use Amazon Kinesis Data Firehose to stream data to other
165      * services, such as Amazon S3 and Amazon Redshift.</p>
166      */
WithKinesisFirehoseDestination(const KinesisFirehoseDestination & value)167     inline EventDestinationDefinition& WithKinesisFirehoseDestination(const KinesisFirehoseDestination& value) { SetKinesisFirehoseDestination(value); return *this;}
168 
169     /**
170      * <p>An object that defines an Amazon Kinesis Data Firehose destination for email
171      * events. You can use Amazon Kinesis Data Firehose to stream data to other
172      * services, such as Amazon S3 and Amazon Redshift.</p>
173      */
WithKinesisFirehoseDestination(KinesisFirehoseDestination && value)174     inline EventDestinationDefinition& WithKinesisFirehoseDestination(KinesisFirehoseDestination&& value) { SetKinesisFirehoseDestination(std::move(value)); return *this;}
175 
176 
177     /**
178      * <p>An object that defines an Amazon CloudWatch destination for email events. You
179      * can use Amazon CloudWatch to monitor and gain insights on your email sending
180      * metrics.</p>
181      */
GetCloudWatchDestination()182     inline const CloudWatchDestination& GetCloudWatchDestination() const{ return m_cloudWatchDestination; }
183 
184     /**
185      * <p>An object that defines an Amazon CloudWatch destination for email events. You
186      * can use Amazon CloudWatch to monitor and gain insights on your email sending
187      * metrics.</p>
188      */
CloudWatchDestinationHasBeenSet()189     inline bool CloudWatchDestinationHasBeenSet() const { return m_cloudWatchDestinationHasBeenSet; }
190 
191     /**
192      * <p>An object that defines an Amazon CloudWatch destination for email events. You
193      * can use Amazon CloudWatch to monitor and gain insights on your email sending
194      * metrics.</p>
195      */
SetCloudWatchDestination(const CloudWatchDestination & value)196     inline void SetCloudWatchDestination(const CloudWatchDestination& value) { m_cloudWatchDestinationHasBeenSet = true; m_cloudWatchDestination = value; }
197 
198     /**
199      * <p>An object that defines an Amazon CloudWatch destination for email events. You
200      * can use Amazon CloudWatch to monitor and gain insights on your email sending
201      * metrics.</p>
202      */
SetCloudWatchDestination(CloudWatchDestination && value)203     inline void SetCloudWatchDestination(CloudWatchDestination&& value) { m_cloudWatchDestinationHasBeenSet = true; m_cloudWatchDestination = std::move(value); }
204 
205     /**
206      * <p>An object that defines an Amazon CloudWatch destination for email events. You
207      * can use Amazon CloudWatch to monitor and gain insights on your email sending
208      * metrics.</p>
209      */
WithCloudWatchDestination(const CloudWatchDestination & value)210     inline EventDestinationDefinition& WithCloudWatchDestination(const CloudWatchDestination& value) { SetCloudWatchDestination(value); return *this;}
211 
212     /**
213      * <p>An object that defines an Amazon CloudWatch destination for email events. You
214      * can use Amazon CloudWatch to monitor and gain insights on your email sending
215      * metrics.</p>
216      */
WithCloudWatchDestination(CloudWatchDestination && value)217     inline EventDestinationDefinition& WithCloudWatchDestination(CloudWatchDestination&& value) { SetCloudWatchDestination(std::move(value)); return *this;}
218 
219 
220     /**
221      * <p>An object that defines an Amazon SNS destination for email events. You can
222      * use Amazon SNS to send notification when certain email events occur.</p>
223      */
GetSnsDestination()224     inline const SnsDestination& GetSnsDestination() const{ return m_snsDestination; }
225 
226     /**
227      * <p>An object that defines an Amazon SNS destination for email events. You can
228      * use Amazon SNS to send notification when certain email events occur.</p>
229      */
SnsDestinationHasBeenSet()230     inline bool SnsDestinationHasBeenSet() const { return m_snsDestinationHasBeenSet; }
231 
232     /**
233      * <p>An object that defines an Amazon SNS destination for email events. You can
234      * use Amazon SNS to send notification when certain email events occur.</p>
235      */
SetSnsDestination(const SnsDestination & value)236     inline void SetSnsDestination(const SnsDestination& value) { m_snsDestinationHasBeenSet = true; m_snsDestination = value; }
237 
238     /**
239      * <p>An object that defines an Amazon SNS destination for email events. You can
240      * use Amazon SNS to send notification when certain email events occur.</p>
241      */
SetSnsDestination(SnsDestination && value)242     inline void SetSnsDestination(SnsDestination&& value) { m_snsDestinationHasBeenSet = true; m_snsDestination = std::move(value); }
243 
244     /**
245      * <p>An object that defines an Amazon SNS destination for email events. You can
246      * use Amazon SNS to send notification when certain email events occur.</p>
247      */
WithSnsDestination(const SnsDestination & value)248     inline EventDestinationDefinition& WithSnsDestination(const SnsDestination& value) { SetSnsDestination(value); return *this;}
249 
250     /**
251      * <p>An object that defines an Amazon SNS destination for email events. You can
252      * use Amazon SNS to send notification when certain email events occur.</p>
253      */
WithSnsDestination(SnsDestination && value)254     inline EventDestinationDefinition& WithSnsDestination(SnsDestination&& value) { SetSnsDestination(std::move(value)); return *this;}
255 
256 
257     /**
258      * <p>An object that defines a Amazon Pinpoint destination for email events. You
259      * can use Amazon Pinpoint events to create attributes in Amazon Pinpoint projects.
260      * You can use these attributes to create segments for your campaigns.</p>
261      */
GetPinpointDestination()262     inline const PinpointDestination& GetPinpointDestination() const{ return m_pinpointDestination; }
263 
264     /**
265      * <p>An object that defines a Amazon Pinpoint destination for email events. You
266      * can use Amazon Pinpoint events to create attributes in Amazon Pinpoint projects.
267      * You can use these attributes to create segments for your campaigns.</p>
268      */
PinpointDestinationHasBeenSet()269     inline bool PinpointDestinationHasBeenSet() const { return m_pinpointDestinationHasBeenSet; }
270 
271     /**
272      * <p>An object that defines a Amazon Pinpoint destination for email events. You
273      * can use Amazon Pinpoint events to create attributes in Amazon Pinpoint projects.
274      * You can use these attributes to create segments for your campaigns.</p>
275      */
SetPinpointDestination(const PinpointDestination & value)276     inline void SetPinpointDestination(const PinpointDestination& value) { m_pinpointDestinationHasBeenSet = true; m_pinpointDestination = value; }
277 
278     /**
279      * <p>An object that defines a Amazon Pinpoint destination for email events. You
280      * can use Amazon Pinpoint events to create attributes in Amazon Pinpoint projects.
281      * You can use these attributes to create segments for your campaigns.</p>
282      */
SetPinpointDestination(PinpointDestination && value)283     inline void SetPinpointDestination(PinpointDestination&& value) { m_pinpointDestinationHasBeenSet = true; m_pinpointDestination = std::move(value); }
284 
285     /**
286      * <p>An object that defines a Amazon Pinpoint destination for email events. You
287      * can use Amazon Pinpoint events to create attributes in Amazon Pinpoint projects.
288      * You can use these attributes to create segments for your campaigns.</p>
289      */
WithPinpointDestination(const PinpointDestination & value)290     inline EventDestinationDefinition& WithPinpointDestination(const PinpointDestination& value) { SetPinpointDestination(value); return *this;}
291 
292     /**
293      * <p>An object that defines a Amazon Pinpoint destination for email events. You
294      * can use Amazon Pinpoint events to create attributes in Amazon Pinpoint projects.
295      * You can use these attributes to create segments for your campaigns.</p>
296      */
WithPinpointDestination(PinpointDestination && value)297     inline EventDestinationDefinition& WithPinpointDestination(PinpointDestination&& value) { SetPinpointDestination(std::move(value)); return *this;}
298 
299   private:
300 
301     bool m_enabled;
302     bool m_enabledHasBeenSet;
303 
304     Aws::Vector<EventType> m_matchingEventTypes;
305     bool m_matchingEventTypesHasBeenSet;
306 
307     KinesisFirehoseDestination m_kinesisFirehoseDestination;
308     bool m_kinesisFirehoseDestinationHasBeenSet;
309 
310     CloudWatchDestination m_cloudWatchDestination;
311     bool m_cloudWatchDestinationHasBeenSet;
312 
313     SnsDestination m_snsDestination;
314     bool m_snsDestinationHasBeenSet;
315 
316     PinpointDestination m_pinpointDestination;
317     bool m_pinpointDestinationHasBeenSet;
318   };
319 
320 } // namespace Model
321 } // namespace PinpointEmail
322 } // namespace Aws
323