{-# 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.AppStream.CreateEntitlement
-- 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 entitlement. Entitlements control access to specific
-- applications within a stack, based on user attributes. Entitlements
-- apply to SAML 2.0 federated user identities. Amazon AppStream 2.0 user
-- pool and streaming URL users are entitled to all applications in a
-- stack. Entitlements don\'t apply to the desktop stream view application,
-- or to applications managed by a dynamic app provider using the Dynamic
-- Application Framework.
module Amazonka.AppStream.CreateEntitlement
  ( -- * Creating a Request
    CreateEntitlement (..),
    newCreateEntitlement,

    -- * Request Lenses
    createEntitlement_description,
    createEntitlement_name,
    createEntitlement_stackName,
    createEntitlement_appVisibility,
    createEntitlement_attributes,

    -- * Destructuring the Response
    CreateEntitlementResponse (..),
    newCreateEntitlementResponse,

    -- * Response Lenses
    createEntitlementResponse_entitlement,
    createEntitlementResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateEntitlement' smart constructor.
data CreateEntitlement = CreateEntitlement'
  { -- | The description of the entitlement.
    CreateEntitlement -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The name of the entitlement.
    CreateEntitlement -> Text
name :: Prelude.Text,
    -- | The name of the stack with which the entitlement is associated.
    CreateEntitlement -> Text
stackName :: Prelude.Text,
    -- | Specifies whether all or selected apps are entitled.
    CreateEntitlement -> AppVisibility
appVisibility :: AppVisibility,
    -- | The attributes of the entitlement.
    CreateEntitlement -> NonEmpty EntitlementAttribute
attributes :: Prelude.NonEmpty EntitlementAttribute
  }
  deriving (CreateEntitlement -> CreateEntitlement -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateEntitlement -> CreateEntitlement -> Bool
$c/= :: CreateEntitlement -> CreateEntitlement -> Bool
== :: CreateEntitlement -> CreateEntitlement -> Bool
$c== :: CreateEntitlement -> CreateEntitlement -> Bool
Prelude.Eq, ReadPrec [CreateEntitlement]
ReadPrec CreateEntitlement
Int -> ReadS CreateEntitlement
ReadS [CreateEntitlement]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateEntitlement]
$creadListPrec :: ReadPrec [CreateEntitlement]
readPrec :: ReadPrec CreateEntitlement
$creadPrec :: ReadPrec CreateEntitlement
readList :: ReadS [CreateEntitlement]
$creadList :: ReadS [CreateEntitlement]
readsPrec :: Int -> ReadS CreateEntitlement
$creadsPrec :: Int -> ReadS CreateEntitlement
Prelude.Read, Int -> CreateEntitlement -> ShowS
[CreateEntitlement] -> ShowS
CreateEntitlement -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateEntitlement] -> ShowS
$cshowList :: [CreateEntitlement] -> ShowS
show :: CreateEntitlement -> String
$cshow :: CreateEntitlement -> String
showsPrec :: Int -> CreateEntitlement -> ShowS
$cshowsPrec :: Int -> CreateEntitlement -> ShowS
Prelude.Show, forall x. Rep CreateEntitlement x -> CreateEntitlement
forall x. CreateEntitlement -> Rep CreateEntitlement x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateEntitlement x -> CreateEntitlement
$cfrom :: forall x. CreateEntitlement -> Rep CreateEntitlement x
Prelude.Generic)

-- |
-- Create a value of 'CreateEntitlement' 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:
--
-- 'description', 'createEntitlement_description' - The description of the entitlement.
--
-- 'name', 'createEntitlement_name' - The name of the entitlement.
--
-- 'stackName', 'createEntitlement_stackName' - The name of the stack with which the entitlement is associated.
--
-- 'appVisibility', 'createEntitlement_appVisibility' - Specifies whether all or selected apps are entitled.
--
-- 'attributes', 'createEntitlement_attributes' - The attributes of the entitlement.
newCreateEntitlement ::
  -- | 'name'
  Prelude.Text ->
  -- | 'stackName'
  Prelude.Text ->
  -- | 'appVisibility'
  AppVisibility ->
  -- | 'attributes'
  Prelude.NonEmpty EntitlementAttribute ->
  CreateEntitlement
newCreateEntitlement :: Text
-> Text
-> AppVisibility
-> NonEmpty EntitlementAttribute
-> CreateEntitlement
newCreateEntitlement
  Text
pName_
  Text
pStackName_
  AppVisibility
pAppVisibility_
  NonEmpty EntitlementAttribute
pAttributes_ =
    CreateEntitlement'
      { $sel:description:CreateEntitlement' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
        $sel:name:CreateEntitlement' :: Text
name = Text
pName_,
        $sel:stackName:CreateEntitlement' :: Text
stackName = Text
pStackName_,
        $sel:appVisibility:CreateEntitlement' :: AppVisibility
appVisibility = AppVisibility
pAppVisibility_,
        $sel:attributes:CreateEntitlement' :: NonEmpty EntitlementAttribute
attributes = forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty EntitlementAttribute
pAttributes_
      }

-- | The description of the entitlement.
createEntitlement_description :: Lens.Lens' CreateEntitlement (Prelude.Maybe Prelude.Text)
createEntitlement_description :: Lens' CreateEntitlement (Maybe Text)
createEntitlement_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEntitlement' {Maybe Text
description :: Maybe Text
$sel:description:CreateEntitlement' :: CreateEntitlement -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateEntitlement
s@CreateEntitlement' {} Maybe Text
a -> CreateEntitlement
s {$sel:description:CreateEntitlement' :: Maybe Text
description = Maybe Text
a} :: CreateEntitlement)

-- | The name of the entitlement.
createEntitlement_name :: Lens.Lens' CreateEntitlement Prelude.Text
createEntitlement_name :: Lens' CreateEntitlement Text
createEntitlement_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEntitlement' {Text
name :: Text
$sel:name:CreateEntitlement' :: CreateEntitlement -> Text
name} -> Text
name) (\s :: CreateEntitlement
s@CreateEntitlement' {} Text
a -> CreateEntitlement
s {$sel:name:CreateEntitlement' :: Text
name = Text
a} :: CreateEntitlement)

-- | The name of the stack with which the entitlement is associated.
createEntitlement_stackName :: Lens.Lens' CreateEntitlement Prelude.Text
createEntitlement_stackName :: Lens' CreateEntitlement Text
createEntitlement_stackName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEntitlement' {Text
stackName :: Text
$sel:stackName:CreateEntitlement' :: CreateEntitlement -> Text
stackName} -> Text
stackName) (\s :: CreateEntitlement
s@CreateEntitlement' {} Text
a -> CreateEntitlement
s {$sel:stackName:CreateEntitlement' :: Text
stackName = Text
a} :: CreateEntitlement)

-- | Specifies whether all or selected apps are entitled.
createEntitlement_appVisibility :: Lens.Lens' CreateEntitlement AppVisibility
createEntitlement_appVisibility :: Lens' CreateEntitlement AppVisibility
createEntitlement_appVisibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEntitlement' {AppVisibility
appVisibility :: AppVisibility
$sel:appVisibility:CreateEntitlement' :: CreateEntitlement -> AppVisibility
appVisibility} -> AppVisibility
appVisibility) (\s :: CreateEntitlement
s@CreateEntitlement' {} AppVisibility
a -> CreateEntitlement
s {$sel:appVisibility:CreateEntitlement' :: AppVisibility
appVisibility = AppVisibility
a} :: CreateEntitlement)

-- | The attributes of the entitlement.
createEntitlement_attributes :: Lens.Lens' CreateEntitlement (Prelude.NonEmpty EntitlementAttribute)
createEntitlement_attributes :: Lens' CreateEntitlement (NonEmpty EntitlementAttribute)
createEntitlement_attributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEntitlement' {NonEmpty EntitlementAttribute
attributes :: NonEmpty EntitlementAttribute
$sel:attributes:CreateEntitlement' :: CreateEntitlement -> NonEmpty EntitlementAttribute
attributes} -> NonEmpty EntitlementAttribute
attributes) (\s :: CreateEntitlement
s@CreateEntitlement' {} NonEmpty EntitlementAttribute
a -> CreateEntitlement
s {$sel:attributes:CreateEntitlement' :: NonEmpty EntitlementAttribute
attributes = NonEmpty EntitlementAttribute
a} :: CreateEntitlement) 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 CreateEntitlement where
  type
    AWSResponse CreateEntitlement =
      CreateEntitlementResponse
  request :: (Service -> Service)
-> CreateEntitlement -> Request CreateEntitlement
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 CreateEntitlement
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateEntitlement)))
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 Entitlement -> Int -> CreateEntitlementResponse
CreateEntitlementResponse'
            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
"Entitlement")
            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 CreateEntitlement where
  hashWithSalt :: Int -> CreateEntitlement -> Int
hashWithSalt Int
_salt CreateEntitlement' {Maybe Text
NonEmpty EntitlementAttribute
Text
AppVisibility
attributes :: NonEmpty EntitlementAttribute
appVisibility :: AppVisibility
stackName :: Text
name :: Text
description :: Maybe Text
$sel:attributes:CreateEntitlement' :: CreateEntitlement -> NonEmpty EntitlementAttribute
$sel:appVisibility:CreateEntitlement' :: CreateEntitlement -> AppVisibility
$sel:stackName:CreateEntitlement' :: CreateEntitlement -> Text
$sel:name:CreateEntitlement' :: CreateEntitlement -> Text
$sel:description:CreateEntitlement' :: CreateEntitlement -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
stackName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` AppVisibility
appVisibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty EntitlementAttribute
attributes

instance Prelude.NFData CreateEntitlement where
  rnf :: CreateEntitlement -> ()
rnf CreateEntitlement' {Maybe Text
NonEmpty EntitlementAttribute
Text
AppVisibility
attributes :: NonEmpty EntitlementAttribute
appVisibility :: AppVisibility
stackName :: Text
name :: Text
description :: Maybe Text
$sel:attributes:CreateEntitlement' :: CreateEntitlement -> NonEmpty EntitlementAttribute
$sel:appVisibility:CreateEntitlement' :: CreateEntitlement -> AppVisibility
$sel:stackName:CreateEntitlement' :: CreateEntitlement -> Text
$sel:name:CreateEntitlement' :: CreateEntitlement -> Text
$sel:description:CreateEntitlement' :: CreateEntitlement -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
stackName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf AppVisibility
appVisibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty EntitlementAttribute
attributes

instance Data.ToHeaders CreateEntitlement where
  toHeaders :: CreateEntitlement -> 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
"PhotonAdminProxyService.CreateEntitlement" ::
                          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 CreateEntitlement where
  toJSON :: CreateEntitlement -> Value
toJSON CreateEntitlement' {Maybe Text
NonEmpty EntitlementAttribute
Text
AppVisibility
attributes :: NonEmpty EntitlementAttribute
appVisibility :: AppVisibility
stackName :: Text
name :: Text
description :: Maybe Text
$sel:attributes:CreateEntitlement' :: CreateEntitlement -> NonEmpty EntitlementAttribute
$sel:appVisibility:CreateEntitlement' :: CreateEntitlement -> AppVisibility
$sel:stackName:CreateEntitlement' :: CreateEntitlement -> Text
$sel:name:CreateEntitlement' :: CreateEntitlement -> Text
$sel:description:CreateEntitlement' :: CreateEntitlement -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Description" 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
description,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name),
            forall a. a -> Maybe a
Prelude.Just (Key
"StackName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
stackName),
            forall a. a -> Maybe a
Prelude.Just (Key
"AppVisibility" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= AppVisibility
appVisibility),
            forall a. a -> Maybe a
Prelude.Just (Key
"Attributes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty EntitlementAttribute
attributes)
          ]
      )

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

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

-- | /See:/ 'newCreateEntitlementResponse' smart constructor.
data CreateEntitlementResponse = CreateEntitlementResponse'
  { -- | The entitlement.
    CreateEntitlementResponse -> Maybe Entitlement
entitlement :: Prelude.Maybe Entitlement,
    -- | The response's http status code.
    CreateEntitlementResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateEntitlementResponse -> CreateEntitlementResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateEntitlementResponse -> CreateEntitlementResponse -> Bool
$c/= :: CreateEntitlementResponse -> CreateEntitlementResponse -> Bool
== :: CreateEntitlementResponse -> CreateEntitlementResponse -> Bool
$c== :: CreateEntitlementResponse -> CreateEntitlementResponse -> Bool
Prelude.Eq, ReadPrec [CreateEntitlementResponse]
ReadPrec CreateEntitlementResponse
Int -> ReadS CreateEntitlementResponse
ReadS [CreateEntitlementResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateEntitlementResponse]
$creadListPrec :: ReadPrec [CreateEntitlementResponse]
readPrec :: ReadPrec CreateEntitlementResponse
$creadPrec :: ReadPrec CreateEntitlementResponse
readList :: ReadS [CreateEntitlementResponse]
$creadList :: ReadS [CreateEntitlementResponse]
readsPrec :: Int -> ReadS CreateEntitlementResponse
$creadsPrec :: Int -> ReadS CreateEntitlementResponse
Prelude.Read, Int -> CreateEntitlementResponse -> ShowS
[CreateEntitlementResponse] -> ShowS
CreateEntitlementResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateEntitlementResponse] -> ShowS
$cshowList :: [CreateEntitlementResponse] -> ShowS
show :: CreateEntitlementResponse -> String
$cshow :: CreateEntitlementResponse -> String
showsPrec :: Int -> CreateEntitlementResponse -> ShowS
$cshowsPrec :: Int -> CreateEntitlementResponse -> ShowS
Prelude.Show, forall x.
Rep CreateEntitlementResponse x -> CreateEntitlementResponse
forall x.
CreateEntitlementResponse -> Rep CreateEntitlementResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateEntitlementResponse x -> CreateEntitlementResponse
$cfrom :: forall x.
CreateEntitlementResponse -> Rep CreateEntitlementResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateEntitlementResponse' 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:
--
-- 'entitlement', 'createEntitlementResponse_entitlement' - The entitlement.
--
-- 'httpStatus', 'createEntitlementResponse_httpStatus' - The response's http status code.
newCreateEntitlementResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateEntitlementResponse
newCreateEntitlementResponse :: Int -> CreateEntitlementResponse
newCreateEntitlementResponse Int
pHttpStatus_ =
  CreateEntitlementResponse'
    { $sel:entitlement:CreateEntitlementResponse' :: Maybe Entitlement
entitlement =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateEntitlementResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The entitlement.
createEntitlementResponse_entitlement :: Lens.Lens' CreateEntitlementResponse (Prelude.Maybe Entitlement)
createEntitlementResponse_entitlement :: Lens' CreateEntitlementResponse (Maybe Entitlement)
createEntitlementResponse_entitlement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEntitlementResponse' {Maybe Entitlement
entitlement :: Maybe Entitlement
$sel:entitlement:CreateEntitlementResponse' :: CreateEntitlementResponse -> Maybe Entitlement
entitlement} -> Maybe Entitlement
entitlement) (\s :: CreateEntitlementResponse
s@CreateEntitlementResponse' {} Maybe Entitlement
a -> CreateEntitlementResponse
s {$sel:entitlement:CreateEntitlementResponse' :: Maybe Entitlement
entitlement = Maybe Entitlement
a} :: CreateEntitlementResponse)

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

instance Prelude.NFData CreateEntitlementResponse where
  rnf :: CreateEntitlementResponse -> ()
rnf CreateEntitlementResponse' {Int
Maybe Entitlement
httpStatus :: Int
entitlement :: Maybe Entitlement
$sel:httpStatus:CreateEntitlementResponse' :: CreateEntitlementResponse -> Int
$sel:entitlement:CreateEntitlementResponse' :: CreateEntitlementResponse -> Maybe Entitlement
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Entitlement
entitlement
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus