# WARNING ABOUT GENERATED CODE
#
# This file is generated. See the contributing guide for more information:
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
#
# WARNING ABOUT GENERATED CODE

require 'seahorse/client/plugins/content_length.rb'
require 'aws-sdk-core/plugins/credentials_configuration.rb'
require 'aws-sdk-core/plugins/logging.rb'
require 'aws-sdk-core/plugins/param_converter.rb'
require 'aws-sdk-core/plugins/param_validator.rb'
require 'aws-sdk-core/plugins/user_agent.rb'
require 'aws-sdk-core/plugins/helpful_socket_errors.rb'
require 'aws-sdk-core/plugins/retry_errors.rb'
require 'aws-sdk-core/plugins/global_configuration.rb'
require 'aws-sdk-core/plugins/regional_endpoint.rb'
require 'aws-sdk-core/plugins/endpoint_discovery.rb'
require 'aws-sdk-core/plugins/endpoint_pattern.rb'
require 'aws-sdk-core/plugins/response_paging.rb'
require 'aws-sdk-core/plugins/stub_responses.rb'
require 'aws-sdk-core/plugins/idempotency_token.rb'
require 'aws-sdk-core/plugins/jsonvalue_converter.rb'
require 'aws-sdk-core/plugins/client_metrics_plugin.rb'
require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb'
require 'aws-sdk-core/plugins/transfer_encoding.rb'
require 'aws-sdk-core/plugins/signature_v4.rb'
require 'aws-sdk-core/plugins/protocols/json_rpc.rb'

Aws::Plugins::GlobalConfiguration.add_identifier(:forecastservice)

module Aws::ForecastService
  class Client < Seahorse::Client::Base

    include Aws::ClientStubs

    @identifier = :forecastservice

    set_api(ClientApi::API)

    add_plugin(Seahorse::Client::Plugins::ContentLength)
    add_plugin(Aws::Plugins::CredentialsConfiguration)
    add_plugin(Aws::Plugins::Logging)
    add_plugin(Aws::Plugins::ParamConverter)
    add_plugin(Aws::Plugins::ParamValidator)
    add_plugin(Aws::Plugins::UserAgent)
    add_plugin(Aws::Plugins::HelpfulSocketErrors)
    add_plugin(Aws::Plugins::RetryErrors)
    add_plugin(Aws::Plugins::GlobalConfiguration)
    add_plugin(Aws::Plugins::RegionalEndpoint)
    add_plugin(Aws::Plugins::EndpointDiscovery)
    add_plugin(Aws::Plugins::EndpointPattern)
    add_plugin(Aws::Plugins::ResponsePaging)
    add_plugin(Aws::Plugins::StubResponses)
    add_plugin(Aws::Plugins::IdempotencyToken)
    add_plugin(Aws::Plugins::JsonvalueConverter)
    add_plugin(Aws::Plugins::ClientMetricsPlugin)
    add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
    add_plugin(Aws::Plugins::TransferEncoding)
    add_plugin(Aws::Plugins::SignatureV4)
    add_plugin(Aws::Plugins::Protocols::JsonRpc)

    # @overload initialize(options)
    #   @param [Hash] options
    #   @option options [required, Aws::CredentialProvider] :credentials
    #     Your AWS credentials. This can be an instance of any one of the
    #     following classes:
    #
    #     * `Aws::Credentials` - Used for configuring static, non-refreshing
    #       credentials.
    #
    #     * `Aws::InstanceProfileCredentials` - Used for loading credentials
    #       from an EC2 IMDS on an EC2 instance.
    #
    #     * `Aws::SharedCredentials` - Used for loading credentials from a
    #       shared file, such as `~/.aws/config`.
    #
    #     * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
    #
    #     When `:credentials` are not configured directly, the following
    #     locations will be searched for credentials:
    #
    #     * `Aws.config[:credentials]`
    #     * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
    #     * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
    #     * `~/.aws/credentials`
    #     * `~/.aws/config`
    #     * EC2 IMDS instance profile - When used by default, the timeouts are
    #       very aggressive. Construct and pass an instance of
    #       `Aws::InstanceProfileCredentails` to enable retries and extended
    #       timeouts.
    #
    #   @option options [required, String] :region
    #     The AWS region to connect to.  The configured `:region` is
    #     used to determine the service `:endpoint`. When not passed,
    #     a default `:region` is search for in the following locations:
    #
    #     * `Aws.config[:region]`
    #     * `ENV['AWS_REGION']`
    #     * `ENV['AMAZON_REGION']`
    #     * `ENV['AWS_DEFAULT_REGION']`
    #     * `~/.aws/credentials`
    #     * `~/.aws/config`
    #
    #   @option options [String] :access_key_id
    #
    #   @option options [Boolean] :active_endpoint_cache (false)
    #     When set to `true`, a thread polling for endpoints will be running in
    #     the background every 60 secs (default). Defaults to `false`.
    #
    #   @option options [Boolean] :client_side_monitoring (false)
    #     When `true`, client-side metrics will be collected for all API requests from
    #     this client.
    #
    #   @option options [String] :client_side_monitoring_client_id ("")
    #     Allows you to provide an identifier for this client which will be attached to
    #     all generated client side metrics. Defaults to an empty string.
    #
    #   @option options [String] :client_side_monitoring_host ("127.0.0.1")
    #     Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client
    #     side monitoring agent is running on, where client metrics will be published via UDP.
    #
    #   @option options [Integer] :client_side_monitoring_port (31000)
    #     Required for publishing client metrics. The port that the client side monitoring
    #     agent is running on, where client metrics will be published via UDP.
    #
    #   @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher)
    #     Allows you to provide a custom client-side monitoring publisher class. By default,
    #     will use the Client Side Monitoring Agent Publisher.
    #
    #   @option options [Boolean] :convert_params (true)
    #     When `true`, an attempt is made to coerce request parameters into
    #     the required types.
    #
    #   @option options [Boolean] :disable_host_prefix_injection (false)
    #     Set to true to disable SDK automatically adding host prefix
    #     to default service endpoint when available.
    #
    #   @option options [String] :endpoint
    #     The client endpoint is normally constructed from the `:region`
    #     option. You should only configure an `:endpoint` when connecting
    #     to test endpoints. This should be avalid HTTP(S) URI.
    #
    #   @option options [Integer] :endpoint_cache_max_entries (1000)
    #     Used for the maximum size limit of the LRU cache storing endpoints data
    #     for endpoint discovery enabled operations. Defaults to 1000.
    #
    #   @option options [Integer] :endpoint_cache_max_threads (10)
    #     Used for the maximum threads in use for polling endpoints to be cached, defaults to 10.
    #
    #   @option options [Integer] :endpoint_cache_poll_interval (60)
    #     When :endpoint_discovery and :active_endpoint_cache is enabled,
    #     Use this option to config the time interval in seconds for making
    #     requests fetching endpoints information. Defaults to 60 sec.
    #
    #   @option options [Boolean] :endpoint_discovery (false)
    #     When set to `true`, endpoint discovery will be enabled for operations when available. Defaults to `false`.
    #
    #   @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
    #     The log formatter.
    #
    #   @option options [Symbol] :log_level (:info)
    #     The log level to send messages to the `:logger` at.
    #
    #   @option options [Logger] :logger
    #     The Logger instance to send log messages to.  If this option
    #     is not set, logging will be disabled.
    #
    #   @option options [String] :profile ("default")
    #     Used when loading credentials from the shared credentials file
    #     at HOME/.aws/credentials.  When not specified, 'default' is used.
    #
    #   @option options [Float] :retry_base_delay (0.3)
    #     The base delay in seconds used by the default backoff function.
    #
    #   @option options [Symbol] :retry_jitter (:none)
    #     A delay randomiser function used by the default backoff function. Some predefined functions can be referenced by name - :none, :equal, :full, otherwise a Proc that takes and returns a number.
    #
    #     @see https://www.awsarchitectureblog.com/2015/03/backoff.html
    #
    #   @option options [Integer] :retry_limit (3)
    #     The maximum number of times to retry failed requests.  Only
    #     ~ 500 level server errors and certain ~ 400 level client errors
    #     are retried.  Generally, these are throttling errors, data
    #     checksum errors, networking errors, timeout errors and auth
    #     errors from expired credentials.
    #
    #   @option options [Integer] :retry_max_delay (0)
    #     The maximum number of seconds to delay between retries (0 for no limit) used by the default backoff function.
    #
    #   @option options [String] :secret_access_key
    #
    #   @option options [String] :session_token
    #
    #   @option options [Boolean] :simple_json (false)
    #     Disables request parameter conversion, validation, and formatting.
    #     Also disable response data type conversions. This option is useful
    #     when you want to ensure the highest level of performance by
    #     avoiding overhead of walking request parameters and response data
    #     structures.
    #
    #     When `:simple_json` is enabled, the request parameters hash must
    #     be formatted exactly as the DynamoDB API expects.
    #
    #   @option options [Boolean] :stub_responses (false)
    #     Causes the client to return stubbed responses. By default
    #     fake responses are generated and returned. You can specify
    #     the response data to return or errors to raise by calling
    #     {ClientStubs#stub_responses}. See {ClientStubs} for more information.
    #
    #     ** Please note ** When response stubbing is enabled, no HTTP
    #     requests are made, and retries are disabled.
    #
    #   @option options [Boolean] :validate_params (true)
    #     When `true`, request parameters are validated before
    #     sending the request.
    #
    #   @option options [URI::HTTP,String] :http_proxy A proxy to send
    #     requests through.  Formatted like 'http://proxy.com:123'.
    #
    #   @option options [Float] :http_open_timeout (15) The number of
    #     seconds to wait when opening a HTTP session before rasing a
    #     `Timeout::Error`.
    #
    #   @option options [Integer] :http_read_timeout (60) The default
    #     number of seconds to wait for response data.  This value can
    #     safely be set
    #     per-request on the session yeidled by {#session_for}.
    #
    #   @option options [Float] :http_idle_timeout (5) The number of
    #     seconds a connection is allowed to sit idble before it is
    #     considered stale.  Stale connections are closed and removed
    #     from the pool before making a request.
    #
    #   @option options [Float] :http_continue_timeout (1) The number of
    #     seconds to wait for a 100-continue response before sending the
    #     request body.  This option has no effect unless the request has
    #     "Expect" header set to "100-continue".  Defaults to `nil` which
    #     disables this behaviour.  This value can safely be set per
    #     request on the session yeidled by {#session_for}.
    #
    #   @option options [Boolean] :http_wire_trace (false) When `true`,
    #     HTTP debug output will be sent to the `:logger`.
    #
    #   @option options [Boolean] :ssl_verify_peer (true) When `true`,
    #     SSL peer certificates are verified when establishing a
    #     connection.
    #
    #   @option options [String] :ssl_ca_bundle Full path to the SSL
    #     certificate authority bundle file that should be used when
    #     verifying peer certificates.  If you do not pass
    #     `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default
    #     will be used if available.
    #
    #   @option options [String] :ssl_ca_directory Full path of the
    #     directory that contains the unbundled SSL certificate
    #     authority files for verifying peer certificates.  If you do
    #     not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the
    #     system default will be used if available.
    #
    def initialize(*args)
      super
    end

    # @!group API Operations

    # Creates an Amazon Forecast dataset. The information about the dataset
    # that you provide helps Forecast understand how to consume the data for
    # model training. This includes the following:
    #
    # * <i> <code>DataFrequency</code> </i> - How frequently your historical
    #   time-series data is collected. Amazon Forecast uses this information
    #   when training the model and generating a forecast.
    #
    # * <i> <code>Domain</code> </i> and <i> <code>DatasetType</code> </i> -
    #   Each dataset has an associated dataset domain and a type within the
    #   domain. Amazon Forecast provides a list of predefined domains and
    #   types within each domain. For each unique dataset domain and type
    #   within the domain, Amazon Forecast requires your data to include a
    #   minimum set of predefined fields.
    #
    # * <i> <code>Schema</code> </i> - A schema specifies the fields of the
    #   dataset, including the field name and data type.
    #
    # After creating a dataset, you import your training data into the
    # dataset and add the dataset to a dataset group. You then use the
    # dataset group to create a predictor. For more information, see
    # howitworks-datasets-groups.
    #
    # To get a list of all your datasets, use the ListDatasets operation.
    #
    # <note markdown="1"> The `Status` of a dataset must be `ACTIVE` before you can import
    # training data. Use the DescribeDataset operation to get the status.
    #
    #  </note>
    #
    # @option params [required, String] :dataset_name
    #   A name for the dataset.
    #
    # @option params [required, String] :domain
    #   The domain associated with the dataset. The `Domain` and `DatasetType`
    #   that you choose determine the fields that must be present in the
    #   training data that you import to the dataset. For example, if you
    #   choose the `RETAIL` domain and `TARGET_TIME_SERIES` as the
    #   `DatasetType`, Amazon Forecast requires `item_id`, `timestamp`, and
    #   `demand` fields to be present in your data. For more information, see
    #   howitworks-datasets-groups.
    #
    # @option params [required, String] :dataset_type
    #   The dataset type. Valid values depend on the chosen `Domain`.
    #
    # @option params [String] :data_frequency
    #   The frequency of data collection.
    #
    #   Valid intervals are Y (Year), M (Month), W (Week), D (Day), H (Hour),
    #   30min (30 minutes), 15min (15 minutes), 10min (10 minutes), 5min (5
    #   minutes), and 1min (1 minute). For example, "D" indicates every day
    #   and "15min" indicates every 15 minutes.
    #
    # @option params [required, Types::Schema] :schema
    #   The schema for the dataset. The schema attributes and their order must
    #   match the fields in your data. The dataset `Domain` and `DatasetType`
    #   that you choose determine the minimum required fields in your training
    #   data. For information about the required fields for a specific dataset
    #   domain and type, see howitworks-domains-ds-types.
    #
    # @option params [Types::EncryptionConfig] :encryption_config
    #   An AWS Key Management Service (KMS) key and the AWS Identity and
    #   Access Management (IAM) role that Amazon Forecast can assume to access
    #   the key.
    #
    # @return [Types::CreateDatasetResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::CreateDatasetResponse#dataset_arn #dataset_arn} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.create_dataset({
    #     dataset_name: "Name", # required
    #     domain: "RETAIL", # required, accepts RETAIL, CUSTOM, INVENTORY_PLANNING, EC2_CAPACITY, WORK_FORCE, WEB_TRAFFIC, METRICS
    #     dataset_type: "TARGET_TIME_SERIES", # required, accepts TARGET_TIME_SERIES, RELATED_TIME_SERIES, ITEM_METADATA
    #     data_frequency: "Frequency",
    #     schema: { # required
    #       attributes: [
    #         {
    #           attribute_name: "Name",
    #           attribute_type: "string", # accepts string, integer, float, timestamp
    #         },
    #       ],
    #     },
    #     encryption_config: {
    #       role_arn: "Arn", # required
    #       kms_key_arn: "KMSKeyArn", # required
    #     },
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_arn #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/CreateDataset AWS API Documentation
    #
    # @overload create_dataset(params = {})
    # @param [Hash] params ({})
    def create_dataset(params = {}, options = {})
      req = build_request(:create_dataset, params)
      req.send_request(options)
    end

    # Creates an Amazon Forecast dataset group, which holds a collection of
    # related datasets. You can add datasets to the dataset group when you
    # create the dataset group, or you can add datasets later with the
    # UpdateDatasetGroup operation.
    #
    # After creating a dataset group and adding datasets, you use the
    # dataset group when you create a predictor. For more information, see
    # howitworks-datasets-groups.
    #
    # To get a list of all your datasets groups, use the ListDatasetGroups
    # operation.
    #
    # <note markdown="1"> The `Status` of a dataset group must be `ACTIVE` before you can create
    # a predictor using the dataset group. Use the DescribeDatasetGroup
    # operation to get the status.
    #
    #  </note>
    #
    # @option params [required, String] :dataset_group_name
    #   A name for the dataset group.
    #
    # @option params [required, String] :domain
    #   The domain associated with the dataset group. The `Domain` and
    #   `DatasetType` that you choose determine the fields that must be
    #   present in the training data that you import to the dataset. For
    #   example, if you choose the `RETAIL` domain and `TARGET_TIME_SERIES` as
    #   the `DatasetType`, Amazon Forecast requires `item_id`, `timestamp`,
    #   and `demand` fields to be present in your data. For more information,
    #   see howitworks-datasets-groups.
    #
    # @option params [Array<String>] :dataset_arns
    #   An array of Amazon Resource Names (ARNs) of the datasets that you want
    #   to include in the dataset group.
    #
    # @return [Types::CreateDatasetGroupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::CreateDatasetGroupResponse#dataset_group_arn #dataset_group_arn} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.create_dataset_group({
    #     dataset_group_name: "Name", # required
    #     domain: "RETAIL", # required, accepts RETAIL, CUSTOM, INVENTORY_PLANNING, EC2_CAPACITY, WORK_FORCE, WEB_TRAFFIC, METRICS
    #     dataset_arns: ["Arn"],
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_group_arn #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/CreateDatasetGroup AWS API Documentation
    #
    # @overload create_dataset_group(params = {})
    # @param [Hash] params ({})
    def create_dataset_group(params = {}, options = {})
      req = build_request(:create_dataset_group, params)
      req.send_request(options)
    end

    # Imports your training data to an Amazon Forecast dataset. You provide
    # the location of your training data in an Amazon Simple Storage Service
    # (Amazon S3) bucket and the Amazon Resource Name (ARN) of the dataset
    # that you want to import the data to.
    #
    # You must specify a DataSource object that includes an AWS Identity and
    # Access Management (IAM) role that Amazon Forecast can assume to access
    # the data. For more information, see aws-forecast-iam-roles.
    #
    # Two properties of the training data are optionally specified:
    #
    # * The delimiter that separates the data fields.
    #
    #   The default delimiter is a comma (,), which is the only supported
    #   delimiter in this release.
    #
    # * The format of timestamps.
    #
    #   If the format is not specified, Amazon Forecast expects the format
    #   to be "yyyy-MM-dd HH:mm:ss".
    #
    # When Amazon Forecast uploads your training data, it verifies that the
    # data was collected at the `DataFrequency` specified when the target
    # dataset was created. For more information, see CreateDataset and
    # howitworks-datasets-groups. Amazon Forecast also verifies the
    # delimiter and timestamp format.
    #
    # You can use the ListDatasetImportJobs operation to get a list of all
    # your dataset import jobs, filtered by specified criteria.
    #
    # To get a list of all your dataset import jobs, filtered by the
    # specified criteria, use the ListDatasetGroups operation.
    #
    # @option params [required, String] :dataset_import_job_name
    #   The name for the dataset import job. It is recommended to include the
    #   current timestamp in the name to guard against getting a
    #   `ResourceAlreadyExistsException` exception, for example,
    #   `20190721DatasetImport`.
    #
    # @option params [required, String] :dataset_arn
    #   The Amazon Resource Name (ARN) of the Amazon Forecast dataset that you
    #   want to import data to.
    #
    # @option params [required, Types::DataSource] :data_source
    #   The location of the training data to import and an AWS Identity and
    #   Access Management (IAM) role that Amazon Forecast can assume to access
    #   the data.
    #
    # @option params [String] :timestamp_format
    #   The format of timestamps in the dataset. Two formats are supported,
    #   dependent on the `DataFrequency` specified when the dataset was
    #   created.
    #
    #   * "yyyy-MM-dd"
    #
    #     For data frequencies: Y, M, W, and D
    #
    #   * "yyyy-MM-dd HH:mm:ss"
    #
    #     For data frequencies: H, 30min, 15min, and 1min; and optionally,
    #     for: Y, M, W, and D
    #
    # @return [Types::CreateDatasetImportJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::CreateDatasetImportJobResponse#dataset_import_job_arn #dataset_import_job_arn} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.create_dataset_import_job({
    #     dataset_import_job_name: "Name", # required
    #     dataset_arn: "Arn", # required
    #     data_source: { # required
    #       s3_config: { # required
    #         path: "S3Path", # required
    #         role_arn: "Arn", # required
    #         kms_key_arn: "KMSKeyArn",
    #       },
    #     },
    #     timestamp_format: "TimestampFormat",
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_import_job_arn #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/CreateDatasetImportJob AWS API Documentation
    #
    # @overload create_dataset_import_job(params = {})
    # @param [Hash] params ({})
    def create_dataset_import_job(params = {}, options = {})
      req = build_request(:create_dataset_import_job, params)
      req.send_request(options)
    end

    # Creates a forecast for each item in the `TARGET_TIME_SERIES` dataset
    # that was used to train the predictor. This is known as inference. To
    # retrieve the forecast for a single item at low latency, use the
    # operation. To export the complete forecast into your Amazon Simple
    # Storage Service (Amazon S3), use the CreateForecastExportJob
    # operation.
    #
    # The range of the forecast is determined by the `ForecastHorizon`,
    # specified in the CreatePredictor request, multiplied by the
    # `DataFrequency`, specified in the CreateDataset request. When you
    # query a forecast, you can request a specific date range within the
    # complete forecast.
    #
    # To get a list of all your forecasts, use the ListForecasts operation.
    #
    # <note markdown="1"> The forecasts generated by Amazon Forecast are in the same timezone as
    # the dataset that was used to create the predictor.
    #
    #  </note>
    #
    # For more information, see howitworks-forecast.
    #
    # <note markdown="1"> The `Status` of the forecast must be `ACTIVE` before you can query or
    # export the forecast. Use the DescribeForecast operation to get the
    # status.
    #
    #  </note>
    #
    # @option params [required, String] :forecast_name
    #   The name for the forecast.
    #
    # @option params [required, String] :predictor_arn
    #   The Amazon Resource Name (ARN) of the predictor to use to generate the
    #   forecast.
    #
    # @return [Types::CreateForecastResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::CreateForecastResponse#forecast_arn #forecast_arn} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.create_forecast({
    #     forecast_name: "Name", # required
    #     predictor_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.forecast_arn #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/CreateForecast AWS API Documentation
    #
    # @overload create_forecast(params = {})
    # @param [Hash] params ({})
    def create_forecast(params = {}, options = {})
      req = build_request(:create_forecast, params)
      req.send_request(options)
    end

    # Exports a forecast created by the CreateForecast operation to your
    # Amazon Simple Storage Service (Amazon S3) bucket.
    #
    # You must specify a DataDestination object that includes an AWS
    # Identity and Access Management (IAM) role that Amazon Forecast can
    # assume to access the Amazon S3 bucket. For more information, see
    # aws-forecast-iam-roles.
    #
    # For more information, see howitworks-forecast.
    #
    # To get a list of all your forecast export jobs, use the
    # ListForecastExportJobs operation.
    #
    # <note markdown="1"> The `Status` of the forecast export job must be `ACTIVE` before you
    # can access the forecast in your Amazon S3 bucket. Use the
    # DescribeForecastExportJob operation to get the status.
    #
    #  </note>
    #
    # @option params [required, String] :forecast_export_job_name
    #   The name for the forecast export job.
    #
    # @option params [required, String] :forecast_arn
    #   The Amazon Resource Name (ARN) of the forecast that you want to
    #   export.
    #
    # @option params [required, Types::DataDestination] :destination
    #   The path to the Amazon S3 bucket where you want to save the forecast
    #   and an AWS Identity and Access Management (IAM) role that Amazon
    #   Forecast can assume to access the bucket.
    #
    # @return [Types::CreateForecastExportJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::CreateForecastExportJobResponse#forecast_export_job_arn #forecast_export_job_arn} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.create_forecast_export_job({
    #     forecast_export_job_name: "Name", # required
    #     forecast_arn: "Arn", # required
    #     destination: { # required
    #       s3_config: { # required
    #         path: "S3Path", # required
    #         role_arn: "Arn", # required
    #         kms_key_arn: "KMSKeyArn",
    #       },
    #     },
    #   })
    #
    # @example Response structure
    #
    #   resp.forecast_export_job_arn #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/CreateForecastExportJob AWS API Documentation
    #
    # @overload create_forecast_export_job(params = {})
    # @param [Hash] params ({})
    def create_forecast_export_job(params = {}, options = {})
      req = build_request(:create_forecast_export_job, params)
      req.send_request(options)
    end

    # Creates an Amazon Forecast predictor.
    #
    # In the request, you provide a dataset group and either specify an
    # algorithm or let Amazon Forecast choose the algorithm for you using
    # AutoML. If you specify an algorithm, you also can override
    # algorithm-specific hyperparameters.
    #
    # Amazon Forecast uses the chosen algorithm to train a model using the
    # latest version of the datasets in the specified dataset group. The
    # result is called a predictor. You then generate a forecast using the
    # CreateForecast operation.
    #
    # After training a model, the `CreatePredictor` operation also evaluates
    # it. To see the evaluation metrics, use the GetAccuracyMetrics
    # operation. Always review the evaluation metrics before deciding to use
    # the predictor to generate a forecast.
    #
    # Optionally, you can specify a featurization configuration to fill and
    # aggragate the data fields in the `TARGET_TIME_SERIES` dataset to
    # improve model training. For more information, see FeaturizationConfig.
    #
    # **AutoML**
    #
    # If you set `PerformAutoML` to `true`, Amazon Forecast evaluates each
    # algorithm and chooses the one that minimizes the `objective function`.
    # The `objective function` is defined as the mean of the weighted p10,
    # p50, and p90 quantile losses. For more information, see
    # EvaluationResult.
    #
    # When AutoML is enabled, the following properties are disallowed:
    #
    # * `AlgorithmArn`
    #
    # * `HPOConfig`
    #
    # * `PerformHPO`
    #
    # * `TrainingParameters`
    #
    # To get a list of all your predictors, use the ListPredictors
    # operation.
    #
    # <note markdown="1"> The `Status` of the predictor must be `ACTIVE`, signifying that
    # training has completed, before you can use the predictor to create a
    # forecast. Use the DescribePredictor operation to get the status.
    #
    #  </note>
    #
    # @option params [required, String] :predictor_name
    #   A name for the predictor.
    #
    # @option params [String] :algorithm_arn
    #   The Amazon Resource Name (ARN) of the algorithm to use for model
    #   training. Required if `PerformAutoML` is not set to `true`.
    #
    #   **Supported algorithms**
    #
    #   * `arn:aws:forecast:::algorithm/ARIMA`
    #
    #   * `arn:aws:forecast:::algorithm/Deep_AR_Plus`
    #
    #     `- supports hyperparameter optimization (HPO)`
    #
    #   * `arn:aws:forecast:::algorithm/ETS`
    #
    #   * `arn:aws:forecast:::algorithm/NPTS`
    #
    #   * `arn:aws:forecast:::algorithm/Prophet`
    #
    # @option params [required, Integer] :forecast_horizon
    #   Specifies the number of time-steps that the model is trained to
    #   predict. The forecast horizon is also called the prediction length.
    #
    #   For example, if you configure a dataset for daily data collection
    #   (using the `DataFrequency` parameter of the CreateDataset operation)
    #   and set the forecast horizon to 10, the model returns predictions for
    #   10 days.
    #
    # @option params [Boolean] :perform_auto_ml
    #   Whether to perform AutoML. The default value is `false`. In this case,
    #   you are required to specify an algorithm.
    #
    #   If you want Amazon Forecast to evaluate the algorithms it provides and
    #   choose the best algorithm and configuration for your training dataset,
    #   set `PerformAutoML` to `true`. This is a good option if you aren't
    #   sure which algorithm is suitable for your application.
    #
    # @option params [Boolean] :perform_hpo
    #   Whether to perform hyperparameter optimization (HPO). HPO finds
    #   optimal hyperparameter values for your training data. The process of
    #   performing HPO is known as a hyperparameter tuning job.
    #
    #   The default value is `false`. In this case, Amazon Forecast uses
    #   default hyperparameter values from the chosen algorithm.
    #
    #   To override the default values, set `PerformHPO` to `true` and supply
    #   the HyperParameterTuningJobConfig object. The tuning job specifies an
    #   objective metric, the hyperparameters to optimize, and the valid range
    #   for each hyperparameter.
    #
    #   The following algorithms support HPO:
    #
    #   * DeepAR+
    #
    #   ^
    #
    # @option params [Hash<String,String>] :training_parameters
    #   The training parameters to override for model training. The parameters
    #   that you can override are listed in the individual algorithms in
    #   aws-forecast-choosing-recipes.
    #
    # @option params [Types::EvaluationParameters] :evaluation_parameters
    #   Used to override the default evaluation parameters of the specified
    #   algorithm. Amazon Forecast evaluates a predictor by splitting a
    #   dataset into training data and testing data. The evaluation parameters
    #   define how to perform the split and the number of iterations.
    #
    # @option params [Types::HyperParameterTuningJobConfig] :hpo_config
    #   Provides hyperparameter override values for the algorithm. If you
    #   don't provide this parameter, Amazon Forecast uses default values.
    #   The individual algorithms specify which hyperparameters support
    #   hyperparameter optimization (HPO). For more information, see
    #   aws-forecast-choosing-recipes.
    #
    # @option params [required, Types::InputDataConfig] :input_data_config
    #   Describes the dataset group that contains the data to use to train the
    #   predictor.
    #
    # @option params [required, Types::FeaturizationConfig] :featurization_config
    #   The featurization configuration.
    #
    # @option params [Types::EncryptionConfig] :encryption_config
    #   An AWS Key Management Service (KMS) key and the AWS Identity and
    #   Access Management (IAM) role that Amazon Forecast can assume to access
    #   the key.
    #
    # @return [Types::CreatePredictorResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::CreatePredictorResponse#predictor_arn #predictor_arn} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.create_predictor({
    #     predictor_name: "Name", # required
    #     algorithm_arn: "Arn",
    #     forecast_horizon: 1, # required
    #     perform_auto_ml: false,
    #     perform_hpo: false,
    #     training_parameters: {
    #       "ParameterKey" => "ParameterValue",
    #     },
    #     evaluation_parameters: {
    #       number_of_backtest_windows: 1,
    #       back_test_window_offset: 1,
    #     },
    #     hpo_config: {
    #       parameter_ranges: {
    #         categorical_parameter_ranges: [
    #           {
    #             name: "Name", # required
    #             values: ["Value"], # required
    #           },
    #         ],
    #         continuous_parameter_ranges: [
    #           {
    #             name: "Name", # required
    #             max_value: 1.0, # required
    #             min_value: 1.0, # required
    #             scaling_type: "Auto", # accepts Auto, Linear, Logarithmic, ReverseLogarithmic
    #           },
    #         ],
    #         integer_parameter_ranges: [
    #           {
    #             name: "Name", # required
    #             max_value: 1, # required
    #             min_value: 1, # required
    #             scaling_type: "Auto", # accepts Auto, Linear, Logarithmic, ReverseLogarithmic
    #           },
    #         ],
    #       },
    #     },
    #     input_data_config: { # required
    #       dataset_group_arn: "Arn", # required
    #       supplementary_features: [
    #         {
    #           name: "Name", # required
    #           value: "Value", # required
    #         },
    #       ],
    #     },
    #     featurization_config: { # required
    #       forecast_frequency: "Frequency", # required
    #       forecast_dimensions: ["Name"],
    #       featurizations: [
    #         {
    #           attribute_name: "Name", # required
    #           featurization_pipeline: [
    #             {
    #               featurization_method_name: "filling", # required, accepts filling
    #               featurization_method_parameters: {
    #                 "ParameterKey" => "ParameterValue",
    #               },
    #             },
    #           ],
    #         },
    #       ],
    #     },
    #     encryption_config: {
    #       role_arn: "Arn", # required
    #       kms_key_arn: "KMSKeyArn", # required
    #     },
    #   })
    #
    # @example Response structure
    #
    #   resp.predictor_arn #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/CreatePredictor AWS API Documentation
    #
    # @overload create_predictor(params = {})
    # @param [Hash] params ({})
    def create_predictor(params = {}, options = {})
      req = build_request(:create_predictor, params)
      req.send_request(options)
    end

    # Deletes an Amazon Forecast dataset created using the CreateDataset
    # operation. To be deleted, the dataset must have a status of `ACTIVE`
    # or `CREATE_FAILED`. Use the DescribeDataset operation to get the
    # status.
    #
    # @option params [required, String] :dataset_arn
    #   The Amazon Resource Name (ARN) of the dataset to delete.
    #
    # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.delete_dataset({
    #     dataset_arn: "Arn", # required
    #   })
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DeleteDataset AWS API Documentation
    #
    # @overload delete_dataset(params = {})
    # @param [Hash] params ({})
    def delete_dataset(params = {}, options = {})
      req = build_request(:delete_dataset, params)
      req.send_request(options)
    end

    # Deletes a dataset group created using the CreateDatasetGroup
    # operation. To be deleted, the dataset group must have a status of
    # `ACTIVE`, `CREATE_FAILED`, or `UPDATE_FAILED`. Use the
    # DescribeDatasetGroup operation to get the status.
    #
    # The operation deletes only the dataset group, not the datasets in the
    # group.
    #
    # @option params [required, String] :dataset_group_arn
    #   The Amazon Resource Name (ARN) of the dataset group to delete.
    #
    # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.delete_dataset_group({
    #     dataset_group_arn: "Arn", # required
    #   })
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DeleteDatasetGroup AWS API Documentation
    #
    # @overload delete_dataset_group(params = {})
    # @param [Hash] params ({})
    def delete_dataset_group(params = {}, options = {})
      req = build_request(:delete_dataset_group, params)
      req.send_request(options)
    end

    # Deletes a dataset import job created using the CreateDatasetImportJob
    # operation. To be deleted, the import job must have a status of
    # `ACTIVE` or `CREATE_FAILED`. Use the DescribeDatasetImportJob
    # operation to get the status.
    #
    # @option params [required, String] :dataset_import_job_arn
    #   The Amazon Resource Name (ARN) of the dataset import job to delete.
    #
    # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.delete_dataset_import_job({
    #     dataset_import_job_arn: "Arn", # required
    #   })
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DeleteDatasetImportJob AWS API Documentation
    #
    # @overload delete_dataset_import_job(params = {})
    # @param [Hash] params ({})
    def delete_dataset_import_job(params = {}, options = {})
      req = build_request(:delete_dataset_import_job, params)
      req.send_request(options)
    end

    # Deletes a forecast created using the CreateForecast operation. To be
    # deleted, the forecast must have a status of `ACTIVE` or
    # `CREATE_FAILED`. Use the DescribeForecast operation to get the status.
    #
    # You can't delete a forecast while it is being exported.
    #
    # @option params [required, String] :forecast_arn
    #   The Amazon Resource Name (ARN) of the forecast to delete.
    #
    # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.delete_forecast({
    #     forecast_arn: "Arn", # required
    #   })
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DeleteForecast AWS API Documentation
    #
    # @overload delete_forecast(params = {})
    # @param [Hash] params ({})
    def delete_forecast(params = {}, options = {})
      req = build_request(:delete_forecast, params)
      req.send_request(options)
    end

    # Deletes a forecast export job created using the
    # CreateForecastExportJob operation. To be deleted, the export job must
    # have a status of `ACTIVE` or `CREATE_FAILED`. Use the
    # DescribeForecastExportJob operation to get the status.
    #
    # @option params [required, String] :forecast_export_job_arn
    #   The Amazon Resource Name (ARN) of the forecast export job to delete.
    #
    # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.delete_forecast_export_job({
    #     forecast_export_job_arn: "Arn", # required
    #   })
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DeleteForecastExportJob AWS API Documentation
    #
    # @overload delete_forecast_export_job(params = {})
    # @param [Hash] params ({})
    def delete_forecast_export_job(params = {}, options = {})
      req = build_request(:delete_forecast_export_job, params)
      req.send_request(options)
    end

    # Deletes a predictor created using the CreatePredictor operation. To be
    # deleted, the predictor must have a status of `ACTIVE` or
    # `CREATE_FAILED`. Use the DescribePredictor operation to get the
    # status.
    #
    # Any forecasts generated by the predictor will no longer be available.
    #
    # @option params [required, String] :predictor_arn
    #   The Amazon Resource Name (ARN) of the predictor to delete.
    #
    # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.delete_predictor({
    #     predictor_arn: "Arn", # required
    #   })
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DeletePredictor AWS API Documentation
    #
    # @overload delete_predictor(params = {})
    # @param [Hash] params ({})
    def delete_predictor(params = {}, options = {})
      req = build_request(:delete_predictor, params)
      req.send_request(options)
    end

    # Describes an Amazon Forecast dataset created using the CreateDataset
    # operation.
    #
    # In addition to listing the properties provided by the user in the
    # `CreateDataset` request, this operation includes the following
    # properties:
    #
    # * `CreationTime`
    #
    # * `LastModificationTime`
    #
    # * `Status`
    #
    # @option params [required, String] :dataset_arn
    #   The Amazon Resource Name (ARN) of the dataset.
    #
    # @return [Types::DescribeDatasetResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::DescribeDatasetResponse#dataset_arn #dataset_arn} => String
    #   * {Types::DescribeDatasetResponse#dataset_name #dataset_name} => String
    #   * {Types::DescribeDatasetResponse#domain #domain} => String
    #   * {Types::DescribeDatasetResponse#dataset_type #dataset_type} => String
    #   * {Types::DescribeDatasetResponse#data_frequency #data_frequency} => String
    #   * {Types::DescribeDatasetResponse#schema #schema} => Types::Schema
    #   * {Types::DescribeDatasetResponse#encryption_config #encryption_config} => Types::EncryptionConfig
    #   * {Types::DescribeDatasetResponse#status #status} => String
    #   * {Types::DescribeDatasetResponse#creation_time #creation_time} => Time
    #   * {Types::DescribeDatasetResponse#last_modification_time #last_modification_time} => Time
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.describe_dataset({
    #     dataset_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_arn #=> String
    #   resp.dataset_name #=> String
    #   resp.domain #=> String, one of "RETAIL", "CUSTOM", "INVENTORY_PLANNING", "EC2_CAPACITY", "WORK_FORCE", "WEB_TRAFFIC", "METRICS"
    #   resp.dataset_type #=> String, one of "TARGET_TIME_SERIES", "RELATED_TIME_SERIES", "ITEM_METADATA"
    #   resp.data_frequency #=> String
    #   resp.schema.attributes #=> Array
    #   resp.schema.attributes[0].attribute_name #=> String
    #   resp.schema.attributes[0].attribute_type #=> String, one of "string", "integer", "float", "timestamp"
    #   resp.encryption_config.role_arn #=> String
    #   resp.encryption_config.kms_key_arn #=> String
    #   resp.status #=> String
    #   resp.creation_time #=> Time
    #   resp.last_modification_time #=> Time
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DescribeDataset AWS API Documentation
    #
    # @overload describe_dataset(params = {})
    # @param [Hash] params ({})
    def describe_dataset(params = {}, options = {})
      req = build_request(:describe_dataset, params)
      req.send_request(options)
    end

    # Describes a dataset group created using the CreateDatasetGroup
    # operation.
    #
    # In addition to listing the properties provided by the user in the
    # `CreateDatasetGroup` request, this operation includes the following
    # properties:
    #
    # * `DatasetArns` - The datasets belonging to the group.
    #
    # * `CreationTime`
    #
    # * `LastModificationTime`
    #
    # * `Status`
    #
    # @option params [required, String] :dataset_group_arn
    #   The Amazon Resource Name (ARN) of the dataset group.
    #
    # @return [Types::DescribeDatasetGroupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::DescribeDatasetGroupResponse#dataset_group_name #dataset_group_name} => String
    #   * {Types::DescribeDatasetGroupResponse#dataset_group_arn #dataset_group_arn} => String
    #   * {Types::DescribeDatasetGroupResponse#dataset_arns #dataset_arns} => Array&lt;String&gt;
    #   * {Types::DescribeDatasetGroupResponse#domain #domain} => String
    #   * {Types::DescribeDatasetGroupResponse#status #status} => String
    #   * {Types::DescribeDatasetGroupResponse#creation_time #creation_time} => Time
    #   * {Types::DescribeDatasetGroupResponse#last_modification_time #last_modification_time} => Time
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.describe_dataset_group({
    #     dataset_group_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_group_name #=> String
    #   resp.dataset_group_arn #=> String
    #   resp.dataset_arns #=> Array
    #   resp.dataset_arns[0] #=> String
    #   resp.domain #=> String, one of "RETAIL", "CUSTOM", "INVENTORY_PLANNING", "EC2_CAPACITY", "WORK_FORCE", "WEB_TRAFFIC", "METRICS"
    #   resp.status #=> String
    #   resp.creation_time #=> Time
    #   resp.last_modification_time #=> Time
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DescribeDatasetGroup AWS API Documentation
    #
    # @overload describe_dataset_group(params = {})
    # @param [Hash] params ({})
    def describe_dataset_group(params = {}, options = {})
      req = build_request(:describe_dataset_group, params)
      req.send_request(options)
    end

    # Describes a dataset import job created using the
    # CreateDatasetImportJob operation.
    #
    # In addition to listing the properties provided by the user in the
    # `CreateDatasetImportJob` request, this operation includes the
    # following properties:
    #
    # * `CreationTime`
    #
    # * `LastModificationTime`
    #
    # * `DataSize`
    #
    # * `FieldStatistics`
    #
    # * `Status`
    #
    # * `Message` - If an error occurred, information about the error.
    #
    # @option params [required, String] :dataset_import_job_arn
    #   The Amazon Resource Name (ARN) of the dataset import job.
    #
    # @return [Types::DescribeDatasetImportJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::DescribeDatasetImportJobResponse#dataset_import_job_name #dataset_import_job_name} => String
    #   * {Types::DescribeDatasetImportJobResponse#dataset_import_job_arn #dataset_import_job_arn} => String
    #   * {Types::DescribeDatasetImportJobResponse#dataset_arn #dataset_arn} => String
    #   * {Types::DescribeDatasetImportJobResponse#timestamp_format #timestamp_format} => String
    #   * {Types::DescribeDatasetImportJobResponse#data_source #data_source} => Types::DataSource
    #   * {Types::DescribeDatasetImportJobResponse#field_statistics #field_statistics} => Hash&lt;String,Types::Statistics&gt;
    #   * {Types::DescribeDatasetImportJobResponse#data_size #data_size} => Float
    #   * {Types::DescribeDatasetImportJobResponse#status #status} => String
    #   * {Types::DescribeDatasetImportJobResponse#message #message} => String
    #   * {Types::DescribeDatasetImportJobResponse#creation_time #creation_time} => Time
    #   * {Types::DescribeDatasetImportJobResponse#last_modification_time #last_modification_time} => Time
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.describe_dataset_import_job({
    #     dataset_import_job_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_import_job_name #=> String
    #   resp.dataset_import_job_arn #=> String
    #   resp.dataset_arn #=> String
    #   resp.timestamp_format #=> String
    #   resp.data_source.s3_config.path #=> String
    #   resp.data_source.s3_config.role_arn #=> String
    #   resp.data_source.s3_config.kms_key_arn #=> String
    #   resp.field_statistics #=> Hash
    #   resp.field_statistics["String"].count #=> Integer
    #   resp.field_statistics["String"].count_distinct #=> Integer
    #   resp.field_statistics["String"].count_null #=> Integer
    #   resp.field_statistics["String"].count_nan #=> Integer
    #   resp.field_statistics["String"].min #=> String
    #   resp.field_statistics["String"].max #=> String
    #   resp.field_statistics["String"].avg #=> Float
    #   resp.field_statistics["String"].stddev #=> Float
    #   resp.data_size #=> Float
    #   resp.status #=> String
    #   resp.message #=> String
    #   resp.creation_time #=> Time
    #   resp.last_modification_time #=> Time
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DescribeDatasetImportJob AWS API Documentation
    #
    # @overload describe_dataset_import_job(params = {})
    # @param [Hash] params ({})
    def describe_dataset_import_job(params = {}, options = {})
      req = build_request(:describe_dataset_import_job, params)
      req.send_request(options)
    end

    # Describes a forecast created using the CreateForecast operation.
    #
    # In addition to listing the properties provided by the user in the
    # `CreateForecast` request, this operation includes the following
    # properties:
    #
    # * `DatasetGroupArn` - The dataset group that provided the training
    #   data.
    #
    # * `CreationTime`
    #
    # * `LastModificationTime`
    #
    # * `Status`
    #
    # * `Message` - If an error occurred, information about the error.
    #
    # @option params [required, String] :forecast_arn
    #   The Amazon Resource Name (ARN) of the forecast.
    #
    # @return [Types::DescribeForecastResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::DescribeForecastResponse#forecast_arn #forecast_arn} => String
    #   * {Types::DescribeForecastResponse#forecast_name #forecast_name} => String
    #   * {Types::DescribeForecastResponse#predictor_arn #predictor_arn} => String
    #   * {Types::DescribeForecastResponse#dataset_group_arn #dataset_group_arn} => String
    #   * {Types::DescribeForecastResponse#status #status} => String
    #   * {Types::DescribeForecastResponse#message #message} => String
    #   * {Types::DescribeForecastResponse#creation_time #creation_time} => Time
    #   * {Types::DescribeForecastResponse#last_modification_time #last_modification_time} => Time
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.describe_forecast({
    #     forecast_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.forecast_arn #=> String
    #   resp.forecast_name #=> String
    #   resp.predictor_arn #=> String
    #   resp.dataset_group_arn #=> String
    #   resp.status #=> String
    #   resp.message #=> String
    #   resp.creation_time #=> Time
    #   resp.last_modification_time #=> Time
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DescribeForecast AWS API Documentation
    #
    # @overload describe_forecast(params = {})
    # @param [Hash] params ({})
    def describe_forecast(params = {}, options = {})
      req = build_request(:describe_forecast, params)
      req.send_request(options)
    end

    # Describes a forecast export job created using the
    # CreateForecastExportJob operation.
    #
    # In addition to listing the properties provided by the user in the
    # `CreateForecastExportJob` request, this operation includes the
    # following properties:
    #
    # * `CreationTime`
    #
    # * `LastModificationTime`
    #
    # * `Status`
    #
    # * `Message` - If an error occurred, information about the error.
    #
    # @option params [required, String] :forecast_export_job_arn
    #   The Amazon Resource Name (ARN) of the forecast export job.
    #
    # @return [Types::DescribeForecastExportJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::DescribeForecastExportJobResponse#forecast_export_job_arn #forecast_export_job_arn} => String
    #   * {Types::DescribeForecastExportJobResponse#forecast_export_job_name #forecast_export_job_name} => String
    #   * {Types::DescribeForecastExportJobResponse#forecast_arn #forecast_arn} => String
    #   * {Types::DescribeForecastExportJobResponse#destination #destination} => Types::DataDestination
    #   * {Types::DescribeForecastExportJobResponse#message #message} => String
    #   * {Types::DescribeForecastExportJobResponse#status #status} => String
    #   * {Types::DescribeForecastExportJobResponse#creation_time #creation_time} => Time
    #   * {Types::DescribeForecastExportJobResponse#last_modification_time #last_modification_time} => Time
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.describe_forecast_export_job({
    #     forecast_export_job_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.forecast_export_job_arn #=> String
    #   resp.forecast_export_job_name #=> String
    #   resp.forecast_arn #=> String
    #   resp.destination.s3_config.path #=> String
    #   resp.destination.s3_config.role_arn #=> String
    #   resp.destination.s3_config.kms_key_arn #=> String
    #   resp.message #=> String
    #   resp.status #=> String
    #   resp.creation_time #=> Time
    #   resp.last_modification_time #=> Time
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DescribeForecastExportJob AWS API Documentation
    #
    # @overload describe_forecast_export_job(params = {})
    # @param [Hash] params ({})
    def describe_forecast_export_job(params = {}, options = {})
      req = build_request(:describe_forecast_export_job, params)
      req.send_request(options)
    end

    # Describes a predictor created using the CreatePredictor operation.
    #
    # In addition to listing the properties provided by the user in the
    # `CreatePredictor` request, this operation includes the following
    # properties:
    #
    # * `DatasetImportJobArns` - The dataset import jobs used to import
    #   training data.
    #
    # * `AutoMLAlgorithmArns` - If AutoML is performed, the algorithms
    #   evaluated.
    #
    # * `CreationTime`
    #
    # * `LastModificationTime`
    #
    # * `Status`
    #
    # * `Message` - If an error occurred, information about the error.
    #
    # @option params [required, String] :predictor_arn
    #   The Amazon Resource Name (ARN) of the predictor that you want
    #   information about.
    #
    # @return [Types::DescribePredictorResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::DescribePredictorResponse#predictor_arn #predictor_arn} => String
    #   * {Types::DescribePredictorResponse#predictor_name #predictor_name} => String
    #   * {Types::DescribePredictorResponse#algorithm_arn #algorithm_arn} => String
    #   * {Types::DescribePredictorResponse#forecast_horizon #forecast_horizon} => Integer
    #   * {Types::DescribePredictorResponse#perform_auto_ml #perform_auto_ml} => Boolean
    #   * {Types::DescribePredictorResponse#perform_hpo #perform_hpo} => Boolean
    #   * {Types::DescribePredictorResponse#training_parameters #training_parameters} => Hash&lt;String,String&gt;
    #   * {Types::DescribePredictorResponse#evaluation_parameters #evaluation_parameters} => Types::EvaluationParameters
    #   * {Types::DescribePredictorResponse#hpo_config #hpo_config} => Types::HyperParameterTuningJobConfig
    #   * {Types::DescribePredictorResponse#input_data_config #input_data_config} => Types::InputDataConfig
    #   * {Types::DescribePredictorResponse#featurization_config #featurization_config} => Types::FeaturizationConfig
    #   * {Types::DescribePredictorResponse#encryption_config #encryption_config} => Types::EncryptionConfig
    #   * {Types::DescribePredictorResponse#dataset_import_job_arns #dataset_import_job_arns} => Array&lt;String&gt;
    #   * {Types::DescribePredictorResponse#auto_ml_algorithm_arns #auto_ml_algorithm_arns} => Array&lt;String&gt;
    #   * {Types::DescribePredictorResponse#status #status} => String
    #   * {Types::DescribePredictorResponse#message #message} => String
    #   * {Types::DescribePredictorResponse#creation_time #creation_time} => Time
    #   * {Types::DescribePredictorResponse#last_modification_time #last_modification_time} => Time
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.describe_predictor({
    #     predictor_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.predictor_arn #=> String
    #   resp.predictor_name #=> String
    #   resp.algorithm_arn #=> String
    #   resp.forecast_horizon #=> Integer
    #   resp.perform_auto_ml #=> Boolean
    #   resp.perform_hpo #=> Boolean
    #   resp.training_parameters #=> Hash
    #   resp.training_parameters["ParameterKey"] #=> String
    #   resp.evaluation_parameters.number_of_backtest_windows #=> Integer
    #   resp.evaluation_parameters.back_test_window_offset #=> Integer
    #   resp.hpo_config.parameter_ranges.categorical_parameter_ranges #=> Array
    #   resp.hpo_config.parameter_ranges.categorical_parameter_ranges[0].name #=> String
    #   resp.hpo_config.parameter_ranges.categorical_parameter_ranges[0].values #=> Array
    #   resp.hpo_config.parameter_ranges.categorical_parameter_ranges[0].values[0] #=> String
    #   resp.hpo_config.parameter_ranges.continuous_parameter_ranges #=> Array
    #   resp.hpo_config.parameter_ranges.continuous_parameter_ranges[0].name #=> String
    #   resp.hpo_config.parameter_ranges.continuous_parameter_ranges[0].max_value #=> Float
    #   resp.hpo_config.parameter_ranges.continuous_parameter_ranges[0].min_value #=> Float
    #   resp.hpo_config.parameter_ranges.continuous_parameter_ranges[0].scaling_type #=> String, one of "Auto", "Linear", "Logarithmic", "ReverseLogarithmic"
    #   resp.hpo_config.parameter_ranges.integer_parameter_ranges #=> Array
    #   resp.hpo_config.parameter_ranges.integer_parameter_ranges[0].name #=> String
    #   resp.hpo_config.parameter_ranges.integer_parameter_ranges[0].max_value #=> Integer
    #   resp.hpo_config.parameter_ranges.integer_parameter_ranges[0].min_value #=> Integer
    #   resp.hpo_config.parameter_ranges.integer_parameter_ranges[0].scaling_type #=> String, one of "Auto", "Linear", "Logarithmic", "ReverseLogarithmic"
    #   resp.input_data_config.dataset_group_arn #=> String
    #   resp.input_data_config.supplementary_features #=> Array
    #   resp.input_data_config.supplementary_features[0].name #=> String
    #   resp.input_data_config.supplementary_features[0].value #=> String
    #   resp.featurization_config.forecast_frequency #=> String
    #   resp.featurization_config.forecast_dimensions #=> Array
    #   resp.featurization_config.forecast_dimensions[0] #=> String
    #   resp.featurization_config.featurizations #=> Array
    #   resp.featurization_config.featurizations[0].attribute_name #=> String
    #   resp.featurization_config.featurizations[0].featurization_pipeline #=> Array
    #   resp.featurization_config.featurizations[0].featurization_pipeline[0].featurization_method_name #=> String, one of "filling"
    #   resp.featurization_config.featurizations[0].featurization_pipeline[0].featurization_method_parameters #=> Hash
    #   resp.featurization_config.featurizations[0].featurization_pipeline[0].featurization_method_parameters["ParameterKey"] #=> String
    #   resp.encryption_config.role_arn #=> String
    #   resp.encryption_config.kms_key_arn #=> String
    #   resp.dataset_import_job_arns #=> Array
    #   resp.dataset_import_job_arns[0] #=> String
    #   resp.auto_ml_algorithm_arns #=> Array
    #   resp.auto_ml_algorithm_arns[0] #=> String
    #   resp.status #=> String
    #   resp.message #=> String
    #   resp.creation_time #=> Time
    #   resp.last_modification_time #=> Time
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/DescribePredictor AWS API Documentation
    #
    # @overload describe_predictor(params = {})
    # @param [Hash] params ({})
    def describe_predictor(params = {}, options = {})
      req = build_request(:describe_predictor, params)
      req.send_request(options)
    end

    # Provides metrics on the accuracy of the models that were trained by
    # the CreatePredictor operation. Use metrics to see how well the model
    # performed and to decide whether to use the predictor to generate a
    # forecast.
    #
    # Metrics are generated for each backtest window evaluated. For more
    # information, see EvaluationParameters.
    #
    # The parameters of the `filling` method determine which items
    # contribute to the metrics. If `zero` is specified, all items
    # contribute. If `nan` is specified, only those items that have complete
    # data in the range being evaluated contribute. For more information,
    # see FeaturizationMethod.
    #
    # For an example of how to train a model and review metrics, see
    # getting-started.
    #
    # @option params [required, String] :predictor_arn
    #   The Amazon Resource Name (ARN) of the predictor to get metrics for.
    #
    # @return [Types::GetAccuracyMetricsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::GetAccuracyMetricsResponse#predictor_evaluation_results #predictor_evaluation_results} => Array&lt;Types::EvaluationResult&gt;
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.get_accuracy_metrics({
    #     predictor_arn: "Arn", # required
    #   })
    #
    # @example Response structure
    #
    #   resp.predictor_evaluation_results #=> Array
    #   resp.predictor_evaluation_results[0].algorithm_arn #=> String
    #   resp.predictor_evaluation_results[0].test_windows #=> Array
    #   resp.predictor_evaluation_results[0].test_windows[0].test_window_start #=> Time
    #   resp.predictor_evaluation_results[0].test_windows[0].test_window_end #=> Time
    #   resp.predictor_evaluation_results[0].test_windows[0].item_count #=> Integer
    #   resp.predictor_evaluation_results[0].test_windows[0].evaluation_type #=> String, one of "SUMMARY", "COMPUTED"
    #   resp.predictor_evaluation_results[0].test_windows[0].metrics.rmse #=> Float
    #   resp.predictor_evaluation_results[0].test_windows[0].metrics.weighted_quantile_losses #=> Array
    #   resp.predictor_evaluation_results[0].test_windows[0].metrics.weighted_quantile_losses[0].quantile #=> Float
    #   resp.predictor_evaluation_results[0].test_windows[0].metrics.weighted_quantile_losses[0].loss_value #=> Float
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/GetAccuracyMetrics AWS API Documentation
    #
    # @overload get_accuracy_metrics(params = {})
    # @param [Hash] params ({})
    def get_accuracy_metrics(params = {}, options = {})
      req = build_request(:get_accuracy_metrics, params)
      req.send_request(options)
    end

    # Returns a list of dataset groups created using the CreateDatasetGroup
    # operation. For each dataset group, a summary of its properties,
    # including its Amazon Resource Name (ARN), is returned. You can
    # retrieve the complete set of properties by using the ARN with the
    # DescribeDatasetGroup operation.
    #
    # @option params [String] :next_token
    #   If the result of the previous request was truncated, the response
    #   includes a `NextToken`. To retrieve the next set of results, use the
    #   token in the next request. Tokens expire after 24 hours.
    #
    # @option params [Integer] :max_results
    #   The number of items to return in the response.
    #
    # @return [Types::ListDatasetGroupsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::ListDatasetGroupsResponse#dataset_groups #dataset_groups} => Array&lt;Types::DatasetGroupSummary&gt;
    #   * {Types::ListDatasetGroupsResponse#next_token #next_token} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.list_dataset_groups({
    #     next_token: "NextToken",
    #     max_results: 1,
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_groups #=> Array
    #   resp.dataset_groups[0].dataset_group_arn #=> String
    #   resp.dataset_groups[0].dataset_group_name #=> String
    #   resp.dataset_groups[0].creation_time #=> Time
    #   resp.dataset_groups[0].last_modification_time #=> Time
    #   resp.next_token #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/ListDatasetGroups AWS API Documentation
    #
    # @overload list_dataset_groups(params = {})
    # @param [Hash] params ({})
    def list_dataset_groups(params = {}, options = {})
      req = build_request(:list_dataset_groups, params)
      req.send_request(options)
    end

    # Returns a list of dataset import jobs created using the
    # CreateDatasetImportJob operation. For each import job, a summary of
    # its properties, including its Amazon Resource Name (ARN), is returned.
    # You can retrieve the complete set of properties by using the ARN with
    # the DescribeDatasetImportJob operation. You can filter the list by
    # providing an array of Filter objects.
    #
    # @option params [String] :next_token
    #   If the result of the previous request was truncated, the response
    #   includes a `NextToken`. To retrieve the next set of results, use the
    #   token in the next request. Tokens expire after 24 hours.
    #
    # @option params [Integer] :max_results
    #   The number of items to return in the response.
    #
    # @option params [Array<Types::Filter>] :filters
    #   An array of filters. For each filter, you provide a condition and a
    #   match statement. The condition is either `IS` or `IS_NOT`, which
    #   specifies whether to include or exclude, respectively, from the list,
    #   the predictors that match the statement. The match statement consists
    #   of a key and a value. In this release, `Name` is the only valid key,
    #   which filters on the `DatasetImportJobName` property.
    #
    #   * `Condition` - `IS` or `IS_NOT`
    #
    #   * `Key` - `Name`
    #
    #   * `Value` - the value to match
    #
    #   For example, to list all dataset import jobs named
    #   *my\_dataset\_import\_job*, you would specify:
    #
    #   `"Filters": [ \{ "Condition": "IS", "Key": "Name", "Value":
    #   "my_dataset_import_job" \} ]`
    #
    # @return [Types::ListDatasetImportJobsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::ListDatasetImportJobsResponse#dataset_import_jobs #dataset_import_jobs} => Array&lt;Types::DatasetImportJobSummary&gt;
    #   * {Types::ListDatasetImportJobsResponse#next_token #next_token} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.list_dataset_import_jobs({
    #     next_token: "NextToken",
    #     max_results: 1,
    #     filters: [
    #       {
    #         key: "String", # required
    #         value: "Arn", # required
    #         condition: "IS", # required, accepts IS, IS_NOT
    #       },
    #     ],
    #   })
    #
    # @example Response structure
    #
    #   resp.dataset_import_jobs #=> Array
    #   resp.dataset_import_jobs[0].dataset_import_job_arn #=> String
    #   resp.dataset_import_jobs[0].dataset_import_job_name #=> String
    #   resp.dataset_import_jobs[0].data_source.s3_config.path #=> String
    #   resp.dataset_import_jobs[0].data_source.s3_config.role_arn #=> String
    #   resp.dataset_import_jobs[0].data_source.s3_config.kms_key_arn #=> String
    #   resp.dataset_import_jobs[0].status #=> String
    #   resp.dataset_import_jobs[0].message #=> String
    #   resp.dataset_import_jobs[0].creation_time #=> Time
    #   resp.dataset_import_jobs[0].last_modification_time #=> Time
    #   resp.next_token #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/ListDatasetImportJobs AWS API Documentation
    #
    # @overload list_dataset_import_jobs(params = {})
    # @param [Hash] params ({})
    def list_dataset_import_jobs(params = {}, options = {})
      req = build_request(:list_dataset_import_jobs, params)
      req.send_request(options)
    end

    # Returns a list of datasets created using the CreateDataset operation.
    # For each dataset, a summary of its properties, including its Amazon
    # Resource Name (ARN), is returned. You can retrieve the complete set of
    # properties by using the ARN with the DescribeDataset operation.
    #
    # @option params [String] :next_token
    #   If the result of the previous request was truncated, the response
    #   includes a `NextToken`. To retrieve the next set of results, use the
    #   token in the next request. Tokens expire after 24 hours.
    #
    # @option params [Integer] :max_results
    #   The number of items to return in the response.
    #
    # @return [Types::ListDatasetsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::ListDatasetsResponse#datasets #datasets} => Array&lt;Types::DatasetSummary&gt;
    #   * {Types::ListDatasetsResponse#next_token #next_token} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.list_datasets({
    #     next_token: "NextToken",
    #     max_results: 1,
    #   })
    #
    # @example Response structure
    #
    #   resp.datasets #=> Array
    #   resp.datasets[0].dataset_arn #=> String
    #   resp.datasets[0].dataset_name #=> String
    #   resp.datasets[0].dataset_type #=> String, one of "TARGET_TIME_SERIES", "RELATED_TIME_SERIES", "ITEM_METADATA"
    #   resp.datasets[0].domain #=> String, one of "RETAIL", "CUSTOM", "INVENTORY_PLANNING", "EC2_CAPACITY", "WORK_FORCE", "WEB_TRAFFIC", "METRICS"
    #   resp.datasets[0].creation_time #=> Time
    #   resp.datasets[0].last_modification_time #=> Time
    #   resp.next_token #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/ListDatasets AWS API Documentation
    #
    # @overload list_datasets(params = {})
    # @param [Hash] params ({})
    def list_datasets(params = {}, options = {})
      req = build_request(:list_datasets, params)
      req.send_request(options)
    end

    # Returns a list of forecast export jobs created using the
    # CreateForecastExportJob operation. For each forecast export job, a
    # summary of its properties, including its Amazon Resource Name (ARN),
    # is returned. You can retrieve the complete set of properties by using
    # the ARN with the DescribeForecastExportJob operation. The list can be
    # filtered using an array of Filter objects.
    #
    # @option params [String] :next_token
    #   If the result of the previous request was truncated, the response
    #   includes a `NextToken`. To retrieve the next set of results, use the
    #   token in the next request. Tokens expire after 24 hours.
    #
    # @option params [Integer] :max_results
    #   The number of items to return in the response.
    #
    # @option params [Array<Types::Filter>] :filters
    #   An array of filters. For each filter, you provide a condition and a
    #   match statement. The condition is either `IS` or `IS_NOT`, which
    #   specifies whether to include or exclude, respectively, from the list,
    #   the predictors that match the statement. The match statement consists
    #   of a key and a value. In this release, `Name` is the only valid key,
    #   which filters on the `ForecastExportJobName` property.
    #
    #   * `Condition` - `IS` or `IS_NOT`
    #
    #   * `Key` - `Name`
    #
    #   * `Value` - the value to match
    #
    #   For example, to list all forecast export jobs named
    #   *my\_forecast\_export\_job*, you would specify:
    #
    #   `"Filters": [ \{ "Condition": "IS", "Key": "Name", "Value":
    #   "my_forecast_export_job" \} ]`
    #
    # @return [Types::ListForecastExportJobsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::ListForecastExportJobsResponse#forecast_export_jobs #forecast_export_jobs} => Array&lt;Types::ForecastExportJobSummary&gt;
    #   * {Types::ListForecastExportJobsResponse#next_token #next_token} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.list_forecast_export_jobs({
    #     next_token: "NextToken",
    #     max_results: 1,
    #     filters: [
    #       {
    #         key: "String", # required
    #         value: "Arn", # required
    #         condition: "IS", # required, accepts IS, IS_NOT
    #       },
    #     ],
    #   })
    #
    # @example Response structure
    #
    #   resp.forecast_export_jobs #=> Array
    #   resp.forecast_export_jobs[0].forecast_export_job_arn #=> String
    #   resp.forecast_export_jobs[0].forecast_export_job_name #=> String
    #   resp.forecast_export_jobs[0].destination.s3_config.path #=> String
    #   resp.forecast_export_jobs[0].destination.s3_config.role_arn #=> String
    #   resp.forecast_export_jobs[0].destination.s3_config.kms_key_arn #=> String
    #   resp.forecast_export_jobs[0].status #=> String
    #   resp.forecast_export_jobs[0].message #=> String
    #   resp.forecast_export_jobs[0].creation_time #=> Time
    #   resp.forecast_export_jobs[0].last_modification_time #=> Time
    #   resp.next_token #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/ListForecastExportJobs AWS API Documentation
    #
    # @overload list_forecast_export_jobs(params = {})
    # @param [Hash] params ({})
    def list_forecast_export_jobs(params = {}, options = {})
      req = build_request(:list_forecast_export_jobs, params)
      req.send_request(options)
    end

    # Returns a list of forecasts created using the CreateForecast
    # operation. For each forecast, a summary of its properties, including
    # its Amazon Resource Name (ARN), is returned. You can retrieve the
    # complete set of properties by using the ARN with the DescribeForecast
    # operation. The list can be filtered using an array of Filter objects.
    #
    # @option params [String] :next_token
    #   If the result of the previous request was truncated, the response
    #   includes a `NextToken`. To retrieve the next set of results, use the
    #   token in the next request. Tokens expire after 24 hours.
    #
    # @option params [Integer] :max_results
    #   The number of items to return in the response.
    #
    # @option params [Array<Types::Filter>] :filters
    #   An array of filters. For each filter, you provide a condition and a
    #   match statement. The condition is either `IS` or `IS_NOT`, which
    #   specifies whether to include or exclude, respectively, from the list,
    #   the predictors that match the statement. The match statement consists
    #   of a key and a value. In this release, `Name` is the only valid key,
    #   which filters on the `ForecastName` property.
    #
    #   * `Condition` - `IS` or `IS_NOT`
    #
    #   * `Key` - `Name`
    #
    #   * `Value` - the value to match
    #
    #   For example, to list all forecasts named *my\_forecast*, you would
    #   specify:
    #
    #   `"Filters": [ \{ "Condition": "IS", "Key": "Name", "Value":
    #   "my_forecast" \} ]`
    #
    # @return [Types::ListForecastsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::ListForecastsResponse#forecasts #forecasts} => Array&lt;Types::ForecastSummary&gt;
    #   * {Types::ListForecastsResponse#next_token #next_token} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.list_forecasts({
    #     next_token: "NextToken",
    #     max_results: 1,
    #     filters: [
    #       {
    #         key: "String", # required
    #         value: "Arn", # required
    #         condition: "IS", # required, accepts IS, IS_NOT
    #       },
    #     ],
    #   })
    #
    # @example Response structure
    #
    #   resp.forecasts #=> Array
    #   resp.forecasts[0].forecast_arn #=> String
    #   resp.forecasts[0].forecast_name #=> String
    #   resp.forecasts[0].predictor_arn #=> String
    #   resp.forecasts[0].dataset_group_arn #=> String
    #   resp.forecasts[0].status #=> String
    #   resp.forecasts[0].message #=> String
    #   resp.forecasts[0].creation_time #=> Time
    #   resp.forecasts[0].last_modification_time #=> Time
    #   resp.next_token #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/ListForecasts AWS API Documentation
    #
    # @overload list_forecasts(params = {})
    # @param [Hash] params ({})
    def list_forecasts(params = {}, options = {})
      req = build_request(:list_forecasts, params)
      req.send_request(options)
    end

    # Returns a list of predictors created using the CreatePredictor
    # operation. For each predictor, a summary of its properties, including
    # its Amazon Resource Name (ARN), is returned. You can retrieve the
    # complete set of properties by using the ARN with the DescribePredictor
    # operation. The list can be filtered using an array of Filter objects.
    #
    # @option params [String] :next_token
    #   If the result of the previous request was truncated, the response
    #   includes a `NextToken`. To retrieve the next set of results, use the
    #   token in the next request. Tokens expire after 24 hours.
    #
    # @option params [Integer] :max_results
    #   The number of items to return in the response.
    #
    # @option params [Array<Types::Filter>] :filters
    #   An array of filters. For each filter, you provide a condition and a
    #   match statement. The condition is either `IS` or `IS_NOT`, which
    #   specifies whether to include or exclude, respectively, from the list,
    #   the predictors that match the statement. The match statement consists
    #   of a key and a value. In this release, `Name` is the only valid key,
    #   which filters on the `PredictorName` property.
    #
    #   * `Condition` - `IS` or `IS_NOT`
    #
    #   * `Key` - `Name`
    #
    #   * `Value` - the value to match
    #
    #   For example, to list all predictors named *my\_predictor*, you would
    #   specify:
    #
    #   `"Filters": [ \{ "Condition": "IS", "Key": "Name", "Value":
    #   "my_predictor" \} ]`
    #
    # @return [Types::ListPredictorsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
    #
    #   * {Types::ListPredictorsResponse#predictors #predictors} => Array&lt;Types::PredictorSummary&gt;
    #   * {Types::ListPredictorsResponse#next_token #next_token} => String
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.list_predictors({
    #     next_token: "NextToken",
    #     max_results: 1,
    #     filters: [
    #       {
    #         key: "String", # required
    #         value: "Arn", # required
    #         condition: "IS", # required, accepts IS, IS_NOT
    #       },
    #     ],
    #   })
    #
    # @example Response structure
    #
    #   resp.predictors #=> Array
    #   resp.predictors[0].predictor_arn #=> String
    #   resp.predictors[0].predictor_name #=> String
    #   resp.predictors[0].dataset_group_arn #=> String
    #   resp.predictors[0].status #=> String
    #   resp.predictors[0].message #=> String
    #   resp.predictors[0].creation_time #=> Time
    #   resp.predictors[0].last_modification_time #=> Time
    #   resp.next_token #=> String
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/ListPredictors AWS API Documentation
    #
    # @overload list_predictors(params = {})
    # @param [Hash] params ({})
    def list_predictors(params = {}, options = {})
      req = build_request(:list_predictors, params)
      req.send_request(options)
    end

    # Replaces any existing datasets in the dataset group with the specified
    # datasets.
    #
    # <note markdown="1"> The `Status` of the dataset group must be `ACTIVE` before creating a
    # predictor using the dataset group. Use the DescribeDatasetGroup
    # operation to get the status.
    #
    #  </note>
    #
    # @option params [required, String] :dataset_group_arn
    #   The ARN of the dataset group.
    #
    # @option params [required, Array<String>] :dataset_arns
    #   An array of Amazon Resource Names (ARNs) of the datasets to add to the
    #   dataset group.
    #
    # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
    #
    # @example Request syntax with placeholder values
    #
    #   resp = client.update_dataset_group({
    #     dataset_group_arn: "Arn", # required
    #     dataset_arns: ["Arn"], # required
    #   })
    #
    # @see http://docs.aws.amazon.com/goto/WebAPI/forecast-2018-06-26/UpdateDatasetGroup AWS API Documentation
    #
    # @overload update_dataset_group(params = {})
    # @param [Hash] params ({})
    def update_dataset_group(params = {}, options = {})
      req = build_request(:update_dataset_group, params)
      req.send_request(options)
    end

    # @!endgroup

    # @param params ({})
    # @api private
    def build_request(operation_name, params = {})
      handlers = @handlers.for(operation_name)
      context = Seahorse::Client::RequestContext.new(
        operation_name: operation_name,
        operation: config.api.operation(operation_name),
        client: self,
        params: params,
        config: config)
      context[:gem_name] = 'aws-sdk-forecastservice'
      context[:gem_version] = '1.0.0'
      Seahorse::Client::Request.new(handlers, context)
    end

    # @api private
    # @deprecated
    def waiter_names
      []
    end

    class << self

      # @api private
      attr_reader :identifier

      # @api private
      def errors_module
        Errors
      end

    end
  end
end
