{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Forecast.DescribeForecastExportJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- 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 lists the following
-- properties:
--
-- -   @CreationTime@
--
-- -   @LastModificationTime@
--
-- -   @Status@
--
-- -   @Message@ - If an error occurred, information about the error.
module Amazonka.Forecast.DescribeForecastExportJob
  ( -- * Creating a Request
    DescribeForecastExportJob (..),
    newDescribeForecastExportJob,

    -- * Request Lenses
    describeForecastExportJob_forecastExportJobArn,

    -- * Destructuring the Response
    DescribeForecastExportJobResponse (..),
    newDescribeForecastExportJobResponse,

    -- * Response Lenses
    describeForecastExportJobResponse_creationTime,
    describeForecastExportJobResponse_destination,
    describeForecastExportJobResponse_forecastArn,
    describeForecastExportJobResponse_forecastExportJobArn,
    describeForecastExportJobResponse_forecastExportJobName,
    describeForecastExportJobResponse_format,
    describeForecastExportJobResponse_lastModificationTime,
    describeForecastExportJobResponse_message,
    describeForecastExportJobResponse_status,
    describeForecastExportJobResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Forecast.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeForecastExportJob' smart constructor.
data DescribeForecastExportJob = DescribeForecastExportJob'
  { -- | The Amazon Resource Name (ARN) of the forecast export job.
    DescribeForecastExportJob -> Text
forecastExportJobArn :: Prelude.Text
  }
  deriving (DescribeForecastExportJob -> DescribeForecastExportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeForecastExportJob -> DescribeForecastExportJob -> Bool
$c/= :: DescribeForecastExportJob -> DescribeForecastExportJob -> Bool
== :: DescribeForecastExportJob -> DescribeForecastExportJob -> Bool
$c== :: DescribeForecastExportJob -> DescribeForecastExportJob -> Bool
Prelude.Eq, ReadPrec [DescribeForecastExportJob]
ReadPrec DescribeForecastExportJob
Int -> ReadS DescribeForecastExportJob
ReadS [DescribeForecastExportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeForecastExportJob]
$creadListPrec :: ReadPrec [DescribeForecastExportJob]
readPrec :: ReadPrec DescribeForecastExportJob
$creadPrec :: ReadPrec DescribeForecastExportJob
readList :: ReadS [DescribeForecastExportJob]
$creadList :: ReadS [DescribeForecastExportJob]
readsPrec :: Int -> ReadS DescribeForecastExportJob
$creadsPrec :: Int -> ReadS DescribeForecastExportJob
Prelude.Read, Int -> DescribeForecastExportJob -> ShowS
[DescribeForecastExportJob] -> ShowS
DescribeForecastExportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeForecastExportJob] -> ShowS
$cshowList :: [DescribeForecastExportJob] -> ShowS
show :: DescribeForecastExportJob -> String
$cshow :: DescribeForecastExportJob -> String
showsPrec :: Int -> DescribeForecastExportJob -> ShowS
$cshowsPrec :: Int -> DescribeForecastExportJob -> ShowS
Prelude.Show, forall x.
Rep DescribeForecastExportJob x -> DescribeForecastExportJob
forall x.
DescribeForecastExportJob -> Rep DescribeForecastExportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeForecastExportJob x -> DescribeForecastExportJob
$cfrom :: forall x.
DescribeForecastExportJob -> Rep DescribeForecastExportJob x
Prelude.Generic)

-- |
-- Create a value of 'DescribeForecastExportJob' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'forecastExportJobArn', 'describeForecastExportJob_forecastExportJobArn' - The Amazon Resource Name (ARN) of the forecast export job.
newDescribeForecastExportJob ::
  -- | 'forecastExportJobArn'
  Prelude.Text ->
  DescribeForecastExportJob
newDescribeForecastExportJob :: Text -> DescribeForecastExportJob
newDescribeForecastExportJob Text
pForecastExportJobArn_ =
  DescribeForecastExportJob'
    { $sel:forecastExportJobArn:DescribeForecastExportJob' :: Text
forecastExportJobArn =
        Text
pForecastExportJobArn_
    }

-- | The Amazon Resource Name (ARN) of the forecast export job.
describeForecastExportJob_forecastExportJobArn :: Lens.Lens' DescribeForecastExportJob Prelude.Text
describeForecastExportJob_forecastExportJobArn :: Lens' DescribeForecastExportJob Text
describeForecastExportJob_forecastExportJobArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJob' {Text
forecastExportJobArn :: Text
$sel:forecastExportJobArn:DescribeForecastExportJob' :: DescribeForecastExportJob -> Text
forecastExportJobArn} -> Text
forecastExportJobArn) (\s :: DescribeForecastExportJob
s@DescribeForecastExportJob' {} Text
a -> DescribeForecastExportJob
s {$sel:forecastExportJobArn:DescribeForecastExportJob' :: Text
forecastExportJobArn = Text
a} :: DescribeForecastExportJob)

instance Core.AWSRequest DescribeForecastExportJob where
  type
    AWSResponse DescribeForecastExportJob =
      DescribeForecastExportJobResponse
  request :: (Service -> Service)
-> DescribeForecastExportJob -> Request DescribeForecastExportJob
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeForecastExportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeForecastExportJob)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe POSIX
-> Maybe DataDestination
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Int
-> DescribeForecastExportJobResponse
DescribeForecastExportJobResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"CreationTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Destination")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ForecastArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ForecastExportJobArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ForecastExportJobName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Format")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"LastModificationTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Message")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeForecastExportJob where
  hashWithSalt :: Int -> DescribeForecastExportJob -> Int
hashWithSalt Int
_salt DescribeForecastExportJob' {Text
forecastExportJobArn :: Text
$sel:forecastExportJobArn:DescribeForecastExportJob' :: DescribeForecastExportJob -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
forecastExportJobArn

instance Prelude.NFData DescribeForecastExportJob where
  rnf :: DescribeForecastExportJob -> ()
rnf DescribeForecastExportJob' {Text
forecastExportJobArn :: Text
$sel:forecastExportJobArn:DescribeForecastExportJob' :: DescribeForecastExportJob -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
forecastExportJobArn

instance Data.ToHeaders DescribeForecastExportJob where
  toHeaders :: DescribeForecastExportJob -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AmazonForecast.DescribeForecastExportJob" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeForecastExportJob where
  toJSON :: DescribeForecastExportJob -> Value
toJSON DescribeForecastExportJob' {Text
forecastExportJobArn :: Text
$sel:forecastExportJobArn:DescribeForecastExportJob' :: DescribeForecastExportJob -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              ( Key
"ForecastExportJobArn"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
forecastExportJobArn
              )
          ]
      )

instance Data.ToPath DescribeForecastExportJob where
  toPath :: DescribeForecastExportJob -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeForecastExportJob where
  toQuery :: DescribeForecastExportJob -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeForecastExportJobResponse' smart constructor.
data DescribeForecastExportJobResponse = DescribeForecastExportJobResponse'
  { -- | When the forecast export job was created.
    DescribeForecastExportJobResponse -> Maybe POSIX
creationTime :: Prelude.Maybe Data.POSIX,
    -- | The path to the Amazon Simple Storage Service (Amazon S3) bucket where
    -- the forecast is exported.
    DescribeForecastExportJobResponse -> Maybe DataDestination
destination :: Prelude.Maybe DataDestination,
    -- | The Amazon Resource Name (ARN) of the exported forecast.
    DescribeForecastExportJobResponse -> Maybe Text
forecastArn :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the forecast export job.
    DescribeForecastExportJobResponse -> Maybe Text
forecastExportJobArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the forecast export job.
    DescribeForecastExportJobResponse -> Maybe Text
forecastExportJobName :: Prelude.Maybe Prelude.Text,
    -- | The format of the exported data, CSV or PARQUET.
    DescribeForecastExportJobResponse -> Maybe Text
format :: Prelude.Maybe Prelude.Text,
    -- | The last time the resource was modified. The timestamp depends on the
    -- status of the job:
    --
    -- -   @CREATE_PENDING@ - The @CreationTime@.
    --
    -- -   @CREATE_IN_PROGRESS@ - The current timestamp.
    --
    -- -   @CREATE_STOPPING@ - The current timestamp.
    --
    -- -   @CREATE_STOPPED@ - When the job stopped.
    --
    -- -   @ACTIVE@ or @CREATE_FAILED@ - When the job finished or failed.
    DescribeForecastExportJobResponse -> Maybe POSIX
lastModificationTime :: Prelude.Maybe Data.POSIX,
    -- | If an error occurred, an informational message about the error.
    DescribeForecastExportJobResponse -> Maybe Text
message :: Prelude.Maybe Prelude.Text,
    -- | The status of the forecast export job. States include:
    --
    -- -   @ACTIVE@
    --
    -- -   @CREATE_PENDING@, @CREATE_IN_PROGRESS@, @CREATE_FAILED@
    --
    -- -   @CREATE_STOPPING@, @CREATE_STOPPED@
    --
    -- -   @DELETE_PENDING@, @DELETE_IN_PROGRESS@, @DELETE_FAILED@
    --
    -- The @Status@ of the forecast export job must be @ACTIVE@ before you can
    -- access the forecast in your S3 bucket.
    DescribeForecastExportJobResponse -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeForecastExportJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeForecastExportJobResponse
-> DescribeForecastExportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeForecastExportJobResponse
-> DescribeForecastExportJobResponse -> Bool
$c/= :: DescribeForecastExportJobResponse
-> DescribeForecastExportJobResponse -> Bool
== :: DescribeForecastExportJobResponse
-> DescribeForecastExportJobResponse -> Bool
$c== :: DescribeForecastExportJobResponse
-> DescribeForecastExportJobResponse -> Bool
Prelude.Eq, ReadPrec [DescribeForecastExportJobResponse]
ReadPrec DescribeForecastExportJobResponse
Int -> ReadS DescribeForecastExportJobResponse
ReadS [DescribeForecastExportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeForecastExportJobResponse]
$creadListPrec :: ReadPrec [DescribeForecastExportJobResponse]
readPrec :: ReadPrec DescribeForecastExportJobResponse
$creadPrec :: ReadPrec DescribeForecastExportJobResponse
readList :: ReadS [DescribeForecastExportJobResponse]
$creadList :: ReadS [DescribeForecastExportJobResponse]
readsPrec :: Int -> ReadS DescribeForecastExportJobResponse
$creadsPrec :: Int -> ReadS DescribeForecastExportJobResponse
Prelude.Read, Int -> DescribeForecastExportJobResponse -> ShowS
[DescribeForecastExportJobResponse] -> ShowS
DescribeForecastExportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeForecastExportJobResponse] -> ShowS
$cshowList :: [DescribeForecastExportJobResponse] -> ShowS
show :: DescribeForecastExportJobResponse -> String
$cshow :: DescribeForecastExportJobResponse -> String
showsPrec :: Int -> DescribeForecastExportJobResponse -> ShowS
$cshowsPrec :: Int -> DescribeForecastExportJobResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeForecastExportJobResponse x
-> DescribeForecastExportJobResponse
forall x.
DescribeForecastExportJobResponse
-> Rep DescribeForecastExportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeForecastExportJobResponse x
-> DescribeForecastExportJobResponse
$cfrom :: forall x.
DescribeForecastExportJobResponse
-> Rep DescribeForecastExportJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeForecastExportJobResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'creationTime', 'describeForecastExportJobResponse_creationTime' - When the forecast export job was created.
--
-- 'destination', 'describeForecastExportJobResponse_destination' - The path to the Amazon Simple Storage Service (Amazon S3) bucket where
-- the forecast is exported.
--
-- 'forecastArn', 'describeForecastExportJobResponse_forecastArn' - The Amazon Resource Name (ARN) of the exported forecast.
--
-- 'forecastExportJobArn', 'describeForecastExportJobResponse_forecastExportJobArn' - The ARN of the forecast export job.
--
-- 'forecastExportJobName', 'describeForecastExportJobResponse_forecastExportJobName' - The name of the forecast export job.
--
-- 'format', 'describeForecastExportJobResponse_format' - The format of the exported data, CSV or PARQUET.
--
-- 'lastModificationTime', 'describeForecastExportJobResponse_lastModificationTime' - The last time the resource was modified. The timestamp depends on the
-- status of the job:
--
-- -   @CREATE_PENDING@ - The @CreationTime@.
--
-- -   @CREATE_IN_PROGRESS@ - The current timestamp.
--
-- -   @CREATE_STOPPING@ - The current timestamp.
--
-- -   @CREATE_STOPPED@ - When the job stopped.
--
-- -   @ACTIVE@ or @CREATE_FAILED@ - When the job finished or failed.
--
-- 'message', 'describeForecastExportJobResponse_message' - If an error occurred, an informational message about the error.
--
-- 'status', 'describeForecastExportJobResponse_status' - The status of the forecast export job. States include:
--
-- -   @ACTIVE@
--
-- -   @CREATE_PENDING@, @CREATE_IN_PROGRESS@, @CREATE_FAILED@
--
-- -   @CREATE_STOPPING@, @CREATE_STOPPED@
--
-- -   @DELETE_PENDING@, @DELETE_IN_PROGRESS@, @DELETE_FAILED@
--
-- The @Status@ of the forecast export job must be @ACTIVE@ before you can
-- access the forecast in your S3 bucket.
--
-- 'httpStatus', 'describeForecastExportJobResponse_httpStatus' - The response's http status code.
newDescribeForecastExportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeForecastExportJobResponse
newDescribeForecastExportJobResponse :: Int -> DescribeForecastExportJobResponse
newDescribeForecastExportJobResponse Int
pHttpStatus_ =
  DescribeForecastExportJobResponse'
    { $sel:creationTime:DescribeForecastExportJobResponse' :: Maybe POSIX
creationTime =
        forall a. Maybe a
Prelude.Nothing,
      $sel:destination:DescribeForecastExportJobResponse' :: Maybe DataDestination
destination = forall a. Maybe a
Prelude.Nothing,
      $sel:forecastArn:DescribeForecastExportJobResponse' :: Maybe Text
forecastArn = forall a. Maybe a
Prelude.Nothing,
      $sel:forecastExportJobArn:DescribeForecastExportJobResponse' :: Maybe Text
forecastExportJobArn = forall a. Maybe a
Prelude.Nothing,
      $sel:forecastExportJobName:DescribeForecastExportJobResponse' :: Maybe Text
forecastExportJobName = forall a. Maybe a
Prelude.Nothing,
      $sel:format:DescribeForecastExportJobResponse' :: Maybe Text
format = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModificationTime:DescribeForecastExportJobResponse' :: Maybe POSIX
lastModificationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:message:DescribeForecastExportJobResponse' :: Maybe Text
message = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeForecastExportJobResponse' :: Maybe Text
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeForecastExportJobResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | When the forecast export job was created.
describeForecastExportJobResponse_creationTime :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.UTCTime)
describeForecastExportJobResponse_creationTime :: Lens' DescribeForecastExportJobResponse (Maybe UTCTime)
describeForecastExportJobResponse_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe POSIX
a -> DescribeForecastExportJobResponse
s {$sel:creationTime:DescribeForecastExportJobResponse' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: DescribeForecastExportJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The path to the Amazon Simple Storage Service (Amazon S3) bucket where
-- the forecast is exported.
describeForecastExportJobResponse_destination :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe DataDestination)
describeForecastExportJobResponse_destination :: Lens' DescribeForecastExportJobResponse (Maybe DataDestination)
describeForecastExportJobResponse_destination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe DataDestination
destination :: Maybe DataDestination
$sel:destination:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe DataDestination
destination} -> Maybe DataDestination
destination) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe DataDestination
a -> DescribeForecastExportJobResponse
s {$sel:destination:DescribeForecastExportJobResponse' :: Maybe DataDestination
destination = Maybe DataDestination
a} :: DescribeForecastExportJobResponse)

-- | The Amazon Resource Name (ARN) of the exported forecast.
describeForecastExportJobResponse_forecastArn :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.Text)
describeForecastExportJobResponse_forecastArn :: Lens' DescribeForecastExportJobResponse (Maybe Text)
describeForecastExportJobResponse_forecastArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe Text
forecastArn :: Maybe Text
$sel:forecastArn:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
forecastArn} -> Maybe Text
forecastArn) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe Text
a -> DescribeForecastExportJobResponse
s {$sel:forecastArn:DescribeForecastExportJobResponse' :: Maybe Text
forecastArn = Maybe Text
a} :: DescribeForecastExportJobResponse)

-- | The ARN of the forecast export job.
describeForecastExportJobResponse_forecastExportJobArn :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.Text)
describeForecastExportJobResponse_forecastExportJobArn :: Lens' DescribeForecastExportJobResponse (Maybe Text)
describeForecastExportJobResponse_forecastExportJobArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe Text
forecastExportJobArn :: Maybe Text
$sel:forecastExportJobArn:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
forecastExportJobArn} -> Maybe Text
forecastExportJobArn) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe Text
a -> DescribeForecastExportJobResponse
s {$sel:forecastExportJobArn:DescribeForecastExportJobResponse' :: Maybe Text
forecastExportJobArn = Maybe Text
a} :: DescribeForecastExportJobResponse)

-- | The name of the forecast export job.
describeForecastExportJobResponse_forecastExportJobName :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.Text)
describeForecastExportJobResponse_forecastExportJobName :: Lens' DescribeForecastExportJobResponse (Maybe Text)
describeForecastExportJobResponse_forecastExportJobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe Text
forecastExportJobName :: Maybe Text
$sel:forecastExportJobName:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
forecastExportJobName} -> Maybe Text
forecastExportJobName) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe Text
a -> DescribeForecastExportJobResponse
s {$sel:forecastExportJobName:DescribeForecastExportJobResponse' :: Maybe Text
forecastExportJobName = Maybe Text
a} :: DescribeForecastExportJobResponse)

-- | The format of the exported data, CSV or PARQUET.
describeForecastExportJobResponse_format :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.Text)
describeForecastExportJobResponse_format :: Lens' DescribeForecastExportJobResponse (Maybe Text)
describeForecastExportJobResponse_format = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe Text
format :: Maybe Text
$sel:format:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
format} -> Maybe Text
format) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe Text
a -> DescribeForecastExportJobResponse
s {$sel:format:DescribeForecastExportJobResponse' :: Maybe Text
format = Maybe Text
a} :: DescribeForecastExportJobResponse)

-- | The last time the resource was modified. The timestamp depends on the
-- status of the job:
--
-- -   @CREATE_PENDING@ - The @CreationTime@.
--
-- -   @CREATE_IN_PROGRESS@ - The current timestamp.
--
-- -   @CREATE_STOPPING@ - The current timestamp.
--
-- -   @CREATE_STOPPED@ - When the job stopped.
--
-- -   @ACTIVE@ or @CREATE_FAILED@ - When the job finished or failed.
describeForecastExportJobResponse_lastModificationTime :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.UTCTime)
describeForecastExportJobResponse_lastModificationTime :: Lens' DescribeForecastExportJobResponse (Maybe UTCTime)
describeForecastExportJobResponse_lastModificationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe POSIX
lastModificationTime :: Maybe POSIX
$sel:lastModificationTime:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe POSIX
lastModificationTime} -> Maybe POSIX
lastModificationTime) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe POSIX
a -> DescribeForecastExportJobResponse
s {$sel:lastModificationTime:DescribeForecastExportJobResponse' :: Maybe POSIX
lastModificationTime = Maybe POSIX
a} :: DescribeForecastExportJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | If an error occurred, an informational message about the error.
describeForecastExportJobResponse_message :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.Text)
describeForecastExportJobResponse_message :: Lens' DescribeForecastExportJobResponse (Maybe Text)
describeForecastExportJobResponse_message = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe Text
message :: Maybe Text
$sel:message:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
message} -> Maybe Text
message) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe Text
a -> DescribeForecastExportJobResponse
s {$sel:message:DescribeForecastExportJobResponse' :: Maybe Text
message = Maybe Text
a} :: DescribeForecastExportJobResponse)

-- | The status of the forecast export job. States include:
--
-- -   @ACTIVE@
--
-- -   @CREATE_PENDING@, @CREATE_IN_PROGRESS@, @CREATE_FAILED@
--
-- -   @CREATE_STOPPING@, @CREATE_STOPPED@
--
-- -   @DELETE_PENDING@, @DELETE_IN_PROGRESS@, @DELETE_FAILED@
--
-- The @Status@ of the forecast export job must be @ACTIVE@ before you can
-- access the forecast in your S3 bucket.
describeForecastExportJobResponse_status :: Lens.Lens' DescribeForecastExportJobResponse (Prelude.Maybe Prelude.Text)
describeForecastExportJobResponse_status :: Lens' DescribeForecastExportJobResponse (Maybe Text)
describeForecastExportJobResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Maybe Text
status :: Maybe Text
$sel:status:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
status} -> Maybe Text
status) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Maybe Text
a -> DescribeForecastExportJobResponse
s {$sel:status:DescribeForecastExportJobResponse' :: Maybe Text
status = Maybe Text
a} :: DescribeForecastExportJobResponse)

-- | The response's http status code.
describeForecastExportJobResponse_httpStatus :: Lens.Lens' DescribeForecastExportJobResponse Prelude.Int
describeForecastExportJobResponse_httpStatus :: Lens' DescribeForecastExportJobResponse Int
describeForecastExportJobResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeForecastExportJobResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeForecastExportJobResponse
s@DescribeForecastExportJobResponse' {} Int
a -> DescribeForecastExportJobResponse
s {$sel:httpStatus:DescribeForecastExportJobResponse' :: Int
httpStatus = Int
a} :: DescribeForecastExportJobResponse)

instance
  Prelude.NFData
    DescribeForecastExportJobResponse
  where
  rnf :: DescribeForecastExportJobResponse -> ()
rnf DescribeForecastExportJobResponse' {Int
Maybe Text
Maybe POSIX
Maybe DataDestination
httpStatus :: Int
status :: Maybe Text
message :: Maybe Text
lastModificationTime :: Maybe POSIX
format :: Maybe Text
forecastExportJobName :: Maybe Text
forecastExportJobArn :: Maybe Text
forecastArn :: Maybe Text
destination :: Maybe DataDestination
creationTime :: Maybe POSIX
$sel:httpStatus:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Int
$sel:status:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
$sel:message:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
$sel:lastModificationTime:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe POSIX
$sel:format:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
$sel:forecastExportJobName:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
$sel:forecastExportJobArn:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
$sel:forecastArn:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe Text
$sel:destination:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe DataDestination
$sel:creationTime:DescribeForecastExportJobResponse' :: DescribeForecastExportJobResponse -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataDestination
destination
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
forecastArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
forecastExportJobArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
forecastExportJobName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
format
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModificationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
message
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus