{-# 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.CheckoutBorrowLicense
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Checks out the specified license for offline use.
module Amazonka.LicenseManager.CheckoutBorrowLicense
  ( -- * Creating a Request
    CheckoutBorrowLicense (..),
    newCheckoutBorrowLicense,

    -- * Request Lenses
    checkoutBorrowLicense_checkoutMetadata,
    checkoutBorrowLicense_nodeId,
    checkoutBorrowLicense_licenseArn,
    checkoutBorrowLicense_entitlements,
    checkoutBorrowLicense_digitalSignatureMethod,
    checkoutBorrowLicense_clientToken,

    -- * Destructuring the Response
    CheckoutBorrowLicenseResponse (..),
    newCheckoutBorrowLicenseResponse,

    -- * Response Lenses
    checkoutBorrowLicenseResponse_checkoutMetadata,
    checkoutBorrowLicenseResponse_entitlementsAllowed,
    checkoutBorrowLicenseResponse_expiration,
    checkoutBorrowLicenseResponse_issuedAt,
    checkoutBorrowLicenseResponse_licenseArn,
    checkoutBorrowLicenseResponse_licenseConsumptionToken,
    checkoutBorrowLicenseResponse_nodeId,
    checkoutBorrowLicenseResponse_signedToken,
    checkoutBorrowLicenseResponse_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:/ 'newCheckoutBorrowLicense' smart constructor.
data CheckoutBorrowLicense = CheckoutBorrowLicense'
  { -- | Information about constraints.
    CheckoutBorrowLicense -> Maybe [Metadata]
checkoutMetadata :: Prelude.Maybe [Metadata],
    -- | Node ID.
    CheckoutBorrowLicense -> Maybe Text
nodeId :: Prelude.Maybe Prelude.Text,
    -- | Amazon Resource Name (ARN) of the license. The license must use the
    -- borrow consumption configuration.
    CheckoutBorrowLicense -> Text
licenseArn :: Prelude.Text,
    -- | License entitlements. Partial checkouts are not supported.
    CheckoutBorrowLicense -> [EntitlementData]
entitlements :: [EntitlementData],
    -- | Digital signature method. The possible value is JSON Web Signature (JWS)
    -- algorithm PS384. For more information, see
    -- <https://tools.ietf.org/html/rfc7518#section-3.5 RFC 7518 Digital Signature with RSASSA-PSS>.
    CheckoutBorrowLicense -> DigitalSignatureMethod
digitalSignatureMethod :: DigitalSignatureMethod,
    -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request.
    CheckoutBorrowLicense -> Text
clientToken :: Prelude.Text
  }
  deriving (CheckoutBorrowLicense -> CheckoutBorrowLicense -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CheckoutBorrowLicense -> CheckoutBorrowLicense -> Bool
$c/= :: CheckoutBorrowLicense -> CheckoutBorrowLicense -> Bool
== :: CheckoutBorrowLicense -> CheckoutBorrowLicense -> Bool
$c== :: CheckoutBorrowLicense -> CheckoutBorrowLicense -> Bool
Prelude.Eq, ReadPrec [CheckoutBorrowLicense]
ReadPrec CheckoutBorrowLicense
Int -> ReadS CheckoutBorrowLicense
ReadS [CheckoutBorrowLicense]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CheckoutBorrowLicense]
$creadListPrec :: ReadPrec [CheckoutBorrowLicense]
readPrec :: ReadPrec CheckoutBorrowLicense
$creadPrec :: ReadPrec CheckoutBorrowLicense
readList :: ReadS [CheckoutBorrowLicense]
$creadList :: ReadS [CheckoutBorrowLicense]
readsPrec :: Int -> ReadS CheckoutBorrowLicense
$creadsPrec :: Int -> ReadS CheckoutBorrowLicense
Prelude.Read, Int -> CheckoutBorrowLicense -> ShowS
[CheckoutBorrowLicense] -> ShowS
CheckoutBorrowLicense -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CheckoutBorrowLicense] -> ShowS
$cshowList :: [CheckoutBorrowLicense] -> ShowS
show :: CheckoutBorrowLicense -> String
$cshow :: CheckoutBorrowLicense -> String
showsPrec :: Int -> CheckoutBorrowLicense -> ShowS
$cshowsPrec :: Int -> CheckoutBorrowLicense -> ShowS
Prelude.Show, forall x. Rep CheckoutBorrowLicense x -> CheckoutBorrowLicense
forall x. CheckoutBorrowLicense -> Rep CheckoutBorrowLicense x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CheckoutBorrowLicense x -> CheckoutBorrowLicense
$cfrom :: forall x. CheckoutBorrowLicense -> Rep CheckoutBorrowLicense x
Prelude.Generic)

-- |
-- Create a value of 'CheckoutBorrowLicense' 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:
--
-- 'checkoutMetadata', 'checkoutBorrowLicense_checkoutMetadata' - Information about constraints.
--
-- 'nodeId', 'checkoutBorrowLicense_nodeId' - Node ID.
--
-- 'licenseArn', 'checkoutBorrowLicense_licenseArn' - Amazon Resource Name (ARN) of the license. The license must use the
-- borrow consumption configuration.
--
-- 'entitlements', 'checkoutBorrowLicense_entitlements' - License entitlements. Partial checkouts are not supported.
--
-- 'digitalSignatureMethod', 'checkoutBorrowLicense_digitalSignatureMethod' - Digital signature method. The possible value is JSON Web Signature (JWS)
-- algorithm PS384. For more information, see
-- <https://tools.ietf.org/html/rfc7518#section-3.5 RFC 7518 Digital Signature with RSASSA-PSS>.
--
-- 'clientToken', 'checkoutBorrowLicense_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
newCheckoutBorrowLicense ::
  -- | 'licenseArn'
  Prelude.Text ->
  -- | 'digitalSignatureMethod'
  DigitalSignatureMethod ->
  -- | 'clientToken'
  Prelude.Text ->
  CheckoutBorrowLicense
newCheckoutBorrowLicense :: Text -> DigitalSignatureMethod -> Text -> CheckoutBorrowLicense
newCheckoutBorrowLicense
  Text
pLicenseArn_
  DigitalSignatureMethod
pDigitalSignatureMethod_
  Text
pClientToken_ =
    CheckoutBorrowLicense'
      { $sel:checkoutMetadata:CheckoutBorrowLicense' :: Maybe [Metadata]
checkoutMetadata =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nodeId:CheckoutBorrowLicense' :: Maybe Text
nodeId = forall a. Maybe a
Prelude.Nothing,
        $sel:licenseArn:CheckoutBorrowLicense' :: Text
licenseArn = Text
pLicenseArn_,
        $sel:entitlements:CheckoutBorrowLicense' :: [EntitlementData]
entitlements = forall a. Monoid a => a
Prelude.mempty,
        $sel:digitalSignatureMethod:CheckoutBorrowLicense' :: DigitalSignatureMethod
digitalSignatureMethod = DigitalSignatureMethod
pDigitalSignatureMethod_,
        $sel:clientToken:CheckoutBorrowLicense' :: Text
clientToken = Text
pClientToken_
      }

-- | Information about constraints.
checkoutBorrowLicense_checkoutMetadata :: Lens.Lens' CheckoutBorrowLicense (Prelude.Maybe [Metadata])
checkoutBorrowLicense_checkoutMetadata :: Lens' CheckoutBorrowLicense (Maybe [Metadata])
checkoutBorrowLicense_checkoutMetadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicense' {Maybe [Metadata]
checkoutMetadata :: Maybe [Metadata]
$sel:checkoutMetadata:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe [Metadata]
checkoutMetadata} -> Maybe [Metadata]
checkoutMetadata) (\s :: CheckoutBorrowLicense
s@CheckoutBorrowLicense' {} Maybe [Metadata]
a -> CheckoutBorrowLicense
s {$sel:checkoutMetadata:CheckoutBorrowLicense' :: Maybe [Metadata]
checkoutMetadata = Maybe [Metadata]
a} :: CheckoutBorrowLicense) 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

-- | Node ID.
checkoutBorrowLicense_nodeId :: Lens.Lens' CheckoutBorrowLicense (Prelude.Maybe Prelude.Text)
checkoutBorrowLicense_nodeId :: Lens' CheckoutBorrowLicense (Maybe Text)
checkoutBorrowLicense_nodeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicense' {Maybe Text
nodeId :: Maybe Text
$sel:nodeId:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe Text
nodeId} -> Maybe Text
nodeId) (\s :: CheckoutBorrowLicense
s@CheckoutBorrowLicense' {} Maybe Text
a -> CheckoutBorrowLicense
s {$sel:nodeId:CheckoutBorrowLicense' :: Maybe Text
nodeId = Maybe Text
a} :: CheckoutBorrowLicense)

-- | Amazon Resource Name (ARN) of the license. The license must use the
-- borrow consumption configuration.
checkoutBorrowLicense_licenseArn :: Lens.Lens' CheckoutBorrowLicense Prelude.Text
checkoutBorrowLicense_licenseArn :: Lens' CheckoutBorrowLicense Text
checkoutBorrowLicense_licenseArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicense' {Text
licenseArn :: Text
$sel:licenseArn:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Text
licenseArn} -> Text
licenseArn) (\s :: CheckoutBorrowLicense
s@CheckoutBorrowLicense' {} Text
a -> CheckoutBorrowLicense
s {$sel:licenseArn:CheckoutBorrowLicense' :: Text
licenseArn = Text
a} :: CheckoutBorrowLicense)

-- | License entitlements. Partial checkouts are not supported.
checkoutBorrowLicense_entitlements :: Lens.Lens' CheckoutBorrowLicense [EntitlementData]
checkoutBorrowLicense_entitlements :: Lens' CheckoutBorrowLicense [EntitlementData]
checkoutBorrowLicense_entitlements = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicense' {[EntitlementData]
entitlements :: [EntitlementData]
$sel:entitlements:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> [EntitlementData]
entitlements} -> [EntitlementData]
entitlements) (\s :: CheckoutBorrowLicense
s@CheckoutBorrowLicense' {} [EntitlementData]
a -> CheckoutBorrowLicense
s {$sel:entitlements:CheckoutBorrowLicense' :: [EntitlementData]
entitlements = [EntitlementData]
a} :: CheckoutBorrowLicense) 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

-- | Digital signature method. The possible value is JSON Web Signature (JWS)
-- algorithm PS384. For more information, see
-- <https://tools.ietf.org/html/rfc7518#section-3.5 RFC 7518 Digital Signature with RSASSA-PSS>.
checkoutBorrowLicense_digitalSignatureMethod :: Lens.Lens' CheckoutBorrowLicense DigitalSignatureMethod
checkoutBorrowLicense_digitalSignatureMethod :: Lens' CheckoutBorrowLicense DigitalSignatureMethod
checkoutBorrowLicense_digitalSignatureMethod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicense' {DigitalSignatureMethod
digitalSignatureMethod :: DigitalSignatureMethod
$sel:digitalSignatureMethod:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> DigitalSignatureMethod
digitalSignatureMethod} -> DigitalSignatureMethod
digitalSignatureMethod) (\s :: CheckoutBorrowLicense
s@CheckoutBorrowLicense' {} DigitalSignatureMethod
a -> CheckoutBorrowLicense
s {$sel:digitalSignatureMethod:CheckoutBorrowLicense' :: DigitalSignatureMethod
digitalSignatureMethod = DigitalSignatureMethod
a} :: CheckoutBorrowLicense)

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

instance Core.AWSRequest CheckoutBorrowLicense where
  type
    AWSResponse CheckoutBorrowLicense =
      CheckoutBorrowLicenseResponse
  request :: (Service -> Service)
-> CheckoutBorrowLicense -> Request CheckoutBorrowLicense
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 CheckoutBorrowLicense
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CheckoutBorrowLicense)))
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 [Metadata]
-> Maybe [EntitlementData]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> CheckoutBorrowLicenseResponse
CheckoutBorrowLicenseResponse'
            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
"CheckoutMetadata"
                            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
"EntitlementsAllowed"
                            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
"Expiration")
            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
"IssuedAt")
            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
"LicenseArn")
            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
"LicenseConsumptionToken")
            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
"NodeId")
            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
"SignedToken")
            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 CheckoutBorrowLicense where
  hashWithSalt :: Int -> CheckoutBorrowLicense -> Int
hashWithSalt Int
_salt CheckoutBorrowLicense' {[EntitlementData]
Maybe [Metadata]
Maybe Text
Text
DigitalSignatureMethod
clientToken :: Text
digitalSignatureMethod :: DigitalSignatureMethod
entitlements :: [EntitlementData]
licenseArn :: Text
nodeId :: Maybe Text
checkoutMetadata :: Maybe [Metadata]
$sel:clientToken:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Text
$sel:digitalSignatureMethod:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> DigitalSignatureMethod
$sel:entitlements:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> [EntitlementData]
$sel:licenseArn:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Text
$sel:nodeId:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe Text
$sel:checkoutMetadata:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe [Metadata]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Metadata]
checkoutMetadata
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nodeId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
licenseArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [EntitlementData]
entitlements
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` DigitalSignatureMethod
digitalSignatureMethod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken

instance Prelude.NFData CheckoutBorrowLicense where
  rnf :: CheckoutBorrowLicense -> ()
rnf CheckoutBorrowLicense' {[EntitlementData]
Maybe [Metadata]
Maybe Text
Text
DigitalSignatureMethod
clientToken :: Text
digitalSignatureMethod :: DigitalSignatureMethod
entitlements :: [EntitlementData]
licenseArn :: Text
nodeId :: Maybe Text
checkoutMetadata :: Maybe [Metadata]
$sel:clientToken:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Text
$sel:digitalSignatureMethod:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> DigitalSignatureMethod
$sel:entitlements:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> [EntitlementData]
$sel:licenseArn:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Text
$sel:nodeId:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe Text
$sel:checkoutMetadata:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe [Metadata]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Metadata]
checkoutMetadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nodeId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
licenseArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [EntitlementData]
entitlements
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DigitalSignatureMethod
digitalSignatureMethod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clientToken

instance Data.ToHeaders CheckoutBorrowLicense where
  toHeaders :: CheckoutBorrowLicense -> 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.CheckoutBorrowLicense" ::
                          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 CheckoutBorrowLicense where
  toJSON :: CheckoutBorrowLicense -> Value
toJSON CheckoutBorrowLicense' {[EntitlementData]
Maybe [Metadata]
Maybe Text
Text
DigitalSignatureMethod
clientToken :: Text
digitalSignatureMethod :: DigitalSignatureMethod
entitlements :: [EntitlementData]
licenseArn :: Text
nodeId :: Maybe Text
checkoutMetadata :: Maybe [Metadata]
$sel:clientToken:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Text
$sel:digitalSignatureMethod:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> DigitalSignatureMethod
$sel:entitlements:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> [EntitlementData]
$sel:licenseArn:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Text
$sel:nodeId:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe Text
$sel:checkoutMetadata:CheckoutBorrowLicense' :: CheckoutBorrowLicense -> Maybe [Metadata]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"CheckoutMetadata" 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 [Metadata]
checkoutMetadata,
            (Key
"NodeId" 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
nodeId,
            forall a. a -> Maybe a
Prelude.Just (Key
"LicenseArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
licenseArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"Entitlements" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [EntitlementData]
entitlements),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"DigitalSignatureMethod"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= DigitalSignatureMethod
digitalSignatureMethod
              ),
            forall a. a -> Maybe a
Prelude.Just (Key
"ClientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
clientToken)
          ]
      )

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

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

-- | /See:/ 'newCheckoutBorrowLicenseResponse' smart constructor.
data CheckoutBorrowLicenseResponse = CheckoutBorrowLicenseResponse'
  { -- | Information about constraints.
    CheckoutBorrowLicenseResponse -> Maybe [Metadata]
checkoutMetadata :: Prelude.Maybe [Metadata],
    -- | Allowed license entitlements.
    CheckoutBorrowLicenseResponse -> Maybe [EntitlementData]
entitlementsAllowed :: Prelude.Maybe [EntitlementData],
    -- | Date and time at which the license checkout expires.
    CheckoutBorrowLicenseResponse -> Maybe Text
expiration :: Prelude.Maybe Prelude.Text,
    -- | Date and time at which the license checkout is issued.
    CheckoutBorrowLicenseResponse -> Maybe Text
issuedAt :: Prelude.Maybe Prelude.Text,
    -- | Amazon Resource Name (ARN) of the license.
    CheckoutBorrowLicenseResponse -> Maybe Text
licenseArn :: Prelude.Maybe Prelude.Text,
    -- | License consumption token.
    CheckoutBorrowLicenseResponse -> Maybe Text
licenseConsumptionToken :: Prelude.Maybe Prelude.Text,
    -- | Node ID.
    CheckoutBorrowLicenseResponse -> Maybe Text
nodeId :: Prelude.Maybe Prelude.Text,
    -- | Signed token.
    CheckoutBorrowLicenseResponse -> Maybe Text
signedToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CheckoutBorrowLicenseResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CheckoutBorrowLicenseResponse
-> CheckoutBorrowLicenseResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CheckoutBorrowLicenseResponse
-> CheckoutBorrowLicenseResponse -> Bool
$c/= :: CheckoutBorrowLicenseResponse
-> CheckoutBorrowLicenseResponse -> Bool
== :: CheckoutBorrowLicenseResponse
-> CheckoutBorrowLicenseResponse -> Bool
$c== :: CheckoutBorrowLicenseResponse
-> CheckoutBorrowLicenseResponse -> Bool
Prelude.Eq, ReadPrec [CheckoutBorrowLicenseResponse]
ReadPrec CheckoutBorrowLicenseResponse
Int -> ReadS CheckoutBorrowLicenseResponse
ReadS [CheckoutBorrowLicenseResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CheckoutBorrowLicenseResponse]
$creadListPrec :: ReadPrec [CheckoutBorrowLicenseResponse]
readPrec :: ReadPrec CheckoutBorrowLicenseResponse
$creadPrec :: ReadPrec CheckoutBorrowLicenseResponse
readList :: ReadS [CheckoutBorrowLicenseResponse]
$creadList :: ReadS [CheckoutBorrowLicenseResponse]
readsPrec :: Int -> ReadS CheckoutBorrowLicenseResponse
$creadsPrec :: Int -> ReadS CheckoutBorrowLicenseResponse
Prelude.Read, Int -> CheckoutBorrowLicenseResponse -> ShowS
[CheckoutBorrowLicenseResponse] -> ShowS
CheckoutBorrowLicenseResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CheckoutBorrowLicenseResponse] -> ShowS
$cshowList :: [CheckoutBorrowLicenseResponse] -> ShowS
show :: CheckoutBorrowLicenseResponse -> String
$cshow :: CheckoutBorrowLicenseResponse -> String
showsPrec :: Int -> CheckoutBorrowLicenseResponse -> ShowS
$cshowsPrec :: Int -> CheckoutBorrowLicenseResponse -> ShowS
Prelude.Show, forall x.
Rep CheckoutBorrowLicenseResponse x
-> CheckoutBorrowLicenseResponse
forall x.
CheckoutBorrowLicenseResponse
-> Rep CheckoutBorrowLicenseResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CheckoutBorrowLicenseResponse x
-> CheckoutBorrowLicenseResponse
$cfrom :: forall x.
CheckoutBorrowLicenseResponse
-> Rep CheckoutBorrowLicenseResponse x
Prelude.Generic)

-- |
-- Create a value of 'CheckoutBorrowLicenseResponse' 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:
--
-- 'checkoutMetadata', 'checkoutBorrowLicenseResponse_checkoutMetadata' - Information about constraints.
--
-- 'entitlementsAllowed', 'checkoutBorrowLicenseResponse_entitlementsAllowed' - Allowed license entitlements.
--
-- 'expiration', 'checkoutBorrowLicenseResponse_expiration' - Date and time at which the license checkout expires.
--
-- 'issuedAt', 'checkoutBorrowLicenseResponse_issuedAt' - Date and time at which the license checkout is issued.
--
-- 'licenseArn', 'checkoutBorrowLicenseResponse_licenseArn' - Amazon Resource Name (ARN) of the license.
--
-- 'licenseConsumptionToken', 'checkoutBorrowLicenseResponse_licenseConsumptionToken' - License consumption token.
--
-- 'nodeId', 'checkoutBorrowLicenseResponse_nodeId' - Node ID.
--
-- 'signedToken', 'checkoutBorrowLicenseResponse_signedToken' - Signed token.
--
-- 'httpStatus', 'checkoutBorrowLicenseResponse_httpStatus' - The response's http status code.
newCheckoutBorrowLicenseResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CheckoutBorrowLicenseResponse
newCheckoutBorrowLicenseResponse :: Int -> CheckoutBorrowLicenseResponse
newCheckoutBorrowLicenseResponse Int
pHttpStatus_ =
  CheckoutBorrowLicenseResponse'
    { $sel:checkoutMetadata:CheckoutBorrowLicenseResponse' :: Maybe [Metadata]
checkoutMetadata =
        forall a. Maybe a
Prelude.Nothing,
      $sel:entitlementsAllowed:CheckoutBorrowLicenseResponse' :: Maybe [EntitlementData]
entitlementsAllowed = forall a. Maybe a
Prelude.Nothing,
      $sel:expiration:CheckoutBorrowLicenseResponse' :: Maybe Text
expiration = forall a. Maybe a
Prelude.Nothing,
      $sel:issuedAt:CheckoutBorrowLicenseResponse' :: Maybe Text
issuedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:licenseArn:CheckoutBorrowLicenseResponse' :: Maybe Text
licenseArn = forall a. Maybe a
Prelude.Nothing,
      $sel:licenseConsumptionToken:CheckoutBorrowLicenseResponse' :: Maybe Text
licenseConsumptionToken = forall a. Maybe a
Prelude.Nothing,
      $sel:nodeId:CheckoutBorrowLicenseResponse' :: Maybe Text
nodeId = forall a. Maybe a
Prelude.Nothing,
      $sel:signedToken:CheckoutBorrowLicenseResponse' :: Maybe Text
signedToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CheckoutBorrowLicenseResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about constraints.
checkoutBorrowLicenseResponse_checkoutMetadata :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe [Metadata])
checkoutBorrowLicenseResponse_checkoutMetadata :: Lens' CheckoutBorrowLicenseResponse (Maybe [Metadata])
checkoutBorrowLicenseResponse_checkoutMetadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe [Metadata]
checkoutMetadata :: Maybe [Metadata]
$sel:checkoutMetadata:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe [Metadata]
checkoutMetadata} -> Maybe [Metadata]
checkoutMetadata) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe [Metadata]
a -> CheckoutBorrowLicenseResponse
s {$sel:checkoutMetadata:CheckoutBorrowLicenseResponse' :: Maybe [Metadata]
checkoutMetadata = Maybe [Metadata]
a} :: CheckoutBorrowLicenseResponse) 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

-- | Allowed license entitlements.
checkoutBorrowLicenseResponse_entitlementsAllowed :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe [EntitlementData])
checkoutBorrowLicenseResponse_entitlementsAllowed :: Lens' CheckoutBorrowLicenseResponse (Maybe [EntitlementData])
checkoutBorrowLicenseResponse_entitlementsAllowed = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe [EntitlementData]
entitlementsAllowed :: Maybe [EntitlementData]
$sel:entitlementsAllowed:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe [EntitlementData]
entitlementsAllowed} -> Maybe [EntitlementData]
entitlementsAllowed) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe [EntitlementData]
a -> CheckoutBorrowLicenseResponse
s {$sel:entitlementsAllowed:CheckoutBorrowLicenseResponse' :: Maybe [EntitlementData]
entitlementsAllowed = Maybe [EntitlementData]
a} :: CheckoutBorrowLicenseResponse) 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

-- | Date and time at which the license checkout expires.
checkoutBorrowLicenseResponse_expiration :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe Prelude.Text)
checkoutBorrowLicenseResponse_expiration :: Lens' CheckoutBorrowLicenseResponse (Maybe Text)
checkoutBorrowLicenseResponse_expiration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe Text
expiration :: Maybe Text
$sel:expiration:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
expiration} -> Maybe Text
expiration) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe Text
a -> CheckoutBorrowLicenseResponse
s {$sel:expiration:CheckoutBorrowLicenseResponse' :: Maybe Text
expiration = Maybe Text
a} :: CheckoutBorrowLicenseResponse)

-- | Date and time at which the license checkout is issued.
checkoutBorrowLicenseResponse_issuedAt :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe Prelude.Text)
checkoutBorrowLicenseResponse_issuedAt :: Lens' CheckoutBorrowLicenseResponse (Maybe Text)
checkoutBorrowLicenseResponse_issuedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe Text
issuedAt :: Maybe Text
$sel:issuedAt:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
issuedAt} -> Maybe Text
issuedAt) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe Text
a -> CheckoutBorrowLicenseResponse
s {$sel:issuedAt:CheckoutBorrowLicenseResponse' :: Maybe Text
issuedAt = Maybe Text
a} :: CheckoutBorrowLicenseResponse)

-- | Amazon Resource Name (ARN) of the license.
checkoutBorrowLicenseResponse_licenseArn :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe Prelude.Text)
checkoutBorrowLicenseResponse_licenseArn :: Lens' CheckoutBorrowLicenseResponse (Maybe Text)
checkoutBorrowLicenseResponse_licenseArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe Text
licenseArn :: Maybe Text
$sel:licenseArn:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
licenseArn} -> Maybe Text
licenseArn) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe Text
a -> CheckoutBorrowLicenseResponse
s {$sel:licenseArn:CheckoutBorrowLicenseResponse' :: Maybe Text
licenseArn = Maybe Text
a} :: CheckoutBorrowLicenseResponse)

-- | License consumption token.
checkoutBorrowLicenseResponse_licenseConsumptionToken :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe Prelude.Text)
checkoutBorrowLicenseResponse_licenseConsumptionToken :: Lens' CheckoutBorrowLicenseResponse (Maybe Text)
checkoutBorrowLicenseResponse_licenseConsumptionToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe Text
licenseConsumptionToken :: Maybe Text
$sel:licenseConsumptionToken:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
licenseConsumptionToken} -> Maybe Text
licenseConsumptionToken) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe Text
a -> CheckoutBorrowLicenseResponse
s {$sel:licenseConsumptionToken:CheckoutBorrowLicenseResponse' :: Maybe Text
licenseConsumptionToken = Maybe Text
a} :: CheckoutBorrowLicenseResponse)

-- | Node ID.
checkoutBorrowLicenseResponse_nodeId :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe Prelude.Text)
checkoutBorrowLicenseResponse_nodeId :: Lens' CheckoutBorrowLicenseResponse (Maybe Text)
checkoutBorrowLicenseResponse_nodeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe Text
nodeId :: Maybe Text
$sel:nodeId:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
nodeId} -> Maybe Text
nodeId) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe Text
a -> CheckoutBorrowLicenseResponse
s {$sel:nodeId:CheckoutBorrowLicenseResponse' :: Maybe Text
nodeId = Maybe Text
a} :: CheckoutBorrowLicenseResponse)

-- | Signed token.
checkoutBorrowLicenseResponse_signedToken :: Lens.Lens' CheckoutBorrowLicenseResponse (Prelude.Maybe Prelude.Text)
checkoutBorrowLicenseResponse_signedToken :: Lens' CheckoutBorrowLicenseResponse (Maybe Text)
checkoutBorrowLicenseResponse_signedToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CheckoutBorrowLicenseResponse' {Maybe Text
signedToken :: Maybe Text
$sel:signedToken:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
signedToken} -> Maybe Text
signedToken) (\s :: CheckoutBorrowLicenseResponse
s@CheckoutBorrowLicenseResponse' {} Maybe Text
a -> CheckoutBorrowLicenseResponse
s {$sel:signedToken:CheckoutBorrowLicenseResponse' :: Maybe Text
signedToken = Maybe Text
a} :: CheckoutBorrowLicenseResponse)

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

instance Prelude.NFData CheckoutBorrowLicenseResponse where
  rnf :: CheckoutBorrowLicenseResponse -> ()
rnf CheckoutBorrowLicenseResponse' {Int
Maybe [EntitlementData]
Maybe [Metadata]
Maybe Text
httpStatus :: Int
signedToken :: Maybe Text
nodeId :: Maybe Text
licenseConsumptionToken :: Maybe Text
licenseArn :: Maybe Text
issuedAt :: Maybe Text
expiration :: Maybe Text
entitlementsAllowed :: Maybe [EntitlementData]
checkoutMetadata :: Maybe [Metadata]
$sel:httpStatus:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Int
$sel:signedToken:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
$sel:nodeId:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
$sel:licenseConsumptionToken:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
$sel:licenseArn:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
$sel:issuedAt:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
$sel:expiration:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe Text
$sel:entitlementsAllowed:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe [EntitlementData]
$sel:checkoutMetadata:CheckoutBorrowLicenseResponse' :: CheckoutBorrowLicenseResponse -> Maybe [Metadata]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Metadata]
checkoutMetadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [EntitlementData]
entitlementsAllowed
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
expiration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
issuedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
licenseArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
licenseConsumptionToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nodeId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
signedToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus