{-# 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.CreateBulkImportJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Defines a job to ingest data to IoT SiteWise from Amazon S3. For more
-- information, see
-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/CreateBulkImportJob.html Create a bulk import job (CLI)>
-- in the /Amazon Simple Storage Service User Guide/.
--
-- You must enable IoT SiteWise to export data to Amazon S3 before you
-- create a bulk import job. For more information about how to configure
-- storage settings, see
-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutStorageConfiguration.html PutStorageConfiguration>.
module Amazonka.IoTSiteWise.CreateBulkImportJob
  ( -- * Creating a Request
    CreateBulkImportJob (..),
    newCreateBulkImportJob,

    -- * Request Lenses
    createBulkImportJob_jobName,
    createBulkImportJob_jobRoleArn,
    createBulkImportJob_files,
    createBulkImportJob_errorReportLocation,
    createBulkImportJob_jobConfiguration,

    -- * Destructuring the Response
    CreateBulkImportJobResponse (..),
    newCreateBulkImportJobResponse,

    -- * Response Lenses
    createBulkImportJobResponse_httpStatus,
    createBulkImportJobResponse_jobId,
    createBulkImportJobResponse_jobName,
    createBulkImportJobResponse_jobStatus,
  )
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:/ 'newCreateBulkImportJob' smart constructor.
data CreateBulkImportJob = CreateBulkImportJob'
  { -- | The unique name that helps identify the job request.
    CreateBulkImportJob -> Text
jobName :: Prelude.Text,
    -- | 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.
    CreateBulkImportJob -> Text
jobRoleArn :: Prelude.Text,
    -- | The files in the specified Amazon S3 bucket that contain your data.
    CreateBulkImportJob -> [File]
files :: [File],
    -- | The Amazon S3 destination where errors associated with the job creation
    -- request are saved.
    CreateBulkImportJob -> ErrorReportLocation
errorReportLocation :: ErrorReportLocation,
    -- | Contains the configuration information of a job, such as the file format
    -- used to save data in Amazon S3.
    CreateBulkImportJob -> JobConfiguration
jobConfiguration :: JobConfiguration
  }
  deriving (CreateBulkImportJob -> CreateBulkImportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateBulkImportJob -> CreateBulkImportJob -> Bool
$c/= :: CreateBulkImportJob -> CreateBulkImportJob -> Bool
== :: CreateBulkImportJob -> CreateBulkImportJob -> Bool
$c== :: CreateBulkImportJob -> CreateBulkImportJob -> Bool
Prelude.Eq, ReadPrec [CreateBulkImportJob]
ReadPrec CreateBulkImportJob
Int -> ReadS CreateBulkImportJob
ReadS [CreateBulkImportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateBulkImportJob]
$creadListPrec :: ReadPrec [CreateBulkImportJob]
readPrec :: ReadPrec CreateBulkImportJob
$creadPrec :: ReadPrec CreateBulkImportJob
readList :: ReadS [CreateBulkImportJob]
$creadList :: ReadS [CreateBulkImportJob]
readsPrec :: Int -> ReadS CreateBulkImportJob
$creadsPrec :: Int -> ReadS CreateBulkImportJob
Prelude.Read, Int -> CreateBulkImportJob -> ShowS
[CreateBulkImportJob] -> ShowS
CreateBulkImportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateBulkImportJob] -> ShowS
$cshowList :: [CreateBulkImportJob] -> ShowS
show :: CreateBulkImportJob -> String
$cshow :: CreateBulkImportJob -> String
showsPrec :: Int -> CreateBulkImportJob -> ShowS
$cshowsPrec :: Int -> CreateBulkImportJob -> ShowS
Prelude.Show, forall x. Rep CreateBulkImportJob x -> CreateBulkImportJob
forall x. CreateBulkImportJob -> Rep CreateBulkImportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateBulkImportJob x -> CreateBulkImportJob
$cfrom :: forall x. CreateBulkImportJob -> Rep CreateBulkImportJob x
Prelude.Generic)

-- |
-- Create a value of 'CreateBulkImportJob' 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:
--
-- 'jobName', 'createBulkImportJob_jobName' - The unique name that helps identify the job request.
--
-- 'jobRoleArn', 'createBulkImportJob_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', 'createBulkImportJob_files' - The files in the specified Amazon S3 bucket that contain your data.
--
-- 'errorReportLocation', 'createBulkImportJob_errorReportLocation' - The Amazon S3 destination where errors associated with the job creation
-- request are saved.
--
-- 'jobConfiguration', 'createBulkImportJob_jobConfiguration' - Contains the configuration information of a job, such as the file format
-- used to save data in Amazon S3.
newCreateBulkImportJob ::
  -- | 'jobName'
  Prelude.Text ->
  -- | 'jobRoleArn'
  Prelude.Text ->
  -- | 'errorReportLocation'
  ErrorReportLocation ->
  -- | 'jobConfiguration'
  JobConfiguration ->
  CreateBulkImportJob
newCreateBulkImportJob :: Text
-> Text
-> ErrorReportLocation
-> JobConfiguration
-> CreateBulkImportJob
newCreateBulkImportJob
  Text
pJobName_
  Text
pJobRoleArn_
  ErrorReportLocation
pErrorReportLocation_
  JobConfiguration
pJobConfiguration_ =
    CreateBulkImportJob'
      { $sel:jobName:CreateBulkImportJob' :: Text
jobName = Text
pJobName_,
        $sel:jobRoleArn:CreateBulkImportJob' :: Text
jobRoleArn = Text
pJobRoleArn_,
        $sel:files:CreateBulkImportJob' :: [File]
files = forall a. Monoid a => a
Prelude.mempty,
        $sel:errorReportLocation:CreateBulkImportJob' :: ErrorReportLocation
errorReportLocation = ErrorReportLocation
pErrorReportLocation_,
        $sel:jobConfiguration:CreateBulkImportJob' :: JobConfiguration
jobConfiguration = JobConfiguration
pJobConfiguration_
      }

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

-- | 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.
createBulkImportJob_jobRoleArn :: Lens.Lens' CreateBulkImportJob Prelude.Text
createBulkImportJob_jobRoleArn :: Lens' CreateBulkImportJob Text
createBulkImportJob_jobRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBulkImportJob' {Text
jobRoleArn :: Text
$sel:jobRoleArn:CreateBulkImportJob' :: CreateBulkImportJob -> Text
jobRoleArn} -> Text
jobRoleArn) (\s :: CreateBulkImportJob
s@CreateBulkImportJob' {} Text
a -> CreateBulkImportJob
s {$sel:jobRoleArn:CreateBulkImportJob' :: Text
jobRoleArn = Text
a} :: CreateBulkImportJob)

-- | The files in the specified Amazon S3 bucket that contain your data.
createBulkImportJob_files :: Lens.Lens' CreateBulkImportJob [File]
createBulkImportJob_files :: Lens' CreateBulkImportJob [File]
createBulkImportJob_files = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBulkImportJob' {[File]
files :: [File]
$sel:files:CreateBulkImportJob' :: CreateBulkImportJob -> [File]
files} -> [File]
files) (\s :: CreateBulkImportJob
s@CreateBulkImportJob' {} [File]
a -> CreateBulkImportJob
s {$sel:files:CreateBulkImportJob' :: [File]
files = [File]
a} :: CreateBulkImportJob) 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.
createBulkImportJob_errorReportLocation :: Lens.Lens' CreateBulkImportJob ErrorReportLocation
createBulkImportJob_errorReportLocation :: Lens' CreateBulkImportJob ErrorReportLocation
createBulkImportJob_errorReportLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBulkImportJob' {ErrorReportLocation
errorReportLocation :: ErrorReportLocation
$sel:errorReportLocation:CreateBulkImportJob' :: CreateBulkImportJob -> ErrorReportLocation
errorReportLocation} -> ErrorReportLocation
errorReportLocation) (\s :: CreateBulkImportJob
s@CreateBulkImportJob' {} ErrorReportLocation
a -> CreateBulkImportJob
s {$sel:errorReportLocation:CreateBulkImportJob' :: ErrorReportLocation
errorReportLocation = ErrorReportLocation
a} :: CreateBulkImportJob)

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

instance Core.AWSRequest CreateBulkImportJob where
  type
    AWSResponse CreateBulkImportJob =
      CreateBulkImportJobResponse
  request :: (Service -> Service)
-> CreateBulkImportJob -> Request CreateBulkImportJob
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 CreateBulkImportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateBulkImportJob)))
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 -> CreateBulkImportJobResponse
CreateBulkImportJobResponse'
            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")
      )

instance Prelude.Hashable CreateBulkImportJob where
  hashWithSalt :: Int -> CreateBulkImportJob -> Int
hashWithSalt Int
_salt CreateBulkImportJob' {[File]
Text
ErrorReportLocation
JobConfiguration
jobConfiguration :: JobConfiguration
errorReportLocation :: ErrorReportLocation
files :: [File]
jobRoleArn :: Text
jobName :: Text
$sel:jobConfiguration:CreateBulkImportJob' :: CreateBulkImportJob -> JobConfiguration
$sel:errorReportLocation:CreateBulkImportJob' :: CreateBulkImportJob -> ErrorReportLocation
$sel:files:CreateBulkImportJob' :: CreateBulkImportJob -> [File]
$sel:jobRoleArn:CreateBulkImportJob' :: CreateBulkImportJob -> Text
$sel:jobName:CreateBulkImportJob' :: CreateBulkImportJob -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
jobName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
jobRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [File]
files
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ErrorReportLocation
errorReportLocation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` JobConfiguration
jobConfiguration

instance Prelude.NFData CreateBulkImportJob where
  rnf :: CreateBulkImportJob -> ()
rnf CreateBulkImportJob' {[File]
Text
ErrorReportLocation
JobConfiguration
jobConfiguration :: JobConfiguration
errorReportLocation :: ErrorReportLocation
files :: [File]
jobRoleArn :: Text
jobName :: Text
$sel:jobConfiguration:CreateBulkImportJob' :: CreateBulkImportJob -> JobConfiguration
$sel:errorReportLocation:CreateBulkImportJob' :: CreateBulkImportJob -> ErrorReportLocation
$sel:files:CreateBulkImportJob' :: CreateBulkImportJob -> [File]
$sel:jobRoleArn:CreateBulkImportJob' :: CreateBulkImportJob -> Text
$sel:jobName:CreateBulkImportJob' :: CreateBulkImportJob -> Text
..} =
    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 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

instance Data.ToHeaders CreateBulkImportJob where
  toHeaders :: CreateBulkImportJob -> 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.ToJSON CreateBulkImportJob where
  toJSON :: CreateBulkImportJob -> Value
toJSON CreateBulkImportJob' {[File]
Text
ErrorReportLocation
JobConfiguration
jobConfiguration :: JobConfiguration
errorReportLocation :: ErrorReportLocation
files :: [File]
jobRoleArn :: Text
jobName :: Text
$sel:jobConfiguration:CreateBulkImportJob' :: CreateBulkImportJob -> JobConfiguration
$sel:errorReportLocation:CreateBulkImportJob' :: CreateBulkImportJob -> ErrorReportLocation
$sel:files:CreateBulkImportJob' :: CreateBulkImportJob -> [File]
$sel:jobRoleArn:CreateBulkImportJob' :: CreateBulkImportJob -> Text
$sel:jobName:CreateBulkImportJob' :: CreateBulkImportJob -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"jobName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
jobName),
            forall a. a -> Maybe a
Prelude.Just (Key
"jobRoleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
jobRoleArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"files" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [File]
files),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"errorReportLocation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ErrorReportLocation
errorReportLocation),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"jobConfiguration" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= JobConfiguration
jobConfiguration)
          ]
      )

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

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

-- | /See:/ 'newCreateBulkImportJobResponse' smart constructor.
data CreateBulkImportJobResponse = CreateBulkImportJobResponse'
  { -- | The response's http status code.
    CreateBulkImportJobResponse -> Int
httpStatus :: Prelude.Int,
    -- | The ID of the job.
    CreateBulkImportJobResponse -> Text
jobId :: Prelude.Text,
    -- | The unique name that helps identify the job request.
    CreateBulkImportJobResponse -> 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.
    CreateBulkImportJobResponse -> JobStatus
jobStatus :: JobStatus
  }
  deriving (CreateBulkImportJobResponse -> CreateBulkImportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateBulkImportJobResponse -> CreateBulkImportJobResponse -> Bool
$c/= :: CreateBulkImportJobResponse -> CreateBulkImportJobResponse -> Bool
== :: CreateBulkImportJobResponse -> CreateBulkImportJobResponse -> Bool
$c== :: CreateBulkImportJobResponse -> CreateBulkImportJobResponse -> Bool
Prelude.Eq, ReadPrec [CreateBulkImportJobResponse]
ReadPrec CreateBulkImportJobResponse
Int -> ReadS CreateBulkImportJobResponse
ReadS [CreateBulkImportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateBulkImportJobResponse]
$creadListPrec :: ReadPrec [CreateBulkImportJobResponse]
readPrec :: ReadPrec CreateBulkImportJobResponse
$creadPrec :: ReadPrec CreateBulkImportJobResponse
readList :: ReadS [CreateBulkImportJobResponse]
$creadList :: ReadS [CreateBulkImportJobResponse]
readsPrec :: Int -> ReadS CreateBulkImportJobResponse
$creadsPrec :: Int -> ReadS CreateBulkImportJobResponse
Prelude.Read, Int -> CreateBulkImportJobResponse -> ShowS
[CreateBulkImportJobResponse] -> ShowS
CreateBulkImportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateBulkImportJobResponse] -> ShowS
$cshowList :: [CreateBulkImportJobResponse] -> ShowS
show :: CreateBulkImportJobResponse -> String
$cshow :: CreateBulkImportJobResponse -> String
showsPrec :: Int -> CreateBulkImportJobResponse -> ShowS
$cshowsPrec :: Int -> CreateBulkImportJobResponse -> ShowS
Prelude.Show, forall x.
Rep CreateBulkImportJobResponse x -> CreateBulkImportJobResponse
forall x.
CreateBulkImportJobResponse -> Rep CreateBulkImportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateBulkImportJobResponse x -> CreateBulkImportJobResponse
$cfrom :: forall x.
CreateBulkImportJobResponse -> Rep CreateBulkImportJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateBulkImportJobResponse' 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', 'createBulkImportJobResponse_httpStatus' - The response's http status code.
--
-- 'jobId', 'createBulkImportJobResponse_jobId' - The ID of the job.
--
-- 'jobName', 'createBulkImportJobResponse_jobName' - The unique name that helps identify the job request.
--
-- 'jobStatus', 'createBulkImportJobResponse_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.
newCreateBulkImportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobId'
  Prelude.Text ->
  -- | 'jobName'
  Prelude.Text ->
  -- | 'jobStatus'
  JobStatus ->
  CreateBulkImportJobResponse
newCreateBulkImportJobResponse :: Int -> Text -> Text -> JobStatus -> CreateBulkImportJobResponse
newCreateBulkImportJobResponse
  Int
pHttpStatus_
  Text
pJobId_
  Text
pJobName_
  JobStatus
pJobStatus_ =
    CreateBulkImportJobResponse'
      { $sel:httpStatus:CreateBulkImportJobResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:jobId:CreateBulkImportJobResponse' :: Text
jobId = Text
pJobId_,
        $sel:jobName:CreateBulkImportJobResponse' :: Text
jobName = Text
pJobName_,
        $sel:jobStatus:CreateBulkImportJobResponse' :: JobStatus
jobStatus = JobStatus
pJobStatus_
      }

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

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

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

-- | 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.
createBulkImportJobResponse_jobStatus :: Lens.Lens' CreateBulkImportJobResponse JobStatus
createBulkImportJobResponse_jobStatus :: Lens' CreateBulkImportJobResponse JobStatus
createBulkImportJobResponse_jobStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBulkImportJobResponse' {JobStatus
jobStatus :: JobStatus
$sel:jobStatus:CreateBulkImportJobResponse' :: CreateBulkImportJobResponse -> JobStatus
jobStatus} -> JobStatus
jobStatus) (\s :: CreateBulkImportJobResponse
s@CreateBulkImportJobResponse' {} JobStatus
a -> CreateBulkImportJobResponse
s {$sel:jobStatus:CreateBulkImportJobResponse' :: JobStatus
jobStatus = JobStatus
a} :: CreateBulkImportJobResponse)

instance Prelude.NFData CreateBulkImportJobResponse where
  rnf :: CreateBulkImportJobResponse -> ()
rnf CreateBulkImportJobResponse' {Int
Text
JobStatus
jobStatus :: JobStatus
jobName :: Text
jobId :: Text
httpStatus :: Int
$sel:jobStatus:CreateBulkImportJobResponse' :: CreateBulkImportJobResponse -> JobStatus
$sel:jobName:CreateBulkImportJobResponse' :: CreateBulkImportJobResponse -> Text
$sel:jobId:CreateBulkImportJobResponse' :: CreateBulkImportJobResponse -> Text
$sel:httpStatus:CreateBulkImportJobResponse' :: CreateBulkImportJobResponse -> 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