aws_sdk_iotfleetwise/operation/create_campaign/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_campaign::_create_campaign_output::CreateCampaignOutputBuilder;
3
4pub use crate::operation::create_campaign::_create_campaign_input::CreateCampaignInputBuilder;
5
6impl crate::operation::create_campaign::builders::CreateCampaignInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::create_campaign::CreateCampaignOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_campaign::CreateCampaignError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_campaign();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateCampaign`.
24///
25/// <p>Creates an orchestration of data collection rules. The Amazon Web Services IoT FleetWise Edge Agent software running in vehicles uses campaigns to decide how to collect and transfer data to the cloud. You create campaigns in the cloud. After you or your team approve campaigns, Amazon Web Services IoT FleetWise automatically deploys them to vehicles.</p>
26/// <p>For more information, see <a href="https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/campaigns.html">Collect and transfer data with campaigns</a> in the <i>Amazon Web Services IoT FleetWise Developer Guide</i>.</p><important>
27/// <p>Access to certain Amazon Web Services IoT FleetWise features is currently gated. For more information, see <a href="https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/fleetwise-regions.html">Amazon Web Services Region and feature availability</a> in the <i>Amazon Web Services IoT FleetWise Developer Guide</i>.</p>
28/// </important>
29#[derive(::std::clone::Clone, ::std::fmt::Debug)]
30pub struct CreateCampaignFluentBuilder {
31    handle: ::std::sync::Arc<crate::client::Handle>,
32    inner: crate::operation::create_campaign::builders::CreateCampaignInputBuilder,
33    config_override: ::std::option::Option<crate::config::Builder>,
34}
35impl
36    crate::client::customize::internal::CustomizableSend<
37        crate::operation::create_campaign::CreateCampaignOutput,
38        crate::operation::create_campaign::CreateCampaignError,
39    > for CreateCampaignFluentBuilder
40{
41    fn send(
42        self,
43        config_override: crate::config::Builder,
44    ) -> crate::client::customize::internal::BoxFuture<
45        crate::client::customize::internal::SendResult<
46            crate::operation::create_campaign::CreateCampaignOutput,
47            crate::operation::create_campaign::CreateCampaignError,
48        >,
49    > {
50        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
51    }
52}
53impl CreateCampaignFluentBuilder {
54    /// Creates a new `CreateCampaignFluentBuilder`.
55    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
56        Self {
57            handle,
58            inner: ::std::default::Default::default(),
59            config_override: ::std::option::Option::None,
60        }
61    }
62    /// Access the CreateCampaign as a reference.
63    pub fn as_input(&self) -> &crate::operation::create_campaign::builders::CreateCampaignInputBuilder {
64        &self.inner
65    }
66    /// Sends the request and returns the response.
67    ///
68    /// If an error occurs, an `SdkError` will be returned with additional details that
69    /// can be matched against.
70    ///
71    /// By default, any retryable failures will be retried twice. Retry behavior
72    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
73    /// set when configuring the client.
74    pub async fn send(
75        self,
76    ) -> ::std::result::Result<
77        crate::operation::create_campaign::CreateCampaignOutput,
78        ::aws_smithy_runtime_api::client::result::SdkError<
79            crate::operation::create_campaign::CreateCampaignError,
80            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
81        >,
82    > {
83        let input = self
84            .inner
85            .build()
86            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
87        let runtime_plugins = crate::operation::create_campaign::CreateCampaign::operation_runtime_plugins(
88            self.handle.runtime_plugins.clone(),
89            &self.handle.conf,
90            self.config_override,
91        );
92        crate::operation::create_campaign::CreateCampaign::orchestrate(&runtime_plugins, input).await
93    }
94
95    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
96    pub fn customize(
97        self,
98    ) -> crate::client::customize::CustomizableOperation<
99        crate::operation::create_campaign::CreateCampaignOutput,
100        crate::operation::create_campaign::CreateCampaignError,
101        Self,
102    > {
103        crate::client::customize::CustomizableOperation::new(self)
104    }
105    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
106        self.set_config_override(::std::option::Option::Some(config_override.into()));
107        self
108    }
109
110    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
111        self.config_override = config_override;
112        self
113    }
114    /// <p>The name of the campaign to create.</p>
115    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
116        self.inner = self.inner.name(input.into());
117        self
118    }
119    /// <p>The name of the campaign to create.</p>
120    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
121        self.inner = self.inner.set_name(input);
122        self
123    }
124    /// <p>The name of the campaign to create.</p>
125    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
126        self.inner.get_name()
127    }
128    /// <p>An optional description of the campaign to help identify its purpose.</p>
129    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
130        self.inner = self.inner.description(input.into());
131        self
132    }
133    /// <p>An optional description of the campaign to help identify its purpose.</p>
134    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
135        self.inner = self.inner.set_description(input);
136        self
137    }
138    /// <p>An optional description of the campaign to help identify its purpose.</p>
139    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
140        self.inner.get_description()
141    }
142    /// <p>The Amazon Resource Name (ARN) of the signal catalog to associate with the campaign.</p>
143    pub fn signal_catalog_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
144        self.inner = self.inner.signal_catalog_arn(input.into());
145        self
146    }
147    /// <p>The Amazon Resource Name (ARN) of the signal catalog to associate with the campaign.</p>
148    pub fn set_signal_catalog_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
149        self.inner = self.inner.set_signal_catalog_arn(input);
150        self
151    }
152    /// <p>The Amazon Resource Name (ARN) of the signal catalog to associate with the campaign.</p>
153    pub fn get_signal_catalog_arn(&self) -> &::std::option::Option<::std::string::String> {
154        self.inner.get_signal_catalog_arn()
155    }
156    /// <p>The ARN of the vehicle or fleet to deploy a campaign to.</p>
157    pub fn target_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
158        self.inner = self.inner.target_arn(input.into());
159        self
160    }
161    /// <p>The ARN of the vehicle or fleet to deploy a campaign to.</p>
162    pub fn set_target_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
163        self.inner = self.inner.set_target_arn(input);
164        self
165    }
166    /// <p>The ARN of the vehicle or fleet to deploy a campaign to.</p>
167    pub fn get_target_arn(&self) -> &::std::option::Option<::std::string::String> {
168        self.inner.get_target_arn()
169    }
170    /// <p>The time, in milliseconds, to deliver a campaign after it was approved. If it's not specified, <code>0</code> is used.</p>
171    /// <p>Default: <code>0</code></p>
172    pub fn start_time(mut self, input: ::aws_smithy_types::DateTime) -> Self {
173        self.inner = self.inner.start_time(input);
174        self
175    }
176    /// <p>The time, in milliseconds, to deliver a campaign after it was approved. If it's not specified, <code>0</code> is used.</p>
177    /// <p>Default: <code>0</code></p>
178    pub fn set_start_time(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
179        self.inner = self.inner.set_start_time(input);
180        self
181    }
182    /// <p>The time, in milliseconds, to deliver a campaign after it was approved. If it's not specified, <code>0</code> is used.</p>
183    /// <p>Default: <code>0</code></p>
184    pub fn get_start_time(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
185        self.inner.get_start_time()
186    }
187    /// <p>The time the campaign expires, in seconds since epoch (January 1, 1970 at midnight UTC time). Vehicle data isn't collected after the campaign expires.</p>
188    /// <p>Default: 253402214400 (December 31, 9999, 00:00:00 UTC)</p>
189    pub fn expiry_time(mut self, input: ::aws_smithy_types::DateTime) -> Self {
190        self.inner = self.inner.expiry_time(input);
191        self
192    }
193    /// <p>The time the campaign expires, in seconds since epoch (January 1, 1970 at midnight UTC time). Vehicle data isn't collected after the campaign expires.</p>
194    /// <p>Default: 253402214400 (December 31, 9999, 00:00:00 UTC)</p>
195    pub fn set_expiry_time(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
196        self.inner = self.inner.set_expiry_time(input);
197        self
198    }
199    /// <p>The time the campaign expires, in seconds since epoch (January 1, 1970 at midnight UTC time). Vehicle data isn't collected after the campaign expires.</p>
200    /// <p>Default: 253402214400 (December 31, 9999, 00:00:00 UTC)</p>
201    pub fn get_expiry_time(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
202        self.inner.get_expiry_time()
203    }
204    /// <p>How long (in milliseconds) to collect raw data after a triggering event initiates the collection. If it's not specified, <code>0</code> is used.</p>
205    /// <p>Default: <code>0</code></p>
206    pub fn post_trigger_collection_duration(mut self, input: i64) -> Self {
207        self.inner = self.inner.post_trigger_collection_duration(input);
208        self
209    }
210    /// <p>How long (in milliseconds) to collect raw data after a triggering event initiates the collection. If it's not specified, <code>0</code> is used.</p>
211    /// <p>Default: <code>0</code></p>
212    pub fn set_post_trigger_collection_duration(mut self, input: ::std::option::Option<i64>) -> Self {
213        self.inner = self.inner.set_post_trigger_collection_duration(input);
214        self
215    }
216    /// <p>How long (in milliseconds) to collect raw data after a triggering event initiates the collection. If it's not specified, <code>0</code> is used.</p>
217    /// <p>Default: <code>0</code></p>
218    pub fn get_post_trigger_collection_duration(&self) -> &::std::option::Option<i64> {
219        self.inner.get_post_trigger_collection_duration()
220    }
221    /// <p>Option for a vehicle to send diagnostic trouble codes to Amazon Web Services IoT FleetWise. If you want to send diagnostic trouble codes, use <code>SEND_ACTIVE_DTCS</code>. If it's not specified, <code>OFF</code> is used.</p>
222    /// <p>Default: <code>OFF</code></p>
223    pub fn diagnostics_mode(mut self, input: crate::types::DiagnosticsMode) -> Self {
224        self.inner = self.inner.diagnostics_mode(input);
225        self
226    }
227    /// <p>Option for a vehicle to send diagnostic trouble codes to Amazon Web Services IoT FleetWise. If you want to send diagnostic trouble codes, use <code>SEND_ACTIVE_DTCS</code>. If it's not specified, <code>OFF</code> is used.</p>
228    /// <p>Default: <code>OFF</code></p>
229    pub fn set_diagnostics_mode(mut self, input: ::std::option::Option<crate::types::DiagnosticsMode>) -> Self {
230        self.inner = self.inner.set_diagnostics_mode(input);
231        self
232    }
233    /// <p>Option for a vehicle to send diagnostic trouble codes to Amazon Web Services IoT FleetWise. If you want to send diagnostic trouble codes, use <code>SEND_ACTIVE_DTCS</code>. If it's not specified, <code>OFF</code> is used.</p>
234    /// <p>Default: <code>OFF</code></p>
235    pub fn get_diagnostics_mode(&self) -> &::std::option::Option<crate::types::DiagnosticsMode> {
236        self.inner.get_diagnostics_mode()
237    }
238    /// <p>Determines whether to store collected data after a vehicle lost a connection with the cloud. After a connection is re-established, the data is automatically forwarded to Amazon Web Services IoT FleetWise. If you want to store collected data when a vehicle loses connection with the cloud, use <code>TO_DISK</code>. If it's not specified, <code>OFF</code> is used.</p>
239    /// <p>Default: <code>OFF</code></p>
240    pub fn spooling_mode(mut self, input: crate::types::SpoolingMode) -> Self {
241        self.inner = self.inner.spooling_mode(input);
242        self
243    }
244    /// <p>Determines whether to store collected data after a vehicle lost a connection with the cloud. After a connection is re-established, the data is automatically forwarded to Amazon Web Services IoT FleetWise. If you want to store collected data when a vehicle loses connection with the cloud, use <code>TO_DISK</code>. If it's not specified, <code>OFF</code> is used.</p>
245    /// <p>Default: <code>OFF</code></p>
246    pub fn set_spooling_mode(mut self, input: ::std::option::Option<crate::types::SpoolingMode>) -> Self {
247        self.inner = self.inner.set_spooling_mode(input);
248        self
249    }
250    /// <p>Determines whether to store collected data after a vehicle lost a connection with the cloud. After a connection is re-established, the data is automatically forwarded to Amazon Web Services IoT FleetWise. If you want to store collected data when a vehicle loses connection with the cloud, use <code>TO_DISK</code>. If it's not specified, <code>OFF</code> is used.</p>
251    /// <p>Default: <code>OFF</code></p>
252    pub fn get_spooling_mode(&self) -> &::std::option::Option<crate::types::SpoolingMode> {
253        self.inner.get_spooling_mode()
254    }
255    /// <p>Determines whether to compress signals before transmitting data to Amazon Web Services IoT FleetWise. If you don't want to compress the signals, use <code>OFF</code>. If it's not specified, <code>SNAPPY</code> is used.</p>
256    /// <p>Default: <code>SNAPPY</code></p>
257    pub fn compression(mut self, input: crate::types::Compression) -> Self {
258        self.inner = self.inner.compression(input);
259        self
260    }
261    /// <p>Determines whether to compress signals before transmitting data to Amazon Web Services IoT FleetWise. If you don't want to compress the signals, use <code>OFF</code>. If it's not specified, <code>SNAPPY</code> is used.</p>
262    /// <p>Default: <code>SNAPPY</code></p>
263    pub fn set_compression(mut self, input: ::std::option::Option<crate::types::Compression>) -> Self {
264        self.inner = self.inner.set_compression(input);
265        self
266    }
267    /// <p>Determines whether to compress signals before transmitting data to Amazon Web Services IoT FleetWise. If you don't want to compress the signals, use <code>OFF</code>. If it's not specified, <code>SNAPPY</code> is used.</p>
268    /// <p>Default: <code>SNAPPY</code></p>
269    pub fn get_compression(&self) -> &::std::option::Option<crate::types::Compression> {
270        self.inner.get_compression()
271    }
272    /// <p>A number indicating the priority of one campaign over another campaign for a certain vehicle or fleet. A campaign with the lowest value is deployed to vehicles before any other campaigns. If it's not specified, <code>0</code> is used.</p>
273    /// <p>Default: <code>0</code></p>
274    #[deprecated(note = "priority is no longer used or needed as input")]
275    pub fn priority(mut self, input: i32) -> Self {
276        self.inner = self.inner.priority(input);
277        self
278    }
279    /// <p>A number indicating the priority of one campaign over another campaign for a certain vehicle or fleet. A campaign with the lowest value is deployed to vehicles before any other campaigns. If it's not specified, <code>0</code> is used.</p>
280    /// <p>Default: <code>0</code></p>
281    #[deprecated(note = "priority is no longer used or needed as input")]
282    pub fn set_priority(mut self, input: ::std::option::Option<i32>) -> Self {
283        self.inner = self.inner.set_priority(input);
284        self
285    }
286    /// <p>A number indicating the priority of one campaign over another campaign for a certain vehicle or fleet. A campaign with the lowest value is deployed to vehicles before any other campaigns. If it's not specified, <code>0</code> is used.</p>
287    /// <p>Default: <code>0</code></p>
288    #[deprecated(note = "priority is no longer used or needed as input")]
289    pub fn get_priority(&self) -> &::std::option::Option<i32> {
290        self.inner.get_priority()
291    }
292    ///
293    /// Appends an item to `signalsToCollect`.
294    ///
295    /// To override the contents of this collection use [`set_signals_to_collect`](Self::set_signals_to_collect).
296    ///
297    /// <p>A list of information about signals to collect.</p><note>
298    /// <p>If you upload a signal as a condition in a data partition for a campaign, then those same signals must be included in <code>signalsToCollect</code>.</p>
299    /// </note>
300    pub fn signals_to_collect(mut self, input: crate::types::SignalInformation) -> Self {
301        self.inner = self.inner.signals_to_collect(input);
302        self
303    }
304    /// <p>A list of information about signals to collect.</p><note>
305    /// <p>If you upload a signal as a condition in a data partition for a campaign, then those same signals must be included in <code>signalsToCollect</code>.</p>
306    /// </note>
307    pub fn set_signals_to_collect(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::SignalInformation>>) -> Self {
308        self.inner = self.inner.set_signals_to_collect(input);
309        self
310    }
311    /// <p>A list of information about signals to collect.</p><note>
312    /// <p>If you upload a signal as a condition in a data partition for a campaign, then those same signals must be included in <code>signalsToCollect</code>.</p>
313    /// </note>
314    pub fn get_signals_to_collect(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::SignalInformation>> {
315        self.inner.get_signals_to_collect()
316    }
317    /// <p>The data collection scheme associated with the campaign. You can specify a scheme that collects data based on time or an event.</p>
318    pub fn collection_scheme(mut self, input: crate::types::CollectionScheme) -> Self {
319        self.inner = self.inner.collection_scheme(input);
320        self
321    }
322    /// <p>The data collection scheme associated with the campaign. You can specify a scheme that collects data based on time or an event.</p>
323    pub fn set_collection_scheme(mut self, input: ::std::option::Option<crate::types::CollectionScheme>) -> Self {
324        self.inner = self.inner.set_collection_scheme(input);
325        self
326    }
327    /// <p>The data collection scheme associated with the campaign. You can specify a scheme that collects data based on time or an event.</p>
328    pub fn get_collection_scheme(&self) -> &::std::option::Option<crate::types::CollectionScheme> {
329        self.inner.get_collection_scheme()
330    }
331    ///
332    /// Appends an item to `dataExtraDimensions`.
333    ///
334    /// To override the contents of this collection use [`set_data_extra_dimensions`](Self::set_data_extra_dimensions).
335    ///
336    /// <p>A list of vehicle attributes to associate with a campaign.</p>
337    /// <p>Enrich the data with specified vehicle attributes. For example, add <code>make</code> and <code>model</code> to the campaign, and Amazon Web Services IoT FleetWise will associate the data with those attributes as dimensions in Amazon Timestream. You can then query the data against <code>make</code> and <code>model</code>.</p>
338    /// <p>Default: An empty array</p>
339    pub fn data_extra_dimensions(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
340        self.inner = self.inner.data_extra_dimensions(input.into());
341        self
342    }
343    /// <p>A list of vehicle attributes to associate with a campaign.</p>
344    /// <p>Enrich the data with specified vehicle attributes. For example, add <code>make</code> and <code>model</code> to the campaign, and Amazon Web Services IoT FleetWise will associate the data with those attributes as dimensions in Amazon Timestream. You can then query the data against <code>make</code> and <code>model</code>.</p>
345    /// <p>Default: An empty array</p>
346    pub fn set_data_extra_dimensions(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
347        self.inner = self.inner.set_data_extra_dimensions(input);
348        self
349    }
350    /// <p>A list of vehicle attributes to associate with a campaign.</p>
351    /// <p>Enrich the data with specified vehicle attributes. For example, add <code>make</code> and <code>model</code> to the campaign, and Amazon Web Services IoT FleetWise will associate the data with those attributes as dimensions in Amazon Timestream. You can then query the data against <code>make</code> and <code>model</code>.</p>
352    /// <p>Default: An empty array</p>
353    pub fn get_data_extra_dimensions(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
354        self.inner.get_data_extra_dimensions()
355    }
356    ///
357    /// Appends an item to `tags`.
358    ///
359    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
360    ///
361    /// <p>Metadata that can be used to manage the campaign.</p>
362    pub fn tags(mut self, input: crate::types::Tag) -> Self {
363        self.inner = self.inner.tags(input);
364        self
365    }
366    /// <p>Metadata that can be used to manage the campaign.</p>
367    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
368        self.inner = self.inner.set_tags(input);
369        self
370    }
371    /// <p>Metadata that can be used to manage the campaign.</p>
372    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
373        self.inner.get_tags()
374    }
375    ///
376    /// Appends an item to `dataDestinationConfigs`.
377    ///
378    /// To override the contents of this collection use [`set_data_destination_configs`](Self::set_data_destination_configs).
379    ///
380    /// <p>The destination where the campaign sends data. You can send data to an MQTT topic, or store it in Amazon S3 or Amazon Timestream.</p>
381    /// <p>MQTT is the publish/subscribe messaging protocol used by Amazon Web Services IoT to communicate with your devices.</p>
382    /// <p>Amazon S3 optimizes the cost of data storage and provides additional mechanisms to use vehicle data, such as data lakes, centralized data storage, data processing pipelines, and analytics. Amazon Web Services IoT FleetWise supports at-least-once file delivery to S3. Your vehicle data is stored on multiple Amazon Web Services IoT FleetWise servers for redundancy and high availability.</p>
383    /// <p>You can use Amazon Timestream to access and analyze time series data, and Timestream to query vehicle data so that you can identify trends and patterns.</p>
384    pub fn data_destination_configs(mut self, input: crate::types::DataDestinationConfig) -> Self {
385        self.inner = self.inner.data_destination_configs(input);
386        self
387    }
388    /// <p>The destination where the campaign sends data. You can send data to an MQTT topic, or store it in Amazon S3 or Amazon Timestream.</p>
389    /// <p>MQTT is the publish/subscribe messaging protocol used by Amazon Web Services IoT to communicate with your devices.</p>
390    /// <p>Amazon S3 optimizes the cost of data storage and provides additional mechanisms to use vehicle data, such as data lakes, centralized data storage, data processing pipelines, and analytics. Amazon Web Services IoT FleetWise supports at-least-once file delivery to S3. Your vehicle data is stored on multiple Amazon Web Services IoT FleetWise servers for redundancy and high availability.</p>
391    /// <p>You can use Amazon Timestream to access and analyze time series data, and Timestream to query vehicle data so that you can identify trends and patterns.</p>
392    pub fn set_data_destination_configs(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::DataDestinationConfig>>) -> Self {
393        self.inner = self.inner.set_data_destination_configs(input);
394        self
395    }
396    /// <p>The destination where the campaign sends data. You can send data to an MQTT topic, or store it in Amazon S3 or Amazon Timestream.</p>
397    /// <p>MQTT is the publish/subscribe messaging protocol used by Amazon Web Services IoT to communicate with your devices.</p>
398    /// <p>Amazon S3 optimizes the cost of data storage and provides additional mechanisms to use vehicle data, such as data lakes, centralized data storage, data processing pipelines, and analytics. Amazon Web Services IoT FleetWise supports at-least-once file delivery to S3. Your vehicle data is stored on multiple Amazon Web Services IoT FleetWise servers for redundancy and high availability.</p>
399    /// <p>You can use Amazon Timestream to access and analyze time series data, and Timestream to query vehicle data so that you can identify trends and patterns.</p>
400    pub fn get_data_destination_configs(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::DataDestinationConfig>> {
401        self.inner.get_data_destination_configs()
402    }
403    ///
404    /// Appends an item to `dataPartitions`.
405    ///
406    /// To override the contents of this collection use [`set_data_partitions`](Self::set_data_partitions).
407    ///
408    /// <p>The data partitions associated with the signals collected from the vehicle.</p>
409    pub fn data_partitions(mut self, input: crate::types::DataPartition) -> Self {
410        self.inner = self.inner.data_partitions(input);
411        self
412    }
413    /// <p>The data partitions associated with the signals collected from the vehicle.</p>
414    pub fn set_data_partitions(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::DataPartition>>) -> Self {
415        self.inner = self.inner.set_data_partitions(input);
416        self
417    }
418    /// <p>The data partitions associated with the signals collected from the vehicle.</p>
419    pub fn get_data_partitions(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::DataPartition>> {
420        self.inner.get_data_partitions()
421    }
422    ///
423    /// Appends an item to `signalsToFetch`.
424    ///
425    /// To override the contents of this collection use [`set_signals_to_fetch`](Self::set_signals_to_fetch).
426    ///
427    /// <p>A list of information about signals to fetch.</p>
428    pub fn signals_to_fetch(mut self, input: crate::types::SignalFetchInformation) -> Self {
429        self.inner = self.inner.signals_to_fetch(input);
430        self
431    }
432    /// <p>A list of information about signals to fetch.</p>
433    pub fn set_signals_to_fetch(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::SignalFetchInformation>>) -> Self {
434        self.inner = self.inner.set_signals_to_fetch(input);
435        self
436    }
437    /// <p>A list of information about signals to fetch.</p>
438    pub fn get_signals_to_fetch(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::SignalFetchInformation>> {
439        self.inner.get_signals_to_fetch()
440    }
441}