packages feed

amazonka-omics-2.0: gen/Amazonka/Omics/StartReferenceImportJob.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.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.
    clientToken :: Prelude.Maybe Prelude.Text,
    -- | The job\'s reference store ID.
    referenceStoreId :: Prelude.Text,
    -- | A service role for the job.
    roleArn :: Prelude.Text,
    -- | Sources for the job.
    sources :: Prelude.NonEmpty StartReferenceImportJobSourceItem
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
  pReferenceStoreId_
  pRoleArn_
  pSources_ =
    StartReferenceImportJob'
      { clientToken =
          Prelude.Nothing,
        referenceStoreId = pReferenceStoreId_,
        roleArn = pRoleArn_,
        sources = Lens.coerced Lens.# 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.lens (\StartReferenceImportJob' {clientToken} -> clientToken) (\s@StartReferenceImportJob' {} a -> s {clientToken = a} :: StartReferenceImportJob)

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

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

-- | Sources for the job.
startReferenceImportJob_sources :: Lens.Lens' StartReferenceImportJob (Prelude.NonEmpty StartReferenceImportJobSourceItem)
startReferenceImportJob_sources = Lens.lens (\StartReferenceImportJob' {sources} -> sources) (\s@StartReferenceImportJob' {} a -> s {sources = a} :: StartReferenceImportJob) Prelude.. Lens.coerced

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

instance Prelude.Hashable StartReferenceImportJob where
  hashWithSalt _salt StartReferenceImportJob' {..} =
    _salt
      `Prelude.hashWithSalt` clientToken
      `Prelude.hashWithSalt` referenceStoreId
      `Prelude.hashWithSalt` roleArn
      `Prelude.hashWithSalt` sources

instance Prelude.NFData StartReferenceImportJob where
  rnf StartReferenceImportJob' {..} =
    Prelude.rnf clientToken
      `Prelude.seq` Prelude.rnf referenceStoreId
      `Prelude.seq` Prelude.rnf roleArn
      `Prelude.seq` Prelude.rnf sources

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

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

instance Data.ToPath StartReferenceImportJob where
  toPath StartReferenceImportJob' {..} =
    Prelude.mconcat
      [ "/referencestore/",
        Data.toBS referenceStoreId,
        "/importjob"
      ]

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

-- | /See:/ 'newStartReferenceImportJobResponse' smart constructor.
data StartReferenceImportJobResponse = StartReferenceImportJobResponse'
  { -- | 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 job\'s reference store ID.
    referenceStoreId :: Prelude.Text,
    -- | The job\'s service role ARN.
    roleArn :: Prelude.Text,
    -- | The job\'s status.
    status :: ReferenceImportJobStatus
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
  pHttpStatus_
  pCreationTime_
  pId_
  pReferenceStoreId_
  pRoleArn_
  pStatus_ =
    StartReferenceImportJobResponse'
      { httpStatus =
          pHttpStatus_,
        creationTime =
          Data._Time Lens.# pCreationTime_,
        id = pId_,
        referenceStoreId = pReferenceStoreId_,
        roleArn = pRoleArn_,
        status = pStatus_
      }

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

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

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

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

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

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

instance
  Prelude.NFData
    StartReferenceImportJobResponse
  where
  rnf StartReferenceImportJobResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf creationTime
      `Prelude.seq` Prelude.rnf id
      `Prelude.seq` Prelude.rnf referenceStoreId
      `Prelude.seq` Prelude.rnf roleArn
      `Prelude.seq` Prelude.rnf status