{-# 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.IoTSiteWise.DescribeBulkImportJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves information about a bulk import job request. For more
-- information, see
-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/DescribeBulkImportJob.html Describe a bulk import job (CLI)>
-- in the /Amazon Simple Storage Service User Guide/.
module Amazonka.IoTSiteWise.DescribeBulkImportJob
  ( -- * Creating a Request
    DescribeBulkImportJob (..),
    newDescribeBulkImportJob,

    -- * Request Lenses
    describeBulkImportJob_jobId,

    -- * Destructuring the Response
    DescribeBulkImportJobResponse (..),
    newDescribeBulkImportJobResponse,

    -- * Response Lenses
    describeBulkImportJobResponse_httpStatus,
    describeBulkImportJobResponse_jobId,
    describeBulkImportJobResponse_jobName,
    describeBulkImportJobResponse_jobStatus,
    describeBulkImportJobResponse_jobRoleArn,
    describeBulkImportJobResponse_files,
    describeBulkImportJobResponse_errorReportLocation,
    describeBulkImportJobResponse_jobConfiguration,
    describeBulkImportJobResponse_jobCreationDate,
    describeBulkImportJobResponse_jobLastUpdateDate,
  )
where

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

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

-- |
-- Create a value of 'DescribeBulkImportJob' 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:
--
-- 'jobId', 'describeBulkImportJob_jobId' - The ID of the job.
newDescribeBulkImportJob ::
  -- | 'jobId'
  Prelude.Text ->
  DescribeBulkImportJob
newDescribeBulkImportJob :: Text -> DescribeBulkImportJob
newDescribeBulkImportJob Text
pJobId_ =
  DescribeBulkImportJob' {$sel:jobId:DescribeBulkImportJob' :: Text
jobId = Text
pJobId_}

-- | The ID of the job.
describeBulkImportJob_jobId :: Lens.Lens' DescribeBulkImportJob Prelude.Text
describeBulkImportJob_jobId :: Lens' DescribeBulkImportJob Text
describeBulkImportJob_jobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJob' {Text
jobId :: Text
$sel:jobId:DescribeBulkImportJob' :: DescribeBulkImportJob -> Text
jobId} -> Text
jobId) (\s :: DescribeBulkImportJob
s@DescribeBulkImportJob' {} Text
a -> DescribeBulkImportJob
s {$sel:jobId:DescribeBulkImportJob' :: Text
jobId = Text
a} :: DescribeBulkImportJob)

instance Core.AWSRequest DescribeBulkImportJob where
  type
    AWSResponse DescribeBulkImportJob =
      DescribeBulkImportJobResponse
  request :: (Service -> Service)
-> DescribeBulkImportJob -> Request DescribeBulkImportJob
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeBulkImportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeBulkImportJob)))
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 ->
          Int
-> Text
-> Text
-> JobStatus
-> Text
-> [File]
-> ErrorReportLocation
-> JobConfiguration
-> POSIX
-> POSIX
-> DescribeBulkImportJobResponse
DescribeBulkImportJobResponse'
            forall (f :: * -> *) a b. Functor 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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"jobId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"jobName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"jobStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"jobRoleArn")
            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
"files" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"errorReportLocation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"jobConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"jobCreationDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"jobLastUpdateDate")
      )

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

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

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

instance Data.ToPath DescribeBulkImportJob where
  toPath :: DescribeBulkImportJob -> ByteString
toPath DescribeBulkImportJob' {Text
jobId :: Text
$sel:jobId:DescribeBulkImportJob' :: DescribeBulkImportJob -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"/jobs/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
jobId]

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

-- | /See:/ 'newDescribeBulkImportJobResponse' smart constructor.
data DescribeBulkImportJobResponse = DescribeBulkImportJobResponse'
  { -- | The response's http status code.
    DescribeBulkImportJobResponse -> Int
httpStatus :: Prelude.Int,
    -- | The ID of the job.
    DescribeBulkImportJobResponse -> Text
jobId :: Prelude.Text,
    -- | The unique name that helps identify the job request.
    DescribeBulkImportJobResponse -> Text
jobName :: Prelude.Text,
    -- | The status of the bulk import job can be one of following values.
    --
    -- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job
    --     to finish.
    --
    -- -   @CANCELLED@ – The bulk import job has been canceled.
    --
    -- -   @RUNNING@ – IoT SiteWise is processing your request to import your
    --     data from Amazon S3.
    --
    -- -   @COMPLETED@ – IoT SiteWise successfully completed your request to
    --     import data from Amazon S3.
    --
    -- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import
    --     data from Amazon S3. You can use logs saved in the specified error
    --     report location in Amazon S3 to troubleshoot issues.
    --
    -- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to
    --     import data from Amazon S3 with errors. You can use logs saved in
    --     the specified error report location in Amazon S3 to troubleshoot
    --     issues.
    DescribeBulkImportJobResponse -> JobStatus
jobStatus :: JobStatus,
    -- | The
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>
    -- of the IAM role that allows IoT SiteWise to read Amazon S3 data.
    DescribeBulkImportJobResponse -> Text
jobRoleArn :: Prelude.Text,
    -- | The files in the specified Amazon S3 bucket that contain your data.
    DescribeBulkImportJobResponse -> [File]
files :: [File],
    -- | The Amazon S3 destination where errors associated with the job creation
    -- request are saved.
    DescribeBulkImportJobResponse -> ErrorReportLocation
errorReportLocation :: ErrorReportLocation,
    -- | Contains the configuration information of a job, such as the file format
    -- used to save data in Amazon S3.
    DescribeBulkImportJobResponse -> JobConfiguration
jobConfiguration :: JobConfiguration,
    -- | The date the job was created, in Unix epoch TIME.
    DescribeBulkImportJobResponse -> POSIX
jobCreationDate :: Data.POSIX,
    -- | The date the job was last updated, in Unix epoch time.
    DescribeBulkImportJobResponse -> POSIX
jobLastUpdateDate :: Data.POSIX
  }
  deriving (DescribeBulkImportJobResponse
-> DescribeBulkImportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeBulkImportJobResponse
-> DescribeBulkImportJobResponse -> Bool
$c/= :: DescribeBulkImportJobResponse
-> DescribeBulkImportJobResponse -> Bool
== :: DescribeBulkImportJobResponse
-> DescribeBulkImportJobResponse -> Bool
$c== :: DescribeBulkImportJobResponse
-> DescribeBulkImportJobResponse -> Bool
Prelude.Eq, ReadPrec [DescribeBulkImportJobResponse]
ReadPrec DescribeBulkImportJobResponse
Int -> ReadS DescribeBulkImportJobResponse
ReadS [DescribeBulkImportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeBulkImportJobResponse]
$creadListPrec :: ReadPrec [DescribeBulkImportJobResponse]
readPrec :: ReadPrec DescribeBulkImportJobResponse
$creadPrec :: ReadPrec DescribeBulkImportJobResponse
readList :: ReadS [DescribeBulkImportJobResponse]
$creadList :: ReadS [DescribeBulkImportJobResponse]
readsPrec :: Int -> ReadS DescribeBulkImportJobResponse
$creadsPrec :: Int -> ReadS DescribeBulkImportJobResponse
Prelude.Read, Int -> DescribeBulkImportJobResponse -> ShowS
[DescribeBulkImportJobResponse] -> ShowS
DescribeBulkImportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeBulkImportJobResponse] -> ShowS
$cshowList :: [DescribeBulkImportJobResponse] -> ShowS
show :: DescribeBulkImportJobResponse -> String
$cshow :: DescribeBulkImportJobResponse -> String
showsPrec :: Int -> DescribeBulkImportJobResponse -> ShowS
$cshowsPrec :: Int -> DescribeBulkImportJobResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeBulkImportJobResponse x
-> DescribeBulkImportJobResponse
forall x.
DescribeBulkImportJobResponse
-> Rep DescribeBulkImportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeBulkImportJobResponse x
-> DescribeBulkImportJobResponse
$cfrom :: forall x.
DescribeBulkImportJobResponse
-> Rep DescribeBulkImportJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeBulkImportJobResponse' 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:
--
-- 'httpStatus', 'describeBulkImportJobResponse_httpStatus' - The response's http status code.
--
-- 'jobId', 'describeBulkImportJobResponse_jobId' - The ID of the job.
--
-- 'jobName', 'describeBulkImportJobResponse_jobName' - The unique name that helps identify the job request.
--
-- 'jobStatus', 'describeBulkImportJobResponse_jobStatus' - The status of the bulk import job can be one of following values.
--
-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job
--     to finish.
--
-- -   @CANCELLED@ – The bulk import job has been canceled.
--
-- -   @RUNNING@ – IoT SiteWise is processing your request to import your
--     data from Amazon S3.
--
-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to
--     import data from Amazon S3.
--
-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import
--     data from Amazon S3. You can use logs saved in the specified error
--     report location in Amazon S3 to troubleshoot issues.
--
-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to
--     import data from Amazon S3 with errors. You can use logs saved in
--     the specified error report location in Amazon S3 to troubleshoot
--     issues.
--
-- 'jobRoleArn', 'describeBulkImportJobResponse_jobRoleArn' - The
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>
-- of the IAM role that allows IoT SiteWise to read Amazon S3 data.
--
-- 'files', 'describeBulkImportJobResponse_files' - The files in the specified Amazon S3 bucket that contain your data.
--
-- 'errorReportLocation', 'describeBulkImportJobResponse_errorReportLocation' - The Amazon S3 destination where errors associated with the job creation
-- request are saved.
--
-- 'jobConfiguration', 'describeBulkImportJobResponse_jobConfiguration' - Contains the configuration information of a job, such as the file format
-- used to save data in Amazon S3.
--
-- 'jobCreationDate', 'describeBulkImportJobResponse_jobCreationDate' - The date the job was created, in Unix epoch TIME.
--
-- 'jobLastUpdateDate', 'describeBulkImportJobResponse_jobLastUpdateDate' - The date the job was last updated, in Unix epoch time.
newDescribeBulkImportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobId'
  Prelude.Text ->
  -- | 'jobName'
  Prelude.Text ->
  -- | 'jobStatus'
  JobStatus ->
  -- | 'jobRoleArn'
  Prelude.Text ->
  -- | 'errorReportLocation'
  ErrorReportLocation ->
  -- | 'jobConfiguration'
  JobConfiguration ->
  -- | 'jobCreationDate'
  Prelude.UTCTime ->
  -- | 'jobLastUpdateDate'
  Prelude.UTCTime ->
  DescribeBulkImportJobResponse
newDescribeBulkImportJobResponse :: Int
-> Text
-> Text
-> JobStatus
-> Text
-> ErrorReportLocation
-> JobConfiguration
-> UTCTime
-> UTCTime
-> DescribeBulkImportJobResponse
newDescribeBulkImportJobResponse
  Int
pHttpStatus_
  Text
pJobId_
  Text
pJobName_
  JobStatus
pJobStatus_
  Text
pJobRoleArn_
  ErrorReportLocation
pErrorReportLocation_
  JobConfiguration
pJobConfiguration_
  UTCTime
pJobCreationDate_
  UTCTime
pJobLastUpdateDate_ =
    DescribeBulkImportJobResponse'
      { $sel:httpStatus:DescribeBulkImportJobResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:jobId:DescribeBulkImportJobResponse' :: Text
jobId = Text
pJobId_,
        $sel:jobName:DescribeBulkImportJobResponse' :: Text
jobName = Text
pJobName_,
        $sel:jobStatus:DescribeBulkImportJobResponse' :: JobStatus
jobStatus = JobStatus
pJobStatus_,
        $sel:jobRoleArn:DescribeBulkImportJobResponse' :: Text
jobRoleArn = Text
pJobRoleArn_,
        $sel:files:DescribeBulkImportJobResponse' :: [File]
files = forall a. Monoid a => a
Prelude.mempty,
        $sel:errorReportLocation:DescribeBulkImportJobResponse' :: ErrorReportLocation
errorReportLocation = ErrorReportLocation
pErrorReportLocation_,
        $sel:jobConfiguration:DescribeBulkImportJobResponse' :: JobConfiguration
jobConfiguration = JobConfiguration
pJobConfiguration_,
        $sel:jobCreationDate:DescribeBulkImportJobResponse' :: POSIX
jobCreationDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pJobCreationDate_,
        $sel:jobLastUpdateDate:DescribeBulkImportJobResponse' :: POSIX
jobLastUpdateDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pJobLastUpdateDate_
      }

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

-- | The ID of the job.
describeBulkImportJobResponse_jobId :: Lens.Lens' DescribeBulkImportJobResponse Prelude.Text
describeBulkImportJobResponse_jobId :: Lens' DescribeBulkImportJobResponse Text
describeBulkImportJobResponse_jobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {Text
jobId :: Text
$sel:jobId:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> Text
jobId} -> Text
jobId) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} Text
a -> DescribeBulkImportJobResponse
s {$sel:jobId:DescribeBulkImportJobResponse' :: Text
jobId = Text
a} :: DescribeBulkImportJobResponse)

-- | The unique name that helps identify the job request.
describeBulkImportJobResponse_jobName :: Lens.Lens' DescribeBulkImportJobResponse Prelude.Text
describeBulkImportJobResponse_jobName :: Lens' DescribeBulkImportJobResponse Text
describeBulkImportJobResponse_jobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {Text
jobName :: Text
$sel:jobName:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> Text
jobName} -> Text
jobName) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} Text
a -> DescribeBulkImportJobResponse
s {$sel:jobName:DescribeBulkImportJobResponse' :: Text
jobName = Text
a} :: DescribeBulkImportJobResponse)

-- | The status of the bulk import job can be one of following values.
--
-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job
--     to finish.
--
-- -   @CANCELLED@ – The bulk import job has been canceled.
--
-- -   @RUNNING@ – IoT SiteWise is processing your request to import your
--     data from Amazon S3.
--
-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to
--     import data from Amazon S3.
--
-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import
--     data from Amazon S3. You can use logs saved in the specified error
--     report location in Amazon S3 to troubleshoot issues.
--
-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to
--     import data from Amazon S3 with errors. You can use logs saved in
--     the specified error report location in Amazon S3 to troubleshoot
--     issues.
describeBulkImportJobResponse_jobStatus :: Lens.Lens' DescribeBulkImportJobResponse JobStatus
describeBulkImportJobResponse_jobStatus :: Lens' DescribeBulkImportJobResponse JobStatus
describeBulkImportJobResponse_jobStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {JobStatus
jobStatus :: JobStatus
$sel:jobStatus:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> JobStatus
jobStatus} -> JobStatus
jobStatus) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} JobStatus
a -> DescribeBulkImportJobResponse
s {$sel:jobStatus:DescribeBulkImportJobResponse' :: JobStatus
jobStatus = JobStatus
a} :: DescribeBulkImportJobResponse)

-- | The
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>
-- of the IAM role that allows IoT SiteWise to read Amazon S3 data.
describeBulkImportJobResponse_jobRoleArn :: Lens.Lens' DescribeBulkImportJobResponse Prelude.Text
describeBulkImportJobResponse_jobRoleArn :: Lens' DescribeBulkImportJobResponse Text
describeBulkImportJobResponse_jobRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {Text
jobRoleArn :: Text
$sel:jobRoleArn:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> Text
jobRoleArn} -> Text
jobRoleArn) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} Text
a -> DescribeBulkImportJobResponse
s {$sel:jobRoleArn:DescribeBulkImportJobResponse' :: Text
jobRoleArn = Text
a} :: DescribeBulkImportJobResponse)

-- | The files in the specified Amazon S3 bucket that contain your data.
describeBulkImportJobResponse_files :: Lens.Lens' DescribeBulkImportJobResponse [File]
describeBulkImportJobResponse_files :: Lens' DescribeBulkImportJobResponse [File]
describeBulkImportJobResponse_files = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {[File]
files :: [File]
$sel:files:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> [File]
files} -> [File]
files) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} [File]
a -> DescribeBulkImportJobResponse
s {$sel:files:DescribeBulkImportJobResponse' :: [File]
files = [File]
a} :: DescribeBulkImportJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon S3 destination where errors associated with the job creation
-- request are saved.
describeBulkImportJobResponse_errorReportLocation :: Lens.Lens' DescribeBulkImportJobResponse ErrorReportLocation
describeBulkImportJobResponse_errorReportLocation :: Lens' DescribeBulkImportJobResponse ErrorReportLocation
describeBulkImportJobResponse_errorReportLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {ErrorReportLocation
errorReportLocation :: ErrorReportLocation
$sel:errorReportLocation:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> ErrorReportLocation
errorReportLocation} -> ErrorReportLocation
errorReportLocation) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} ErrorReportLocation
a -> DescribeBulkImportJobResponse
s {$sel:errorReportLocation:DescribeBulkImportJobResponse' :: ErrorReportLocation
errorReportLocation = ErrorReportLocation
a} :: DescribeBulkImportJobResponse)

-- | Contains the configuration information of a job, such as the file format
-- used to save data in Amazon S3.
describeBulkImportJobResponse_jobConfiguration :: Lens.Lens' DescribeBulkImportJobResponse JobConfiguration
describeBulkImportJobResponse_jobConfiguration :: Lens' DescribeBulkImportJobResponse JobConfiguration
describeBulkImportJobResponse_jobConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {JobConfiguration
jobConfiguration :: JobConfiguration
$sel:jobConfiguration:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> JobConfiguration
jobConfiguration} -> JobConfiguration
jobConfiguration) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} JobConfiguration
a -> DescribeBulkImportJobResponse
s {$sel:jobConfiguration:DescribeBulkImportJobResponse' :: JobConfiguration
jobConfiguration = JobConfiguration
a} :: DescribeBulkImportJobResponse)

-- | The date the job was created, in Unix epoch TIME.
describeBulkImportJobResponse_jobCreationDate :: Lens.Lens' DescribeBulkImportJobResponse Prelude.UTCTime
describeBulkImportJobResponse_jobCreationDate :: Lens' DescribeBulkImportJobResponse UTCTime
describeBulkImportJobResponse_jobCreationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {POSIX
jobCreationDate :: POSIX
$sel:jobCreationDate:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> POSIX
jobCreationDate} -> POSIX
jobCreationDate) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} POSIX
a -> DescribeBulkImportJobResponse
s {$sel:jobCreationDate:DescribeBulkImportJobResponse' :: POSIX
jobCreationDate = POSIX
a} :: DescribeBulkImportJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The date the job was last updated, in Unix epoch time.
describeBulkImportJobResponse_jobLastUpdateDate :: Lens.Lens' DescribeBulkImportJobResponse Prelude.UTCTime
describeBulkImportJobResponse_jobLastUpdateDate :: Lens' DescribeBulkImportJobResponse UTCTime
describeBulkImportJobResponse_jobLastUpdateDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBulkImportJobResponse' {POSIX
jobLastUpdateDate :: POSIX
$sel:jobLastUpdateDate:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> POSIX
jobLastUpdateDate} -> POSIX
jobLastUpdateDate) (\s :: DescribeBulkImportJobResponse
s@DescribeBulkImportJobResponse' {} POSIX
a -> DescribeBulkImportJobResponse
s {$sel:jobLastUpdateDate:DescribeBulkImportJobResponse' :: POSIX
jobLastUpdateDate = POSIX
a} :: DescribeBulkImportJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Prelude.NFData DescribeBulkImportJobResponse where
  rnf :: DescribeBulkImportJobResponse -> ()
rnf DescribeBulkImportJobResponse' {Int
[File]
Text
POSIX
ErrorReportLocation
JobConfiguration
JobStatus
jobLastUpdateDate :: POSIX
jobCreationDate :: POSIX
jobConfiguration :: JobConfiguration
errorReportLocation :: ErrorReportLocation
files :: [File]
jobRoleArn :: Text
jobStatus :: JobStatus
jobName :: Text
jobId :: Text
httpStatus :: Int
$sel:jobLastUpdateDate:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> POSIX
$sel:jobCreationDate:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> POSIX
$sel:jobConfiguration:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> JobConfiguration
$sel:errorReportLocation:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> ErrorReportLocation
$sel:files:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> [File]
$sel:jobRoleArn:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> Text
$sel:jobStatus:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> JobStatus
$sel:jobName:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> Text
$sel:jobId:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> Text
$sel:httpStatus:DescribeBulkImportJobResponse' :: DescribeBulkImportJobResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf JobStatus
jobStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [File]
files
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ErrorReportLocation
errorReportLocation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf JobConfiguration
jobConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
jobCreationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
jobLastUpdateDate