packages feed

amazonka-dataexchange-2.0: gen/Amazonka/DataExchange/Types/ResponseDetails.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.ResponseDetails
-- 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.ResponseDetails 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.CreateS3DataAccessFromS3BucketResponseDetails
import Amazonka.DataExchange.Types.ExportAssetToSignedUrlResponseDetails
import Amazonka.DataExchange.Types.ExportAssetsToS3ResponseDetails
import Amazonka.DataExchange.Types.ExportRevisionsToS3ResponseDetails
import Amazonka.DataExchange.Types.ImportAssetFromApiGatewayApiResponseDetails
import Amazonka.DataExchange.Types.ImportAssetFromSignedUrlResponseDetails
import Amazonka.DataExchange.Types.ImportAssetsFromLakeFormationTagPolicyResponseDetails
import Amazonka.DataExchange.Types.ImportAssetsFromRedshiftDataSharesResponseDetails
import Amazonka.DataExchange.Types.ImportAssetsFromS3ResponseDetails
import qualified Amazonka.Prelude as Prelude

-- | Details for the response.
--
-- /See:/ 'newResponseDetails' smart constructor.
data ResponseDetails = ResponseDetails'
  { -- | Response details from the CreateS3DataAccessFromS3Bucket job.
    createS3DataAccessFromS3Bucket :: Prelude.Maybe CreateS3DataAccessFromS3BucketResponseDetails,
    -- | Details for the export to signed URL response.
    exportAssetToSignedUrl :: Prelude.Maybe ExportAssetToSignedUrlResponseDetails,
    -- | Details for the export to Amazon S3 response.
    exportAssetsToS3 :: Prelude.Maybe ExportAssetsToS3ResponseDetails,
    -- | Details for the export revisions to Amazon S3 response.
    exportRevisionsToS3 :: Prelude.Maybe ExportRevisionsToS3ResponseDetails,
    -- | The response details.
    importAssetFromApiGatewayApi :: Prelude.Maybe ImportAssetFromApiGatewayApiResponseDetails,
    -- | Details for the import from signed URL response.
    importAssetFromSignedUrl :: Prelude.Maybe ImportAssetFromSignedUrlResponseDetails,
    -- | Response details from the ImportAssetsFromLakeFormationTagPolicy job.
    importAssetsFromLakeFormationTagPolicy :: Prelude.Maybe ImportAssetsFromLakeFormationTagPolicyResponseDetails,
    -- | Details from an import from Amazon Redshift datashare response.
    importAssetsFromRedshiftDataShares :: Prelude.Maybe ImportAssetsFromRedshiftDataSharesResponseDetails,
    -- | Details for the import from Amazon S3 response.
    importAssetsFromS3 :: Prelude.Maybe ImportAssetsFromS3ResponseDetails
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ResponseDetails' 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', 'responseDetails_createS3DataAccessFromS3Bucket' - Response details from the CreateS3DataAccessFromS3Bucket job.
--
-- 'exportAssetToSignedUrl', 'responseDetails_exportAssetToSignedUrl' - Details for the export to signed URL response.
--
-- 'exportAssetsToS3', 'responseDetails_exportAssetsToS3' - Details for the export to Amazon S3 response.
--
-- 'exportRevisionsToS3', 'responseDetails_exportRevisionsToS3' - Details for the export revisions to Amazon S3 response.
--
-- 'importAssetFromApiGatewayApi', 'responseDetails_importAssetFromApiGatewayApi' - The response details.
--
-- 'importAssetFromSignedUrl', 'responseDetails_importAssetFromSignedUrl' - Details for the import from signed URL response.
--
-- 'importAssetsFromLakeFormationTagPolicy', 'responseDetails_importAssetsFromLakeFormationTagPolicy' - Response details from the ImportAssetsFromLakeFormationTagPolicy job.
--
-- 'importAssetsFromRedshiftDataShares', 'responseDetails_importAssetsFromRedshiftDataShares' - Details from an import from Amazon Redshift datashare response.
--
-- 'importAssetsFromS3', 'responseDetails_importAssetsFromS3' - Details for the import from Amazon S3 response.
newResponseDetails ::
  ResponseDetails
newResponseDetails =
  ResponseDetails'
    { 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
    }

-- | Response details from the CreateS3DataAccessFromS3Bucket job.
responseDetails_createS3DataAccessFromS3Bucket :: Lens.Lens' ResponseDetails (Prelude.Maybe CreateS3DataAccessFromS3BucketResponseDetails)
responseDetails_createS3DataAccessFromS3Bucket = Lens.lens (\ResponseDetails' {createS3DataAccessFromS3Bucket} -> createS3DataAccessFromS3Bucket) (\s@ResponseDetails' {} a -> s {createS3DataAccessFromS3Bucket = a} :: ResponseDetails)

-- | Details for the export to signed URL response.
responseDetails_exportAssetToSignedUrl :: Lens.Lens' ResponseDetails (Prelude.Maybe ExportAssetToSignedUrlResponseDetails)
responseDetails_exportAssetToSignedUrl = Lens.lens (\ResponseDetails' {exportAssetToSignedUrl} -> exportAssetToSignedUrl) (\s@ResponseDetails' {} a -> s {exportAssetToSignedUrl = a} :: ResponseDetails)

-- | Details for the export to Amazon S3 response.
responseDetails_exportAssetsToS3 :: Lens.Lens' ResponseDetails (Prelude.Maybe ExportAssetsToS3ResponseDetails)
responseDetails_exportAssetsToS3 = Lens.lens (\ResponseDetails' {exportAssetsToS3} -> exportAssetsToS3) (\s@ResponseDetails' {} a -> s {exportAssetsToS3 = a} :: ResponseDetails)

-- | Details for the export revisions to Amazon S3 response.
responseDetails_exportRevisionsToS3 :: Lens.Lens' ResponseDetails (Prelude.Maybe ExportRevisionsToS3ResponseDetails)
responseDetails_exportRevisionsToS3 = Lens.lens (\ResponseDetails' {exportRevisionsToS3} -> exportRevisionsToS3) (\s@ResponseDetails' {} a -> s {exportRevisionsToS3 = a} :: ResponseDetails)

-- | The response details.
responseDetails_importAssetFromApiGatewayApi :: Lens.Lens' ResponseDetails (Prelude.Maybe ImportAssetFromApiGatewayApiResponseDetails)
responseDetails_importAssetFromApiGatewayApi = Lens.lens (\ResponseDetails' {importAssetFromApiGatewayApi} -> importAssetFromApiGatewayApi) (\s@ResponseDetails' {} a -> s {importAssetFromApiGatewayApi = a} :: ResponseDetails)

-- | Details for the import from signed URL response.
responseDetails_importAssetFromSignedUrl :: Lens.Lens' ResponseDetails (Prelude.Maybe ImportAssetFromSignedUrlResponseDetails)
responseDetails_importAssetFromSignedUrl = Lens.lens (\ResponseDetails' {importAssetFromSignedUrl} -> importAssetFromSignedUrl) (\s@ResponseDetails' {} a -> s {importAssetFromSignedUrl = a} :: ResponseDetails)

-- | Response details from the ImportAssetsFromLakeFormationTagPolicy job.
responseDetails_importAssetsFromLakeFormationTagPolicy :: Lens.Lens' ResponseDetails (Prelude.Maybe ImportAssetsFromLakeFormationTagPolicyResponseDetails)
responseDetails_importAssetsFromLakeFormationTagPolicy = Lens.lens (\ResponseDetails' {importAssetsFromLakeFormationTagPolicy} -> importAssetsFromLakeFormationTagPolicy) (\s@ResponseDetails' {} a -> s {importAssetsFromLakeFormationTagPolicy = a} :: ResponseDetails)

-- | Details from an import from Amazon Redshift datashare response.
responseDetails_importAssetsFromRedshiftDataShares :: Lens.Lens' ResponseDetails (Prelude.Maybe ImportAssetsFromRedshiftDataSharesResponseDetails)
responseDetails_importAssetsFromRedshiftDataShares = Lens.lens (\ResponseDetails' {importAssetsFromRedshiftDataShares} -> importAssetsFromRedshiftDataShares) (\s@ResponseDetails' {} a -> s {importAssetsFromRedshiftDataShares = a} :: ResponseDetails)

-- | Details for the import from Amazon S3 response.
responseDetails_importAssetsFromS3 :: Lens.Lens' ResponseDetails (Prelude.Maybe ImportAssetsFromS3ResponseDetails)
responseDetails_importAssetsFromS3 = Lens.lens (\ResponseDetails' {importAssetsFromS3} -> importAssetsFromS3) (\s@ResponseDetails' {} a -> s {importAssetsFromS3 = a} :: ResponseDetails)

instance Data.FromJSON ResponseDetails where
  parseJSON =
    Data.withObject
      "ResponseDetails"
      ( \x ->
          ResponseDetails'
            Prelude.<$> (x Data..:? "CreateS3DataAccessFromS3Bucket")
            Prelude.<*> (x Data..:? "ExportAssetToSignedUrl")
            Prelude.<*> (x Data..:? "ExportAssetsToS3")
            Prelude.<*> (x Data..:? "ExportRevisionsToS3")
            Prelude.<*> (x Data..:? "ImportAssetFromApiGatewayApi")
            Prelude.<*> (x Data..:? "ImportAssetFromSignedUrl")
            Prelude.<*> (x Data..:? "ImportAssetsFromLakeFormationTagPolicy")
            Prelude.<*> (x Data..:? "ImportAssetsFromRedshiftDataShares")
            Prelude.<*> (x Data..:? "ImportAssetsFromS3")
      )

instance Prelude.Hashable ResponseDetails where
  hashWithSalt _salt ResponseDetails' {..} =
    _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 ResponseDetails where
  rnf ResponseDetails' {..} =
    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