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/firehose/Firehose_EXPORTS.h>
8 #include <aws/firehose/FirehoseRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/firehose/model/DeliveryStreamType.h>
11 #include <aws/firehose/model/KinesisStreamSourceConfiguration.h>
12 #include <aws/firehose/model/DeliveryStreamEncryptionConfigurationInput.h>
13 #include <aws/firehose/model/ExtendedS3DestinationConfiguration.h>
14 #include <aws/firehose/model/RedshiftDestinationConfiguration.h>
15 #include <aws/firehose/model/ElasticsearchDestinationConfiguration.h>
16 #include <aws/firehose/model/AmazonopensearchserviceDestinationConfiguration.h>
17 #include <aws/firehose/model/SplunkDestinationConfiguration.h>
18 #include <aws/firehose/model/HttpEndpointDestinationConfiguration.h>
19 #include <aws/core/utils/memory/stl/AWSVector.h>
20 #include <aws/firehose/model/Tag.h>
21 #include <utility>
22 
23 namespace Aws
24 {
25 namespace Firehose
26 {
27 namespace Model
28 {
29 
30   /**
31    */
32   class AWS_FIREHOSE_API CreateDeliveryStreamRequest : public FirehoseRequest
33   {
34   public:
35     CreateDeliveryStreamRequest();
36 
37     // Service request name is the Operation name which will send this request out,
38     // each operation should has unique request name, so that we can get operation's name from this request.
39     // Note: this is not true for response, multiple operations may have the same response name,
40     // so we can not get operation's name from response.
GetServiceRequestName()41     inline virtual const char* GetServiceRequestName() const override { return "CreateDeliveryStream"; }
42 
43     Aws::String SerializePayload() const override;
44 
45     Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override;
46 
47 
48     /**
49      * <p>The name of the delivery stream. This name must be unique per AWS account in
50      * the same AWS Region. If the delivery streams are in different accounts or
51      * different Regions, you can have multiple delivery streams with the same
52      * name.</p>
53      */
GetDeliveryStreamName()54     inline const Aws::String& GetDeliveryStreamName() const{ return m_deliveryStreamName; }
55 
56     /**
57      * <p>The name of the delivery stream. This name must be unique per AWS account in
58      * the same AWS Region. If the delivery streams are in different accounts or
59      * different Regions, you can have multiple delivery streams with the same
60      * name.</p>
61      */
DeliveryStreamNameHasBeenSet()62     inline bool DeliveryStreamNameHasBeenSet() const { return m_deliveryStreamNameHasBeenSet; }
63 
64     /**
65      * <p>The name of the delivery stream. This name must be unique per AWS account in
66      * the same AWS Region. If the delivery streams are in different accounts or
67      * different Regions, you can have multiple delivery streams with the same
68      * name.</p>
69      */
SetDeliveryStreamName(const Aws::String & value)70     inline void SetDeliveryStreamName(const Aws::String& value) { m_deliveryStreamNameHasBeenSet = true; m_deliveryStreamName = value; }
71 
72     /**
73      * <p>The name of the delivery stream. This name must be unique per AWS account in
74      * the same AWS Region. If the delivery streams are in different accounts or
75      * different Regions, you can have multiple delivery streams with the same
76      * name.</p>
77      */
SetDeliveryStreamName(Aws::String && value)78     inline void SetDeliveryStreamName(Aws::String&& value) { m_deliveryStreamNameHasBeenSet = true; m_deliveryStreamName = std::move(value); }
79 
80     /**
81      * <p>The name of the delivery stream. This name must be unique per AWS account in
82      * the same AWS Region. If the delivery streams are in different accounts or
83      * different Regions, you can have multiple delivery streams with the same
84      * name.</p>
85      */
SetDeliveryStreamName(const char * value)86     inline void SetDeliveryStreamName(const char* value) { m_deliveryStreamNameHasBeenSet = true; m_deliveryStreamName.assign(value); }
87 
88     /**
89      * <p>The name of the delivery stream. This name must be unique per AWS account in
90      * the same AWS Region. If the delivery streams are in different accounts or
91      * different Regions, you can have multiple delivery streams with the same
92      * name.</p>
93      */
WithDeliveryStreamName(const Aws::String & value)94     inline CreateDeliveryStreamRequest& WithDeliveryStreamName(const Aws::String& value) { SetDeliveryStreamName(value); return *this;}
95 
96     /**
97      * <p>The name of the delivery stream. This name must be unique per AWS account in
98      * the same AWS Region. If the delivery streams are in different accounts or
99      * different Regions, you can have multiple delivery streams with the same
100      * name.</p>
101      */
WithDeliveryStreamName(Aws::String && value)102     inline CreateDeliveryStreamRequest& WithDeliveryStreamName(Aws::String&& value) { SetDeliveryStreamName(std::move(value)); return *this;}
103 
104     /**
105      * <p>The name of the delivery stream. This name must be unique per AWS account in
106      * the same AWS Region. If the delivery streams are in different accounts or
107      * different Regions, you can have multiple delivery streams with the same
108      * name.</p>
109      */
WithDeliveryStreamName(const char * value)110     inline CreateDeliveryStreamRequest& WithDeliveryStreamName(const char* value) { SetDeliveryStreamName(value); return *this;}
111 
112 
113     /**
114      * <p>The delivery stream type. This parameter can be one of the following
115      * values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access
116      * the delivery stream directly.</p> </li> <li> <p>
117      * <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis data
118      * stream as a source.</p> </li> </ul>
119      */
GetDeliveryStreamType()120     inline const DeliveryStreamType& GetDeliveryStreamType() const{ return m_deliveryStreamType; }
121 
122     /**
123      * <p>The delivery stream type. This parameter can be one of the following
124      * values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access
125      * the delivery stream directly.</p> </li> <li> <p>
126      * <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis data
127      * stream as a source.</p> </li> </ul>
128      */
DeliveryStreamTypeHasBeenSet()129     inline bool DeliveryStreamTypeHasBeenSet() const { return m_deliveryStreamTypeHasBeenSet; }
130 
131     /**
132      * <p>The delivery stream type. This parameter can be one of the following
133      * values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access
134      * the delivery stream directly.</p> </li> <li> <p>
135      * <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis data
136      * stream as a source.</p> </li> </ul>
137      */
SetDeliveryStreamType(const DeliveryStreamType & value)138     inline void SetDeliveryStreamType(const DeliveryStreamType& value) { m_deliveryStreamTypeHasBeenSet = true; m_deliveryStreamType = value; }
139 
140     /**
141      * <p>The delivery stream type. This parameter can be one of the following
142      * values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access
143      * the delivery stream directly.</p> </li> <li> <p>
144      * <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis data
145      * stream as a source.</p> </li> </ul>
146      */
SetDeliveryStreamType(DeliveryStreamType && value)147     inline void SetDeliveryStreamType(DeliveryStreamType&& value) { m_deliveryStreamTypeHasBeenSet = true; m_deliveryStreamType = std::move(value); }
148 
149     /**
150      * <p>The delivery stream type. This parameter can be one of the following
151      * values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access
152      * the delivery stream directly.</p> </li> <li> <p>
153      * <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis data
154      * stream as a source.</p> </li> </ul>
155      */
WithDeliveryStreamType(const DeliveryStreamType & value)156     inline CreateDeliveryStreamRequest& WithDeliveryStreamType(const DeliveryStreamType& value) { SetDeliveryStreamType(value); return *this;}
157 
158     /**
159      * <p>The delivery stream type. This parameter can be one of the following
160      * values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access
161      * the delivery stream directly.</p> </li> <li> <p>
162      * <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis data
163      * stream as a source.</p> </li> </ul>
164      */
WithDeliveryStreamType(DeliveryStreamType && value)165     inline CreateDeliveryStreamRequest& WithDeliveryStreamType(DeliveryStreamType&& value) { SetDeliveryStreamType(std::move(value)); return *this;}
166 
167 
168     /**
169      * <p>When a Kinesis data stream is used as the source for the delivery stream, a
170      * <a>KinesisStreamSourceConfiguration</a> containing the Kinesis data stream
171      * Amazon Resource Name (ARN) and the role ARN for the source stream.</p>
172      */
GetKinesisStreamSourceConfiguration()173     inline const KinesisStreamSourceConfiguration& GetKinesisStreamSourceConfiguration() const{ return m_kinesisStreamSourceConfiguration; }
174 
175     /**
176      * <p>When a Kinesis data stream is used as the source for the delivery stream, a
177      * <a>KinesisStreamSourceConfiguration</a> containing the Kinesis data stream
178      * Amazon Resource Name (ARN) and the role ARN for the source stream.</p>
179      */
KinesisStreamSourceConfigurationHasBeenSet()180     inline bool KinesisStreamSourceConfigurationHasBeenSet() const { return m_kinesisStreamSourceConfigurationHasBeenSet; }
181 
182     /**
183      * <p>When a Kinesis data stream is used as the source for the delivery stream, a
184      * <a>KinesisStreamSourceConfiguration</a> containing the Kinesis data stream
185      * Amazon Resource Name (ARN) and the role ARN for the source stream.</p>
186      */
SetKinesisStreamSourceConfiguration(const KinesisStreamSourceConfiguration & value)187     inline void SetKinesisStreamSourceConfiguration(const KinesisStreamSourceConfiguration& value) { m_kinesisStreamSourceConfigurationHasBeenSet = true; m_kinesisStreamSourceConfiguration = value; }
188 
189     /**
190      * <p>When a Kinesis data stream is used as the source for the delivery stream, a
191      * <a>KinesisStreamSourceConfiguration</a> containing the Kinesis data stream
192      * Amazon Resource Name (ARN) and the role ARN for the source stream.</p>
193      */
SetKinesisStreamSourceConfiguration(KinesisStreamSourceConfiguration && value)194     inline void SetKinesisStreamSourceConfiguration(KinesisStreamSourceConfiguration&& value) { m_kinesisStreamSourceConfigurationHasBeenSet = true; m_kinesisStreamSourceConfiguration = std::move(value); }
195 
196     /**
197      * <p>When a Kinesis data stream is used as the source for the delivery stream, a
198      * <a>KinesisStreamSourceConfiguration</a> containing the Kinesis data stream
199      * Amazon Resource Name (ARN) and the role ARN for the source stream.</p>
200      */
WithKinesisStreamSourceConfiguration(const KinesisStreamSourceConfiguration & value)201     inline CreateDeliveryStreamRequest& WithKinesisStreamSourceConfiguration(const KinesisStreamSourceConfiguration& value) { SetKinesisStreamSourceConfiguration(value); return *this;}
202 
203     /**
204      * <p>When a Kinesis data stream is used as the source for the delivery stream, a
205      * <a>KinesisStreamSourceConfiguration</a> containing the Kinesis data stream
206      * Amazon Resource Name (ARN) and the role ARN for the source stream.</p>
207      */
WithKinesisStreamSourceConfiguration(KinesisStreamSourceConfiguration && value)208     inline CreateDeliveryStreamRequest& WithKinesisStreamSourceConfiguration(KinesisStreamSourceConfiguration&& value) { SetKinesisStreamSourceConfiguration(std::move(value)); return *this;}
209 
210 
211     /**
212      * <p>Used to specify the type and Amazon Resource Name (ARN) of the KMS key needed
213      * for Server-Side Encryption (SSE).</p>
214      */
GetDeliveryStreamEncryptionConfigurationInput()215     inline const DeliveryStreamEncryptionConfigurationInput& GetDeliveryStreamEncryptionConfigurationInput() const{ return m_deliveryStreamEncryptionConfigurationInput; }
216 
217     /**
218      * <p>Used to specify the type and Amazon Resource Name (ARN) of the KMS key needed
219      * for Server-Side Encryption (SSE).</p>
220      */
DeliveryStreamEncryptionConfigurationInputHasBeenSet()221     inline bool DeliveryStreamEncryptionConfigurationInputHasBeenSet() const { return m_deliveryStreamEncryptionConfigurationInputHasBeenSet; }
222 
223     /**
224      * <p>Used to specify the type and Amazon Resource Name (ARN) of the KMS key needed
225      * for Server-Side Encryption (SSE).</p>
226      */
SetDeliveryStreamEncryptionConfigurationInput(const DeliveryStreamEncryptionConfigurationInput & value)227     inline void SetDeliveryStreamEncryptionConfigurationInput(const DeliveryStreamEncryptionConfigurationInput& value) { m_deliveryStreamEncryptionConfigurationInputHasBeenSet = true; m_deliveryStreamEncryptionConfigurationInput = value; }
228 
229     /**
230      * <p>Used to specify the type and Amazon Resource Name (ARN) of the KMS key needed
231      * for Server-Side Encryption (SSE).</p>
232      */
SetDeliveryStreamEncryptionConfigurationInput(DeliveryStreamEncryptionConfigurationInput && value)233     inline void SetDeliveryStreamEncryptionConfigurationInput(DeliveryStreamEncryptionConfigurationInput&& value) { m_deliveryStreamEncryptionConfigurationInputHasBeenSet = true; m_deliveryStreamEncryptionConfigurationInput = std::move(value); }
234 
235     /**
236      * <p>Used to specify the type and Amazon Resource Name (ARN) of the KMS key needed
237      * for Server-Side Encryption (SSE).</p>
238      */
WithDeliveryStreamEncryptionConfigurationInput(const DeliveryStreamEncryptionConfigurationInput & value)239     inline CreateDeliveryStreamRequest& WithDeliveryStreamEncryptionConfigurationInput(const DeliveryStreamEncryptionConfigurationInput& value) { SetDeliveryStreamEncryptionConfigurationInput(value); return *this;}
240 
241     /**
242      * <p>Used to specify the type and Amazon Resource Name (ARN) of the KMS key needed
243      * for Server-Side Encryption (SSE).</p>
244      */
WithDeliveryStreamEncryptionConfigurationInput(DeliveryStreamEncryptionConfigurationInput && value)245     inline CreateDeliveryStreamRequest& WithDeliveryStreamEncryptionConfigurationInput(DeliveryStreamEncryptionConfigurationInput&& value) { SetDeliveryStreamEncryptionConfigurationInput(std::move(value)); return *this;}
246 
247 
248     /**
249      * <p>The destination in Amazon S3. You can specify only one destination.</p>
250      */
GetExtendedS3DestinationConfiguration()251     inline const ExtendedS3DestinationConfiguration& GetExtendedS3DestinationConfiguration() const{ return m_extendedS3DestinationConfiguration; }
252 
253     /**
254      * <p>The destination in Amazon S3. You can specify only one destination.</p>
255      */
ExtendedS3DestinationConfigurationHasBeenSet()256     inline bool ExtendedS3DestinationConfigurationHasBeenSet() const { return m_extendedS3DestinationConfigurationHasBeenSet; }
257 
258     /**
259      * <p>The destination in Amazon S3. You can specify only one destination.</p>
260      */
SetExtendedS3DestinationConfiguration(const ExtendedS3DestinationConfiguration & value)261     inline void SetExtendedS3DestinationConfiguration(const ExtendedS3DestinationConfiguration& value) { m_extendedS3DestinationConfigurationHasBeenSet = true; m_extendedS3DestinationConfiguration = value; }
262 
263     /**
264      * <p>The destination in Amazon S3. You can specify only one destination.</p>
265      */
SetExtendedS3DestinationConfiguration(ExtendedS3DestinationConfiguration && value)266     inline void SetExtendedS3DestinationConfiguration(ExtendedS3DestinationConfiguration&& value) { m_extendedS3DestinationConfigurationHasBeenSet = true; m_extendedS3DestinationConfiguration = std::move(value); }
267 
268     /**
269      * <p>The destination in Amazon S3. You can specify only one destination.</p>
270      */
WithExtendedS3DestinationConfiguration(const ExtendedS3DestinationConfiguration & value)271     inline CreateDeliveryStreamRequest& WithExtendedS3DestinationConfiguration(const ExtendedS3DestinationConfiguration& value) { SetExtendedS3DestinationConfiguration(value); return *this;}
272 
273     /**
274      * <p>The destination in Amazon S3. You can specify only one destination.</p>
275      */
WithExtendedS3DestinationConfiguration(ExtendedS3DestinationConfiguration && value)276     inline CreateDeliveryStreamRequest& WithExtendedS3DestinationConfiguration(ExtendedS3DestinationConfiguration&& value) { SetExtendedS3DestinationConfiguration(std::move(value)); return *this;}
277 
278 
279     /**
280      * <p>The destination in Amazon Redshift. You can specify only one destination.</p>
281      */
GetRedshiftDestinationConfiguration()282     inline const RedshiftDestinationConfiguration& GetRedshiftDestinationConfiguration() const{ return m_redshiftDestinationConfiguration; }
283 
284     /**
285      * <p>The destination in Amazon Redshift. You can specify only one destination.</p>
286      */
RedshiftDestinationConfigurationHasBeenSet()287     inline bool RedshiftDestinationConfigurationHasBeenSet() const { return m_redshiftDestinationConfigurationHasBeenSet; }
288 
289     /**
290      * <p>The destination in Amazon Redshift. You can specify only one destination.</p>
291      */
SetRedshiftDestinationConfiguration(const RedshiftDestinationConfiguration & value)292     inline void SetRedshiftDestinationConfiguration(const RedshiftDestinationConfiguration& value) { m_redshiftDestinationConfigurationHasBeenSet = true; m_redshiftDestinationConfiguration = value; }
293 
294     /**
295      * <p>The destination in Amazon Redshift. You can specify only one destination.</p>
296      */
SetRedshiftDestinationConfiguration(RedshiftDestinationConfiguration && value)297     inline void SetRedshiftDestinationConfiguration(RedshiftDestinationConfiguration&& value) { m_redshiftDestinationConfigurationHasBeenSet = true; m_redshiftDestinationConfiguration = std::move(value); }
298 
299     /**
300      * <p>The destination in Amazon Redshift. You can specify only one destination.</p>
301      */
WithRedshiftDestinationConfiguration(const RedshiftDestinationConfiguration & value)302     inline CreateDeliveryStreamRequest& WithRedshiftDestinationConfiguration(const RedshiftDestinationConfiguration& value) { SetRedshiftDestinationConfiguration(value); return *this;}
303 
304     /**
305      * <p>The destination in Amazon Redshift. You can specify only one destination.</p>
306      */
WithRedshiftDestinationConfiguration(RedshiftDestinationConfiguration && value)307     inline CreateDeliveryStreamRequest& WithRedshiftDestinationConfiguration(RedshiftDestinationConfiguration&& value) { SetRedshiftDestinationConfiguration(std::move(value)); return *this;}
308 
309 
310     /**
311      * <p>The destination in Amazon ES. You can specify only one destination.</p>
312      */
GetElasticsearchDestinationConfiguration()313     inline const ElasticsearchDestinationConfiguration& GetElasticsearchDestinationConfiguration() const{ return m_elasticsearchDestinationConfiguration; }
314 
315     /**
316      * <p>The destination in Amazon ES. You can specify only one destination.</p>
317      */
ElasticsearchDestinationConfigurationHasBeenSet()318     inline bool ElasticsearchDestinationConfigurationHasBeenSet() const { return m_elasticsearchDestinationConfigurationHasBeenSet; }
319 
320     /**
321      * <p>The destination in Amazon ES. You can specify only one destination.</p>
322      */
SetElasticsearchDestinationConfiguration(const ElasticsearchDestinationConfiguration & value)323     inline void SetElasticsearchDestinationConfiguration(const ElasticsearchDestinationConfiguration& value) { m_elasticsearchDestinationConfigurationHasBeenSet = true; m_elasticsearchDestinationConfiguration = value; }
324 
325     /**
326      * <p>The destination in Amazon ES. You can specify only one destination.</p>
327      */
SetElasticsearchDestinationConfiguration(ElasticsearchDestinationConfiguration && value)328     inline void SetElasticsearchDestinationConfiguration(ElasticsearchDestinationConfiguration&& value) { m_elasticsearchDestinationConfigurationHasBeenSet = true; m_elasticsearchDestinationConfiguration = std::move(value); }
329 
330     /**
331      * <p>The destination in Amazon ES. You can specify only one destination.</p>
332      */
WithElasticsearchDestinationConfiguration(const ElasticsearchDestinationConfiguration & value)333     inline CreateDeliveryStreamRequest& WithElasticsearchDestinationConfiguration(const ElasticsearchDestinationConfiguration& value) { SetElasticsearchDestinationConfiguration(value); return *this;}
334 
335     /**
336      * <p>The destination in Amazon ES. You can specify only one destination.</p>
337      */
WithElasticsearchDestinationConfiguration(ElasticsearchDestinationConfiguration && value)338     inline CreateDeliveryStreamRequest& WithElasticsearchDestinationConfiguration(ElasticsearchDestinationConfiguration&& value) { SetElasticsearchDestinationConfiguration(std::move(value)); return *this;}
339 
340 
341 
GetAmazonopensearchserviceDestinationConfiguration()342     inline const AmazonopensearchserviceDestinationConfiguration& GetAmazonopensearchserviceDestinationConfiguration() const{ return m_amazonopensearchserviceDestinationConfiguration; }
343 
344 
AmazonopensearchserviceDestinationConfigurationHasBeenSet()345     inline bool AmazonopensearchserviceDestinationConfigurationHasBeenSet() const { return m_amazonopensearchserviceDestinationConfigurationHasBeenSet; }
346 
347 
SetAmazonopensearchserviceDestinationConfiguration(const AmazonopensearchserviceDestinationConfiguration & value)348     inline void SetAmazonopensearchserviceDestinationConfiguration(const AmazonopensearchserviceDestinationConfiguration& value) { m_amazonopensearchserviceDestinationConfigurationHasBeenSet = true; m_amazonopensearchserviceDestinationConfiguration = value; }
349 
350 
SetAmazonopensearchserviceDestinationConfiguration(AmazonopensearchserviceDestinationConfiguration && value)351     inline void SetAmazonopensearchserviceDestinationConfiguration(AmazonopensearchserviceDestinationConfiguration&& value) { m_amazonopensearchserviceDestinationConfigurationHasBeenSet = true; m_amazonopensearchserviceDestinationConfiguration = std::move(value); }
352 
353 
WithAmazonopensearchserviceDestinationConfiguration(const AmazonopensearchserviceDestinationConfiguration & value)354     inline CreateDeliveryStreamRequest& WithAmazonopensearchserviceDestinationConfiguration(const AmazonopensearchserviceDestinationConfiguration& value) { SetAmazonopensearchserviceDestinationConfiguration(value); return *this;}
355 
356 
WithAmazonopensearchserviceDestinationConfiguration(AmazonopensearchserviceDestinationConfiguration && value)357     inline CreateDeliveryStreamRequest& WithAmazonopensearchserviceDestinationConfiguration(AmazonopensearchserviceDestinationConfiguration&& value) { SetAmazonopensearchserviceDestinationConfiguration(std::move(value)); return *this;}
358 
359 
360     /**
361      * <p>The destination in Splunk. You can specify only one destination.</p>
362      */
GetSplunkDestinationConfiguration()363     inline const SplunkDestinationConfiguration& GetSplunkDestinationConfiguration() const{ return m_splunkDestinationConfiguration; }
364 
365     /**
366      * <p>The destination in Splunk. You can specify only one destination.</p>
367      */
SplunkDestinationConfigurationHasBeenSet()368     inline bool SplunkDestinationConfigurationHasBeenSet() const { return m_splunkDestinationConfigurationHasBeenSet; }
369 
370     /**
371      * <p>The destination in Splunk. You can specify only one destination.</p>
372      */
SetSplunkDestinationConfiguration(const SplunkDestinationConfiguration & value)373     inline void SetSplunkDestinationConfiguration(const SplunkDestinationConfiguration& value) { m_splunkDestinationConfigurationHasBeenSet = true; m_splunkDestinationConfiguration = value; }
374 
375     /**
376      * <p>The destination in Splunk. You can specify only one destination.</p>
377      */
SetSplunkDestinationConfiguration(SplunkDestinationConfiguration && value)378     inline void SetSplunkDestinationConfiguration(SplunkDestinationConfiguration&& value) { m_splunkDestinationConfigurationHasBeenSet = true; m_splunkDestinationConfiguration = std::move(value); }
379 
380     /**
381      * <p>The destination in Splunk. You can specify only one destination.</p>
382      */
WithSplunkDestinationConfiguration(const SplunkDestinationConfiguration & value)383     inline CreateDeliveryStreamRequest& WithSplunkDestinationConfiguration(const SplunkDestinationConfiguration& value) { SetSplunkDestinationConfiguration(value); return *this;}
384 
385     /**
386      * <p>The destination in Splunk. You can specify only one destination.</p>
387      */
WithSplunkDestinationConfiguration(SplunkDestinationConfiguration && value)388     inline CreateDeliveryStreamRequest& WithSplunkDestinationConfiguration(SplunkDestinationConfiguration&& value) { SetSplunkDestinationConfiguration(std::move(value)); return *this;}
389 
390 
391     /**
392      * <p>Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint
393      * destination. You can specify only one destination.</p>
394      */
GetHttpEndpointDestinationConfiguration()395     inline const HttpEndpointDestinationConfiguration& GetHttpEndpointDestinationConfiguration() const{ return m_httpEndpointDestinationConfiguration; }
396 
397     /**
398      * <p>Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint
399      * destination. You can specify only one destination.</p>
400      */
HttpEndpointDestinationConfigurationHasBeenSet()401     inline bool HttpEndpointDestinationConfigurationHasBeenSet() const { return m_httpEndpointDestinationConfigurationHasBeenSet; }
402 
403     /**
404      * <p>Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint
405      * destination. You can specify only one destination.</p>
406      */
SetHttpEndpointDestinationConfiguration(const HttpEndpointDestinationConfiguration & value)407     inline void SetHttpEndpointDestinationConfiguration(const HttpEndpointDestinationConfiguration& value) { m_httpEndpointDestinationConfigurationHasBeenSet = true; m_httpEndpointDestinationConfiguration = value; }
408 
409     /**
410      * <p>Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint
411      * destination. You can specify only one destination.</p>
412      */
SetHttpEndpointDestinationConfiguration(HttpEndpointDestinationConfiguration && value)413     inline void SetHttpEndpointDestinationConfiguration(HttpEndpointDestinationConfiguration&& value) { m_httpEndpointDestinationConfigurationHasBeenSet = true; m_httpEndpointDestinationConfiguration = std::move(value); }
414 
415     /**
416      * <p>Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint
417      * destination. You can specify only one destination.</p>
418      */
WithHttpEndpointDestinationConfiguration(const HttpEndpointDestinationConfiguration & value)419     inline CreateDeliveryStreamRequest& WithHttpEndpointDestinationConfiguration(const HttpEndpointDestinationConfiguration& value) { SetHttpEndpointDestinationConfiguration(value); return *this;}
420 
421     /**
422      * <p>Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint
423      * destination. You can specify only one destination.</p>
424      */
WithHttpEndpointDestinationConfiguration(HttpEndpointDestinationConfiguration && value)425     inline CreateDeliveryStreamRequest& WithHttpEndpointDestinationConfiguration(HttpEndpointDestinationConfiguration&& value) { SetHttpEndpointDestinationConfiguration(std::move(value)); return *this;}
426 
427 
428     /**
429      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
430      * that you can define and assign to AWS resources. Tags are metadata. For example,
431      * you can add friendly names and descriptions or other types of information that
432      * can help you distinguish the delivery stream. For more information about tags,
433      * see <a
434      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
435      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
436      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
437      */
GetTags()438     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
439 
440     /**
441      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
442      * that you can define and assign to AWS resources. Tags are metadata. For example,
443      * you can add friendly names and descriptions or other types of information that
444      * can help you distinguish the delivery stream. For more information about tags,
445      * see <a
446      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
447      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
448      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
449      */
TagsHasBeenSet()450     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
451 
452     /**
453      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
454      * that you can define and assign to AWS resources. Tags are metadata. For example,
455      * you can add friendly names and descriptions or other types of information that
456      * can help you distinguish the delivery stream. For more information about tags,
457      * see <a
458      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
459      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
460      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
461      */
SetTags(const Aws::Vector<Tag> & value)462     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
463 
464     /**
465      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
466      * that you can define and assign to AWS resources. Tags are metadata. For example,
467      * you can add friendly names and descriptions or other types of information that
468      * can help you distinguish the delivery stream. For more information about tags,
469      * see <a
470      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
471      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
472      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
473      */
SetTags(Aws::Vector<Tag> && value)474     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
475 
476     /**
477      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
478      * that you can define and assign to AWS resources. Tags are metadata. For example,
479      * you can add friendly names and descriptions or other types of information that
480      * can help you distinguish the delivery stream. For more information about tags,
481      * see <a
482      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
483      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
484      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
485      */
WithTags(const Aws::Vector<Tag> & value)486     inline CreateDeliveryStreamRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
487 
488     /**
489      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
490      * that you can define and assign to AWS resources. Tags are metadata. For example,
491      * you can add friendly names and descriptions or other types of information that
492      * can help you distinguish the delivery stream. For more information about tags,
493      * see <a
494      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
495      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
496      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
497      */
WithTags(Aws::Vector<Tag> && value)498     inline CreateDeliveryStreamRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
499 
500     /**
501      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
502      * that you can define and assign to AWS resources. Tags are metadata. For example,
503      * you can add friendly names and descriptions or other types of information that
504      * can help you distinguish the delivery stream. For more information about tags,
505      * see <a
506      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
507      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
508      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
509      */
AddTags(const Tag & value)510     inline CreateDeliveryStreamRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
511 
512     /**
513      * <p>A set of tags to assign to the delivery stream. A tag is a key-value pair
514      * that you can define and assign to AWS resources. Tags are metadata. For example,
515      * you can add friendly names and descriptions or other types of information that
516      * can help you distinguish the delivery stream. For more information about tags,
517      * see <a
518      * href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html">Using
519      * Cost Allocation Tags</a> in the AWS Billing and Cost Management User Guide.</p>
520      * <p>You can specify up to 50 tags when creating a delivery stream.</p>
521      */
AddTags(Tag && value)522     inline CreateDeliveryStreamRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
523 
524   private:
525 
526     Aws::String m_deliveryStreamName;
527     bool m_deliveryStreamNameHasBeenSet;
528 
529     DeliveryStreamType m_deliveryStreamType;
530     bool m_deliveryStreamTypeHasBeenSet;
531 
532     KinesisStreamSourceConfiguration m_kinesisStreamSourceConfiguration;
533     bool m_kinesisStreamSourceConfigurationHasBeenSet;
534 
535     DeliveryStreamEncryptionConfigurationInput m_deliveryStreamEncryptionConfigurationInput;
536     bool m_deliveryStreamEncryptionConfigurationInputHasBeenSet;
537 
538     ExtendedS3DestinationConfiguration m_extendedS3DestinationConfiguration;
539     bool m_extendedS3DestinationConfigurationHasBeenSet;
540 
541     RedshiftDestinationConfiguration m_redshiftDestinationConfiguration;
542     bool m_redshiftDestinationConfigurationHasBeenSet;
543 
544     ElasticsearchDestinationConfiguration m_elasticsearchDestinationConfiguration;
545     bool m_elasticsearchDestinationConfigurationHasBeenSet;
546 
547     AmazonopensearchserviceDestinationConfiguration m_amazonopensearchserviceDestinationConfiguration;
548     bool m_amazonopensearchserviceDestinationConfigurationHasBeenSet;
549 
550     SplunkDestinationConfiguration m_splunkDestinationConfiguration;
551     bool m_splunkDestinationConfigurationHasBeenSet;
552 
553     HttpEndpointDestinationConfiguration m_httpEndpointDestinationConfiguration;
554     bool m_httpEndpointDestinationConfigurationHasBeenSet;
555 
556     Aws::Vector<Tag> m_tags;
557     bool m_tagsHasBeenSet;
558   };
559 
560 } // namespace Model
561 } // namespace Firehose
562 } // namespace Aws
563