{-# 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.LicenseManager.CreateGrantVersion
-- 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 version of the specified grant.
module Amazonka.LicenseManager.CreateGrantVersion
  ( -- * Creating a Request
    CreateGrantVersion (..),
    newCreateGrantVersion,

    -- * Request Lenses
    createGrantVersion_allowedOperations,
    createGrantVersion_grantName,
    createGrantVersion_sourceVersion,
    createGrantVersion_status,
    createGrantVersion_statusReason,
    createGrantVersion_clientToken,
    createGrantVersion_grantArn,

    -- * Destructuring the Response
    CreateGrantVersionResponse (..),
    newCreateGrantVersionResponse,

    -- * Response Lenses
    createGrantVersionResponse_grantArn,
    createGrantVersionResponse_status,
    createGrantVersionResponse_version,
    createGrantVersionResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateGrantVersion' smart constructor.
data CreateGrantVersion = CreateGrantVersion'
  { -- | Allowed operations for the grant.
    CreateGrantVersion -> Maybe (NonEmpty AllowedOperation)
allowedOperations :: Prelude.Maybe (Prelude.NonEmpty AllowedOperation),
    -- | Grant name.
    CreateGrantVersion -> Maybe Text
grantName :: Prelude.Maybe Prelude.Text,
    -- | Current version of the grant.
    CreateGrantVersion -> Maybe Text
sourceVersion :: Prelude.Maybe Prelude.Text,
    -- | Grant status.
    CreateGrantVersion -> Maybe GrantStatus
status :: Prelude.Maybe GrantStatus,
    -- | Grant status reason.
    CreateGrantVersion -> Maybe Text
statusReason :: Prelude.Maybe Prelude.Text,
    -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request.
    CreateGrantVersion -> Text
clientToken :: Prelude.Text,
    -- | Amazon Resource Name (ARN) of the grant.
    CreateGrantVersion -> Text
grantArn :: Prelude.Text
  }
  deriving (CreateGrantVersion -> CreateGrantVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateGrantVersion -> CreateGrantVersion -> Bool
$c/= :: CreateGrantVersion -> CreateGrantVersion -> Bool
== :: CreateGrantVersion -> CreateGrantVersion -> Bool
$c== :: CreateGrantVersion -> CreateGrantVersion -> Bool
Prelude.Eq, ReadPrec [CreateGrantVersion]
ReadPrec CreateGrantVersion
Int -> ReadS CreateGrantVersion
ReadS [CreateGrantVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateGrantVersion]
$creadListPrec :: ReadPrec [CreateGrantVersion]
readPrec :: ReadPrec CreateGrantVersion
$creadPrec :: ReadPrec CreateGrantVersion
readList :: ReadS [CreateGrantVersion]
$creadList :: ReadS [CreateGrantVersion]
readsPrec :: Int -> ReadS CreateGrantVersion
$creadsPrec :: Int -> ReadS CreateGrantVersion
Prelude.Read, Int -> CreateGrantVersion -> ShowS
[CreateGrantVersion] -> ShowS
CreateGrantVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateGrantVersion] -> ShowS
$cshowList :: [CreateGrantVersion] -> ShowS
show :: CreateGrantVersion -> String
$cshow :: CreateGrantVersion -> String
showsPrec :: Int -> CreateGrantVersion -> ShowS
$cshowsPrec :: Int -> CreateGrantVersion -> ShowS
Prelude.Show, forall x. Rep CreateGrantVersion x -> CreateGrantVersion
forall x. CreateGrantVersion -> Rep CreateGrantVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateGrantVersion x -> CreateGrantVersion
$cfrom :: forall x. CreateGrantVersion -> Rep CreateGrantVersion x
Prelude.Generic)

-- |
-- Create a value of 'CreateGrantVersion' 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:
--
-- 'allowedOperations', 'createGrantVersion_allowedOperations' - Allowed operations for the grant.
--
-- 'grantName', 'createGrantVersion_grantName' - Grant name.
--
-- 'sourceVersion', 'createGrantVersion_sourceVersion' - Current version of the grant.
--
-- 'status', 'createGrantVersion_status' - Grant status.
--
-- 'statusReason', 'createGrantVersion_statusReason' - Grant status reason.
--
-- 'clientToken', 'createGrantVersion_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
--
-- 'grantArn', 'createGrantVersion_grantArn' - Amazon Resource Name (ARN) of the grant.
newCreateGrantVersion ::
  -- | 'clientToken'
  Prelude.Text ->
  -- | 'grantArn'
  Prelude.Text ->
  CreateGrantVersion
newCreateGrantVersion :: Text -> Text -> CreateGrantVersion
newCreateGrantVersion Text
pClientToken_ Text
pGrantArn_ =
  CreateGrantVersion'
    { $sel:allowedOperations:CreateGrantVersion' :: Maybe (NonEmpty AllowedOperation)
allowedOperations =
        forall a. Maybe a
Prelude.Nothing,
      $sel:grantName:CreateGrantVersion' :: Maybe Text
grantName = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceVersion:CreateGrantVersion' :: Maybe Text
sourceVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:status:CreateGrantVersion' :: Maybe GrantStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:statusReason:CreateGrantVersion' :: Maybe Text
statusReason = forall a. Maybe a
Prelude.Nothing,
      $sel:clientToken:CreateGrantVersion' :: Text
clientToken = Text
pClientToken_,
      $sel:grantArn:CreateGrantVersion' :: Text
grantArn = Text
pGrantArn_
    }

-- | Allowed operations for the grant.
createGrantVersion_allowedOperations :: Lens.Lens' CreateGrantVersion (Prelude.Maybe (Prelude.NonEmpty AllowedOperation))
createGrantVersion_allowedOperations :: Lens' CreateGrantVersion (Maybe (NonEmpty AllowedOperation))
createGrantVersion_allowedOperations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersion' {Maybe (NonEmpty AllowedOperation)
allowedOperations :: Maybe (NonEmpty AllowedOperation)
$sel:allowedOperations:CreateGrantVersion' :: CreateGrantVersion -> Maybe (NonEmpty AllowedOperation)
allowedOperations} -> Maybe (NonEmpty AllowedOperation)
allowedOperations) (\s :: CreateGrantVersion
s@CreateGrantVersion' {} Maybe (NonEmpty AllowedOperation)
a -> CreateGrantVersion
s {$sel:allowedOperations:CreateGrantVersion' :: Maybe (NonEmpty AllowedOperation)
allowedOperations = Maybe (NonEmpty AllowedOperation)
a} :: CreateGrantVersion) 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

-- | Grant name.
createGrantVersion_grantName :: Lens.Lens' CreateGrantVersion (Prelude.Maybe Prelude.Text)
createGrantVersion_grantName :: Lens' CreateGrantVersion (Maybe Text)
createGrantVersion_grantName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersion' {Maybe Text
grantName :: Maybe Text
$sel:grantName:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
grantName} -> Maybe Text
grantName) (\s :: CreateGrantVersion
s@CreateGrantVersion' {} Maybe Text
a -> CreateGrantVersion
s {$sel:grantName:CreateGrantVersion' :: Maybe Text
grantName = Maybe Text
a} :: CreateGrantVersion)

-- | Current version of the grant.
createGrantVersion_sourceVersion :: Lens.Lens' CreateGrantVersion (Prelude.Maybe Prelude.Text)
createGrantVersion_sourceVersion :: Lens' CreateGrantVersion (Maybe Text)
createGrantVersion_sourceVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersion' {Maybe Text
sourceVersion :: Maybe Text
$sel:sourceVersion:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
sourceVersion} -> Maybe Text
sourceVersion) (\s :: CreateGrantVersion
s@CreateGrantVersion' {} Maybe Text
a -> CreateGrantVersion
s {$sel:sourceVersion:CreateGrantVersion' :: Maybe Text
sourceVersion = Maybe Text
a} :: CreateGrantVersion)

-- | Grant status.
createGrantVersion_status :: Lens.Lens' CreateGrantVersion (Prelude.Maybe GrantStatus)
createGrantVersion_status :: Lens' CreateGrantVersion (Maybe GrantStatus)
createGrantVersion_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersion' {Maybe GrantStatus
status :: Maybe GrantStatus
$sel:status:CreateGrantVersion' :: CreateGrantVersion -> Maybe GrantStatus
status} -> Maybe GrantStatus
status) (\s :: CreateGrantVersion
s@CreateGrantVersion' {} Maybe GrantStatus
a -> CreateGrantVersion
s {$sel:status:CreateGrantVersion' :: Maybe GrantStatus
status = Maybe GrantStatus
a} :: CreateGrantVersion)

-- | Grant status reason.
createGrantVersion_statusReason :: Lens.Lens' CreateGrantVersion (Prelude.Maybe Prelude.Text)
createGrantVersion_statusReason :: Lens' CreateGrantVersion (Maybe Text)
createGrantVersion_statusReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersion' {Maybe Text
statusReason :: Maybe Text
$sel:statusReason:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
statusReason} -> Maybe Text
statusReason) (\s :: CreateGrantVersion
s@CreateGrantVersion' {} Maybe Text
a -> CreateGrantVersion
s {$sel:statusReason:CreateGrantVersion' :: Maybe Text
statusReason = Maybe Text
a} :: CreateGrantVersion)

-- | Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
createGrantVersion_clientToken :: Lens.Lens' CreateGrantVersion Prelude.Text
createGrantVersion_clientToken :: Lens' CreateGrantVersion Text
createGrantVersion_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersion' {Text
clientToken :: Text
$sel:clientToken:CreateGrantVersion' :: CreateGrantVersion -> Text
clientToken} -> Text
clientToken) (\s :: CreateGrantVersion
s@CreateGrantVersion' {} Text
a -> CreateGrantVersion
s {$sel:clientToken:CreateGrantVersion' :: Text
clientToken = Text
a} :: CreateGrantVersion)

-- | Amazon Resource Name (ARN) of the grant.
createGrantVersion_grantArn :: Lens.Lens' CreateGrantVersion Prelude.Text
createGrantVersion_grantArn :: Lens' CreateGrantVersion Text
createGrantVersion_grantArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersion' {Text
grantArn :: Text
$sel:grantArn:CreateGrantVersion' :: CreateGrantVersion -> Text
grantArn} -> Text
grantArn) (\s :: CreateGrantVersion
s@CreateGrantVersion' {} Text
a -> CreateGrantVersion
s {$sel:grantArn:CreateGrantVersion' :: Text
grantArn = Text
a} :: CreateGrantVersion)

instance Core.AWSRequest CreateGrantVersion where
  type
    AWSResponse CreateGrantVersion =
      CreateGrantVersionResponse
  request :: (Service -> Service)
-> CreateGrantVersion -> Request CreateGrantVersion
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 CreateGrantVersion
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateGrantVersion)))
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 GrantStatus
-> Maybe Text
-> Int
-> CreateGrantVersionResponse
CreateGrantVersionResponse'
            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
"GrantArn")
            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
"Status")
            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
"Version")
            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 CreateGrantVersion where
  hashWithSalt :: Int -> CreateGrantVersion -> Int
hashWithSalt Int
_salt CreateGrantVersion' {Maybe (NonEmpty AllowedOperation)
Maybe Text
Maybe GrantStatus
Text
grantArn :: Text
clientToken :: Text
statusReason :: Maybe Text
status :: Maybe GrantStatus
sourceVersion :: Maybe Text
grantName :: Maybe Text
allowedOperations :: Maybe (NonEmpty AllowedOperation)
$sel:grantArn:CreateGrantVersion' :: CreateGrantVersion -> Text
$sel:clientToken:CreateGrantVersion' :: CreateGrantVersion -> Text
$sel:statusReason:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:status:CreateGrantVersion' :: CreateGrantVersion -> Maybe GrantStatus
$sel:sourceVersion:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:grantName:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:allowedOperations:CreateGrantVersion' :: CreateGrantVersion -> Maybe (NonEmpty AllowedOperation)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty AllowedOperation)
allowedOperations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
grantName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GrantStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
statusReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
grantArn

instance Prelude.NFData CreateGrantVersion where
  rnf :: CreateGrantVersion -> ()
rnf CreateGrantVersion' {Maybe (NonEmpty AllowedOperation)
Maybe Text
Maybe GrantStatus
Text
grantArn :: Text
clientToken :: Text
statusReason :: Maybe Text
status :: Maybe GrantStatus
sourceVersion :: Maybe Text
grantName :: Maybe Text
allowedOperations :: Maybe (NonEmpty AllowedOperation)
$sel:grantArn:CreateGrantVersion' :: CreateGrantVersion -> Text
$sel:clientToken:CreateGrantVersion' :: CreateGrantVersion -> Text
$sel:statusReason:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:status:CreateGrantVersion' :: CreateGrantVersion -> Maybe GrantStatus
$sel:sourceVersion:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:grantName:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:allowedOperations:CreateGrantVersion' :: CreateGrantVersion -> Maybe (NonEmpty AllowedOperation)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty AllowedOperation)
allowedOperations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
grantName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GrantStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
statusReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
grantArn

instance Data.ToHeaders CreateGrantVersion where
  toHeaders :: CreateGrantVersion -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AWSLicenseManager.CreateGrantVersion" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateGrantVersion where
  toJSON :: CreateGrantVersion -> Value
toJSON CreateGrantVersion' {Maybe (NonEmpty AllowedOperation)
Maybe Text
Maybe GrantStatus
Text
grantArn :: Text
clientToken :: Text
statusReason :: Maybe Text
status :: Maybe GrantStatus
sourceVersion :: Maybe Text
grantName :: Maybe Text
allowedOperations :: Maybe (NonEmpty AllowedOperation)
$sel:grantArn:CreateGrantVersion' :: CreateGrantVersion -> Text
$sel:clientToken:CreateGrantVersion' :: CreateGrantVersion -> Text
$sel:statusReason:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:status:CreateGrantVersion' :: CreateGrantVersion -> Maybe GrantStatus
$sel:sourceVersion:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:grantName:CreateGrantVersion' :: CreateGrantVersion -> Maybe Text
$sel:allowedOperations:CreateGrantVersion' :: CreateGrantVersion -> Maybe (NonEmpty AllowedOperation)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AllowedOperations" 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 (NonEmpty AllowedOperation)
allowedOperations,
            (Key
"GrantName" 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
grantName,
            (Key
"SourceVersion" 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
sourceVersion,
            (Key
"Status" 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 GrantStatus
status,
            (Key
"StatusReason" 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
statusReason,
            forall a. a -> Maybe a
Prelude.Just (Key
"ClientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
clientToken),
            forall a. a -> Maybe a
Prelude.Just (Key
"GrantArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
grantArn)
          ]
      )

instance Data.ToPath CreateGrantVersion where
  toPath :: CreateGrantVersion -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newCreateGrantVersionResponse' smart constructor.
data CreateGrantVersionResponse = CreateGrantVersionResponse'
  { -- | Grant ARN.
    CreateGrantVersionResponse -> Maybe Text
grantArn :: Prelude.Maybe Prelude.Text,
    -- | Grant status.
    CreateGrantVersionResponse -> Maybe GrantStatus
status :: Prelude.Maybe GrantStatus,
    -- | New version of the grant.
    CreateGrantVersionResponse -> Maybe Text
version :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateGrantVersionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateGrantVersionResponse -> CreateGrantVersionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateGrantVersionResponse -> CreateGrantVersionResponse -> Bool
$c/= :: CreateGrantVersionResponse -> CreateGrantVersionResponse -> Bool
== :: CreateGrantVersionResponse -> CreateGrantVersionResponse -> Bool
$c== :: CreateGrantVersionResponse -> CreateGrantVersionResponse -> Bool
Prelude.Eq, ReadPrec [CreateGrantVersionResponse]
ReadPrec CreateGrantVersionResponse
Int -> ReadS CreateGrantVersionResponse
ReadS [CreateGrantVersionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateGrantVersionResponse]
$creadListPrec :: ReadPrec [CreateGrantVersionResponse]
readPrec :: ReadPrec CreateGrantVersionResponse
$creadPrec :: ReadPrec CreateGrantVersionResponse
readList :: ReadS [CreateGrantVersionResponse]
$creadList :: ReadS [CreateGrantVersionResponse]
readsPrec :: Int -> ReadS CreateGrantVersionResponse
$creadsPrec :: Int -> ReadS CreateGrantVersionResponse
Prelude.Read, Int -> CreateGrantVersionResponse -> ShowS
[CreateGrantVersionResponse] -> ShowS
CreateGrantVersionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateGrantVersionResponse] -> ShowS
$cshowList :: [CreateGrantVersionResponse] -> ShowS
show :: CreateGrantVersionResponse -> String
$cshow :: CreateGrantVersionResponse -> String
showsPrec :: Int -> CreateGrantVersionResponse -> ShowS
$cshowsPrec :: Int -> CreateGrantVersionResponse -> ShowS
Prelude.Show, forall x.
Rep CreateGrantVersionResponse x -> CreateGrantVersionResponse
forall x.
CreateGrantVersionResponse -> Rep CreateGrantVersionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateGrantVersionResponse x -> CreateGrantVersionResponse
$cfrom :: forall x.
CreateGrantVersionResponse -> Rep CreateGrantVersionResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateGrantVersionResponse' 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:
--
-- 'grantArn', 'createGrantVersionResponse_grantArn' - Grant ARN.
--
-- 'status', 'createGrantVersionResponse_status' - Grant status.
--
-- 'version', 'createGrantVersionResponse_version' - New version of the grant.
--
-- 'httpStatus', 'createGrantVersionResponse_httpStatus' - The response's http status code.
newCreateGrantVersionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateGrantVersionResponse
newCreateGrantVersionResponse :: Int -> CreateGrantVersionResponse
newCreateGrantVersionResponse Int
pHttpStatus_ =
  CreateGrantVersionResponse'
    { $sel:grantArn:CreateGrantVersionResponse' :: Maybe Text
grantArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:status:CreateGrantVersionResponse' :: Maybe GrantStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:version:CreateGrantVersionResponse' :: Maybe Text
version = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateGrantVersionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Grant ARN.
createGrantVersionResponse_grantArn :: Lens.Lens' CreateGrantVersionResponse (Prelude.Maybe Prelude.Text)
createGrantVersionResponse_grantArn :: Lens' CreateGrantVersionResponse (Maybe Text)
createGrantVersionResponse_grantArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersionResponse' {Maybe Text
grantArn :: Maybe Text
$sel:grantArn:CreateGrantVersionResponse' :: CreateGrantVersionResponse -> Maybe Text
grantArn} -> Maybe Text
grantArn) (\s :: CreateGrantVersionResponse
s@CreateGrantVersionResponse' {} Maybe Text
a -> CreateGrantVersionResponse
s {$sel:grantArn:CreateGrantVersionResponse' :: Maybe Text
grantArn = Maybe Text
a} :: CreateGrantVersionResponse)

-- | Grant status.
createGrantVersionResponse_status :: Lens.Lens' CreateGrantVersionResponse (Prelude.Maybe GrantStatus)
createGrantVersionResponse_status :: Lens' CreateGrantVersionResponse (Maybe GrantStatus)
createGrantVersionResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersionResponse' {Maybe GrantStatus
status :: Maybe GrantStatus
$sel:status:CreateGrantVersionResponse' :: CreateGrantVersionResponse -> Maybe GrantStatus
status} -> Maybe GrantStatus
status) (\s :: CreateGrantVersionResponse
s@CreateGrantVersionResponse' {} Maybe GrantStatus
a -> CreateGrantVersionResponse
s {$sel:status:CreateGrantVersionResponse' :: Maybe GrantStatus
status = Maybe GrantStatus
a} :: CreateGrantVersionResponse)

-- | New version of the grant.
createGrantVersionResponse_version :: Lens.Lens' CreateGrantVersionResponse (Prelude.Maybe Prelude.Text)
createGrantVersionResponse_version :: Lens' CreateGrantVersionResponse (Maybe Text)
createGrantVersionResponse_version = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateGrantVersionResponse' {Maybe Text
version :: Maybe Text
$sel:version:CreateGrantVersionResponse' :: CreateGrantVersionResponse -> Maybe Text
version} -> Maybe Text
version) (\s :: CreateGrantVersionResponse
s@CreateGrantVersionResponse' {} Maybe Text
a -> CreateGrantVersionResponse
s {$sel:version:CreateGrantVersionResponse' :: Maybe Text
version = Maybe Text
a} :: CreateGrantVersionResponse)

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

instance Prelude.NFData CreateGrantVersionResponse where
  rnf :: CreateGrantVersionResponse -> ()
rnf CreateGrantVersionResponse' {Int
Maybe Text
Maybe GrantStatus
httpStatus :: Int
version :: Maybe Text
status :: Maybe GrantStatus
grantArn :: Maybe Text
$sel:httpStatus:CreateGrantVersionResponse' :: CreateGrantVersionResponse -> Int
$sel:version:CreateGrantVersionResponse' :: CreateGrantVersionResponse -> Maybe Text
$sel:status:CreateGrantVersionResponse' :: CreateGrantVersionResponse -> Maybe GrantStatus
$sel:grantArn:CreateGrantVersionResponse' :: CreateGrantVersionResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
grantArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GrantStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
version
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus