{-# 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.CreateToken
-- 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 long-lived token.
--
-- A refresh token is a JWT token used to get an access token. With an
-- access token, you can call AssumeRoleWithWebIdentity to get role
-- credentials that you can use to call License Manager to manage the
-- specified license.
module Amazonka.LicenseManager.CreateToken
  ( -- * Creating a Request
    CreateToken (..),
    newCreateToken,

    -- * Request Lenses
    createToken_expirationInDays,
    createToken_roleArns,
    createToken_tokenProperties,
    createToken_licenseArn,
    createToken_clientToken,

    -- * Destructuring the Response
    CreateTokenResponse (..),
    newCreateTokenResponse,

    -- * Response Lenses
    createTokenResponse_token,
    createTokenResponse_tokenId,
    createTokenResponse_tokenType,
    createTokenResponse_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:/ 'newCreateToken' smart constructor.
data CreateToken = CreateToken'
  { -- | Token expiration, in days, counted from token creation. The default is
    -- 365 days.
    CreateToken -> Maybe Int
expirationInDays :: Prelude.Maybe Prelude.Int,
    -- | Amazon Resource Name (ARN) of the IAM roles to embed in the token.
    -- License Manager does not check whether the roles are in use.
    CreateToken -> Maybe [Text]
roleArns :: Prelude.Maybe [Prelude.Text],
    -- | Data specified by the caller to be included in the JWT token. The data
    -- is mapped to the amr claim of the JWT token.
    CreateToken -> Maybe [Text]
tokenProperties :: Prelude.Maybe [Prelude.Text],
    -- | Amazon Resource Name (ARN) of the license. The ARN is mapped to the aud
    -- claim of the JWT token.
    CreateToken -> Text
licenseArn :: Prelude.Text,
    -- | Idempotency token, valid for 10 minutes.
    CreateToken -> Text
clientToken :: Prelude.Text
  }
  deriving (CreateToken -> CreateToken -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateToken -> CreateToken -> Bool
$c/= :: CreateToken -> CreateToken -> Bool
== :: CreateToken -> CreateToken -> Bool
$c== :: CreateToken -> CreateToken -> Bool
Prelude.Eq, ReadPrec [CreateToken]
ReadPrec CreateToken
Int -> ReadS CreateToken
ReadS [CreateToken]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateToken]
$creadListPrec :: ReadPrec [CreateToken]
readPrec :: ReadPrec CreateToken
$creadPrec :: ReadPrec CreateToken
readList :: ReadS [CreateToken]
$creadList :: ReadS [CreateToken]
readsPrec :: Int -> ReadS CreateToken
$creadsPrec :: Int -> ReadS CreateToken
Prelude.Read, Int -> CreateToken -> ShowS
[CreateToken] -> ShowS
CreateToken -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateToken] -> ShowS
$cshowList :: [CreateToken] -> ShowS
show :: CreateToken -> String
$cshow :: CreateToken -> String
showsPrec :: Int -> CreateToken -> ShowS
$cshowsPrec :: Int -> CreateToken -> ShowS
Prelude.Show, forall x. Rep CreateToken x -> CreateToken
forall x. CreateToken -> Rep CreateToken x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateToken x -> CreateToken
$cfrom :: forall x. CreateToken -> Rep CreateToken x
Prelude.Generic)

-- |
-- Create a value of 'CreateToken' 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:
--
-- 'expirationInDays', 'createToken_expirationInDays' - Token expiration, in days, counted from token creation. The default is
-- 365 days.
--
-- 'roleArns', 'createToken_roleArns' - Amazon Resource Name (ARN) of the IAM roles to embed in the token.
-- License Manager does not check whether the roles are in use.
--
-- 'tokenProperties', 'createToken_tokenProperties' - Data specified by the caller to be included in the JWT token. The data
-- is mapped to the amr claim of the JWT token.
--
-- 'licenseArn', 'createToken_licenseArn' - Amazon Resource Name (ARN) of the license. The ARN is mapped to the aud
-- claim of the JWT token.
--
-- 'clientToken', 'createToken_clientToken' - Idempotency token, valid for 10 minutes.
newCreateToken ::
  -- | 'licenseArn'
  Prelude.Text ->
  -- | 'clientToken'
  Prelude.Text ->
  CreateToken
newCreateToken :: Text -> Text -> CreateToken
newCreateToken Text
pLicenseArn_ Text
pClientToken_ =
  CreateToken'
    { $sel:expirationInDays:CreateToken' :: Maybe Int
expirationInDays = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArns:CreateToken' :: Maybe [Text]
roleArns = forall a. Maybe a
Prelude.Nothing,
      $sel:tokenProperties:CreateToken' :: Maybe [Text]
tokenProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:licenseArn:CreateToken' :: Text
licenseArn = Text
pLicenseArn_,
      $sel:clientToken:CreateToken' :: Text
clientToken = Text
pClientToken_
    }

-- | Token expiration, in days, counted from token creation. The default is
-- 365 days.
createToken_expirationInDays :: Lens.Lens' CreateToken (Prelude.Maybe Prelude.Int)
createToken_expirationInDays :: Lens' CreateToken (Maybe Int)
createToken_expirationInDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateToken' {Maybe Int
expirationInDays :: Maybe Int
$sel:expirationInDays:CreateToken' :: CreateToken -> Maybe Int
expirationInDays} -> Maybe Int
expirationInDays) (\s :: CreateToken
s@CreateToken' {} Maybe Int
a -> CreateToken
s {$sel:expirationInDays:CreateToken' :: Maybe Int
expirationInDays = Maybe Int
a} :: CreateToken)

-- | Amazon Resource Name (ARN) of the IAM roles to embed in the token.
-- License Manager does not check whether the roles are in use.
createToken_roleArns :: Lens.Lens' CreateToken (Prelude.Maybe [Prelude.Text])
createToken_roleArns :: Lens' CreateToken (Maybe [Text])
createToken_roleArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateToken' {Maybe [Text]
roleArns :: Maybe [Text]
$sel:roleArns:CreateToken' :: CreateToken -> Maybe [Text]
roleArns} -> Maybe [Text]
roleArns) (\s :: CreateToken
s@CreateToken' {} Maybe [Text]
a -> CreateToken
s {$sel:roleArns:CreateToken' :: Maybe [Text]
roleArns = Maybe [Text]
a} :: CreateToken) 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

-- | Data specified by the caller to be included in the JWT token. The data
-- is mapped to the amr claim of the JWT token.
createToken_tokenProperties :: Lens.Lens' CreateToken (Prelude.Maybe [Prelude.Text])
createToken_tokenProperties :: Lens' CreateToken (Maybe [Text])
createToken_tokenProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateToken' {Maybe [Text]
tokenProperties :: Maybe [Text]
$sel:tokenProperties:CreateToken' :: CreateToken -> Maybe [Text]
tokenProperties} -> Maybe [Text]
tokenProperties) (\s :: CreateToken
s@CreateToken' {} Maybe [Text]
a -> CreateToken
s {$sel:tokenProperties:CreateToken' :: Maybe [Text]
tokenProperties = Maybe [Text]
a} :: CreateToken) 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

-- | Amazon Resource Name (ARN) of the license. The ARN is mapped to the aud
-- claim of the JWT token.
createToken_licenseArn :: Lens.Lens' CreateToken Prelude.Text
createToken_licenseArn :: Lens' CreateToken Text
createToken_licenseArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateToken' {Text
licenseArn :: Text
$sel:licenseArn:CreateToken' :: CreateToken -> Text
licenseArn} -> Text
licenseArn) (\s :: CreateToken
s@CreateToken' {} Text
a -> CreateToken
s {$sel:licenseArn:CreateToken' :: Text
licenseArn = Text
a} :: CreateToken)

-- | Idempotency token, valid for 10 minutes.
createToken_clientToken :: Lens.Lens' CreateToken Prelude.Text
createToken_clientToken :: Lens' CreateToken Text
createToken_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateToken' {Text
clientToken :: Text
$sel:clientToken:CreateToken' :: CreateToken -> Text
clientToken} -> Text
clientToken) (\s :: CreateToken
s@CreateToken' {} Text
a -> CreateToken
s {$sel:clientToken:CreateToken' :: Text
clientToken = Text
a} :: CreateToken)

instance Core.AWSRequest CreateToken where
  type AWSResponse CreateToken = CreateTokenResponse
  request :: (Service -> Service) -> CreateToken -> Request CreateToken
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 CreateToken
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateToken)))
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 TokenType -> Int -> CreateTokenResponse
CreateTokenResponse'
            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
"Token")
            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
"TokenId")
            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
"TokenType")
            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 CreateToken where
  hashWithSalt :: Int -> CreateToken -> Int
hashWithSalt Int
_salt CreateToken' {Maybe Int
Maybe [Text]
Text
clientToken :: Text
licenseArn :: Text
tokenProperties :: Maybe [Text]
roleArns :: Maybe [Text]
expirationInDays :: Maybe Int
$sel:clientToken:CreateToken' :: CreateToken -> Text
$sel:licenseArn:CreateToken' :: CreateToken -> Text
$sel:tokenProperties:CreateToken' :: CreateToken -> Maybe [Text]
$sel:roleArns:CreateToken' :: CreateToken -> Maybe [Text]
$sel:expirationInDays:CreateToken' :: CreateToken -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
expirationInDays
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
roleArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
tokenProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
licenseArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken

instance Prelude.NFData CreateToken where
  rnf :: CreateToken -> ()
rnf CreateToken' {Maybe Int
Maybe [Text]
Text
clientToken :: Text
licenseArn :: Text
tokenProperties :: Maybe [Text]
roleArns :: Maybe [Text]
expirationInDays :: Maybe Int
$sel:clientToken:CreateToken' :: CreateToken -> Text
$sel:licenseArn:CreateToken' :: CreateToken -> Text
$sel:tokenProperties:CreateToken' :: CreateToken -> Maybe [Text]
$sel:roleArns:CreateToken' :: CreateToken -> Maybe [Text]
$sel:expirationInDays:CreateToken' :: CreateToken -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
expirationInDays
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
roleArns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
tokenProperties
      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 Text
clientToken

instance Data.ToHeaders CreateToken where
  toHeaders :: CreateToken -> 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.CreateToken" ::
                          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 CreateToken where
  toJSON :: CreateToken -> Value
toJSON CreateToken' {Maybe Int
Maybe [Text]
Text
clientToken :: Text
licenseArn :: Text
tokenProperties :: Maybe [Text]
roleArns :: Maybe [Text]
expirationInDays :: Maybe Int
$sel:clientToken:CreateToken' :: CreateToken -> Text
$sel:licenseArn:CreateToken' :: CreateToken -> Text
$sel:tokenProperties:CreateToken' :: CreateToken -> Maybe [Text]
$sel:roleArns:CreateToken' :: CreateToken -> Maybe [Text]
$sel:expirationInDays:CreateToken' :: CreateToken -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ExpirationInDays" 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 Int
expirationInDays,
            (Key
"RoleArns" 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]
roleArns,
            (Key
"TokenProperties" 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]
tokenProperties,
            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
"ClientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
clientToken)
          ]
      )

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

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

-- | /See:/ 'newCreateTokenResponse' smart constructor.
data CreateTokenResponse = CreateTokenResponse'
  { -- | Refresh token, encoded as a JWT token.
    CreateTokenResponse -> Maybe Text
token :: Prelude.Maybe Prelude.Text,
    -- | Token ID.
    CreateTokenResponse -> Maybe Text
tokenId :: Prelude.Maybe Prelude.Text,
    -- | Token type.
    CreateTokenResponse -> Maybe TokenType
tokenType :: Prelude.Maybe TokenType,
    -- | The response's http status code.
    CreateTokenResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateTokenResponse -> CreateTokenResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTokenResponse -> CreateTokenResponse -> Bool
$c/= :: CreateTokenResponse -> CreateTokenResponse -> Bool
== :: CreateTokenResponse -> CreateTokenResponse -> Bool
$c== :: CreateTokenResponse -> CreateTokenResponse -> Bool
Prelude.Eq, ReadPrec [CreateTokenResponse]
ReadPrec CreateTokenResponse
Int -> ReadS CreateTokenResponse
ReadS [CreateTokenResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTokenResponse]
$creadListPrec :: ReadPrec [CreateTokenResponse]
readPrec :: ReadPrec CreateTokenResponse
$creadPrec :: ReadPrec CreateTokenResponse
readList :: ReadS [CreateTokenResponse]
$creadList :: ReadS [CreateTokenResponse]
readsPrec :: Int -> ReadS CreateTokenResponse
$creadsPrec :: Int -> ReadS CreateTokenResponse
Prelude.Read, Int -> CreateTokenResponse -> ShowS
[CreateTokenResponse] -> ShowS
CreateTokenResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTokenResponse] -> ShowS
$cshowList :: [CreateTokenResponse] -> ShowS
show :: CreateTokenResponse -> String
$cshow :: CreateTokenResponse -> String
showsPrec :: Int -> CreateTokenResponse -> ShowS
$cshowsPrec :: Int -> CreateTokenResponse -> ShowS
Prelude.Show, forall x. Rep CreateTokenResponse x -> CreateTokenResponse
forall x. CreateTokenResponse -> Rep CreateTokenResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateTokenResponse x -> CreateTokenResponse
$cfrom :: forall x. CreateTokenResponse -> Rep CreateTokenResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateTokenResponse' 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:
--
-- 'token', 'createTokenResponse_token' - Refresh token, encoded as a JWT token.
--
-- 'tokenId', 'createTokenResponse_tokenId' - Token ID.
--
-- 'tokenType', 'createTokenResponse_tokenType' - Token type.
--
-- 'httpStatus', 'createTokenResponse_httpStatus' - The response's http status code.
newCreateTokenResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateTokenResponse
newCreateTokenResponse :: Int -> CreateTokenResponse
newCreateTokenResponse Int
pHttpStatus_ =
  CreateTokenResponse'
    { $sel:token:CreateTokenResponse' :: Maybe Text
token = forall a. Maybe a
Prelude.Nothing,
      $sel:tokenId:CreateTokenResponse' :: Maybe Text
tokenId = forall a. Maybe a
Prelude.Nothing,
      $sel:tokenType:CreateTokenResponse' :: Maybe TokenType
tokenType = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateTokenResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Refresh token, encoded as a JWT token.
createTokenResponse_token :: Lens.Lens' CreateTokenResponse (Prelude.Maybe Prelude.Text)
createTokenResponse_token :: Lens' CreateTokenResponse (Maybe Text)
createTokenResponse_token = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTokenResponse' {Maybe Text
token :: Maybe Text
$sel:token:CreateTokenResponse' :: CreateTokenResponse -> Maybe Text
token} -> Maybe Text
token) (\s :: CreateTokenResponse
s@CreateTokenResponse' {} Maybe Text
a -> CreateTokenResponse
s {$sel:token:CreateTokenResponse' :: Maybe Text
token = Maybe Text
a} :: CreateTokenResponse)

-- | Token ID.
createTokenResponse_tokenId :: Lens.Lens' CreateTokenResponse (Prelude.Maybe Prelude.Text)
createTokenResponse_tokenId :: Lens' CreateTokenResponse (Maybe Text)
createTokenResponse_tokenId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTokenResponse' {Maybe Text
tokenId :: Maybe Text
$sel:tokenId:CreateTokenResponse' :: CreateTokenResponse -> Maybe Text
tokenId} -> Maybe Text
tokenId) (\s :: CreateTokenResponse
s@CreateTokenResponse' {} Maybe Text
a -> CreateTokenResponse
s {$sel:tokenId:CreateTokenResponse' :: Maybe Text
tokenId = Maybe Text
a} :: CreateTokenResponse)

-- | Token type.
createTokenResponse_tokenType :: Lens.Lens' CreateTokenResponse (Prelude.Maybe TokenType)
createTokenResponse_tokenType :: Lens' CreateTokenResponse (Maybe TokenType)
createTokenResponse_tokenType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTokenResponse' {Maybe TokenType
tokenType :: Maybe TokenType
$sel:tokenType:CreateTokenResponse' :: CreateTokenResponse -> Maybe TokenType
tokenType} -> Maybe TokenType
tokenType) (\s :: CreateTokenResponse
s@CreateTokenResponse' {} Maybe TokenType
a -> CreateTokenResponse
s {$sel:tokenType:CreateTokenResponse' :: Maybe TokenType
tokenType = Maybe TokenType
a} :: CreateTokenResponse)

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

instance Prelude.NFData CreateTokenResponse where
  rnf :: CreateTokenResponse -> ()
rnf CreateTokenResponse' {Int
Maybe Text
Maybe TokenType
httpStatus :: Int
tokenType :: Maybe TokenType
tokenId :: Maybe Text
token :: Maybe Text
$sel:httpStatus:CreateTokenResponse' :: CreateTokenResponse -> Int
$sel:tokenType:CreateTokenResponse' :: CreateTokenResponse -> Maybe TokenType
$sel:tokenId:CreateTokenResponse' :: CreateTokenResponse -> Maybe Text
$sel:token:CreateTokenResponse' :: CreateTokenResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
token
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
tokenId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TokenType
tokenType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus