{-# 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.DataExchange.CreateRevision
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- This operation creates a revision for a data set.
module Amazonka.DataExchange.CreateRevision
  ( -- * Creating a Request
    CreateRevision (..),
    newCreateRevision,

    -- * Request Lenses
    createRevision_comment,
    createRevision_tags,
    createRevision_dataSetId,

    -- * Destructuring the Response
    CreateRevisionResponse (..),
    newCreateRevisionResponse,

    -- * Response Lenses
    createRevisionResponse_arn,
    createRevisionResponse_comment,
    createRevisionResponse_createdAt,
    createRevisionResponse_dataSetId,
    createRevisionResponse_finalized,
    createRevisionResponse_id,
    createRevisionResponse_revocationComment,
    createRevisionResponse_revoked,
    createRevisionResponse_revokedAt,
    createRevisionResponse_sourceId,
    createRevisionResponse_tags,
    createRevisionResponse_updatedAt,
    createRevisionResponse_httpStatus,
  )
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
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newCreateRevision' smart constructor.
data CreateRevision = CreateRevision'
  { -- | An optional comment about the revision.
    CreateRevision -> Maybe Text
comment :: Prelude.Maybe Prelude.Text,
    -- | A revision tag is an optional label that you can assign to a revision
    -- when you create it. Each tag consists of a key and an optional value,
    -- both of which you define. When you use tagging, you can also use
    -- tag-based access control in IAM policies to control access to these data
    -- sets and revisions.
    CreateRevision -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The unique identifier for a data set.
    CreateRevision -> Text
dataSetId :: Prelude.Text
  }
  deriving (CreateRevision -> CreateRevision -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateRevision -> CreateRevision -> Bool
$c/= :: CreateRevision -> CreateRevision -> Bool
== :: CreateRevision -> CreateRevision -> Bool
$c== :: CreateRevision -> CreateRevision -> Bool
Prelude.Eq, ReadPrec [CreateRevision]
ReadPrec CreateRevision
Int -> ReadS CreateRevision
ReadS [CreateRevision]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateRevision]
$creadListPrec :: ReadPrec [CreateRevision]
readPrec :: ReadPrec CreateRevision
$creadPrec :: ReadPrec CreateRevision
readList :: ReadS [CreateRevision]
$creadList :: ReadS [CreateRevision]
readsPrec :: Int -> ReadS CreateRevision
$creadsPrec :: Int -> ReadS CreateRevision
Prelude.Read, Int -> CreateRevision -> ShowS
[CreateRevision] -> ShowS
CreateRevision -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateRevision] -> ShowS
$cshowList :: [CreateRevision] -> ShowS
show :: CreateRevision -> String
$cshow :: CreateRevision -> String
showsPrec :: Int -> CreateRevision -> ShowS
$cshowsPrec :: Int -> CreateRevision -> ShowS
Prelude.Show, forall x. Rep CreateRevision x -> CreateRevision
forall x. CreateRevision -> Rep CreateRevision x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateRevision x -> CreateRevision
$cfrom :: forall x. CreateRevision -> Rep CreateRevision x
Prelude.Generic)

-- |
-- Create a value of 'CreateRevision' 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:
--
-- 'comment', 'createRevision_comment' - An optional comment about the revision.
--
-- 'tags', 'createRevision_tags' - A revision tag is an optional label that you can assign to a revision
-- when you create it. Each tag consists of a key and an optional value,
-- both of which you define. When you use tagging, you can also use
-- tag-based access control in IAM policies to control access to these data
-- sets and revisions.
--
-- 'dataSetId', 'createRevision_dataSetId' - The unique identifier for a data set.
newCreateRevision ::
  -- | 'dataSetId'
  Prelude.Text ->
  CreateRevision
newCreateRevision :: Text -> CreateRevision
newCreateRevision Text
pDataSetId_ =
  CreateRevision'
    { $sel:comment:CreateRevision' :: Maybe Text
comment = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateRevision' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:dataSetId:CreateRevision' :: Text
dataSetId = Text
pDataSetId_
    }

-- | An optional comment about the revision.
createRevision_comment :: Lens.Lens' CreateRevision (Prelude.Maybe Prelude.Text)
createRevision_comment :: Lens' CreateRevision (Maybe Text)
createRevision_comment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevision' {Maybe Text
comment :: Maybe Text
$sel:comment:CreateRevision' :: CreateRevision -> Maybe Text
comment} -> Maybe Text
comment) (\s :: CreateRevision
s@CreateRevision' {} Maybe Text
a -> CreateRevision
s {$sel:comment:CreateRevision' :: Maybe Text
comment = Maybe Text
a} :: CreateRevision)

-- | A revision tag is an optional label that you can assign to a revision
-- when you create it. Each tag consists of a key and an optional value,
-- both of which you define. When you use tagging, you can also use
-- tag-based access control in IAM policies to control access to these data
-- sets and revisions.
createRevision_tags :: Lens.Lens' CreateRevision (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createRevision_tags :: Lens' CreateRevision (Maybe (HashMap Text Text))
createRevision_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevision' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateRevision' :: CreateRevision -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateRevision
s@CreateRevision' {} Maybe (HashMap Text Text)
a -> CreateRevision
s {$sel:tags:CreateRevision' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateRevision) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The unique identifier for a data set.
createRevision_dataSetId :: Lens.Lens' CreateRevision Prelude.Text
createRevision_dataSetId :: Lens' CreateRevision Text
createRevision_dataSetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevision' {Text
dataSetId :: Text
$sel:dataSetId:CreateRevision' :: CreateRevision -> Text
dataSetId} -> Text
dataSetId) (\s :: CreateRevision
s@CreateRevision' {} Text
a -> CreateRevision
s {$sel:dataSetId:CreateRevision' :: Text
dataSetId = Text
a} :: CreateRevision)

instance Core.AWSRequest CreateRevision where
  type
    AWSResponse CreateRevision =
      CreateRevisionResponse
  request :: (Service -> Service) -> CreateRevision -> Request CreateRevision
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 CreateRevision
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateRevision)))
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
-> Maybe ISO8601
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe ISO8601
-> Int
-> CreateRevisionResponse
CreateRevisionResponse'
            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
"Arn")
            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
"Comment")
            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
"CreatedAt")
            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.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Finalized")
            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
"Id")
            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
"RevocationComment")
            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
"Revoked")
            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
"RevokedAt")
            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
"SourceId")
            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
"Tags" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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
"UpdatedAt")
            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 CreateRevision where
  hashWithSalt :: Int -> CreateRevision -> Int
hashWithSalt Int
_salt CreateRevision' {Maybe Text
Maybe (HashMap Text Text)
Text
dataSetId :: Text
tags :: Maybe (HashMap Text Text)
comment :: Maybe Text
$sel:dataSetId:CreateRevision' :: CreateRevision -> Text
$sel:tags:CreateRevision' :: CreateRevision -> Maybe (HashMap Text Text)
$sel:comment:CreateRevision' :: CreateRevision -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
comment
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dataSetId

instance Prelude.NFData CreateRevision where
  rnf :: CreateRevision -> ()
rnf CreateRevision' {Maybe Text
Maybe (HashMap Text Text)
Text
dataSetId :: Text
tags :: Maybe (HashMap Text Text)
comment :: Maybe Text
$sel:dataSetId:CreateRevision' :: CreateRevision -> Text
$sel:tags:CreateRevision' :: CreateRevision -> Maybe (HashMap Text Text)
$sel:comment:CreateRevision' :: CreateRevision -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
comment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
dataSetId

instance Data.ToHeaders CreateRevision where
  toHeaders :: CreateRevision -> 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 CreateRevision where
  toJSON :: CreateRevision -> Value
toJSON CreateRevision' {Maybe Text
Maybe (HashMap Text Text)
Text
dataSetId :: Text
tags :: Maybe (HashMap Text Text)
comment :: Maybe Text
$sel:dataSetId:CreateRevision' :: CreateRevision -> Text
$sel:tags:CreateRevision' :: CreateRevision -> Maybe (HashMap Text Text)
$sel:comment:CreateRevision' :: CreateRevision -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Comment" 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
comment,
            (Key
"Tags" 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 (HashMap Text Text)
tags
          ]
      )

instance Data.ToPath CreateRevision where
  toPath :: CreateRevision -> ByteString
toPath CreateRevision' {Maybe Text
Maybe (HashMap Text Text)
Text
dataSetId :: Text
tags :: Maybe (HashMap Text Text)
comment :: Maybe Text
$sel:dataSetId:CreateRevision' :: CreateRevision -> Text
$sel:tags:CreateRevision' :: CreateRevision -> Maybe (HashMap Text Text)
$sel:comment:CreateRevision' :: CreateRevision -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/v1/data-sets/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
dataSetId, ByteString
"/revisions"]

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

-- | /See:/ 'newCreateRevisionResponse' smart constructor.
data CreateRevisionResponse = CreateRevisionResponse'
  { -- | The ARN for the revision.
    CreateRevisionResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | An optional comment about the revision.
    CreateRevisionResponse -> Maybe Text
comment :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the revision was created, in ISO 8601 format.
    CreateRevisionResponse -> Maybe ISO8601
createdAt :: Prelude.Maybe Data.ISO8601,
    -- | The unique identifier for the data set associated with the data set
    -- revision.
    CreateRevisionResponse -> Maybe Text
dataSetId :: Prelude.Maybe Prelude.Text,
    -- | To publish a revision to a data set in a product, the revision must
    -- first be finalized. Finalizing a revision tells AWS Data Exchange that
    -- your changes to the assets in the revision are complete. After it\'s in
    -- this read-only state, you can publish the revision to your products.
    -- Finalized revisions can be published through the AWS Data Exchange
    -- console or the AWS Marketplace Catalog API, using the StartChangeSet AWS
    -- Marketplace Catalog API action. When using the API, revisions are
    -- uniquely identified by their ARN.
    CreateRevisionResponse -> Maybe Bool
finalized :: Prelude.Maybe Prelude.Bool,
    -- | The unique identifier for the revision.
    CreateRevisionResponse -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | A required comment to inform subscribers of the reason their access to
    -- the revision was revoked.
    CreateRevisionResponse -> Maybe Text
revocationComment :: Prelude.Maybe Prelude.Text,
    -- | A status indicating that subscribers\' access to the revision was
    -- revoked.
    CreateRevisionResponse -> Maybe Bool
revoked :: Prelude.Maybe Prelude.Bool,
    -- | The date and time that the revision was revoked, in ISO 8601 format.
    CreateRevisionResponse -> Maybe ISO8601
revokedAt :: Prelude.Maybe Data.ISO8601,
    -- | The revision ID of the owned revision corresponding to the entitled
    -- revision being viewed. This parameter is returned when a revision owner
    -- is viewing the entitled copy of its owned revision.
    CreateRevisionResponse -> Maybe Text
sourceId :: Prelude.Maybe Prelude.Text,
    -- | The tags for the revision.
    CreateRevisionResponse -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The date and time that the revision was last updated, in ISO 8601
    -- format.
    CreateRevisionResponse -> Maybe ISO8601
updatedAt :: Prelude.Maybe Data.ISO8601,
    -- | The response's http status code.
    CreateRevisionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateRevisionResponse -> CreateRevisionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateRevisionResponse -> CreateRevisionResponse -> Bool
$c/= :: CreateRevisionResponse -> CreateRevisionResponse -> Bool
== :: CreateRevisionResponse -> CreateRevisionResponse -> Bool
$c== :: CreateRevisionResponse -> CreateRevisionResponse -> Bool
Prelude.Eq, ReadPrec [CreateRevisionResponse]
ReadPrec CreateRevisionResponse
Int -> ReadS CreateRevisionResponse
ReadS [CreateRevisionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateRevisionResponse]
$creadListPrec :: ReadPrec [CreateRevisionResponse]
readPrec :: ReadPrec CreateRevisionResponse
$creadPrec :: ReadPrec CreateRevisionResponse
readList :: ReadS [CreateRevisionResponse]
$creadList :: ReadS [CreateRevisionResponse]
readsPrec :: Int -> ReadS CreateRevisionResponse
$creadsPrec :: Int -> ReadS CreateRevisionResponse
Prelude.Read, Int -> CreateRevisionResponse -> ShowS
[CreateRevisionResponse] -> ShowS
CreateRevisionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateRevisionResponse] -> ShowS
$cshowList :: [CreateRevisionResponse] -> ShowS
show :: CreateRevisionResponse -> String
$cshow :: CreateRevisionResponse -> String
showsPrec :: Int -> CreateRevisionResponse -> ShowS
$cshowsPrec :: Int -> CreateRevisionResponse -> ShowS
Prelude.Show, forall x. Rep CreateRevisionResponse x -> CreateRevisionResponse
forall x. CreateRevisionResponse -> Rep CreateRevisionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateRevisionResponse x -> CreateRevisionResponse
$cfrom :: forall x. CreateRevisionResponse -> Rep CreateRevisionResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateRevisionResponse' 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:
--
-- 'arn', 'createRevisionResponse_arn' - The ARN for the revision.
--
-- 'comment', 'createRevisionResponse_comment' - An optional comment about the revision.
--
-- 'createdAt', 'createRevisionResponse_createdAt' - The date and time that the revision was created, in ISO 8601 format.
--
-- 'dataSetId', 'createRevisionResponse_dataSetId' - The unique identifier for the data set associated with the data set
-- revision.
--
-- 'finalized', 'createRevisionResponse_finalized' - To publish a revision to a data set in a product, the revision must
-- first be finalized. Finalizing a revision tells AWS Data Exchange that
-- your changes to the assets in the revision are complete. After it\'s in
-- this read-only state, you can publish the revision to your products.
-- Finalized revisions can be published through the AWS Data Exchange
-- console or the AWS Marketplace Catalog API, using the StartChangeSet AWS
-- Marketplace Catalog API action. When using the API, revisions are
-- uniquely identified by their ARN.
--
-- 'id', 'createRevisionResponse_id' - The unique identifier for the revision.
--
-- 'revocationComment', 'createRevisionResponse_revocationComment' - A required comment to inform subscribers of the reason their access to
-- the revision was revoked.
--
-- 'revoked', 'createRevisionResponse_revoked' - A status indicating that subscribers\' access to the revision was
-- revoked.
--
-- 'revokedAt', 'createRevisionResponse_revokedAt' - The date and time that the revision was revoked, in ISO 8601 format.
--
-- 'sourceId', 'createRevisionResponse_sourceId' - The revision ID of the owned revision corresponding to the entitled
-- revision being viewed. This parameter is returned when a revision owner
-- is viewing the entitled copy of its owned revision.
--
-- 'tags', 'createRevisionResponse_tags' - The tags for the revision.
--
-- 'updatedAt', 'createRevisionResponse_updatedAt' - The date and time that the revision was last updated, in ISO 8601
-- format.
--
-- 'httpStatus', 'createRevisionResponse_httpStatus' - The response's http status code.
newCreateRevisionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateRevisionResponse
newCreateRevisionResponse :: Int -> CreateRevisionResponse
newCreateRevisionResponse Int
pHttpStatus_ =
  CreateRevisionResponse'
    { $sel:arn:CreateRevisionResponse' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:comment:CreateRevisionResponse' :: Maybe Text
comment = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:CreateRevisionResponse' :: Maybe ISO8601
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:dataSetId:CreateRevisionResponse' :: Maybe Text
dataSetId = forall a. Maybe a
Prelude.Nothing,
      $sel:finalized:CreateRevisionResponse' :: Maybe Bool
finalized = forall a. Maybe a
Prelude.Nothing,
      $sel:id:CreateRevisionResponse' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:revocationComment:CreateRevisionResponse' :: Maybe Text
revocationComment = forall a. Maybe a
Prelude.Nothing,
      $sel:revoked:CreateRevisionResponse' :: Maybe Bool
revoked = forall a. Maybe a
Prelude.Nothing,
      $sel:revokedAt:CreateRevisionResponse' :: Maybe ISO8601
revokedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceId:CreateRevisionResponse' :: Maybe Text
sourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateRevisionResponse' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:updatedAt:CreateRevisionResponse' :: Maybe ISO8601
updatedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateRevisionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN for the revision.
createRevisionResponse_arn :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Text)
createRevisionResponse_arn :: Lens' CreateRevisionResponse (Maybe Text)
createRevisionResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Text
a -> CreateRevisionResponse
s {$sel:arn:CreateRevisionResponse' :: Maybe Text
arn = Maybe Text
a} :: CreateRevisionResponse)

-- | An optional comment about the revision.
createRevisionResponse_comment :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Text)
createRevisionResponse_comment :: Lens' CreateRevisionResponse (Maybe Text)
createRevisionResponse_comment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Text
comment :: Maybe Text
$sel:comment:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
comment} -> Maybe Text
comment) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Text
a -> CreateRevisionResponse
s {$sel:comment:CreateRevisionResponse' :: Maybe Text
comment = Maybe Text
a} :: CreateRevisionResponse)

-- | The date and time that the revision was created, in ISO 8601 format.
createRevisionResponse_createdAt :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.UTCTime)
createRevisionResponse_createdAt :: Lens' CreateRevisionResponse (Maybe UTCTime)
createRevisionResponse_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe ISO8601
createdAt :: Maybe ISO8601
$sel:createdAt:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe ISO8601
createdAt} -> Maybe ISO8601
createdAt) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe ISO8601
a -> CreateRevisionResponse
s {$sel:createdAt:CreateRevisionResponse' :: Maybe ISO8601
createdAt = Maybe ISO8601
a} :: CreateRevisionResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The unique identifier for the data set associated with the data set
-- revision.
createRevisionResponse_dataSetId :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Text)
createRevisionResponse_dataSetId :: Lens' CreateRevisionResponse (Maybe Text)
createRevisionResponse_dataSetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Text
dataSetId :: Maybe Text
$sel:dataSetId:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
dataSetId} -> Maybe Text
dataSetId) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Text
a -> CreateRevisionResponse
s {$sel:dataSetId:CreateRevisionResponse' :: Maybe Text
dataSetId = Maybe Text
a} :: CreateRevisionResponse)

-- | To publish a revision to a data set in a product, the revision must
-- first be finalized. Finalizing a revision tells AWS Data Exchange that
-- your changes to the assets in the revision are complete. After it\'s in
-- this read-only state, you can publish the revision to your products.
-- Finalized revisions can be published through the AWS Data Exchange
-- console or the AWS Marketplace Catalog API, using the StartChangeSet AWS
-- Marketplace Catalog API action. When using the API, revisions are
-- uniquely identified by their ARN.
createRevisionResponse_finalized :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Bool)
createRevisionResponse_finalized :: Lens' CreateRevisionResponse (Maybe Bool)
createRevisionResponse_finalized = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Bool
finalized :: Maybe Bool
$sel:finalized:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Bool
finalized} -> Maybe Bool
finalized) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Bool
a -> CreateRevisionResponse
s {$sel:finalized:CreateRevisionResponse' :: Maybe Bool
finalized = Maybe Bool
a} :: CreateRevisionResponse)

-- | The unique identifier for the revision.
createRevisionResponse_id :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Text)
createRevisionResponse_id :: Lens' CreateRevisionResponse (Maybe Text)
createRevisionResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Text
id :: Maybe Text
$sel:id:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
id} -> Maybe Text
id) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Text
a -> CreateRevisionResponse
s {$sel:id:CreateRevisionResponse' :: Maybe Text
id = Maybe Text
a} :: CreateRevisionResponse)

-- | A required comment to inform subscribers of the reason their access to
-- the revision was revoked.
createRevisionResponse_revocationComment :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Text)
createRevisionResponse_revocationComment :: Lens' CreateRevisionResponse (Maybe Text)
createRevisionResponse_revocationComment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Text
revocationComment :: Maybe Text
$sel:revocationComment:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
revocationComment} -> Maybe Text
revocationComment) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Text
a -> CreateRevisionResponse
s {$sel:revocationComment:CreateRevisionResponse' :: Maybe Text
revocationComment = Maybe Text
a} :: CreateRevisionResponse)

-- | A status indicating that subscribers\' access to the revision was
-- revoked.
createRevisionResponse_revoked :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Bool)
createRevisionResponse_revoked :: Lens' CreateRevisionResponse (Maybe Bool)
createRevisionResponse_revoked = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Bool
revoked :: Maybe Bool
$sel:revoked:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Bool
revoked} -> Maybe Bool
revoked) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Bool
a -> CreateRevisionResponse
s {$sel:revoked:CreateRevisionResponse' :: Maybe Bool
revoked = Maybe Bool
a} :: CreateRevisionResponse)

-- | The date and time that the revision was revoked, in ISO 8601 format.
createRevisionResponse_revokedAt :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.UTCTime)
createRevisionResponse_revokedAt :: Lens' CreateRevisionResponse (Maybe UTCTime)
createRevisionResponse_revokedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe ISO8601
revokedAt :: Maybe ISO8601
$sel:revokedAt:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe ISO8601
revokedAt} -> Maybe ISO8601
revokedAt) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe ISO8601
a -> CreateRevisionResponse
s {$sel:revokedAt:CreateRevisionResponse' :: Maybe ISO8601
revokedAt = Maybe ISO8601
a} :: CreateRevisionResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The revision ID of the owned revision corresponding to the entitled
-- revision being viewed. This parameter is returned when a revision owner
-- is viewing the entitled copy of its owned revision.
createRevisionResponse_sourceId :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.Text)
createRevisionResponse_sourceId :: Lens' CreateRevisionResponse (Maybe Text)
createRevisionResponse_sourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe Text
sourceId :: Maybe Text
$sel:sourceId:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
sourceId} -> Maybe Text
sourceId) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe Text
a -> CreateRevisionResponse
s {$sel:sourceId:CreateRevisionResponse' :: Maybe Text
sourceId = Maybe Text
a} :: CreateRevisionResponse)

-- | The tags for the revision.
createRevisionResponse_tags :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createRevisionResponse_tags :: Lens' CreateRevisionResponse (Maybe (HashMap Text Text))
createRevisionResponse_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe (HashMap Text Text)
a -> CreateRevisionResponse
s {$sel:tags:CreateRevisionResponse' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateRevisionResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The date and time that the revision was last updated, in ISO 8601
-- format.
createRevisionResponse_updatedAt :: Lens.Lens' CreateRevisionResponse (Prelude.Maybe Prelude.UTCTime)
createRevisionResponse_updatedAt :: Lens' CreateRevisionResponse (Maybe UTCTime)
createRevisionResponse_updatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRevisionResponse' {Maybe ISO8601
updatedAt :: Maybe ISO8601
$sel:updatedAt:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe ISO8601
updatedAt} -> Maybe ISO8601
updatedAt) (\s :: CreateRevisionResponse
s@CreateRevisionResponse' {} Maybe ISO8601
a -> CreateRevisionResponse
s {$sel:updatedAt:CreateRevisionResponse' :: Maybe ISO8601
updatedAt = Maybe ISO8601
a} :: CreateRevisionResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

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

instance Prelude.NFData CreateRevisionResponse where
  rnf :: CreateRevisionResponse -> ()
rnf CreateRevisionResponse' {Int
Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe ISO8601
httpStatus :: Int
updatedAt :: Maybe ISO8601
tags :: Maybe (HashMap Text Text)
sourceId :: Maybe Text
revokedAt :: Maybe ISO8601
revoked :: Maybe Bool
revocationComment :: Maybe Text
id :: Maybe Text
finalized :: Maybe Bool
dataSetId :: Maybe Text
createdAt :: Maybe ISO8601
comment :: Maybe Text
arn :: Maybe Text
$sel:httpStatus:CreateRevisionResponse' :: CreateRevisionResponse -> Int
$sel:updatedAt:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe ISO8601
$sel:tags:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe (HashMap Text Text)
$sel:sourceId:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
$sel:revokedAt:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe ISO8601
$sel:revoked:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Bool
$sel:revocationComment:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
$sel:id:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
$sel:finalized:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Bool
$sel:dataSetId:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
$sel:createdAt:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe ISO8601
$sel:comment:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
$sel:arn:CreateRevisionResponse' :: CreateRevisionResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
comment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
createdAt
      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 Maybe Bool
finalized
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
revocationComment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
revoked
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
revokedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
updatedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus