{-# 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.StartReadSetExportJob
-- 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 export job.
module Amazonka.Omics.StartReadSetExportJob
  ( -- * Creating a Request
    StartReadSetExportJob (..),
    newStartReadSetExportJob,

    -- * Request Lenses
    startReadSetExportJob_clientToken,
    startReadSetExportJob_destination,
    startReadSetExportJob_roleArn,
    startReadSetExportJob_sequenceStoreId,
    startReadSetExportJob_sources,

    -- * Destructuring the Response
    StartReadSetExportJobResponse (..),
    newStartReadSetExportJobResponse,

    -- * Response Lenses
    startReadSetExportJobResponse_httpStatus,
    startReadSetExportJobResponse_creationTime,
    startReadSetExportJobResponse_destination,
    startReadSetExportJobResponse_id,
    startReadSetExportJobResponse_sequenceStoreId,
    startReadSetExportJobResponse_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:/ 'newStartReadSetExportJob' smart constructor.
data StartReadSetExportJob = StartReadSetExportJob'
  { -- | To ensure that jobs don\'t run multiple times, specify a unique token
    -- for each job.
    StartReadSetExportJob -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | A location for exported files in Amazon S3.
    StartReadSetExportJob -> Text
destination :: Prelude.Text,
    -- | A service role for the job.
    StartReadSetExportJob -> Text
roleArn :: Prelude.Text,
    -- | The read set\'s sequence store ID.
    StartReadSetExportJob -> Text
sequenceStoreId :: Prelude.Text,
    -- | Sources for the job.
    StartReadSetExportJob -> NonEmpty ExportReadSet
sources :: Prelude.NonEmpty ExportReadSet
  }
  deriving (StartReadSetExportJob -> StartReadSetExportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartReadSetExportJob -> StartReadSetExportJob -> Bool
$c/= :: StartReadSetExportJob -> StartReadSetExportJob -> Bool
== :: StartReadSetExportJob -> StartReadSetExportJob -> Bool
$c== :: StartReadSetExportJob -> StartReadSetExportJob -> Bool
Prelude.Eq, ReadPrec [StartReadSetExportJob]
ReadPrec StartReadSetExportJob
Int -> ReadS StartReadSetExportJob
ReadS [StartReadSetExportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartReadSetExportJob]
$creadListPrec :: ReadPrec [StartReadSetExportJob]
readPrec :: ReadPrec StartReadSetExportJob
$creadPrec :: ReadPrec StartReadSetExportJob
readList :: ReadS [StartReadSetExportJob]
$creadList :: ReadS [StartReadSetExportJob]
readsPrec :: Int -> ReadS StartReadSetExportJob
$creadsPrec :: Int -> ReadS StartReadSetExportJob
Prelude.Read, Int -> StartReadSetExportJob -> ShowS
[StartReadSetExportJob] -> ShowS
StartReadSetExportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartReadSetExportJob] -> ShowS
$cshowList :: [StartReadSetExportJob] -> ShowS
show :: StartReadSetExportJob -> String
$cshow :: StartReadSetExportJob -> String
showsPrec :: Int -> StartReadSetExportJob -> ShowS
$cshowsPrec :: Int -> StartReadSetExportJob -> ShowS
Prelude.Show, forall x. Rep StartReadSetExportJob x -> StartReadSetExportJob
forall x. StartReadSetExportJob -> Rep StartReadSetExportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StartReadSetExportJob x -> StartReadSetExportJob
$cfrom :: forall x. StartReadSetExportJob -> Rep StartReadSetExportJob x
Prelude.Generic)

-- |
-- Create a value of 'StartReadSetExportJob' 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', 'startReadSetExportJob_clientToken' - To ensure that jobs don\'t run multiple times, specify a unique token
-- for each job.
--
-- 'destination', 'startReadSetExportJob_destination' - A location for exported files in Amazon S3.
--
-- 'roleArn', 'startReadSetExportJob_roleArn' - A service role for the job.
--
-- 'sequenceStoreId', 'startReadSetExportJob_sequenceStoreId' - The read set\'s sequence store ID.
--
-- 'sources', 'startReadSetExportJob_sources' - Sources for the job.
newStartReadSetExportJob ::
  -- | 'destination'
  Prelude.Text ->
  -- | 'roleArn'
  Prelude.Text ->
  -- | 'sequenceStoreId'
  Prelude.Text ->
  -- | 'sources'
  Prelude.NonEmpty ExportReadSet ->
  StartReadSetExportJob
newStartReadSetExportJob :: Text
-> Text -> Text -> NonEmpty ExportReadSet -> StartReadSetExportJob
newStartReadSetExportJob
  Text
pDestination_
  Text
pRoleArn_
  Text
pSequenceStoreId_
  NonEmpty ExportReadSet
pSources_ =
    StartReadSetExportJob'
      { $sel:clientToken:StartReadSetExportJob' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:destination:StartReadSetExportJob' :: Text
destination = Text
pDestination_,
        $sel:roleArn:StartReadSetExportJob' :: Text
roleArn = Text
pRoleArn_,
        $sel:sequenceStoreId:StartReadSetExportJob' :: Text
sequenceStoreId = Text
pSequenceStoreId_,
        $sel:sources:StartReadSetExportJob' :: NonEmpty ExportReadSet
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 ExportReadSet
pSources_
      }

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

-- | A location for exported files in Amazon S3.
startReadSetExportJob_destination :: Lens.Lens' StartReadSetExportJob Prelude.Text
startReadSetExportJob_destination :: Lens' StartReadSetExportJob Text
startReadSetExportJob_destination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReadSetExportJob' {Text
destination :: Text
$sel:destination:StartReadSetExportJob' :: StartReadSetExportJob -> Text
destination} -> Text
destination) (\s :: StartReadSetExportJob
s@StartReadSetExportJob' {} Text
a -> StartReadSetExportJob
s {$sel:destination:StartReadSetExportJob' :: Text
destination = Text
a} :: StartReadSetExportJob)

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

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

-- | Sources for the job.
startReadSetExportJob_sources :: Lens.Lens' StartReadSetExportJob (Prelude.NonEmpty ExportReadSet)
startReadSetExportJob_sources :: Lens' StartReadSetExportJob (NonEmpty ExportReadSet)
startReadSetExportJob_sources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReadSetExportJob' {NonEmpty ExportReadSet
sources :: NonEmpty ExportReadSet
$sel:sources:StartReadSetExportJob' :: StartReadSetExportJob -> NonEmpty ExportReadSet
sources} -> NonEmpty ExportReadSet
sources) (\s :: StartReadSetExportJob
s@StartReadSetExportJob' {} NonEmpty ExportReadSet
a -> StartReadSetExportJob
s {$sel:sources:StartReadSetExportJob' :: NonEmpty ExportReadSet
sources = NonEmpty ExportReadSet
a} :: StartReadSetExportJob) 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 StartReadSetExportJob where
  type
    AWSResponse StartReadSetExportJob =
      StartReadSetExportJobResponse
  request :: (Service -> Service)
-> StartReadSetExportJob -> Request StartReadSetExportJob
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 StartReadSetExportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse StartReadSetExportJob)))
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
-> ReadSetExportJobStatus
-> StartReadSetExportJobResponse
StartReadSetExportJobResponse'
            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
"destination")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String 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
"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 StartReadSetExportJob where
  hashWithSalt :: Int -> StartReadSetExportJob -> Int
hashWithSalt Int
_salt StartReadSetExportJob' {Maybe Text
NonEmpty ExportReadSet
Text
sources :: NonEmpty ExportReadSet
sequenceStoreId :: Text
roleArn :: Text
destination :: Text
clientToken :: Maybe Text
$sel:sources:StartReadSetExportJob' :: StartReadSetExportJob -> NonEmpty ExportReadSet
$sel:sequenceStoreId:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:roleArn:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:destination:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:clientToken:StartReadSetExportJob' :: StartReadSetExportJob -> 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
destination
      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 ExportReadSet
sources

instance Prelude.NFData StartReadSetExportJob where
  rnf :: StartReadSetExportJob -> ()
rnf StartReadSetExportJob' {Maybe Text
NonEmpty ExportReadSet
Text
sources :: NonEmpty ExportReadSet
sequenceStoreId :: Text
roleArn :: Text
destination :: Text
clientToken :: Maybe Text
$sel:sources:StartReadSetExportJob' :: StartReadSetExportJob -> NonEmpty ExportReadSet
$sel:sequenceStoreId:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:roleArn:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:destination:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:clientToken:StartReadSetExportJob' :: StartReadSetExportJob -> 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
destination
      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 ExportReadSet
sources

instance Data.ToHeaders StartReadSetExportJob where
  toHeaders :: StartReadSetExportJob -> 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 StartReadSetExportJob where
  toJSON :: StartReadSetExportJob -> Value
toJSON StartReadSetExportJob' {Maybe Text
NonEmpty ExportReadSet
Text
sources :: NonEmpty ExportReadSet
sequenceStoreId :: Text
roleArn :: Text
destination :: Text
clientToken :: Maybe Text
$sel:sources:StartReadSetExportJob' :: StartReadSetExportJob -> NonEmpty ExportReadSet
$sel:sequenceStoreId:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:roleArn:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:destination:StartReadSetExportJob' :: StartReadSetExportJob -> Text
$sel:clientToken:StartReadSetExportJob' :: StartReadSetExportJob -> 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
"destination" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
destination),
            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 ExportReadSet
sources)
          ]
      )

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

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

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

-- |
-- Create a value of 'StartReadSetExportJobResponse' 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', 'startReadSetExportJobResponse_httpStatus' - The response's http status code.
--
-- 'creationTime', 'startReadSetExportJobResponse_creationTime' - When the job was created.
--
-- 'destination', 'startReadSetExportJobResponse_destination' - The job\'s output location.
--
-- 'id', 'startReadSetExportJobResponse_id' - The job\'s ID.
--
-- 'sequenceStoreId', 'startReadSetExportJobResponse_sequenceStoreId' - The read set\'s sequence store ID.
--
-- 'status', 'startReadSetExportJobResponse_status' - The job\'s status.
newStartReadSetExportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'creationTime'
  Prelude.UTCTime ->
  -- | 'destination'
  Prelude.Text ->
  -- | 'id'
  Prelude.Text ->
  -- | 'sequenceStoreId'
  Prelude.Text ->
  -- | 'status'
  ReadSetExportJobStatus ->
  StartReadSetExportJobResponse
newStartReadSetExportJobResponse :: Int
-> UTCTime
-> Text
-> Text
-> Text
-> ReadSetExportJobStatus
-> StartReadSetExportJobResponse
newStartReadSetExportJobResponse
  Int
pHttpStatus_
  UTCTime
pCreationTime_
  Text
pDestination_
  Text
pId_
  Text
pSequenceStoreId_
  ReadSetExportJobStatus
pStatus_ =
    StartReadSetExportJobResponse'
      { $sel:httpStatus:StartReadSetExportJobResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:creationTime:StartReadSetExportJobResponse' :: ISO8601
creationTime =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreationTime_,
        $sel:destination:StartReadSetExportJobResponse' :: Text
destination = Text
pDestination_,
        $sel:id:StartReadSetExportJobResponse' :: Text
id = Text
pId_,
        $sel:sequenceStoreId:StartReadSetExportJobResponse' :: Text
sequenceStoreId = Text
pSequenceStoreId_,
        $sel:status:StartReadSetExportJobResponse' :: ReadSetExportJobStatus
status = ReadSetExportJobStatus
pStatus_
      }

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

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

-- | The job\'s output location.
startReadSetExportJobResponse_destination :: Lens.Lens' StartReadSetExportJobResponse Prelude.Text
startReadSetExportJobResponse_destination :: Lens' StartReadSetExportJobResponse Text
startReadSetExportJobResponse_destination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartReadSetExportJobResponse' {Text
destination :: Text
$sel:destination:StartReadSetExportJobResponse' :: StartReadSetExportJobResponse -> Text
destination} -> Text
destination) (\s :: StartReadSetExportJobResponse
s@StartReadSetExportJobResponse' {} Text
a -> StartReadSetExportJobResponse
s {$sel:destination:StartReadSetExportJobResponse' :: Text
destination = Text
a} :: StartReadSetExportJobResponse)

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

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

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

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