packages feed

amazonka-dataexchange-2.0: gen/Amazonka/DataExchange/Types/RequestDetails.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.DataExchange.Types.RequestDetails
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DataExchange.Types.RequestDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.DataExchange.Types.CreateS3DataAccessFromS3BucketRequestDetails
import Amazonka.DataExchange.Types.ExportAssetToSignedUrlRequestDetails
import Amazonka.DataExchange.Types.ExportAssetsToS3RequestDetails
import Amazonka.DataExchange.Types.ExportRevisionsToS3RequestDetails
import Amazonka.DataExchange.Types.ImportAssetFromApiGatewayApiRequestDetails
import Amazonka.DataExchange.Types.ImportAssetFromSignedUrlRequestDetails
import Amazonka.DataExchange.Types.ImportAssetsFromLakeFormationTagPolicyRequestDetails
import Amazonka.DataExchange.Types.ImportAssetsFromRedshiftDataSharesRequestDetails
import Amazonka.DataExchange.Types.ImportAssetsFromS3RequestDetails
import qualified Amazonka.Prelude as Prelude

-- | The details for the request.
--
-- /See:/ 'newRequestDetails' smart constructor.
data RequestDetails = RequestDetails'
  { -- | Details of the request to create S3 data access from the Amazon S3
    -- bucket.
    createS3DataAccessFromS3Bucket :: Prelude.Maybe CreateS3DataAccessFromS3BucketRequestDetails,
    -- | Details about the export to signed URL request.
    exportAssetToSignedUrl :: Prelude.Maybe ExportAssetToSignedUrlRequestDetails,
    -- | Details about the export to Amazon S3 request.
    exportAssetsToS3 :: Prelude.Maybe ExportAssetsToS3RequestDetails,
    -- | Details about the export to Amazon S3 request.
    exportRevisionsToS3 :: Prelude.Maybe ExportRevisionsToS3RequestDetails,
    -- | Details about the import from signed URL request.
    importAssetFromApiGatewayApi :: Prelude.Maybe ImportAssetFromApiGatewayApiRequestDetails,
    -- | Details about the import from Amazon S3 request.
    importAssetFromSignedUrl :: Prelude.Maybe ImportAssetFromSignedUrlRequestDetails,
    -- | Request details for the ImportAssetsFromLakeFormationTagPolicy job.
    importAssetsFromLakeFormationTagPolicy :: Prelude.Maybe ImportAssetsFromLakeFormationTagPolicyRequestDetails,
    -- | Details from an import from Amazon Redshift datashare request.
    importAssetsFromRedshiftDataShares :: Prelude.Maybe ImportAssetsFromRedshiftDataSharesRequestDetails,
    -- | Details about the import asset from API Gateway API request.
    importAssetsFromS3 :: Prelude.Maybe ImportAssetsFromS3RequestDetails
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'RequestDetails' 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:
--
-- 'createS3DataAccessFromS3Bucket', 'requestDetails_createS3DataAccessFromS3Bucket' - Details of the request to create S3 data access from the Amazon S3
-- bucket.
--
-- 'exportAssetToSignedUrl', 'requestDetails_exportAssetToSignedUrl' - Details about the export to signed URL request.
--
-- 'exportAssetsToS3', 'requestDetails_exportAssetsToS3' - Details about the export to Amazon S3 request.
--
-- 'exportRevisionsToS3', 'requestDetails_exportRevisionsToS3' - Details about the export to Amazon S3 request.
--
-- 'importAssetFromApiGatewayApi', 'requestDetails_importAssetFromApiGatewayApi' - Details about the import from signed URL request.
--
-- 'importAssetFromSignedUrl', 'requestDetails_importAssetFromSignedUrl' - Details about the import from Amazon S3 request.
--
-- 'importAssetsFromLakeFormationTagPolicy', 'requestDetails_importAssetsFromLakeFormationTagPolicy' - Request details for the ImportAssetsFromLakeFormationTagPolicy job.
--
-- 'importAssetsFromRedshiftDataShares', 'requestDetails_importAssetsFromRedshiftDataShares' - Details from an import from Amazon Redshift datashare request.
--
-- 'importAssetsFromS3', 'requestDetails_importAssetsFromS3' - Details about the import asset from API Gateway API request.
newRequestDetails ::
  RequestDetails
newRequestDetails =
  RequestDetails'
    { createS3DataAccessFromS3Bucket =
        Prelude.Nothing,
      exportAssetToSignedUrl = Prelude.Nothing,
      exportAssetsToS3 = Prelude.Nothing,
      exportRevisionsToS3 = Prelude.Nothing,
      importAssetFromApiGatewayApi = Prelude.Nothing,
      importAssetFromSignedUrl = Prelude.Nothing,
      importAssetsFromLakeFormationTagPolicy =
        Prelude.Nothing,
      importAssetsFromRedshiftDataShares = Prelude.Nothing,
      importAssetsFromS3 = Prelude.Nothing
    }

-- | Details of the request to create S3 data access from the Amazon S3
-- bucket.
requestDetails_createS3DataAccessFromS3Bucket :: Lens.Lens' RequestDetails (Prelude.Maybe CreateS3DataAccessFromS3BucketRequestDetails)
requestDetails_createS3DataAccessFromS3Bucket = Lens.lens (\RequestDetails' {createS3DataAccessFromS3Bucket} -> createS3DataAccessFromS3Bucket) (\s@RequestDetails' {} a -> s {createS3DataAccessFromS3Bucket = a} :: RequestDetails)

-- | Details about the export to signed URL request.
requestDetails_exportAssetToSignedUrl :: Lens.Lens' RequestDetails (Prelude.Maybe ExportAssetToSignedUrlRequestDetails)
requestDetails_exportAssetToSignedUrl = Lens.lens (\RequestDetails' {exportAssetToSignedUrl} -> exportAssetToSignedUrl) (\s@RequestDetails' {} a -> s {exportAssetToSignedUrl = a} :: RequestDetails)

-- | Details about the export to Amazon S3 request.
requestDetails_exportAssetsToS3 :: Lens.Lens' RequestDetails (Prelude.Maybe ExportAssetsToS3RequestDetails)
requestDetails_exportAssetsToS3 = Lens.lens (\RequestDetails' {exportAssetsToS3} -> exportAssetsToS3) (\s@RequestDetails' {} a -> s {exportAssetsToS3 = a} :: RequestDetails)

-- | Details about the export to Amazon S3 request.
requestDetails_exportRevisionsToS3 :: Lens.Lens' RequestDetails (Prelude.Maybe ExportRevisionsToS3RequestDetails)
requestDetails_exportRevisionsToS3 = Lens.lens (\RequestDetails' {exportRevisionsToS3} -> exportRevisionsToS3) (\s@RequestDetails' {} a -> s {exportRevisionsToS3 = a} :: RequestDetails)

-- | Details about the import from signed URL request.
requestDetails_importAssetFromApiGatewayApi :: Lens.Lens' RequestDetails (Prelude.Maybe ImportAssetFromApiGatewayApiRequestDetails)
requestDetails_importAssetFromApiGatewayApi = Lens.lens (\RequestDetails' {importAssetFromApiGatewayApi} -> importAssetFromApiGatewayApi) (\s@RequestDetails' {} a -> s {importAssetFromApiGatewayApi = a} :: RequestDetails)

-- | Details about the import from Amazon S3 request.
requestDetails_importAssetFromSignedUrl :: Lens.Lens' RequestDetails (Prelude.Maybe ImportAssetFromSignedUrlRequestDetails)
requestDetails_importAssetFromSignedUrl = Lens.lens (\RequestDetails' {importAssetFromSignedUrl} -> importAssetFromSignedUrl) (\s@RequestDetails' {} a -> s {importAssetFromSignedUrl = a} :: RequestDetails)

-- | Request details for the ImportAssetsFromLakeFormationTagPolicy job.
requestDetails_importAssetsFromLakeFormationTagPolicy :: Lens.Lens' RequestDetails (Prelude.Maybe ImportAssetsFromLakeFormationTagPolicyRequestDetails)
requestDetails_importAssetsFromLakeFormationTagPolicy = Lens.lens (\RequestDetails' {importAssetsFromLakeFormationTagPolicy} -> importAssetsFromLakeFormationTagPolicy) (\s@RequestDetails' {} a -> s {importAssetsFromLakeFormationTagPolicy = a} :: RequestDetails)

-- | Details from an import from Amazon Redshift datashare request.
requestDetails_importAssetsFromRedshiftDataShares :: Lens.Lens' RequestDetails (Prelude.Maybe ImportAssetsFromRedshiftDataSharesRequestDetails)
requestDetails_importAssetsFromRedshiftDataShares = Lens.lens (\RequestDetails' {importAssetsFromRedshiftDataShares} -> importAssetsFromRedshiftDataShares) (\s@RequestDetails' {} a -> s {importAssetsFromRedshiftDataShares = a} :: RequestDetails)

-- | Details about the import asset from API Gateway API request.
requestDetails_importAssetsFromS3 :: Lens.Lens' RequestDetails (Prelude.Maybe ImportAssetsFromS3RequestDetails)
requestDetails_importAssetsFromS3 = Lens.lens (\RequestDetails' {importAssetsFromS3} -> importAssetsFromS3) (\s@RequestDetails' {} a -> s {importAssetsFromS3 = a} :: RequestDetails)

instance Prelude.Hashable RequestDetails where
  hashWithSalt _salt RequestDetails' {..} =
    _salt
      `Prelude.hashWithSalt` createS3DataAccessFromS3Bucket
      `Prelude.hashWithSalt` exportAssetToSignedUrl
      `Prelude.hashWithSalt` exportAssetsToS3
      `Prelude.hashWithSalt` exportRevisionsToS3
      `Prelude.hashWithSalt` importAssetFromApiGatewayApi
      `Prelude.hashWithSalt` importAssetFromSignedUrl
      `Prelude.hashWithSalt` importAssetsFromLakeFormationTagPolicy
      `Prelude.hashWithSalt` importAssetsFromRedshiftDataShares
      `Prelude.hashWithSalt` importAssetsFromS3

instance Prelude.NFData RequestDetails where
  rnf RequestDetails' {..} =
    Prelude.rnf createS3DataAccessFromS3Bucket
      `Prelude.seq` Prelude.rnf exportAssetToSignedUrl
      `Prelude.seq` Prelude.rnf exportAssetsToS3
      `Prelude.seq` Prelude.rnf exportRevisionsToS3
      `Prelude.seq` Prelude.rnf importAssetFromApiGatewayApi
      `Prelude.seq` Prelude.rnf importAssetFromSignedUrl
      `Prelude.seq` Prelude.rnf importAssetsFromLakeFormationTagPolicy
      `Prelude.seq` Prelude.rnf importAssetsFromRedshiftDataShares
      `Prelude.seq` Prelude.rnf importAssetsFromS3

instance Data.ToJSON RequestDetails where
  toJSON RequestDetails' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("CreateS3DataAccessFromS3Bucket" Data..=)
              Prelude.<$> createS3DataAccessFromS3Bucket,
            ("ExportAssetToSignedUrl" Data..=)
              Prelude.<$> exportAssetToSignedUrl,
            ("ExportAssetsToS3" Data..=)
              Prelude.<$> exportAssetsToS3,
            ("ExportRevisionsToS3" Data..=)
              Prelude.<$> exportRevisionsToS3,
            ("ImportAssetFromApiGatewayApi" Data..=)
              Prelude.<$> importAssetFromApiGatewayApi,
            ("ImportAssetFromSignedUrl" Data..=)
              Prelude.<$> importAssetFromSignedUrl,
            ("ImportAssetsFromLakeFormationTagPolicy" Data..=)
              Prelude.<$> importAssetsFromLakeFormationTagPolicy,
            ("ImportAssetsFromRedshiftDataShares" Data..=)
              Prelude.<$> importAssetsFromRedshiftDataShares,
            ("ImportAssetsFromS3" Data..=)
              Prelude.<$> importAssetsFromS3
          ]
      )