{-# 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.StartReadSetImportJob
-- 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 read set import job.
module Amazonka.Omics.StartReadSetImportJob
  ( -- * Creating a Request
    StartReadSetImportJob (..),
    newStartReadSetImportJob,

    -- * Request Lenses
    startReadSetImportJob_clientToken,
    startReadSetImportJob_roleArn,
    startReadSetImportJob_sequenceStoreId,
    startReadSetImportJob_sources,

    -- * Destructuring the Response
    StartReadSetImportJobResponse (..),
    newStartReadSetImportJobResponse,

    -- * Response Lenses
    startReadSetImportJobResponse_httpStatus,
    startReadSetImportJobResponse_creationTime,
    startReadSetImportJobResponse_id,
    startReadSetImportJobResponse_roleArn,
    startReadSetImportJobResponse_sequenceStoreId,
    startReadSetImportJobResponse_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:/ 'newStartReadSetImportJob' smart constructor.
data StartReadSetImportJob = StartReadSetImportJob'
  { -- | To ensure that jobs don\'t run multiple times, specify a unique token
    -- for each job.
    StartReadSetImportJob -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | A service role for the job.
    StartReadSetImportJob -> Text
roleArn :: Prelude.Text,
    -- | The read set\'s sequence store ID.
    StartReadSetImportJob -> Text
sequenceStoreId :: Prelude.Text,
    -- | Source files to import.
    StartReadSetImportJob -> NonEmpty StartReadSetImportJobSourceItem
sources :: Prelude.NonEmpty StartReadSetImportJobSourceItem
  }
  deriving (StartReadSetImportJob -> StartReadSetImportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartReadSetImportJob -> StartReadSetImportJob -> Bool
$c/= :: StartReadSetImportJob -> StartReadSetImportJob -> Bool
== :: StartReadSetImportJob -> StartReadSetImportJob -> Bool
$c== :: StartReadSetImportJob -> StartReadSetImportJob -> Bool
Prelude.Eq, ReadPrec [StartReadSetImportJob]
ReadPrec StartReadSetImportJob
Int -> ReadS StartReadSetImportJob
ReadS [StartReadSetImportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartReadSetImportJob]
$creadListPrec :: ReadPrec [StartReadSetImportJob]
readPrec :: ReadPrec StartReadSetImportJob
$creadPrec :: ReadPrec StartReadSetImportJob
readList :: ReadS [StartReadSetImportJob]
$creadList :: ReadS [StartReadSetImportJob]
readsPrec :: Int -> ReadS StartReadSetImportJob
$creadsPrec :: Int -> ReadS StartReadSetImportJob
Prelude.Read, Int -> StartReadSetImportJob -> ShowS
[StartReadSetImportJob] -> ShowS
StartReadSetImportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartReadSetImportJob] -> ShowS
$cshowList :: [StartReadSetImportJob] -> ShowS
show :: StartReadSetImportJob -> String
$cshow :: StartReadSetImportJob -> String
showsPrec :: Int -> StartReadSetImportJob -> ShowS
$cshowsPrec :: Int -> StartReadSetImportJob -> ShowS
Prelude.Show, forall x. Rep StartReadSetImportJob x -> StartReadSetImportJob
forall x. StartReadSetImportJob -> Rep StartReadSetImportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StartReadSetImportJob x -> StartReadSetImportJob
$cfrom :: forall x. StartReadSetImportJob -> Rep StartReadSetImportJob x
Prelude.Generic)

-- |
-- Create a value of 'StartReadSetImportJob' 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', 'startReadSetImportJob_clientToken' - To ensure that jobs don\'t run multiple times, specify a unique token
-- for each job.
--
-- 'roleArn', 'startReadSetImportJob_roleArn' - A service role for the job.
--
-- 'sequenceStoreId', 'startReadSetImportJob_sequenceStoreId' - The read set\'s sequence store ID.
--
-- 'sources', 'startReadSetImportJob_sources' - Source files to import.
newStartReadSetImportJob ::
  -- | 'roleArn'
  Prelude.Text ->
  -- | 'sequenceStoreId'
  Prelude.Text ->
  -- | 'sources'
  Prelude.NonEmpty StartReadSetImportJobSourceItem ->
  StartReadSetImportJob
newStartReadSetImportJob :: Text
-> Text
-> NonEmpty StartReadSetImportJobSourceItem
-> StartReadSetImportJob
newStartReadSetImportJob
  Text
pRoleArn_
  Text
pSequenceStoreId_
  NonEmpty StartReadSetImportJobSourceItem
pSources_ =
    StartReadSetImportJob'
      { $sel:clientToken:StartReadSetImportJob' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:roleArn:StartReadSetImportJob' :: Text
roleArn = Text
pRoleArn_,
        $sel:sequenceStoreId:StartReadSetImportJob' :: Text
sequenceStoreId = Text
pSequenceStoreId_,
        $sel:sources:StartReadSetImportJob' :: NonEmpty StartReadSetImportJobSourceItem
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 StartReadSetImportJobSourceItem
pSources_
      }

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

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

-- | The read set\'s sequence store ID.
startReadSetImportJob_sequenceStoreId :: Lens.Lens' StartReadSetImportJob Prelude.Text
startReadSetImportJob_sequenceStoreId :: Lens' StartReadSetImportJob Text
startReadSetImportJob_sequenceStoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReadSetImportJob' {Text
sequenceStoreId :: Text
$sel:sequenceStoreId:StartReadSetImportJob' :: StartReadSetImportJob -> Text
sequenceStoreId} -> Text
sequenceStoreId) (\s :: StartReadSetImportJob
s@StartReadSetImportJob' {} Text
a -> StartReadSetImportJob
s {$sel:sequenceStoreId:StartReadSetImportJob' :: Text
sequenceStoreId = Text
a} :: StartReadSetImportJob)

-- | Source files to import.
startReadSetImportJob_sources :: Lens.Lens' StartReadSetImportJob (Prelude.NonEmpty StartReadSetImportJobSourceItem)
startReadSetImportJob_sources :: Lens'
  StartReadSetImportJob (NonEmpty StartReadSetImportJobSourceItem)
startReadSetImportJob_sources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReadSetImportJob' {NonEmpty StartReadSetImportJobSourceItem
sources :: NonEmpty StartReadSetImportJobSourceItem
$sel:sources:StartReadSetImportJob' :: StartReadSetImportJob -> NonEmpty StartReadSetImportJobSourceItem
sources} -> NonEmpty StartReadSetImportJobSourceItem
sources) (\s :: StartReadSetImportJob
s@StartReadSetImportJob' {} NonEmpty StartReadSetImportJobSourceItem
a -> StartReadSetImportJob
s {$sel:sources:StartReadSetImportJob' :: NonEmpty StartReadSetImportJobSourceItem
sources = NonEmpty StartReadSetImportJobSourceItem
a} :: StartReadSetImportJob) 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 StartReadSetImportJob where
  type
    AWSResponse StartReadSetImportJob =
      StartReadSetImportJobResponse
  request :: (Service -> Service)
-> StartReadSetImportJob -> Request StartReadSetImportJob
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 StartReadSetImportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse StartReadSetImportJob)))
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
-> ReadSetImportJobStatus
-> StartReadSetImportJobResponse
StartReadSetImportJobResponse'
            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
"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
"sequenceStoreId")
            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 StartReadSetImportJob where
  hashWithSalt :: Int -> StartReadSetImportJob -> Int
hashWithSalt Int
_salt StartReadSetImportJob' {Maybe Text
NonEmpty StartReadSetImportJobSourceItem
Text
sources :: NonEmpty StartReadSetImportJobSourceItem
sequenceStoreId :: Text
roleArn :: Text
clientToken :: Maybe Text
$sel:sources:StartReadSetImportJob' :: StartReadSetImportJob -> NonEmpty StartReadSetImportJobSourceItem
$sel:sequenceStoreId:StartReadSetImportJob' :: StartReadSetImportJob -> Text
$sel:roleArn:StartReadSetImportJob' :: StartReadSetImportJob -> Text
$sel:clientToken:StartReadSetImportJob' :: StartReadSetImportJob -> 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
roleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
sequenceStoreId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty StartReadSetImportJobSourceItem
sources

instance Prelude.NFData StartReadSetImportJob where
  rnf :: StartReadSetImportJob -> ()
rnf StartReadSetImportJob' {Maybe Text
NonEmpty StartReadSetImportJobSourceItem
Text
sources :: NonEmpty StartReadSetImportJobSourceItem
sequenceStoreId :: Text
roleArn :: Text
clientToken :: Maybe Text
$sel:sources:StartReadSetImportJob' :: StartReadSetImportJob -> NonEmpty StartReadSetImportJobSourceItem
$sel:sequenceStoreId:StartReadSetImportJob' :: StartReadSetImportJob -> Text
$sel:roleArn:StartReadSetImportJob' :: StartReadSetImportJob -> Text
$sel:clientToken:StartReadSetImportJob' :: StartReadSetImportJob -> 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
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
sequenceStoreId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty StartReadSetImportJobSourceItem
sources

instance Data.ToHeaders StartReadSetImportJob where
  toHeaders :: StartReadSetImportJob -> 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 StartReadSetImportJob where
  toJSON :: StartReadSetImportJob -> Value
toJSON StartReadSetImportJob' {Maybe Text
NonEmpty StartReadSetImportJobSourceItem
Text
sources :: NonEmpty StartReadSetImportJobSourceItem
sequenceStoreId :: Text
roleArn :: Text
clientToken :: Maybe Text
$sel:sources:StartReadSetImportJob' :: StartReadSetImportJob -> NonEmpty StartReadSetImportJobSourceItem
$sel:sequenceStoreId:StartReadSetImportJob' :: StartReadSetImportJob -> Text
$sel:roleArn:StartReadSetImportJob' :: StartReadSetImportJob -> Text
$sel:clientToken:StartReadSetImportJob' :: StartReadSetImportJob -> 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 StartReadSetImportJobSourceItem
sources)
          ]
      )

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

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

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

-- |
-- Create a value of 'StartReadSetImportJobResponse' 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', 'startReadSetImportJobResponse_httpStatus' - The response's http status code.
--
-- 'creationTime', 'startReadSetImportJobResponse_creationTime' - When the job was created.
--
-- 'id', 'startReadSetImportJobResponse_id' - The job\'s ID.
--
-- 'roleArn', 'startReadSetImportJobResponse_roleArn' - The job\'s service role ARN.
--
-- 'sequenceStoreId', 'startReadSetImportJobResponse_sequenceStoreId' - The read set\'s sequence store ID.
--
-- 'status', 'startReadSetImportJobResponse_status' - The job\'s status.
newStartReadSetImportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'creationTime'
  Prelude.UTCTime ->
  -- | 'id'
  Prelude.Text ->
  -- | 'roleArn'
  Prelude.Text ->
  -- | 'sequenceStoreId'
  Prelude.Text ->
  -- | 'status'
  ReadSetImportJobStatus ->
  StartReadSetImportJobResponse
newStartReadSetImportJobResponse :: Int
-> UTCTime
-> Text
-> Text
-> Text
-> ReadSetImportJobStatus
-> StartReadSetImportJobResponse
newStartReadSetImportJobResponse
  Int
pHttpStatus_
  UTCTime
pCreationTime_
  Text
pId_
  Text
pRoleArn_
  Text
pSequenceStoreId_
  ReadSetImportJobStatus
pStatus_ =
    StartReadSetImportJobResponse'
      { $sel:httpStatus:StartReadSetImportJobResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:creationTime:StartReadSetImportJobResponse' :: ISO8601
creationTime =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreationTime_,
        $sel:id:StartReadSetImportJobResponse' :: Text
id = Text
pId_,
        $sel:roleArn:StartReadSetImportJobResponse' :: Text
roleArn = Text
pRoleArn_,
        $sel:sequenceStoreId:StartReadSetImportJobResponse' :: Text
sequenceStoreId = Text
pSequenceStoreId_,
        $sel:status:StartReadSetImportJobResponse' :: ReadSetImportJobStatus
status = ReadSetImportJobStatus
pStatus_
      }

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

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

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

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

-- | The read set\'s sequence store ID.
startReadSetImportJobResponse_sequenceStoreId :: Lens.Lens' StartReadSetImportJobResponse Prelude.Text
startReadSetImportJobResponse_sequenceStoreId :: Lens' StartReadSetImportJobResponse Text
startReadSetImportJobResponse_sequenceStoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReadSetImportJobResponse' {Text
sequenceStoreId :: Text
$sel:sequenceStoreId:StartReadSetImportJobResponse' :: StartReadSetImportJobResponse -> Text
sequenceStoreId} -> Text
sequenceStoreId) (\s :: StartReadSetImportJobResponse
s@StartReadSetImportJobResponse' {} Text
a -> StartReadSetImportJobResponse
s {$sel:sequenceStoreId:StartReadSetImportJobResponse' :: Text
sequenceStoreId = Text
a} :: StartReadSetImportJobResponse)

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

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