{-# 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.FinSpaceData.CreateChangeset
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a new Changeset in a FinSpace Dataset.
module Amazonka.FinSpaceData.CreateChangeset
  ( -- * Creating a Request
    CreateChangeset (..),
    newCreateChangeset,

    -- * Request Lenses
    createChangeset_clientToken,
    createChangeset_datasetId,
    createChangeset_changeType,
    createChangeset_sourceParams,
    createChangeset_formatParams,

    -- * Destructuring the Response
    CreateChangesetResponse (..),
    newCreateChangesetResponse,

    -- * Response Lenses
    createChangesetResponse_changesetId,
    createChangesetResponse_datasetId,
    createChangesetResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.FinSpaceData.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | The request for a CreateChangeset operation.
--
-- /See:/ 'newCreateChangeset' smart constructor.
data CreateChangeset = CreateChangeset'
  { -- | A token that ensures idempotency. This token expires in 10 minutes.
    CreateChangeset -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the FinSpace Dataset where the Changeset will
    -- be created.
    CreateChangeset -> Text
datasetId :: Prelude.Text,
    -- | The option to indicate how a Changeset will be applied to a Dataset.
    --
    -- -   @REPLACE@ – Changeset will be considered as a replacement to all
    --     prior loaded Changesets.
    --
    -- -   @APPEND@ – Changeset will be considered as an addition to the end of
    --     all prior loaded Changesets.
    --
    -- -   @MODIFY@ – Changeset is considered as a replacement to a specific
    --     prior ingested Changeset.
    CreateChangeset -> ChangeType
changeType :: ChangeType,
    -- | Options that define the location of the data being ingested
    -- (@s3SourcePath@) and the source of the changeset (@sourceType@).
    --
    -- Both @s3SourcePath@ and @sourceType@ are required attributes.
    --
    -- Here is an example of how you could specify the @sourceParams@:
    --
    -- @ \"sourceParams\": { \"s3SourcePath\": \"s3:\/\/finspace-landing-us-east-2-bk7gcfvitndqa6ebnvys4d\/scratch\/wr5hh8pwkpqqkxa4sxrmcw\/ingestion\/equity.csv\", \"sourceType\": \"S3\" } @
    --
    -- The S3 path that you specify must allow the FinSpace role access. To do
    -- that, you first need to configure the IAM policy on S3 bucket. For more
    -- information, see
    -- <https://docs.aws.amazon.com/finspace/latest/data-api/fs-using-the-finspace-api.html#access-s3-buckets Loading data from an Amazon S3 Bucket using the FinSpace API>
    -- section.
    CreateChangeset -> HashMap Text Text
sourceParams :: Prelude.HashMap Prelude.Text Prelude.Text,
    -- | Options that define the structure of the source file(s) including the
    -- format type (@formatType@), header row (@withHeader@), data separation
    -- character (@separator@) and the type of compression (@compression@).
    --
    -- @formatType@ is a required attribute and can have the following values:
    --
    -- -   @PARQUET@ – Parquet source file format.
    --
    -- -   @CSV@ – CSV source file format.
    --
    -- -   @JSON@ – JSON source file format.
    --
    -- -   @XML@ – XML source file format.
    --
    -- Here is an example of how you could specify the @formatParams@:
    --
    -- @ \"formatParams\": { \"formatType\": \"CSV\", \"withHeader\": \"true\", \"separator\": \",\", \"compression\":\"None\" } @
    --
    -- Note that if you only provide @formatType@ as @CSV@, the rest of the
    -- attributes will automatically default to CSV values as following:
    --
    -- @ { \"withHeader\": \"true\", \"separator\": \",\" } @
    --
    -- For more information about supported file formats, see
    -- <https://docs.aws.amazon.com/finspace/latest/userguide/supported-data-types.html Supported Data Types and File Formats>
    -- in the FinSpace User Guide.
    CreateChangeset -> HashMap Text Text
formatParams :: Prelude.HashMap Prelude.Text Prelude.Text
  }
  deriving (CreateChangeset -> CreateChangeset -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateChangeset -> CreateChangeset -> Bool
$c/= :: CreateChangeset -> CreateChangeset -> Bool
== :: CreateChangeset -> CreateChangeset -> Bool
$c== :: CreateChangeset -> CreateChangeset -> Bool
Prelude.Eq, ReadPrec [CreateChangeset]
ReadPrec CreateChangeset
Int -> ReadS CreateChangeset
ReadS [CreateChangeset]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateChangeset]
$creadListPrec :: ReadPrec [CreateChangeset]
readPrec :: ReadPrec CreateChangeset
$creadPrec :: ReadPrec CreateChangeset
readList :: ReadS [CreateChangeset]
$creadList :: ReadS [CreateChangeset]
readsPrec :: Int -> ReadS CreateChangeset
$creadsPrec :: Int -> ReadS CreateChangeset
Prelude.Read, Int -> CreateChangeset -> ShowS
[CreateChangeset] -> ShowS
CreateChangeset -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateChangeset] -> ShowS
$cshowList :: [CreateChangeset] -> ShowS
show :: CreateChangeset -> String
$cshow :: CreateChangeset -> String
showsPrec :: Int -> CreateChangeset -> ShowS
$cshowsPrec :: Int -> CreateChangeset -> ShowS
Prelude.Show, forall x. Rep CreateChangeset x -> CreateChangeset
forall x. CreateChangeset -> Rep CreateChangeset x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateChangeset x -> CreateChangeset
$cfrom :: forall x. CreateChangeset -> Rep CreateChangeset x
Prelude.Generic)

-- |
-- Create a value of 'CreateChangeset' 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', 'createChangeset_clientToken' - A token that ensures idempotency. This token expires in 10 minutes.
--
-- 'datasetId', 'createChangeset_datasetId' - The unique identifier for the FinSpace Dataset where the Changeset will
-- be created.
--
-- 'changeType', 'createChangeset_changeType' - The option to indicate how a Changeset will be applied to a Dataset.
--
-- -   @REPLACE@ – Changeset will be considered as a replacement to all
--     prior loaded Changesets.
--
-- -   @APPEND@ – Changeset will be considered as an addition to the end of
--     all prior loaded Changesets.
--
-- -   @MODIFY@ – Changeset is considered as a replacement to a specific
--     prior ingested Changeset.
--
-- 'sourceParams', 'createChangeset_sourceParams' - Options that define the location of the data being ingested
-- (@s3SourcePath@) and the source of the changeset (@sourceType@).
--
-- Both @s3SourcePath@ and @sourceType@ are required attributes.
--
-- Here is an example of how you could specify the @sourceParams@:
--
-- @ \"sourceParams\": { \"s3SourcePath\": \"s3:\/\/finspace-landing-us-east-2-bk7gcfvitndqa6ebnvys4d\/scratch\/wr5hh8pwkpqqkxa4sxrmcw\/ingestion\/equity.csv\", \"sourceType\": \"S3\" } @
--
-- The S3 path that you specify must allow the FinSpace role access. To do
-- that, you first need to configure the IAM policy on S3 bucket. For more
-- information, see
-- <https://docs.aws.amazon.com/finspace/latest/data-api/fs-using-the-finspace-api.html#access-s3-buckets Loading data from an Amazon S3 Bucket using the FinSpace API>
-- section.
--
-- 'formatParams', 'createChangeset_formatParams' - Options that define the structure of the source file(s) including the
-- format type (@formatType@), header row (@withHeader@), data separation
-- character (@separator@) and the type of compression (@compression@).
--
-- @formatType@ is a required attribute and can have the following values:
--
-- -   @PARQUET@ – Parquet source file format.
--
-- -   @CSV@ – CSV source file format.
--
-- -   @JSON@ – JSON source file format.
--
-- -   @XML@ – XML source file format.
--
-- Here is an example of how you could specify the @formatParams@:
--
-- @ \"formatParams\": { \"formatType\": \"CSV\", \"withHeader\": \"true\", \"separator\": \",\", \"compression\":\"None\" } @
--
-- Note that if you only provide @formatType@ as @CSV@, the rest of the
-- attributes will automatically default to CSV values as following:
--
-- @ { \"withHeader\": \"true\", \"separator\": \",\" } @
--
-- For more information about supported file formats, see
-- <https://docs.aws.amazon.com/finspace/latest/userguide/supported-data-types.html Supported Data Types and File Formats>
-- in the FinSpace User Guide.
newCreateChangeset ::
  -- | 'datasetId'
  Prelude.Text ->
  -- | 'changeType'
  ChangeType ->
  CreateChangeset
newCreateChangeset :: Text -> ChangeType -> CreateChangeset
newCreateChangeset Text
pDatasetId_ ChangeType
pChangeType_ =
  CreateChangeset'
    { $sel:clientToken:CreateChangeset' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:datasetId:CreateChangeset' :: Text
datasetId = Text
pDatasetId_,
      $sel:changeType:CreateChangeset' :: ChangeType
changeType = ChangeType
pChangeType_,
      $sel:sourceParams:CreateChangeset' :: HashMap Text Text
sourceParams = forall a. Monoid a => a
Prelude.mempty,
      $sel:formatParams:CreateChangeset' :: HashMap Text Text
formatParams = forall a. Monoid a => a
Prelude.mempty
    }

-- | A token that ensures idempotency. This token expires in 10 minutes.
createChangeset_clientToken :: Lens.Lens' CreateChangeset (Prelude.Maybe Prelude.Text)
createChangeset_clientToken :: Lens' CreateChangeset (Maybe Text)
createChangeset_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChangeset' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateChangeset' :: CreateChangeset -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateChangeset
s@CreateChangeset' {} Maybe Text
a -> CreateChangeset
s {$sel:clientToken:CreateChangeset' :: Maybe Text
clientToken = Maybe Text
a} :: CreateChangeset)

-- | The unique identifier for the FinSpace Dataset where the Changeset will
-- be created.
createChangeset_datasetId :: Lens.Lens' CreateChangeset Prelude.Text
createChangeset_datasetId :: Lens' CreateChangeset Text
createChangeset_datasetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChangeset' {Text
datasetId :: Text
$sel:datasetId:CreateChangeset' :: CreateChangeset -> Text
datasetId} -> Text
datasetId) (\s :: CreateChangeset
s@CreateChangeset' {} Text
a -> CreateChangeset
s {$sel:datasetId:CreateChangeset' :: Text
datasetId = Text
a} :: CreateChangeset)

-- | The option to indicate how a Changeset will be applied to a Dataset.
--
-- -   @REPLACE@ – Changeset will be considered as a replacement to all
--     prior loaded Changesets.
--
-- -   @APPEND@ – Changeset will be considered as an addition to the end of
--     all prior loaded Changesets.
--
-- -   @MODIFY@ – Changeset is considered as a replacement to a specific
--     prior ingested Changeset.
createChangeset_changeType :: Lens.Lens' CreateChangeset ChangeType
createChangeset_changeType :: Lens' CreateChangeset ChangeType
createChangeset_changeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChangeset' {ChangeType
changeType :: ChangeType
$sel:changeType:CreateChangeset' :: CreateChangeset -> ChangeType
changeType} -> ChangeType
changeType) (\s :: CreateChangeset
s@CreateChangeset' {} ChangeType
a -> CreateChangeset
s {$sel:changeType:CreateChangeset' :: ChangeType
changeType = ChangeType
a} :: CreateChangeset)

-- | Options that define the location of the data being ingested
-- (@s3SourcePath@) and the source of the changeset (@sourceType@).
--
-- Both @s3SourcePath@ and @sourceType@ are required attributes.
--
-- Here is an example of how you could specify the @sourceParams@:
--
-- @ \"sourceParams\": { \"s3SourcePath\": \"s3:\/\/finspace-landing-us-east-2-bk7gcfvitndqa6ebnvys4d\/scratch\/wr5hh8pwkpqqkxa4sxrmcw\/ingestion\/equity.csv\", \"sourceType\": \"S3\" } @
--
-- The S3 path that you specify must allow the FinSpace role access. To do
-- that, you first need to configure the IAM policy on S3 bucket. For more
-- information, see
-- <https://docs.aws.amazon.com/finspace/latest/data-api/fs-using-the-finspace-api.html#access-s3-buckets Loading data from an Amazon S3 Bucket using the FinSpace API>
-- section.
createChangeset_sourceParams :: Lens.Lens' CreateChangeset (Prelude.HashMap Prelude.Text Prelude.Text)
createChangeset_sourceParams :: Lens' CreateChangeset (HashMap Text Text)
createChangeset_sourceParams = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChangeset' {HashMap Text Text
sourceParams :: HashMap Text Text
$sel:sourceParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
sourceParams} -> HashMap Text Text
sourceParams) (\s :: CreateChangeset
s@CreateChangeset' {} HashMap Text Text
a -> CreateChangeset
s {$sel:sourceParams:CreateChangeset' :: HashMap Text Text
sourceParams = HashMap Text Text
a} :: CreateChangeset) 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

-- | Options that define the structure of the source file(s) including the
-- format type (@formatType@), header row (@withHeader@), data separation
-- character (@separator@) and the type of compression (@compression@).
--
-- @formatType@ is a required attribute and can have the following values:
--
-- -   @PARQUET@ – Parquet source file format.
--
-- -   @CSV@ – CSV source file format.
--
-- -   @JSON@ – JSON source file format.
--
-- -   @XML@ – XML source file format.
--
-- Here is an example of how you could specify the @formatParams@:
--
-- @ \"formatParams\": { \"formatType\": \"CSV\", \"withHeader\": \"true\", \"separator\": \",\", \"compression\":\"None\" } @
--
-- Note that if you only provide @formatType@ as @CSV@, the rest of the
-- attributes will automatically default to CSV values as following:
--
-- @ { \"withHeader\": \"true\", \"separator\": \",\" } @
--
-- For more information about supported file formats, see
-- <https://docs.aws.amazon.com/finspace/latest/userguide/supported-data-types.html Supported Data Types and File Formats>
-- in the FinSpace User Guide.
createChangeset_formatParams :: Lens.Lens' CreateChangeset (Prelude.HashMap Prelude.Text Prelude.Text)
createChangeset_formatParams :: Lens' CreateChangeset (HashMap Text Text)
createChangeset_formatParams = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChangeset' {HashMap Text Text
formatParams :: HashMap Text Text
$sel:formatParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
formatParams} -> HashMap Text Text
formatParams) (\s :: CreateChangeset
s@CreateChangeset' {} HashMap Text Text
a -> CreateChangeset
s {$sel:formatParams:CreateChangeset' :: HashMap Text Text
formatParams = HashMap Text Text
a} :: CreateChangeset) 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 CreateChangeset where
  type
    AWSResponse CreateChangeset =
      CreateChangesetResponse
  request :: (Service -> Service) -> CreateChangeset -> Request CreateChangeset
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 CreateChangeset
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateChangeset)))
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 ->
          Maybe Text -> Maybe Text -> Int -> CreateChangesetResponse
CreateChangesetResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"changesetId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"datasetId")
            forall (f :: * -> *) a b. Applicative f => 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))
      )

instance Prelude.Hashable CreateChangeset where
  hashWithSalt :: Int -> CreateChangeset -> Int
hashWithSalt Int
_salt CreateChangeset' {Maybe Text
Text
HashMap Text Text
ChangeType
formatParams :: HashMap Text Text
sourceParams :: HashMap Text Text
changeType :: ChangeType
datasetId :: Text
clientToken :: Maybe Text
$sel:formatParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:sourceParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:changeType:CreateChangeset' :: CreateChangeset -> ChangeType
$sel:datasetId:CreateChangeset' :: CreateChangeset -> Text
$sel:clientToken:CreateChangeset' :: CreateChangeset -> 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
datasetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ChangeType
changeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` HashMap Text Text
sourceParams
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` HashMap Text Text
formatParams

instance Prelude.NFData CreateChangeset where
  rnf :: CreateChangeset -> ()
rnf CreateChangeset' {Maybe Text
Text
HashMap Text Text
ChangeType
formatParams :: HashMap Text Text
sourceParams :: HashMap Text Text
changeType :: ChangeType
datasetId :: Text
clientToken :: Maybe Text
$sel:formatParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:sourceParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:changeType:CreateChangeset' :: CreateChangeset -> ChangeType
$sel:datasetId:CreateChangeset' :: CreateChangeset -> Text
$sel:clientToken:CreateChangeset' :: CreateChangeset -> 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
datasetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ChangeType
changeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HashMap Text Text
sourceParams
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HashMap Text Text
formatParams

instance Data.ToHeaders CreateChangeset where
  toHeaders :: CreateChangeset -> 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 CreateChangeset where
  toJSON :: CreateChangeset -> Value
toJSON CreateChangeset' {Maybe Text
Text
HashMap Text Text
ChangeType
formatParams :: HashMap Text Text
sourceParams :: HashMap Text Text
changeType :: ChangeType
datasetId :: Text
clientToken :: Maybe Text
$sel:formatParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:sourceParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:changeType:CreateChangeset' :: CreateChangeset -> ChangeType
$sel:datasetId:CreateChangeset' :: CreateChangeset -> Text
$sel:clientToken:CreateChangeset' :: CreateChangeset -> 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
"changeType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ChangeType
changeType),
            forall a. a -> Maybe a
Prelude.Just (Key
"sourceParams" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= HashMap Text Text
sourceParams),
            forall a. a -> Maybe a
Prelude.Just (Key
"formatParams" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= HashMap Text Text
formatParams)
          ]
      )

instance Data.ToPath CreateChangeset where
  toPath :: CreateChangeset -> ByteString
toPath CreateChangeset' {Maybe Text
Text
HashMap Text Text
ChangeType
formatParams :: HashMap Text Text
sourceParams :: HashMap Text Text
changeType :: ChangeType
datasetId :: Text
clientToken :: Maybe Text
$sel:formatParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:sourceParams:CreateChangeset' :: CreateChangeset -> HashMap Text Text
$sel:changeType:CreateChangeset' :: CreateChangeset -> ChangeType
$sel:datasetId:CreateChangeset' :: CreateChangeset -> Text
$sel:clientToken:CreateChangeset' :: CreateChangeset -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/datasets/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
datasetId, ByteString
"/changesetsv2"]

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

-- | The response from a CreateChangeset operation.
--
-- /See:/ 'newCreateChangesetResponse' smart constructor.
data CreateChangesetResponse = CreateChangesetResponse'
  { -- | The unique identifier of the Changeset that is created.
    CreateChangesetResponse -> Maybe Text
changesetId :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the FinSpace Dataset where the Changeset is
    -- created.
    CreateChangesetResponse -> Maybe Text
datasetId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateChangesetResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateChangesetResponse -> CreateChangesetResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateChangesetResponse -> CreateChangesetResponse -> Bool
$c/= :: CreateChangesetResponse -> CreateChangesetResponse -> Bool
== :: CreateChangesetResponse -> CreateChangesetResponse -> Bool
$c== :: CreateChangesetResponse -> CreateChangesetResponse -> Bool
Prelude.Eq, ReadPrec [CreateChangesetResponse]
ReadPrec CreateChangesetResponse
Int -> ReadS CreateChangesetResponse
ReadS [CreateChangesetResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateChangesetResponse]
$creadListPrec :: ReadPrec [CreateChangesetResponse]
readPrec :: ReadPrec CreateChangesetResponse
$creadPrec :: ReadPrec CreateChangesetResponse
readList :: ReadS [CreateChangesetResponse]
$creadList :: ReadS [CreateChangesetResponse]
readsPrec :: Int -> ReadS CreateChangesetResponse
$creadsPrec :: Int -> ReadS CreateChangesetResponse
Prelude.Read, Int -> CreateChangesetResponse -> ShowS
[CreateChangesetResponse] -> ShowS
CreateChangesetResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateChangesetResponse] -> ShowS
$cshowList :: [CreateChangesetResponse] -> ShowS
show :: CreateChangesetResponse -> String
$cshow :: CreateChangesetResponse -> String
showsPrec :: Int -> CreateChangesetResponse -> ShowS
$cshowsPrec :: Int -> CreateChangesetResponse -> ShowS
Prelude.Show, forall x. Rep CreateChangesetResponse x -> CreateChangesetResponse
forall x. CreateChangesetResponse -> Rep CreateChangesetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateChangesetResponse x -> CreateChangesetResponse
$cfrom :: forall x. CreateChangesetResponse -> Rep CreateChangesetResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateChangesetResponse' 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:
--
-- 'changesetId', 'createChangesetResponse_changesetId' - The unique identifier of the Changeset that is created.
--
-- 'datasetId', 'createChangesetResponse_datasetId' - The unique identifier for the FinSpace Dataset where the Changeset is
-- created.
--
-- 'httpStatus', 'createChangesetResponse_httpStatus' - The response's http status code.
newCreateChangesetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateChangesetResponse
newCreateChangesetResponse :: Int -> CreateChangesetResponse
newCreateChangesetResponse Int
pHttpStatus_ =
  CreateChangesetResponse'
    { $sel:changesetId:CreateChangesetResponse' :: Maybe Text
changesetId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:datasetId:CreateChangesetResponse' :: Maybe Text
datasetId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateChangesetResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The unique identifier of the Changeset that is created.
createChangesetResponse_changesetId :: Lens.Lens' CreateChangesetResponse (Prelude.Maybe Prelude.Text)
createChangesetResponse_changesetId :: Lens' CreateChangesetResponse (Maybe Text)
createChangesetResponse_changesetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChangesetResponse' {Maybe Text
changesetId :: Maybe Text
$sel:changesetId:CreateChangesetResponse' :: CreateChangesetResponse -> Maybe Text
changesetId} -> Maybe Text
changesetId) (\s :: CreateChangesetResponse
s@CreateChangesetResponse' {} Maybe Text
a -> CreateChangesetResponse
s {$sel:changesetId:CreateChangesetResponse' :: Maybe Text
changesetId = Maybe Text
a} :: CreateChangesetResponse)

-- | The unique identifier for the FinSpace Dataset where the Changeset is
-- created.
createChangesetResponse_datasetId :: Lens.Lens' CreateChangesetResponse (Prelude.Maybe Prelude.Text)
createChangesetResponse_datasetId :: Lens' CreateChangesetResponse (Maybe Text)
createChangesetResponse_datasetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChangesetResponse' {Maybe Text
datasetId :: Maybe Text
$sel:datasetId:CreateChangesetResponse' :: CreateChangesetResponse -> Maybe Text
datasetId} -> Maybe Text
datasetId) (\s :: CreateChangesetResponse
s@CreateChangesetResponse' {} Maybe Text
a -> CreateChangesetResponse
s {$sel:datasetId:CreateChangesetResponse' :: Maybe Text
datasetId = Maybe Text
a} :: CreateChangesetResponse)

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

instance Prelude.NFData CreateChangesetResponse where
  rnf :: CreateChangesetResponse -> ()
rnf CreateChangesetResponse' {Int
Maybe Text
httpStatus :: Int
datasetId :: Maybe Text
changesetId :: Maybe Text
$sel:httpStatus:CreateChangesetResponse' :: CreateChangesetResponse -> Int
$sel:datasetId:CreateChangesetResponse' :: CreateChangesetResponse -> Maybe Text
$sel:changesetId:CreateChangesetResponse' :: CreateChangesetResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
changesetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
datasetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus