aws_sdk_forecast/operation/create_auto_predictor/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_auto_predictor::_create_auto_predictor_output::CreateAutoPredictorOutputBuilder;
3
4pub use crate::operation::create_auto_predictor::_create_auto_predictor_input::CreateAutoPredictorInputBuilder;
5
6impl crate::operation::create_auto_predictor::builders::CreateAutoPredictorInputBuilder {
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_auto_predictor::CreateAutoPredictorOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_auto_predictor::CreateAutoPredictorError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_auto_predictor();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateAutoPredictor`.
24///
25/// <p>Creates an Amazon Forecast predictor.</p>
26/// <p>Amazon Forecast creates predictors with AutoPredictor, which involves applying the optimal combination of algorithms to each time series in your datasets. You can use <code>CreateAutoPredictor</code> to create new predictors or upgrade/retrain existing predictors.</p>
27/// <p><b>Creating new predictors</b></p>
28/// <p>The following parameters are required when creating a new predictor:</p>
29/// <ul>
30/// <li>
31/// <p><code>PredictorName</code> - A unique name for the predictor.</p></li>
32/// <li>
33/// <p><code>DatasetGroupArn</code> - The ARN of the dataset group used to train the predictor.</p></li>
34/// <li>
35/// <p><code>ForecastFrequency</code> - The granularity of your forecasts (hourly, daily, weekly, etc).</p></li>
36/// <li>
37/// <p><code>ForecastHorizon</code> - The number of time-steps that the model predicts. The forecast horizon is also called the prediction length.</p></li>
38/// </ul>
39/// <p>When creating a new predictor, do not specify a value for <code>ReferencePredictorArn</code>.</p>
40/// <p><b>Upgrading and retraining predictors</b></p>
41/// <p>The following parameters are required when retraining or upgrading a predictor:</p>
42/// <ul>
43/// <li>
44/// <p><code>PredictorName</code> - A unique name for the predictor.</p></li>
45/// <li>
46/// <p><code>ReferencePredictorArn</code> - The ARN of the predictor to retrain or upgrade.</p></li>
47/// </ul>
48/// <p>When upgrading or retraining a predictor, only specify values for the <code>ReferencePredictorArn</code> and <code>PredictorName</code>.</p>
49#[derive(::std::clone::Clone, ::std::fmt::Debug)]
50pub struct CreateAutoPredictorFluentBuilder {
51    handle: ::std::sync::Arc<crate::client::Handle>,
52    inner: crate::operation::create_auto_predictor::builders::CreateAutoPredictorInputBuilder,
53    config_override: ::std::option::Option<crate::config::Builder>,
54}
55impl
56    crate::client::customize::internal::CustomizableSend<
57        crate::operation::create_auto_predictor::CreateAutoPredictorOutput,
58        crate::operation::create_auto_predictor::CreateAutoPredictorError,
59    > for CreateAutoPredictorFluentBuilder
60{
61    fn send(
62        self,
63        config_override: crate::config::Builder,
64    ) -> crate::client::customize::internal::BoxFuture<
65        crate::client::customize::internal::SendResult<
66            crate::operation::create_auto_predictor::CreateAutoPredictorOutput,
67            crate::operation::create_auto_predictor::CreateAutoPredictorError,
68        >,
69    > {
70        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
71    }
72}
73impl CreateAutoPredictorFluentBuilder {
74    /// Creates a new `CreateAutoPredictorFluentBuilder`.
75    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
76        Self {
77            handle,
78            inner: ::std::default::Default::default(),
79            config_override: ::std::option::Option::None,
80        }
81    }
82    /// Access the CreateAutoPredictor as a reference.
83    pub fn as_input(&self) -> &crate::operation::create_auto_predictor::builders::CreateAutoPredictorInputBuilder {
84        &self.inner
85    }
86    /// Sends the request and returns the response.
87    ///
88    /// If an error occurs, an `SdkError` will be returned with additional details that
89    /// can be matched against.
90    ///
91    /// By default, any retryable failures will be retried twice. Retry behavior
92    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
93    /// set when configuring the client.
94    pub async fn send(
95        self,
96    ) -> ::std::result::Result<
97        crate::operation::create_auto_predictor::CreateAutoPredictorOutput,
98        ::aws_smithy_runtime_api::client::result::SdkError<
99            crate::operation::create_auto_predictor::CreateAutoPredictorError,
100            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
101        >,
102    > {
103        let input = self
104            .inner
105            .build()
106            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
107        let runtime_plugins = crate::operation::create_auto_predictor::CreateAutoPredictor::operation_runtime_plugins(
108            self.handle.runtime_plugins.clone(),
109            &self.handle.conf,
110            self.config_override,
111        );
112        crate::operation::create_auto_predictor::CreateAutoPredictor::orchestrate(&runtime_plugins, input).await
113    }
114
115    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
116    pub fn customize(
117        self,
118    ) -> crate::client::customize::CustomizableOperation<
119        crate::operation::create_auto_predictor::CreateAutoPredictorOutput,
120        crate::operation::create_auto_predictor::CreateAutoPredictorError,
121        Self,
122    > {
123        crate::client::customize::CustomizableOperation::new(self)
124    }
125    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
126        self.set_config_override(::std::option::Option::Some(config_override.into()));
127        self
128    }
129
130    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
131        self.config_override = config_override;
132        self
133    }
134    /// <p>A unique name for the predictor</p>
135    pub fn predictor_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
136        self.inner = self.inner.predictor_name(input.into());
137        self
138    }
139    /// <p>A unique name for the predictor</p>
140    pub fn set_predictor_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
141        self.inner = self.inner.set_predictor_name(input);
142        self
143    }
144    /// <p>A unique name for the predictor</p>
145    pub fn get_predictor_name(&self) -> &::std::option::Option<::std::string::String> {
146        self.inner.get_predictor_name()
147    }
148    /// <p>The number of time-steps that the model predicts. The forecast horizon is also called the prediction length.</p>
149    /// <p>The maximum forecast horizon is the lesser of 500 time-steps or 1/4 of the TARGET_TIME_SERIES dataset length. If you are retraining an existing AutoPredictor, then the maximum forecast horizon is the lesser of 500 time-steps or 1/3 of the TARGET_TIME_SERIES dataset length.</p>
150    /// <p>If you are upgrading to an AutoPredictor or retraining an existing AutoPredictor, you cannot update the forecast horizon parameter. You can meet this requirement by providing longer time-series in the dataset.</p>
151    pub fn forecast_horizon(mut self, input: i32) -> Self {
152        self.inner = self.inner.forecast_horizon(input);
153        self
154    }
155    /// <p>The number of time-steps that the model predicts. The forecast horizon is also called the prediction length.</p>
156    /// <p>The maximum forecast horizon is the lesser of 500 time-steps or 1/4 of the TARGET_TIME_SERIES dataset length. If you are retraining an existing AutoPredictor, then the maximum forecast horizon is the lesser of 500 time-steps or 1/3 of the TARGET_TIME_SERIES dataset length.</p>
157    /// <p>If you are upgrading to an AutoPredictor or retraining an existing AutoPredictor, you cannot update the forecast horizon parameter. You can meet this requirement by providing longer time-series in the dataset.</p>
158    pub fn set_forecast_horizon(mut self, input: ::std::option::Option<i32>) -> Self {
159        self.inner = self.inner.set_forecast_horizon(input);
160        self
161    }
162    /// <p>The number of time-steps that the model predicts. The forecast horizon is also called the prediction length.</p>
163    /// <p>The maximum forecast horizon is the lesser of 500 time-steps or 1/4 of the TARGET_TIME_SERIES dataset length. If you are retraining an existing AutoPredictor, then the maximum forecast horizon is the lesser of 500 time-steps or 1/3 of the TARGET_TIME_SERIES dataset length.</p>
164    /// <p>If you are upgrading to an AutoPredictor or retraining an existing AutoPredictor, you cannot update the forecast horizon parameter. You can meet this requirement by providing longer time-series in the dataset.</p>
165    pub fn get_forecast_horizon(&self) -> &::std::option::Option<i32> {
166        self.inner.get_forecast_horizon()
167    }
168    ///
169    /// Appends an item to `ForecastTypes`.
170    ///
171    /// To override the contents of this collection use [`set_forecast_types`](Self::set_forecast_types).
172    ///
173    /// <p>The forecast types used to train a predictor. You can specify up to five forecast types. Forecast types can be quantiles from 0.01 to 0.99, by increments of 0.01 or higher. You can also specify the mean forecast with <code>mean</code>.</p>
174    pub fn forecast_types(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
175        self.inner = self.inner.forecast_types(input.into());
176        self
177    }
178    /// <p>The forecast types used to train a predictor. You can specify up to five forecast types. Forecast types can be quantiles from 0.01 to 0.99, by increments of 0.01 or higher. You can also specify the mean forecast with <code>mean</code>.</p>
179    pub fn set_forecast_types(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
180        self.inner = self.inner.set_forecast_types(input);
181        self
182    }
183    /// <p>The forecast types used to train a predictor. You can specify up to five forecast types. Forecast types can be quantiles from 0.01 to 0.99, by increments of 0.01 or higher. You can also specify the mean forecast with <code>mean</code>.</p>
184    pub fn get_forecast_types(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
185        self.inner.get_forecast_types()
186    }
187    ///
188    /// Appends an item to `ForecastDimensions`.
189    ///
190    /// To override the contents of this collection use [`set_forecast_dimensions`](Self::set_forecast_dimensions).
191    ///
192    /// <p>An array of dimension (field) names that specify how to group the generated forecast.</p>
193    /// <p>For example, if you are generating forecasts for item sales across all your stores, and your dataset contains a <code>store_id</code> field, you would specify <code>store_id</code> as a dimension to group sales forecasts for each store.</p>
194    pub fn forecast_dimensions(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
195        self.inner = self.inner.forecast_dimensions(input.into());
196        self
197    }
198    /// <p>An array of dimension (field) names that specify how to group the generated forecast.</p>
199    /// <p>For example, if you are generating forecasts for item sales across all your stores, and your dataset contains a <code>store_id</code> field, you would specify <code>store_id</code> as a dimension to group sales forecasts for each store.</p>
200    pub fn set_forecast_dimensions(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
201        self.inner = self.inner.set_forecast_dimensions(input);
202        self
203    }
204    /// <p>An array of dimension (field) names that specify how to group the generated forecast.</p>
205    /// <p>For example, if you are generating forecasts for item sales across all your stores, and your dataset contains a <code>store_id</code> field, you would specify <code>store_id</code> as a dimension to group sales forecasts for each store.</p>
206    pub fn get_forecast_dimensions(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
207        self.inner.get_forecast_dimensions()
208    }
209    /// <p>The frequency of predictions in a forecast.</p>
210    /// <p>Valid intervals are an integer followed by Y (Year), M (Month), W (Week), D (Day), H (Hour), and min (Minute). For example, "1D" indicates every day and "15min" indicates every 15 minutes. You cannot specify a value that would overlap with the next larger frequency. That means, for example, you cannot specify a frequency of 60 minutes, because that is equivalent to 1 hour. The valid values for each frequency are the following:</p>
211    /// <ul>
212    /// <li>
213    /// <p>Minute - 1-59</p></li>
214    /// <li>
215    /// <p>Hour - 1-23</p></li>
216    /// <li>
217    /// <p>Day - 1-6</p></li>
218    /// <li>
219    /// <p>Week - 1-4</p></li>
220    /// <li>
221    /// <p>Month - 1-11</p></li>
222    /// <li>
223    /// <p>Year - 1</p></li>
224    /// </ul>
225    /// <p>Thus, if you want every other week forecasts, specify "2W". Or, if you want quarterly forecasts, you specify "3M".</p>
226    /// <p>The frequency must be greater than or equal to the TARGET_TIME_SERIES dataset frequency.</p>
227    /// <p>When a RELATED_TIME_SERIES dataset is provided, the frequency must be equal to the RELATED_TIME_SERIES dataset frequency.</p>
228    pub fn forecast_frequency(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
229        self.inner = self.inner.forecast_frequency(input.into());
230        self
231    }
232    /// <p>The frequency of predictions in a forecast.</p>
233    /// <p>Valid intervals are an integer followed by Y (Year), M (Month), W (Week), D (Day), H (Hour), and min (Minute). For example, "1D" indicates every day and "15min" indicates every 15 minutes. You cannot specify a value that would overlap with the next larger frequency. That means, for example, you cannot specify a frequency of 60 minutes, because that is equivalent to 1 hour. The valid values for each frequency are the following:</p>
234    /// <ul>
235    /// <li>
236    /// <p>Minute - 1-59</p></li>
237    /// <li>
238    /// <p>Hour - 1-23</p></li>
239    /// <li>
240    /// <p>Day - 1-6</p></li>
241    /// <li>
242    /// <p>Week - 1-4</p></li>
243    /// <li>
244    /// <p>Month - 1-11</p></li>
245    /// <li>
246    /// <p>Year - 1</p></li>
247    /// </ul>
248    /// <p>Thus, if you want every other week forecasts, specify "2W". Or, if you want quarterly forecasts, you specify "3M".</p>
249    /// <p>The frequency must be greater than or equal to the TARGET_TIME_SERIES dataset frequency.</p>
250    /// <p>When a RELATED_TIME_SERIES dataset is provided, the frequency must be equal to the RELATED_TIME_SERIES dataset frequency.</p>
251    pub fn set_forecast_frequency(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
252        self.inner = self.inner.set_forecast_frequency(input);
253        self
254    }
255    /// <p>The frequency of predictions in a forecast.</p>
256    /// <p>Valid intervals are an integer followed by Y (Year), M (Month), W (Week), D (Day), H (Hour), and min (Minute). For example, "1D" indicates every day and "15min" indicates every 15 minutes. You cannot specify a value that would overlap with the next larger frequency. That means, for example, you cannot specify a frequency of 60 minutes, because that is equivalent to 1 hour. The valid values for each frequency are the following:</p>
257    /// <ul>
258    /// <li>
259    /// <p>Minute - 1-59</p></li>
260    /// <li>
261    /// <p>Hour - 1-23</p></li>
262    /// <li>
263    /// <p>Day - 1-6</p></li>
264    /// <li>
265    /// <p>Week - 1-4</p></li>
266    /// <li>
267    /// <p>Month - 1-11</p></li>
268    /// <li>
269    /// <p>Year - 1</p></li>
270    /// </ul>
271    /// <p>Thus, if you want every other week forecasts, specify "2W". Or, if you want quarterly forecasts, you specify "3M".</p>
272    /// <p>The frequency must be greater than or equal to the TARGET_TIME_SERIES dataset frequency.</p>
273    /// <p>When a RELATED_TIME_SERIES dataset is provided, the frequency must be equal to the RELATED_TIME_SERIES dataset frequency.</p>
274    pub fn get_forecast_frequency(&self) -> &::std::option::Option<::std::string::String> {
275        self.inner.get_forecast_frequency()
276    }
277    /// <p>The data configuration for your dataset group and any additional datasets.</p>
278    pub fn data_config(mut self, input: crate::types::DataConfig) -> Self {
279        self.inner = self.inner.data_config(input);
280        self
281    }
282    /// <p>The data configuration for your dataset group and any additional datasets.</p>
283    pub fn set_data_config(mut self, input: ::std::option::Option<crate::types::DataConfig>) -> Self {
284        self.inner = self.inner.set_data_config(input);
285        self
286    }
287    /// <p>The data configuration for your dataset group and any additional datasets.</p>
288    pub fn get_data_config(&self) -> &::std::option::Option<crate::types::DataConfig> {
289        self.inner.get_data_config()
290    }
291    /// <p>An Key Management Service (KMS) key and an Identity and Access Management (IAM) role that Amazon Forecast can assume to access the key. You can specify this optional object in the <code>CreateDataset</code> and <code>CreatePredictor</code> requests.</p>
292    pub fn encryption_config(mut self, input: crate::types::EncryptionConfig) -> Self {
293        self.inner = self.inner.encryption_config(input);
294        self
295    }
296    /// <p>An Key Management Service (KMS) key and an Identity and Access Management (IAM) role that Amazon Forecast can assume to access the key. You can specify this optional object in the <code>CreateDataset</code> and <code>CreatePredictor</code> requests.</p>
297    pub fn set_encryption_config(mut self, input: ::std::option::Option<crate::types::EncryptionConfig>) -> Self {
298        self.inner = self.inner.set_encryption_config(input);
299        self
300    }
301    /// <p>An Key Management Service (KMS) key and an Identity and Access Management (IAM) role that Amazon Forecast can assume to access the key. You can specify this optional object in the <code>CreateDataset</code> and <code>CreatePredictor</code> requests.</p>
302    pub fn get_encryption_config(&self) -> &::std::option::Option<crate::types::EncryptionConfig> {
303        self.inner.get_encryption_config()
304    }
305    /// <p>The ARN of the predictor to retrain or upgrade. This parameter is only used when retraining or upgrading a predictor. When creating a new predictor, do not specify a value for this parameter.</p>
306    /// <p>When upgrading or retraining a predictor, only specify values for the <code>ReferencePredictorArn</code> and <code>PredictorName</code>. The value for <code>PredictorName</code> must be a unique predictor name.</p>
307    pub fn reference_predictor_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
308        self.inner = self.inner.reference_predictor_arn(input.into());
309        self
310    }
311    /// <p>The ARN of the predictor to retrain or upgrade. This parameter is only used when retraining or upgrading a predictor. When creating a new predictor, do not specify a value for this parameter.</p>
312    /// <p>When upgrading or retraining a predictor, only specify values for the <code>ReferencePredictorArn</code> and <code>PredictorName</code>. The value for <code>PredictorName</code> must be a unique predictor name.</p>
313    pub fn set_reference_predictor_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
314        self.inner = self.inner.set_reference_predictor_arn(input);
315        self
316    }
317    /// <p>The ARN of the predictor to retrain or upgrade. This parameter is only used when retraining or upgrading a predictor. When creating a new predictor, do not specify a value for this parameter.</p>
318    /// <p>When upgrading or retraining a predictor, only specify values for the <code>ReferencePredictorArn</code> and <code>PredictorName</code>. The value for <code>PredictorName</code> must be a unique predictor name.</p>
319    pub fn get_reference_predictor_arn(&self) -> &::std::option::Option<::std::string::String> {
320        self.inner.get_reference_predictor_arn()
321    }
322    /// <p>The accuracy metric used to optimize the predictor.</p>
323    pub fn optimization_metric(mut self, input: crate::types::OptimizationMetric) -> Self {
324        self.inner = self.inner.optimization_metric(input);
325        self
326    }
327    /// <p>The accuracy metric used to optimize the predictor.</p>
328    pub fn set_optimization_metric(mut self, input: ::std::option::Option<crate::types::OptimizationMetric>) -> Self {
329        self.inner = self.inner.set_optimization_metric(input);
330        self
331    }
332    /// <p>The accuracy metric used to optimize the predictor.</p>
333    pub fn get_optimization_metric(&self) -> &::std::option::Option<crate::types::OptimizationMetric> {
334        self.inner.get_optimization_metric()
335    }
336    /// <p>Create an Explainability resource for the predictor.</p>
337    pub fn explain_predictor(mut self, input: bool) -> Self {
338        self.inner = self.inner.explain_predictor(input);
339        self
340    }
341    /// <p>Create an Explainability resource for the predictor.</p>
342    pub fn set_explain_predictor(mut self, input: ::std::option::Option<bool>) -> Self {
343        self.inner = self.inner.set_explain_predictor(input);
344        self
345    }
346    /// <p>Create an Explainability resource for the predictor.</p>
347    pub fn get_explain_predictor(&self) -> &::std::option::Option<bool> {
348        self.inner.get_explain_predictor()
349    }
350    ///
351    /// Appends an item to `Tags`.
352    ///
353    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
354    ///
355    /// <p>Optional metadata to help you categorize and organize your predictors. Each tag consists of a key and an optional value, both of which you define. Tag keys and values are case sensitive.</p>
356    /// <p>The following restrictions apply to tags:</p>
357    /// <ul>
358    /// <li>
359    /// <p>For each resource, each tag key must be unique and each tag key must have one value.</p></li>
360    /// <li>
361    /// <p>Maximum number of tags per resource: 50.</p></li>
362    /// <li>
363    /// <p>Maximum key length: 128 Unicode characters in UTF-8.</p></li>
364    /// <li>
365    /// <p>Maximum value length: 256 Unicode characters in UTF-8.</p></li>
366    /// <li>
367    /// <p>Accepted characters: all letters and numbers, spaces representable in UTF-8, and + - = . _ : / @. If your tagging schema is used across other services and resources, the character restrictions of those services also apply.</p></li>
368    /// <li>
369    /// <p>Key prefixes cannot include any upper or lowercase combination of <code>aws:</code> or <code>AWS:</code>. Values can have this prefix. If a tag value has <code>aws</code> as its prefix but the key does not, Forecast considers it to be a user tag and will count against the limit of 50 tags. Tags with only the key prefix of <code>aws</code> do not count against your tags per resource limit. You cannot edit or delete tag keys with this prefix.</p></li>
370    /// </ul>
371    pub fn tags(mut self, input: crate::types::Tag) -> Self {
372        self.inner = self.inner.tags(input);
373        self
374    }
375    /// <p>Optional metadata to help you categorize and organize your predictors. Each tag consists of a key and an optional value, both of which you define. Tag keys and values are case sensitive.</p>
376    /// <p>The following restrictions apply to tags:</p>
377    /// <ul>
378    /// <li>
379    /// <p>For each resource, each tag key must be unique and each tag key must have one value.</p></li>
380    /// <li>
381    /// <p>Maximum number of tags per resource: 50.</p></li>
382    /// <li>
383    /// <p>Maximum key length: 128 Unicode characters in UTF-8.</p></li>
384    /// <li>
385    /// <p>Maximum value length: 256 Unicode characters in UTF-8.</p></li>
386    /// <li>
387    /// <p>Accepted characters: all letters and numbers, spaces representable in UTF-8, and + - = . _ : / @. If your tagging schema is used across other services and resources, the character restrictions of those services also apply.</p></li>
388    /// <li>
389    /// <p>Key prefixes cannot include any upper or lowercase combination of <code>aws:</code> or <code>AWS:</code>. Values can have this prefix. If a tag value has <code>aws</code> as its prefix but the key does not, Forecast considers it to be a user tag and will count against the limit of 50 tags. Tags with only the key prefix of <code>aws</code> do not count against your tags per resource limit. You cannot edit or delete tag keys with this prefix.</p></li>
390    /// </ul>
391    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
392        self.inner = self.inner.set_tags(input);
393        self
394    }
395    /// <p>Optional metadata to help you categorize and organize your predictors. Each tag consists of a key and an optional value, both of which you define. Tag keys and values are case sensitive.</p>
396    /// <p>The following restrictions apply to tags:</p>
397    /// <ul>
398    /// <li>
399    /// <p>For each resource, each tag key must be unique and each tag key must have one value.</p></li>
400    /// <li>
401    /// <p>Maximum number of tags per resource: 50.</p></li>
402    /// <li>
403    /// <p>Maximum key length: 128 Unicode characters in UTF-8.</p></li>
404    /// <li>
405    /// <p>Maximum value length: 256 Unicode characters in UTF-8.</p></li>
406    /// <li>
407    /// <p>Accepted characters: all letters and numbers, spaces representable in UTF-8, and + - = . _ : / @. If your tagging schema is used across other services and resources, the character restrictions of those services also apply.</p></li>
408    /// <li>
409    /// <p>Key prefixes cannot include any upper or lowercase combination of <code>aws:</code> or <code>AWS:</code>. Values can have this prefix. If a tag value has <code>aws</code> as its prefix but the key does not, Forecast considers it to be a user tag and will count against the limit of 50 tags. Tags with only the key prefix of <code>aws</code> do not count against your tags per resource limit. You cannot edit or delete tag keys with this prefix.</p></li>
410    /// </ul>
411    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
412        self.inner.get_tags()
413    }
414    /// <p>The configuration details for predictor monitoring. Provide a name for the monitor resource to enable predictor monitoring.</p>
415    /// <p>Predictor monitoring allows you to see how your predictor's performance changes over time. For more information, see <a href="https://docs.aws.amazon.com/forecast/latest/dg/predictor-monitoring.html">Predictor Monitoring</a>.</p>
416    pub fn monitor_config(mut self, input: crate::types::MonitorConfig) -> Self {
417        self.inner = self.inner.monitor_config(input);
418        self
419    }
420    /// <p>The configuration details for predictor monitoring. Provide a name for the monitor resource to enable predictor monitoring.</p>
421    /// <p>Predictor monitoring allows you to see how your predictor's performance changes over time. For more information, see <a href="https://docs.aws.amazon.com/forecast/latest/dg/predictor-monitoring.html">Predictor Monitoring</a>.</p>
422    pub fn set_monitor_config(mut self, input: ::std::option::Option<crate::types::MonitorConfig>) -> Self {
423        self.inner = self.inner.set_monitor_config(input);
424        self
425    }
426    /// <p>The configuration details for predictor monitoring. Provide a name for the monitor resource to enable predictor monitoring.</p>
427    /// <p>Predictor monitoring allows you to see how your predictor's performance changes over time. For more information, see <a href="https://docs.aws.amazon.com/forecast/latest/dg/predictor-monitoring.html">Predictor Monitoring</a>.</p>
428    pub fn get_monitor_config(&self) -> &::std::option::Option<crate::types::MonitorConfig> {
429        self.inner.get_monitor_config()
430    }
431    /// <p>The time boundary Forecast uses to align and aggregate any data that doesn't align with your forecast frequency. Provide the unit of time and the time boundary as a key value pair. For more information on specifying a time boundary, see <a href="https://docs.aws.amazon.com/forecast/latest/dg/data-aggregation.html#specifying-time-boundary">Specifying a Time Boundary</a>. If you don't provide a time boundary, Forecast uses a set of <a href="https://docs.aws.amazon.com/forecast/latest/dg/data-aggregation.html#default-time-boundaries">Default Time Boundaries</a>.</p>
432    pub fn time_alignment_boundary(mut self, input: crate::types::TimeAlignmentBoundary) -> Self {
433        self.inner = self.inner.time_alignment_boundary(input);
434        self
435    }
436    /// <p>The time boundary Forecast uses to align and aggregate any data that doesn't align with your forecast frequency. Provide the unit of time and the time boundary as a key value pair. For more information on specifying a time boundary, see <a href="https://docs.aws.amazon.com/forecast/latest/dg/data-aggregation.html#specifying-time-boundary">Specifying a Time Boundary</a>. If you don't provide a time boundary, Forecast uses a set of <a href="https://docs.aws.amazon.com/forecast/latest/dg/data-aggregation.html#default-time-boundaries">Default Time Boundaries</a>.</p>
437    pub fn set_time_alignment_boundary(mut self, input: ::std::option::Option<crate::types::TimeAlignmentBoundary>) -> Self {
438        self.inner = self.inner.set_time_alignment_boundary(input);
439        self
440    }
441    /// <p>The time boundary Forecast uses to align and aggregate any data that doesn't align with your forecast frequency. Provide the unit of time and the time boundary as a key value pair. For more information on specifying a time boundary, see <a href="https://docs.aws.amazon.com/forecast/latest/dg/data-aggregation.html#specifying-time-boundary">Specifying a Time Boundary</a>. If you don't provide a time boundary, Forecast uses a set of <a href="https://docs.aws.amazon.com/forecast/latest/dg/data-aggregation.html#default-time-boundaries">Default Time Boundaries</a>.</p>
442    pub fn get_time_alignment_boundary(&self) -> &::std::option::Option<crate::types::TimeAlignmentBoundary> {
443        self.inner.get_time_alignment_boundary()
444    }
445}