packages feed

amazonka-omics-2.0: gen/Amazonka/Omics/StartReadSetActivationJob.hs

{-# 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.StartReadSetActivationJob
-- 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 activation job.
module Amazonka.Omics.StartReadSetActivationJob
  ( -- * Creating a Request
    StartReadSetActivationJob (..),
    newStartReadSetActivationJob,

    -- * Request Lenses
    startReadSetActivationJob_clientToken,
    startReadSetActivationJob_sequenceStoreId,
    startReadSetActivationJob_sources,

    -- * Destructuring the Response
    StartReadSetActivationJobResponse (..),
    newStartReadSetActivationJobResponse,

    -- * Response Lenses
    startReadSetActivationJobResponse_httpStatus,
    startReadSetActivationJobResponse_creationTime,
    startReadSetActivationJobResponse_id,
    startReadSetActivationJobResponse_sequenceStoreId,
    startReadSetActivationJobResponse_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:/ 'newStartReadSetActivationJob' smart constructor.
data StartReadSetActivationJob = StartReadSetActivationJob'
  { -- | To ensure that jobs don\'t run multiple times, specify a unique token
    -- for each job.
    clientToken :: Prelude.Maybe Prelude.Text,
    -- | The read set\'s sequence store ID.
    sequenceStoreId :: Prelude.Text,
    -- | The job\'s sources.
    sources :: Prelude.NonEmpty StartReadSetActivationJobSourceItem
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartReadSetActivationJob' 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', 'startReadSetActivationJob_clientToken' - To ensure that jobs don\'t run multiple times, specify a unique token
-- for each job.
--
-- 'sequenceStoreId', 'startReadSetActivationJob_sequenceStoreId' - The read set\'s sequence store ID.
--
-- 'sources', 'startReadSetActivationJob_sources' - The job\'s sources.
newStartReadSetActivationJob ::
  -- | 'sequenceStoreId'
  Prelude.Text ->
  -- | 'sources'
  Prelude.NonEmpty StartReadSetActivationJobSourceItem ->
  StartReadSetActivationJob
newStartReadSetActivationJob
  pSequenceStoreId_
  pSources_ =
    StartReadSetActivationJob'
      { clientToken =
          Prelude.Nothing,
        sequenceStoreId = pSequenceStoreId_,
        sources = Lens.coerced Lens.# pSources_
      }

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

-- | The read set\'s sequence store ID.
startReadSetActivationJob_sequenceStoreId :: Lens.Lens' StartReadSetActivationJob Prelude.Text
startReadSetActivationJob_sequenceStoreId = Lens.lens (\StartReadSetActivationJob' {sequenceStoreId} -> sequenceStoreId) (\s@StartReadSetActivationJob' {} a -> s {sequenceStoreId = a} :: StartReadSetActivationJob)

-- | The job\'s sources.
startReadSetActivationJob_sources :: Lens.Lens' StartReadSetActivationJob (Prelude.NonEmpty StartReadSetActivationJobSourceItem)
startReadSetActivationJob_sources = Lens.lens (\StartReadSetActivationJob' {sources} -> sources) (\s@StartReadSetActivationJob' {} a -> s {sources = a} :: StartReadSetActivationJob) Prelude.. Lens.coerced

instance Core.AWSRequest StartReadSetActivationJob where
  type
    AWSResponse StartReadSetActivationJob =
      StartReadSetActivationJobResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          StartReadSetActivationJobResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..:> "creationTime")
            Prelude.<*> (x Data..:> "id")
            Prelude.<*> (x Data..:> "sequenceStoreId")
            Prelude.<*> (x Data..:> "status")
      )

instance Prelude.Hashable StartReadSetActivationJob where
  hashWithSalt _salt StartReadSetActivationJob' {..} =
    _salt
      `Prelude.hashWithSalt` clientToken
      `Prelude.hashWithSalt` sequenceStoreId
      `Prelude.hashWithSalt` sources

instance Prelude.NFData StartReadSetActivationJob where
  rnf StartReadSetActivationJob' {..} =
    Prelude.rnf clientToken
      `Prelude.seq` Prelude.rnf sequenceStoreId
      `Prelude.seq` Prelude.rnf sources

instance Data.ToHeaders StartReadSetActivationJob where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON StartReadSetActivationJob where
  toJSON StartReadSetActivationJob' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("clientToken" Data..=) Prelude.<$> clientToken,
            Prelude.Just ("sources" Data..= sources)
          ]
      )

instance Data.ToPath StartReadSetActivationJob where
  toPath StartReadSetActivationJob' {..} =
    Prelude.mconcat
      [ "/sequencestore/",
        Data.toBS sequenceStoreId,
        "/activationjob"
      ]

instance Data.ToQuery StartReadSetActivationJob where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newStartReadSetActivationJobResponse' smart constructor.
data StartReadSetActivationJobResponse = StartReadSetActivationJobResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | When the job was created.
    creationTime :: Data.ISO8601,
    -- | The job\'s ID.
    id :: Prelude.Text,
    -- | The read set\'s sequence store ID.
    sequenceStoreId :: Prelude.Text,
    -- | The job\'s status.
    status :: ReadSetActivationJobStatus
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartReadSetActivationJobResponse' 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', 'startReadSetActivationJobResponse_httpStatus' - The response's http status code.
--
-- 'creationTime', 'startReadSetActivationJobResponse_creationTime' - When the job was created.
--
-- 'id', 'startReadSetActivationJobResponse_id' - The job\'s ID.
--
-- 'sequenceStoreId', 'startReadSetActivationJobResponse_sequenceStoreId' - The read set\'s sequence store ID.
--
-- 'status', 'startReadSetActivationJobResponse_status' - The job\'s status.
newStartReadSetActivationJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'creationTime'
  Prelude.UTCTime ->
  -- | 'id'
  Prelude.Text ->
  -- | 'sequenceStoreId'
  Prelude.Text ->
  -- | 'status'
  ReadSetActivationJobStatus ->
  StartReadSetActivationJobResponse
newStartReadSetActivationJobResponse
  pHttpStatus_
  pCreationTime_
  pId_
  pSequenceStoreId_
  pStatus_ =
    StartReadSetActivationJobResponse'
      { httpStatus =
          pHttpStatus_,
        creationTime =
          Data._Time Lens.# pCreationTime_,
        id = pId_,
        sequenceStoreId = pSequenceStoreId_,
        status = pStatus_
      }

-- | The response's http status code.
startReadSetActivationJobResponse_httpStatus :: Lens.Lens' StartReadSetActivationJobResponse Prelude.Int
startReadSetActivationJobResponse_httpStatus = Lens.lens (\StartReadSetActivationJobResponse' {httpStatus} -> httpStatus) (\s@StartReadSetActivationJobResponse' {} a -> s {httpStatus = a} :: StartReadSetActivationJobResponse)

-- | When the job was created.
startReadSetActivationJobResponse_creationTime :: Lens.Lens' StartReadSetActivationJobResponse Prelude.UTCTime
startReadSetActivationJobResponse_creationTime = Lens.lens (\StartReadSetActivationJobResponse' {creationTime} -> creationTime) (\s@StartReadSetActivationJobResponse' {} a -> s {creationTime = a} :: StartReadSetActivationJobResponse) Prelude.. Data._Time

-- | The job\'s ID.
startReadSetActivationJobResponse_id :: Lens.Lens' StartReadSetActivationJobResponse Prelude.Text
startReadSetActivationJobResponse_id = Lens.lens (\StartReadSetActivationJobResponse' {id} -> id) (\s@StartReadSetActivationJobResponse' {} a -> s {id = a} :: StartReadSetActivationJobResponse)

-- | The read set\'s sequence store ID.
startReadSetActivationJobResponse_sequenceStoreId :: Lens.Lens' StartReadSetActivationJobResponse Prelude.Text
startReadSetActivationJobResponse_sequenceStoreId = Lens.lens (\StartReadSetActivationJobResponse' {sequenceStoreId} -> sequenceStoreId) (\s@StartReadSetActivationJobResponse' {} a -> s {sequenceStoreId = a} :: StartReadSetActivationJobResponse)

-- | The job\'s status.
startReadSetActivationJobResponse_status :: Lens.Lens' StartReadSetActivationJobResponse ReadSetActivationJobStatus
startReadSetActivationJobResponse_status = Lens.lens (\StartReadSetActivationJobResponse' {status} -> status) (\s@StartReadSetActivationJobResponse' {} a -> s {status = a} :: StartReadSetActivationJobResponse)

instance
  Prelude.NFData
    StartReadSetActivationJobResponse
  where
  rnf StartReadSetActivationJobResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf creationTime
      `Prelude.seq` Prelude.rnf id
      `Prelude.seq` Prelude.rnf sequenceStoreId
      `Prelude.seq` Prelude.rnf status