{-# 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.Omics.StartReferenceImportJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Starts a reference import job.
module Amazonka.Omics.StartReferenceImportJob
  ( -- * Creating a Request
    StartReferenceImportJob (..),
    newStartReferenceImportJob,

    -- * Request Lenses
    startReferenceImportJob_clientToken,
    startReferenceImportJob_referenceStoreId,
    startReferenceImportJob_roleArn,
    startReferenceImportJob_sources,

    -- * Destructuring the Response
    StartReferenceImportJobResponse (..),
    newStartReferenceImportJobResponse,

    -- * Response Lenses
    startReferenceImportJobResponse_httpStatus,
    startReferenceImportJobResponse_creationTime,
    startReferenceImportJobResponse_id,
    startReferenceImportJobResponse_referenceStoreId,
    startReferenceImportJobResponse_roleArn,
    startReferenceImportJobResponse_status,
  )
where

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

-- | /See:/ 'newStartReferenceImportJob' smart constructor.
data StartReferenceImportJob = StartReferenceImportJob'
  { -- | To ensure that jobs don\'t run multiple times, specify a unique token
    -- for each job.
    StartReferenceImportJob -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The job\'s reference store ID.
    StartReferenceImportJob -> Text
referenceStoreId :: Prelude.Text,
    -- | A service role for the job.
    StartReferenceImportJob -> Text
roleArn :: Prelude.Text,
    -- | Sources for the job.
    StartReferenceImportJob
-> NonEmpty StartReferenceImportJobSourceItem
sources :: Prelude.NonEmpty StartReferenceImportJobSourceItem
  }
  deriving (StartReferenceImportJob -> StartReferenceImportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartReferenceImportJob -> StartReferenceImportJob -> Bool
$c/= :: StartReferenceImportJob -> StartReferenceImportJob -> Bool
== :: StartReferenceImportJob -> StartReferenceImportJob -> Bool
$c== :: StartReferenceImportJob -> StartReferenceImportJob -> Bool
Prelude.Eq, ReadPrec [StartReferenceImportJob]
ReadPrec StartReferenceImportJob
Int -> ReadS StartReferenceImportJob
ReadS [StartReferenceImportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartReferenceImportJob]
$creadListPrec :: ReadPrec [StartReferenceImportJob]
readPrec :: ReadPrec StartReferenceImportJob
$creadPrec :: ReadPrec StartReferenceImportJob
readList :: ReadS [StartReferenceImportJob]
$creadList :: ReadS [StartReferenceImportJob]
readsPrec :: Int -> ReadS StartReferenceImportJob
$creadsPrec :: Int -> ReadS StartReferenceImportJob
Prelude.Read, Int -> StartReferenceImportJob -> ShowS
[StartReferenceImportJob] -> ShowS
StartReferenceImportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartReferenceImportJob] -> ShowS
$cshowList :: [StartReferenceImportJob] -> ShowS
show :: StartReferenceImportJob -> String
$cshow :: StartReferenceImportJob -> String
showsPrec :: Int -> StartReferenceImportJob -> ShowS
$cshowsPrec :: Int -> StartReferenceImportJob -> ShowS
Prelude.Show, forall x. Rep StartReferenceImportJob x -> StartReferenceImportJob
forall x. StartReferenceImportJob -> Rep StartReferenceImportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StartReferenceImportJob x -> StartReferenceImportJob
$cfrom :: forall x. StartReferenceImportJob -> Rep StartReferenceImportJob x
Prelude.Generic)

-- |
-- Create a value of 'StartReferenceImportJob' 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:
--
-- 'clientToken', 'startReferenceImportJob_clientToken' - To ensure that jobs don\'t run multiple times, specify a unique token
-- for each job.
--
-- 'referenceStoreId', 'startReferenceImportJob_referenceStoreId' - The job\'s reference store ID.
--
-- 'roleArn', 'startReferenceImportJob_roleArn' - A service role for the job.
--
-- 'sources', 'startReferenceImportJob_sources' - Sources for the job.
newStartReferenceImportJob ::
  -- | 'referenceStoreId'
  Prelude.Text ->
  -- | 'roleArn'
  Prelude.Text ->
  -- | 'sources'
  Prelude.NonEmpty StartReferenceImportJobSourceItem ->
  StartReferenceImportJob
newStartReferenceImportJob :: Text
-> Text
-> NonEmpty StartReferenceImportJobSourceItem
-> StartReferenceImportJob
newStartReferenceImportJob
  Text
pReferenceStoreId_
  Text
pRoleArn_
  NonEmpty StartReferenceImportJobSourceItem
pSources_ =
    StartReferenceImportJob'
      { $sel:clientToken:StartReferenceImportJob' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:referenceStoreId:StartReferenceImportJob' :: Text
referenceStoreId = Text
pReferenceStoreId_,
        $sel:roleArn:StartReferenceImportJob' :: Text
roleArn = Text
pRoleArn_,
        $sel:sources:StartReferenceImportJob' :: NonEmpty StartReferenceImportJobSourceItem
sources = forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty StartReferenceImportJobSourceItem
pSources_
      }

-- | To ensure that jobs don\'t run multiple times, specify a unique token
-- for each job.
startReferenceImportJob_clientToken :: Lens.Lens' StartReferenceImportJob (Prelude.Maybe Prelude.Text)
startReferenceImportJob_clientToken :: Lens' StartReferenceImportJob (Maybe Text)
startReferenceImportJob_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJob' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:StartReferenceImportJob' :: StartReferenceImportJob -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: StartReferenceImportJob
s@StartReferenceImportJob' {} Maybe Text
a -> StartReferenceImportJob
s {$sel:clientToken:StartReferenceImportJob' :: Maybe Text
clientToken = Maybe Text
a} :: StartReferenceImportJob)

-- | The job\'s reference store ID.
startReferenceImportJob_referenceStoreId :: Lens.Lens' StartReferenceImportJob Prelude.Text
startReferenceImportJob_referenceStoreId :: Lens' StartReferenceImportJob Text
startReferenceImportJob_referenceStoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJob' {Text
referenceStoreId :: Text
$sel:referenceStoreId:StartReferenceImportJob' :: StartReferenceImportJob -> Text
referenceStoreId} -> Text
referenceStoreId) (\s :: StartReferenceImportJob
s@StartReferenceImportJob' {} Text
a -> StartReferenceImportJob
s {$sel:referenceStoreId:StartReferenceImportJob' :: Text
referenceStoreId = Text
a} :: StartReferenceImportJob)

-- | A service role for the job.
startReferenceImportJob_roleArn :: Lens.Lens' StartReferenceImportJob Prelude.Text
startReferenceImportJob_roleArn :: Lens' StartReferenceImportJob Text
startReferenceImportJob_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJob' {Text
roleArn :: Text
$sel:roleArn:StartReferenceImportJob' :: StartReferenceImportJob -> Text
roleArn} -> Text
roleArn) (\s :: StartReferenceImportJob
s@StartReferenceImportJob' {} Text
a -> StartReferenceImportJob
s {$sel:roleArn:StartReferenceImportJob' :: Text
roleArn = Text
a} :: StartReferenceImportJob)

-- | Sources for the job.
startReferenceImportJob_sources :: Lens.Lens' StartReferenceImportJob (Prelude.NonEmpty StartReferenceImportJobSourceItem)
startReferenceImportJob_sources :: Lens'
  StartReferenceImportJob
  (NonEmpty StartReferenceImportJobSourceItem)
startReferenceImportJob_sources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJob' {NonEmpty StartReferenceImportJobSourceItem
sources :: NonEmpty StartReferenceImportJobSourceItem
$sel:sources:StartReferenceImportJob' :: StartReferenceImportJob
-> NonEmpty StartReferenceImportJobSourceItem
sources} -> NonEmpty StartReferenceImportJobSourceItem
sources) (\s :: StartReferenceImportJob
s@StartReferenceImportJob' {} NonEmpty StartReferenceImportJobSourceItem
a -> StartReferenceImportJob
s {$sel:sources:StartReferenceImportJob' :: NonEmpty StartReferenceImportJobSourceItem
sources = NonEmpty StartReferenceImportJobSourceItem
a} :: StartReferenceImportJob) 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

instance Core.AWSRequest StartReferenceImportJob where
  type
    AWSResponse StartReferenceImportJob =
      StartReferenceImportJobResponse
  request :: (Service -> Service)
-> StartReferenceImportJob -> Request StartReferenceImportJob
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 StartReferenceImportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse StartReferenceImportJob)))
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
-> ISO8601
-> Text
-> Text
-> Text
-> ReferenceImportJobStatus
-> StartReferenceImportJobResponse
StartReferenceImportJobResponse'
            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
"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 a
Data..:> Key
"id")
            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
"referenceStoreId")
            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
"roleArn")
            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
"status")
      )

instance Prelude.Hashable StartReferenceImportJob where
  hashWithSalt :: Int -> StartReferenceImportJob -> Int
hashWithSalt Int
_salt StartReferenceImportJob' {Maybe Text
NonEmpty StartReferenceImportJobSourceItem
Text
sources :: NonEmpty StartReferenceImportJobSourceItem
roleArn :: Text
referenceStoreId :: Text
clientToken :: Maybe Text
$sel:sources:StartReferenceImportJob' :: StartReferenceImportJob
-> NonEmpty StartReferenceImportJobSourceItem
$sel:roleArn:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:referenceStoreId:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:clientToken:StartReferenceImportJob' :: StartReferenceImportJob -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
referenceStoreId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
roleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty StartReferenceImportJobSourceItem
sources

instance Prelude.NFData StartReferenceImportJob where
  rnf :: StartReferenceImportJob -> ()
rnf StartReferenceImportJob' {Maybe Text
NonEmpty StartReferenceImportJobSourceItem
Text
sources :: NonEmpty StartReferenceImportJobSourceItem
roleArn :: Text
referenceStoreId :: Text
clientToken :: Maybe Text
$sel:sources:StartReferenceImportJob' :: StartReferenceImportJob
-> NonEmpty StartReferenceImportJobSourceItem
$sel:roleArn:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:referenceStoreId:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:clientToken:StartReferenceImportJob' :: StartReferenceImportJob -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
referenceStoreId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty StartReferenceImportJobSourceItem
sources

instance Data.ToHeaders StartReferenceImportJob where
  toHeaders :: StartReferenceImportJob -> 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 StartReferenceImportJob where
  toJSON :: StartReferenceImportJob -> Value
toJSON StartReferenceImportJob' {Maybe Text
NonEmpty StartReferenceImportJobSourceItem
Text
sources :: NonEmpty StartReferenceImportJobSourceItem
roleArn :: Text
referenceStoreId :: Text
clientToken :: Maybe Text
$sel:sources:StartReferenceImportJob' :: StartReferenceImportJob
-> NonEmpty StartReferenceImportJobSourceItem
$sel:roleArn:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:referenceStoreId:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:clientToken:StartReferenceImportJob' :: StartReferenceImportJob -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"clientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clientToken,
            forall a. a -> Maybe a
Prelude.Just (Key
"roleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
roleArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"sources" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty StartReferenceImportJobSourceItem
sources)
          ]
      )

instance Data.ToPath StartReferenceImportJob where
  toPath :: StartReferenceImportJob -> ByteString
toPath StartReferenceImportJob' {Maybe Text
NonEmpty StartReferenceImportJobSourceItem
Text
sources :: NonEmpty StartReferenceImportJobSourceItem
roleArn :: Text
referenceStoreId :: Text
clientToken :: Maybe Text
$sel:sources:StartReferenceImportJob' :: StartReferenceImportJob
-> NonEmpty StartReferenceImportJobSourceItem
$sel:roleArn:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:referenceStoreId:StartReferenceImportJob' :: StartReferenceImportJob -> Text
$sel:clientToken:StartReferenceImportJob' :: StartReferenceImportJob -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/referencestore/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
referenceStoreId,
        ByteString
"/importjob"
      ]

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

-- | /See:/ 'newStartReferenceImportJobResponse' smart constructor.
data StartReferenceImportJobResponse = StartReferenceImportJobResponse'
  { -- | The response's http status code.
    StartReferenceImportJobResponse -> Int
httpStatus :: Prelude.Int,
    -- | When the job was created.
    StartReferenceImportJobResponse -> ISO8601
creationTime :: Data.ISO8601,
    -- | The job\'s ID.
    StartReferenceImportJobResponse -> Text
id :: Prelude.Text,
    -- | The job\'s reference store ID.
    StartReferenceImportJobResponse -> Text
referenceStoreId :: Prelude.Text,
    -- | The job\'s service role ARN.
    StartReferenceImportJobResponse -> Text
roleArn :: Prelude.Text,
    -- | The job\'s status.
    StartReferenceImportJobResponse -> ReferenceImportJobStatus
status :: ReferenceImportJobStatus
  }
  deriving (StartReferenceImportJobResponse
-> StartReferenceImportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartReferenceImportJobResponse
-> StartReferenceImportJobResponse -> Bool
$c/= :: StartReferenceImportJobResponse
-> StartReferenceImportJobResponse -> Bool
== :: StartReferenceImportJobResponse
-> StartReferenceImportJobResponse -> Bool
$c== :: StartReferenceImportJobResponse
-> StartReferenceImportJobResponse -> Bool
Prelude.Eq, ReadPrec [StartReferenceImportJobResponse]
ReadPrec StartReferenceImportJobResponse
Int -> ReadS StartReferenceImportJobResponse
ReadS [StartReferenceImportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartReferenceImportJobResponse]
$creadListPrec :: ReadPrec [StartReferenceImportJobResponse]
readPrec :: ReadPrec StartReferenceImportJobResponse
$creadPrec :: ReadPrec StartReferenceImportJobResponse
readList :: ReadS [StartReferenceImportJobResponse]
$creadList :: ReadS [StartReferenceImportJobResponse]
readsPrec :: Int -> ReadS StartReferenceImportJobResponse
$creadsPrec :: Int -> ReadS StartReferenceImportJobResponse
Prelude.Read, Int -> StartReferenceImportJobResponse -> ShowS
[StartReferenceImportJobResponse] -> ShowS
StartReferenceImportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartReferenceImportJobResponse] -> ShowS
$cshowList :: [StartReferenceImportJobResponse] -> ShowS
show :: StartReferenceImportJobResponse -> String
$cshow :: StartReferenceImportJobResponse -> String
showsPrec :: Int -> StartReferenceImportJobResponse -> ShowS
$cshowsPrec :: Int -> StartReferenceImportJobResponse -> ShowS
Prelude.Show, forall x.
Rep StartReferenceImportJobResponse x
-> StartReferenceImportJobResponse
forall x.
StartReferenceImportJobResponse
-> Rep StartReferenceImportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartReferenceImportJobResponse x
-> StartReferenceImportJobResponse
$cfrom :: forall x.
StartReferenceImportJobResponse
-> Rep StartReferenceImportJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'StartReferenceImportJobResponse' 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', 'startReferenceImportJobResponse_httpStatus' - The response's http status code.
--
-- 'creationTime', 'startReferenceImportJobResponse_creationTime' - When the job was created.
--
-- 'id', 'startReferenceImportJobResponse_id' - The job\'s ID.
--
-- 'referenceStoreId', 'startReferenceImportJobResponse_referenceStoreId' - The job\'s reference store ID.
--
-- 'roleArn', 'startReferenceImportJobResponse_roleArn' - The job\'s service role ARN.
--
-- 'status', 'startReferenceImportJobResponse_status' - The job\'s status.
newStartReferenceImportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'creationTime'
  Prelude.UTCTime ->
  -- | 'id'
  Prelude.Text ->
  -- | 'referenceStoreId'
  Prelude.Text ->
  -- | 'roleArn'
  Prelude.Text ->
  -- | 'status'
  ReferenceImportJobStatus ->
  StartReferenceImportJobResponse
newStartReferenceImportJobResponse :: Int
-> UTCTime
-> Text
-> Text
-> Text
-> ReferenceImportJobStatus
-> StartReferenceImportJobResponse
newStartReferenceImportJobResponse
  Int
pHttpStatus_
  UTCTime
pCreationTime_
  Text
pId_
  Text
pReferenceStoreId_
  Text
pRoleArn_
  ReferenceImportJobStatus
pStatus_ =
    StartReferenceImportJobResponse'
      { $sel:httpStatus:StartReferenceImportJobResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:creationTime:StartReferenceImportJobResponse' :: ISO8601
creationTime =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreationTime_,
        $sel:id:StartReferenceImportJobResponse' :: Text
id = Text
pId_,
        $sel:referenceStoreId:StartReferenceImportJobResponse' :: Text
referenceStoreId = Text
pReferenceStoreId_,
        $sel:roleArn:StartReferenceImportJobResponse' :: Text
roleArn = Text
pRoleArn_,
        $sel:status:StartReferenceImportJobResponse' :: ReferenceImportJobStatus
status = ReferenceImportJobStatus
pStatus_
      }

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

-- | When the job was created.
startReferenceImportJobResponse_creationTime :: Lens.Lens' StartReferenceImportJobResponse Prelude.UTCTime
startReferenceImportJobResponse_creationTime :: Lens' StartReferenceImportJobResponse UTCTime
startReferenceImportJobResponse_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJobResponse' {ISO8601
creationTime :: ISO8601
$sel:creationTime:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> ISO8601
creationTime} -> ISO8601
creationTime) (\s :: StartReferenceImportJobResponse
s@StartReferenceImportJobResponse' {} ISO8601
a -> StartReferenceImportJobResponse
s {$sel:creationTime:StartReferenceImportJobResponse' :: ISO8601
creationTime = ISO8601
a} :: StartReferenceImportJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The job\'s ID.
startReferenceImportJobResponse_id :: Lens.Lens' StartReferenceImportJobResponse Prelude.Text
startReferenceImportJobResponse_id :: Lens' StartReferenceImportJobResponse Text
startReferenceImportJobResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJobResponse' {Text
id :: Text
$sel:id:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> Text
id} -> Text
id) (\s :: StartReferenceImportJobResponse
s@StartReferenceImportJobResponse' {} Text
a -> StartReferenceImportJobResponse
s {$sel:id:StartReferenceImportJobResponse' :: Text
id = Text
a} :: StartReferenceImportJobResponse)

-- | The job\'s reference store ID.
startReferenceImportJobResponse_referenceStoreId :: Lens.Lens' StartReferenceImportJobResponse Prelude.Text
startReferenceImportJobResponse_referenceStoreId :: Lens' StartReferenceImportJobResponse Text
startReferenceImportJobResponse_referenceStoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJobResponse' {Text
referenceStoreId :: Text
$sel:referenceStoreId:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> Text
referenceStoreId} -> Text
referenceStoreId) (\s :: StartReferenceImportJobResponse
s@StartReferenceImportJobResponse' {} Text
a -> StartReferenceImportJobResponse
s {$sel:referenceStoreId:StartReferenceImportJobResponse' :: Text
referenceStoreId = Text
a} :: StartReferenceImportJobResponse)

-- | The job\'s service role ARN.
startReferenceImportJobResponse_roleArn :: Lens.Lens' StartReferenceImportJobResponse Prelude.Text
startReferenceImportJobResponse_roleArn :: Lens' StartReferenceImportJobResponse Text
startReferenceImportJobResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJobResponse' {Text
roleArn :: Text
$sel:roleArn:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> Text
roleArn} -> Text
roleArn) (\s :: StartReferenceImportJobResponse
s@StartReferenceImportJobResponse' {} Text
a -> StartReferenceImportJobResponse
s {$sel:roleArn:StartReferenceImportJobResponse' :: Text
roleArn = Text
a} :: StartReferenceImportJobResponse)

-- | The job\'s status.
startReferenceImportJobResponse_status :: Lens.Lens' StartReferenceImportJobResponse ReferenceImportJobStatus
startReferenceImportJobResponse_status :: Lens' StartReferenceImportJobResponse ReferenceImportJobStatus
startReferenceImportJobResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReferenceImportJobResponse' {ReferenceImportJobStatus
status :: ReferenceImportJobStatus
$sel:status:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> ReferenceImportJobStatus
status} -> ReferenceImportJobStatus
status) (\s :: StartReferenceImportJobResponse
s@StartReferenceImportJobResponse' {} ReferenceImportJobStatus
a -> StartReferenceImportJobResponse
s {$sel:status:StartReferenceImportJobResponse' :: ReferenceImportJobStatus
status = ReferenceImportJobStatus
a} :: StartReferenceImportJobResponse)

instance
  Prelude.NFData
    StartReferenceImportJobResponse
  where
  rnf :: StartReferenceImportJobResponse -> ()
rnf StartReferenceImportJobResponse' {Int
Text
ISO8601
ReferenceImportJobStatus
status :: ReferenceImportJobStatus
roleArn :: Text
referenceStoreId :: Text
id :: Text
creationTime :: ISO8601
httpStatus :: Int
$sel:status:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> ReferenceImportJobStatus
$sel:roleArn:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> Text
$sel:referenceStoreId:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> Text
$sel:id:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> Text
$sel:creationTime:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> ISO8601
$sel:httpStatus:StartReferenceImportJobResponse' :: StartReferenceImportJobResponse -> 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 ISO8601
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
referenceStoreId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ReferenceImportJobStatus
status