{-# 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.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Registers (or retrieves) a Cognito @IdentityId@ and an OpenID Connect
-- token for a user authenticated by your backend authentication process.
-- Supplying multiple logins will create an implicit linked account. You
-- can only specify one developer provider as part of the @Logins@ map,
-- which is linked to the identity pool. The developer provider is the
-- \"domain\" by which Cognito will refer to your users.
--
-- You can use @GetOpenIdTokenForDeveloperIdentity@ to create a new
-- identity and to link new logins (that is, user credentials issued by a
-- public provider or developer provider) to an existing identity. When you
-- want to create a new identity, the @IdentityId@ should be null. When you
-- want to associate a new login with an existing
-- authenticated\/unauthenticated identity, you can do so by providing the
-- existing @IdentityId@. This API will create the identity in the
-- specified @IdentityPoolId@.
--
-- You must use AWS Developer credentials to call this API.
module Amazonka.CognitoIdentity.GetOpenIdTokenForDeveloperIdentity
  ( -- * Creating a Request
    GetOpenIdTokenForDeveloperIdentity (..),
    newGetOpenIdTokenForDeveloperIdentity,

    -- * Request Lenses
    getOpenIdTokenForDeveloperIdentity_identityId,
    getOpenIdTokenForDeveloperIdentity_principalTags,
    getOpenIdTokenForDeveloperIdentity_tokenDuration,
    getOpenIdTokenForDeveloperIdentity_identityPoolId,
    getOpenIdTokenForDeveloperIdentity_logins,

    -- * Destructuring the Response
    GetOpenIdTokenForDeveloperIdentityResponse (..),
    newGetOpenIdTokenForDeveloperIdentityResponse,

    -- * Response Lenses
    getOpenIdTokenForDeveloperIdentityResponse_identityId,
    getOpenIdTokenForDeveloperIdentityResponse_token,
    getOpenIdTokenForDeveloperIdentityResponse_httpStatus,
  )
where

import Amazonka.CognitoIdentity.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

-- | Input to the @GetOpenIdTokenForDeveloperIdentity@ action.
--
-- /See:/ 'newGetOpenIdTokenForDeveloperIdentity' smart constructor.
data GetOpenIdTokenForDeveloperIdentity = GetOpenIdTokenForDeveloperIdentity'
  { -- | A unique identifier in the format REGION:GUID.
    GetOpenIdTokenForDeveloperIdentity -> Maybe Text
identityId :: Prelude.Maybe Prelude.Text,
    -- | Use this operation to configure attribute mappings for custom providers.
    GetOpenIdTokenForDeveloperIdentity -> Maybe (HashMap Text Text)
principalTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The expiration time of the token, in seconds. You can specify a custom
    -- expiration time for the token so that you can cache it. If you don\'t
    -- provide an expiration time, the token is valid for 15 minutes. You can
    -- exchange the token with Amazon STS for temporary AWS credentials, which
    -- are valid for a maximum of one hour. The maximum token duration you can
    -- set is 24 hours. You should take care in setting the expiration time for
    -- a token, as there are significant security implications: an attacker
    -- could use a leaked token to access your AWS resources for the token\'s
    -- duration.
    --
    -- Please provide for a small grace period, usually no more than 5 minutes,
    -- to account for clock skew.
    GetOpenIdTokenForDeveloperIdentity -> Maybe Natural
tokenDuration :: Prelude.Maybe Prelude.Natural,
    -- | An identity pool ID in the format REGION:GUID.
    GetOpenIdTokenForDeveloperIdentity -> Text
identityPoolId :: Prelude.Text,
    -- | A set of optional name-value pairs that map provider names to provider
    -- tokens. Each name-value pair represents a user from a public provider or
    -- developer provider. If the user is from a developer provider, the
    -- name-value pair will follow the syntax
    -- @\"developer_provider_name\": \"developer_user_identifier\"@. The
    -- developer provider is the \"domain\" by which Cognito will refer to your
    -- users; you provided this domain while creating\/updating the identity
    -- pool. The developer user identifier is an identifier from your backend
    -- that uniquely identifies a user. When you create an identity pool, you
    -- can specify the supported logins.
    GetOpenIdTokenForDeveloperIdentity -> HashMap Text Text
logins :: Prelude.HashMap Prelude.Text Prelude.Text
  }
  deriving (GetOpenIdTokenForDeveloperIdentity
-> GetOpenIdTokenForDeveloperIdentity -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetOpenIdTokenForDeveloperIdentity
-> GetOpenIdTokenForDeveloperIdentity -> Bool
$c/= :: GetOpenIdTokenForDeveloperIdentity
-> GetOpenIdTokenForDeveloperIdentity -> Bool
== :: GetOpenIdTokenForDeveloperIdentity
-> GetOpenIdTokenForDeveloperIdentity -> Bool
$c== :: GetOpenIdTokenForDeveloperIdentity
-> GetOpenIdTokenForDeveloperIdentity -> Bool
Prelude.Eq, ReadPrec [GetOpenIdTokenForDeveloperIdentity]
ReadPrec GetOpenIdTokenForDeveloperIdentity
Int -> ReadS GetOpenIdTokenForDeveloperIdentity
ReadS [GetOpenIdTokenForDeveloperIdentity]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetOpenIdTokenForDeveloperIdentity]
$creadListPrec :: ReadPrec [GetOpenIdTokenForDeveloperIdentity]
readPrec :: ReadPrec GetOpenIdTokenForDeveloperIdentity
$creadPrec :: ReadPrec GetOpenIdTokenForDeveloperIdentity
readList :: ReadS [GetOpenIdTokenForDeveloperIdentity]
$creadList :: ReadS [GetOpenIdTokenForDeveloperIdentity]
readsPrec :: Int -> ReadS GetOpenIdTokenForDeveloperIdentity
$creadsPrec :: Int -> ReadS GetOpenIdTokenForDeveloperIdentity
Prelude.Read, Int -> GetOpenIdTokenForDeveloperIdentity -> ShowS
[GetOpenIdTokenForDeveloperIdentity] -> ShowS
GetOpenIdTokenForDeveloperIdentity -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetOpenIdTokenForDeveloperIdentity] -> ShowS
$cshowList :: [GetOpenIdTokenForDeveloperIdentity] -> ShowS
show :: GetOpenIdTokenForDeveloperIdentity -> String
$cshow :: GetOpenIdTokenForDeveloperIdentity -> String
showsPrec :: Int -> GetOpenIdTokenForDeveloperIdentity -> ShowS
$cshowsPrec :: Int -> GetOpenIdTokenForDeveloperIdentity -> ShowS
Prelude.Show, forall x.
Rep GetOpenIdTokenForDeveloperIdentity x
-> GetOpenIdTokenForDeveloperIdentity
forall x.
GetOpenIdTokenForDeveloperIdentity
-> Rep GetOpenIdTokenForDeveloperIdentity x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetOpenIdTokenForDeveloperIdentity x
-> GetOpenIdTokenForDeveloperIdentity
$cfrom :: forall x.
GetOpenIdTokenForDeveloperIdentity
-> Rep GetOpenIdTokenForDeveloperIdentity x
Prelude.Generic)

-- |
-- Create a value of 'GetOpenIdTokenForDeveloperIdentity' 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:
--
-- 'identityId', 'getOpenIdTokenForDeveloperIdentity_identityId' - A unique identifier in the format REGION:GUID.
--
-- 'principalTags', 'getOpenIdTokenForDeveloperIdentity_principalTags' - Use this operation to configure attribute mappings for custom providers.
--
-- 'tokenDuration', 'getOpenIdTokenForDeveloperIdentity_tokenDuration' - The expiration time of the token, in seconds. You can specify a custom
-- expiration time for the token so that you can cache it. If you don\'t
-- provide an expiration time, the token is valid for 15 minutes. You can
-- exchange the token with Amazon STS for temporary AWS credentials, which
-- are valid for a maximum of one hour. The maximum token duration you can
-- set is 24 hours. You should take care in setting the expiration time for
-- a token, as there are significant security implications: an attacker
-- could use a leaked token to access your AWS resources for the token\'s
-- duration.
--
-- Please provide for a small grace period, usually no more than 5 minutes,
-- to account for clock skew.
--
-- 'identityPoolId', 'getOpenIdTokenForDeveloperIdentity_identityPoolId' - An identity pool ID in the format REGION:GUID.
--
-- 'logins', 'getOpenIdTokenForDeveloperIdentity_logins' - A set of optional name-value pairs that map provider names to provider
-- tokens. Each name-value pair represents a user from a public provider or
-- developer provider. If the user is from a developer provider, the
-- name-value pair will follow the syntax
-- @\"developer_provider_name\": \"developer_user_identifier\"@. The
-- developer provider is the \"domain\" by which Cognito will refer to your
-- users; you provided this domain while creating\/updating the identity
-- pool. The developer user identifier is an identifier from your backend
-- that uniquely identifies a user. When you create an identity pool, you
-- can specify the supported logins.
newGetOpenIdTokenForDeveloperIdentity ::
  -- | 'identityPoolId'
  Prelude.Text ->
  GetOpenIdTokenForDeveloperIdentity
newGetOpenIdTokenForDeveloperIdentity :: Text -> GetOpenIdTokenForDeveloperIdentity
newGetOpenIdTokenForDeveloperIdentity
  Text
pIdentityPoolId_ =
    GetOpenIdTokenForDeveloperIdentity'
      { $sel:identityId:GetOpenIdTokenForDeveloperIdentity' :: Maybe Text
identityId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:principalTags:GetOpenIdTokenForDeveloperIdentity' :: Maybe (HashMap Text Text)
principalTags = forall a. Maybe a
Prelude.Nothing,
        $sel:tokenDuration:GetOpenIdTokenForDeveloperIdentity' :: Maybe Natural
tokenDuration = forall a. Maybe a
Prelude.Nothing,
        $sel:identityPoolId:GetOpenIdTokenForDeveloperIdentity' :: Text
identityPoolId = Text
pIdentityPoolId_,
        $sel:logins:GetOpenIdTokenForDeveloperIdentity' :: HashMap Text Text
logins = forall a. Monoid a => a
Prelude.mempty
      }

-- | A unique identifier in the format REGION:GUID.
getOpenIdTokenForDeveloperIdentity_identityId :: Lens.Lens' GetOpenIdTokenForDeveloperIdentity (Prelude.Maybe Prelude.Text)
getOpenIdTokenForDeveloperIdentity_identityId :: Lens' GetOpenIdTokenForDeveloperIdentity (Maybe Text)
getOpenIdTokenForDeveloperIdentity_identityId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOpenIdTokenForDeveloperIdentity' {Maybe Text
identityId :: Maybe Text
$sel:identityId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Text
identityId} -> Maybe Text
identityId) (\s :: GetOpenIdTokenForDeveloperIdentity
s@GetOpenIdTokenForDeveloperIdentity' {} Maybe Text
a -> GetOpenIdTokenForDeveloperIdentity
s {$sel:identityId:GetOpenIdTokenForDeveloperIdentity' :: Maybe Text
identityId = Maybe Text
a} :: GetOpenIdTokenForDeveloperIdentity)

-- | Use this operation to configure attribute mappings for custom providers.
getOpenIdTokenForDeveloperIdentity_principalTags :: Lens.Lens' GetOpenIdTokenForDeveloperIdentity (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
getOpenIdTokenForDeveloperIdentity_principalTags :: Lens'
  GetOpenIdTokenForDeveloperIdentity (Maybe (HashMap Text Text))
getOpenIdTokenForDeveloperIdentity_principalTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOpenIdTokenForDeveloperIdentity' {Maybe (HashMap Text Text)
principalTags :: Maybe (HashMap Text Text)
$sel:principalTags:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe (HashMap Text Text)
principalTags} -> Maybe (HashMap Text Text)
principalTags) (\s :: GetOpenIdTokenForDeveloperIdentity
s@GetOpenIdTokenForDeveloperIdentity' {} Maybe (HashMap Text Text)
a -> GetOpenIdTokenForDeveloperIdentity
s {$sel:principalTags:GetOpenIdTokenForDeveloperIdentity' :: Maybe (HashMap Text Text)
principalTags = Maybe (HashMap Text Text)
a} :: GetOpenIdTokenForDeveloperIdentity) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The expiration time of the token, in seconds. You can specify a custom
-- expiration time for the token so that you can cache it. If you don\'t
-- provide an expiration time, the token is valid for 15 minutes. You can
-- exchange the token with Amazon STS for temporary AWS credentials, which
-- are valid for a maximum of one hour. The maximum token duration you can
-- set is 24 hours. You should take care in setting the expiration time for
-- a token, as there are significant security implications: an attacker
-- could use a leaked token to access your AWS resources for the token\'s
-- duration.
--
-- Please provide for a small grace period, usually no more than 5 minutes,
-- to account for clock skew.
getOpenIdTokenForDeveloperIdentity_tokenDuration :: Lens.Lens' GetOpenIdTokenForDeveloperIdentity (Prelude.Maybe Prelude.Natural)
getOpenIdTokenForDeveloperIdentity_tokenDuration :: Lens' GetOpenIdTokenForDeveloperIdentity (Maybe Natural)
getOpenIdTokenForDeveloperIdentity_tokenDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOpenIdTokenForDeveloperIdentity' {Maybe Natural
tokenDuration :: Maybe Natural
$sel:tokenDuration:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Natural
tokenDuration} -> Maybe Natural
tokenDuration) (\s :: GetOpenIdTokenForDeveloperIdentity
s@GetOpenIdTokenForDeveloperIdentity' {} Maybe Natural
a -> GetOpenIdTokenForDeveloperIdentity
s {$sel:tokenDuration:GetOpenIdTokenForDeveloperIdentity' :: Maybe Natural
tokenDuration = Maybe Natural
a} :: GetOpenIdTokenForDeveloperIdentity)

-- | An identity pool ID in the format REGION:GUID.
getOpenIdTokenForDeveloperIdentity_identityPoolId :: Lens.Lens' GetOpenIdTokenForDeveloperIdentity Prelude.Text
getOpenIdTokenForDeveloperIdentity_identityPoolId :: Lens' GetOpenIdTokenForDeveloperIdentity Text
getOpenIdTokenForDeveloperIdentity_identityPoolId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOpenIdTokenForDeveloperIdentity' {Text
identityPoolId :: Text
$sel:identityPoolId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Text
identityPoolId} -> Text
identityPoolId) (\s :: GetOpenIdTokenForDeveloperIdentity
s@GetOpenIdTokenForDeveloperIdentity' {} Text
a -> GetOpenIdTokenForDeveloperIdentity
s {$sel:identityPoolId:GetOpenIdTokenForDeveloperIdentity' :: Text
identityPoolId = Text
a} :: GetOpenIdTokenForDeveloperIdentity)

-- | A set of optional name-value pairs that map provider names to provider
-- tokens. Each name-value pair represents a user from a public provider or
-- developer provider. If the user is from a developer provider, the
-- name-value pair will follow the syntax
-- @\"developer_provider_name\": \"developer_user_identifier\"@. The
-- developer provider is the \"domain\" by which Cognito will refer to your
-- users; you provided this domain while creating\/updating the identity
-- pool. The developer user identifier is an identifier from your backend
-- that uniquely identifies a user. When you create an identity pool, you
-- can specify the supported logins.
getOpenIdTokenForDeveloperIdentity_logins :: Lens.Lens' GetOpenIdTokenForDeveloperIdentity (Prelude.HashMap Prelude.Text Prelude.Text)
getOpenIdTokenForDeveloperIdentity_logins :: Lens' GetOpenIdTokenForDeveloperIdentity (HashMap Text Text)
getOpenIdTokenForDeveloperIdentity_logins = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOpenIdTokenForDeveloperIdentity' {HashMap Text Text
logins :: HashMap Text Text
$sel:logins:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> HashMap Text Text
logins} -> HashMap Text Text
logins) (\s :: GetOpenIdTokenForDeveloperIdentity
s@GetOpenIdTokenForDeveloperIdentity' {} HashMap Text Text
a -> GetOpenIdTokenForDeveloperIdentity
s {$sel:logins:GetOpenIdTokenForDeveloperIdentity' :: HashMap Text Text
logins = HashMap Text Text
a} :: GetOpenIdTokenForDeveloperIdentity) 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
    GetOpenIdTokenForDeveloperIdentity
  where
  type
    AWSResponse GetOpenIdTokenForDeveloperIdentity =
      GetOpenIdTokenForDeveloperIdentityResponse
  request :: (Service -> Service)
-> GetOpenIdTokenForDeveloperIdentity
-> Request GetOpenIdTokenForDeveloperIdentity
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 GetOpenIdTokenForDeveloperIdentity
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetOpenIdTokenForDeveloperIdentity)))
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 -> Int -> GetOpenIdTokenForDeveloperIdentityResponse
GetOpenIdTokenForDeveloperIdentityResponse'
            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
"IdentityId")
            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
"Token")
            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
    GetOpenIdTokenForDeveloperIdentity
  where
  hashWithSalt :: Int -> GetOpenIdTokenForDeveloperIdentity -> Int
hashWithSalt
    Int
_salt
    GetOpenIdTokenForDeveloperIdentity' {Maybe Natural
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
logins :: HashMap Text Text
identityPoolId :: Text
tokenDuration :: Maybe Natural
principalTags :: Maybe (HashMap Text Text)
identityId :: Maybe Text
$sel:logins:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> HashMap Text Text
$sel:identityPoolId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Text
$sel:tokenDuration:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Natural
$sel:principalTags:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe (HashMap Text Text)
$sel:identityId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
identityId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
principalTags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
tokenDuration
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
identityPoolId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` HashMap Text Text
logins

instance
  Prelude.NFData
    GetOpenIdTokenForDeveloperIdentity
  where
  rnf :: GetOpenIdTokenForDeveloperIdentity -> ()
rnf GetOpenIdTokenForDeveloperIdentity' {Maybe Natural
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
logins :: HashMap Text Text
identityPoolId :: Text
tokenDuration :: Maybe Natural
principalTags :: Maybe (HashMap Text Text)
identityId :: Maybe Text
$sel:logins:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> HashMap Text Text
$sel:identityPoolId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Text
$sel:tokenDuration:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Natural
$sel:principalTags:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe (HashMap Text Text)
$sel:identityId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
identityId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
principalTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
tokenDuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
identityPoolId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HashMap Text Text
logins

instance
  Data.ToHeaders
    GetOpenIdTokenForDeveloperIdentity
  where
  toHeaders :: GetOpenIdTokenForDeveloperIdentity -> 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
"AWSCognitoIdentityService.GetOpenIdTokenForDeveloperIdentity" ::
                          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
    GetOpenIdTokenForDeveloperIdentity
  where
  toJSON :: GetOpenIdTokenForDeveloperIdentity -> Value
toJSON GetOpenIdTokenForDeveloperIdentity' {Maybe Natural
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
logins :: HashMap Text Text
identityPoolId :: Text
tokenDuration :: Maybe Natural
principalTags :: Maybe (HashMap Text Text)
identityId :: Maybe Text
$sel:logins:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> HashMap Text Text
$sel:identityPoolId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Text
$sel:tokenDuration:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Natural
$sel:principalTags:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe (HashMap Text Text)
$sel:identityId:GetOpenIdTokenForDeveloperIdentity' :: GetOpenIdTokenForDeveloperIdentity -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"IdentityId" 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
identityId,
            (Key
"PrincipalTags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
principalTags,
            (Key
"TokenDuration" 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 Natural
tokenDuration,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"IdentityPoolId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
identityPoolId),
            forall a. a -> Maybe a
Prelude.Just (Key
"Logins" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= HashMap Text Text
logins)
          ]
      )

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

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

-- | Returned in response to a successful
-- @GetOpenIdTokenForDeveloperIdentity@ request.
--
-- /See:/ 'newGetOpenIdTokenForDeveloperIdentityResponse' smart constructor.
data GetOpenIdTokenForDeveloperIdentityResponse = GetOpenIdTokenForDeveloperIdentityResponse'
  { -- | A unique identifier in the format REGION:GUID.
    GetOpenIdTokenForDeveloperIdentityResponse -> Maybe Text
identityId :: Prelude.Maybe Prelude.Text,
    -- | An OpenID token.
    GetOpenIdTokenForDeveloperIdentityResponse -> Maybe Text
token :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetOpenIdTokenForDeveloperIdentityResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetOpenIdTokenForDeveloperIdentityResponse
-> GetOpenIdTokenForDeveloperIdentityResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetOpenIdTokenForDeveloperIdentityResponse
-> GetOpenIdTokenForDeveloperIdentityResponse -> Bool
$c/= :: GetOpenIdTokenForDeveloperIdentityResponse
-> GetOpenIdTokenForDeveloperIdentityResponse -> Bool
== :: GetOpenIdTokenForDeveloperIdentityResponse
-> GetOpenIdTokenForDeveloperIdentityResponse -> Bool
$c== :: GetOpenIdTokenForDeveloperIdentityResponse
-> GetOpenIdTokenForDeveloperIdentityResponse -> Bool
Prelude.Eq, ReadPrec [GetOpenIdTokenForDeveloperIdentityResponse]
ReadPrec GetOpenIdTokenForDeveloperIdentityResponse
Int -> ReadS GetOpenIdTokenForDeveloperIdentityResponse
ReadS [GetOpenIdTokenForDeveloperIdentityResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetOpenIdTokenForDeveloperIdentityResponse]
$creadListPrec :: ReadPrec [GetOpenIdTokenForDeveloperIdentityResponse]
readPrec :: ReadPrec GetOpenIdTokenForDeveloperIdentityResponse
$creadPrec :: ReadPrec GetOpenIdTokenForDeveloperIdentityResponse
readList :: ReadS [GetOpenIdTokenForDeveloperIdentityResponse]
$creadList :: ReadS [GetOpenIdTokenForDeveloperIdentityResponse]
readsPrec :: Int -> ReadS GetOpenIdTokenForDeveloperIdentityResponse
$creadsPrec :: Int -> ReadS GetOpenIdTokenForDeveloperIdentityResponse
Prelude.Read, Int -> GetOpenIdTokenForDeveloperIdentityResponse -> ShowS
[GetOpenIdTokenForDeveloperIdentityResponse] -> ShowS
GetOpenIdTokenForDeveloperIdentityResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetOpenIdTokenForDeveloperIdentityResponse] -> ShowS
$cshowList :: [GetOpenIdTokenForDeveloperIdentityResponse] -> ShowS
show :: GetOpenIdTokenForDeveloperIdentityResponse -> String
$cshow :: GetOpenIdTokenForDeveloperIdentityResponse -> String
showsPrec :: Int -> GetOpenIdTokenForDeveloperIdentityResponse -> ShowS
$cshowsPrec :: Int -> GetOpenIdTokenForDeveloperIdentityResponse -> ShowS
Prelude.Show, forall x.
Rep GetOpenIdTokenForDeveloperIdentityResponse x
-> GetOpenIdTokenForDeveloperIdentityResponse
forall x.
GetOpenIdTokenForDeveloperIdentityResponse
-> Rep GetOpenIdTokenForDeveloperIdentityResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetOpenIdTokenForDeveloperIdentityResponse x
-> GetOpenIdTokenForDeveloperIdentityResponse
$cfrom :: forall x.
GetOpenIdTokenForDeveloperIdentityResponse
-> Rep GetOpenIdTokenForDeveloperIdentityResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetOpenIdTokenForDeveloperIdentityResponse' 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:
--
-- 'identityId', 'getOpenIdTokenForDeveloperIdentityResponse_identityId' - A unique identifier in the format REGION:GUID.
--
-- 'token', 'getOpenIdTokenForDeveloperIdentityResponse_token' - An OpenID token.
--
-- 'httpStatus', 'getOpenIdTokenForDeveloperIdentityResponse_httpStatus' - The response's http status code.
newGetOpenIdTokenForDeveloperIdentityResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetOpenIdTokenForDeveloperIdentityResponse
newGetOpenIdTokenForDeveloperIdentityResponse :: Int -> GetOpenIdTokenForDeveloperIdentityResponse
newGetOpenIdTokenForDeveloperIdentityResponse
  Int
pHttpStatus_ =
    GetOpenIdTokenForDeveloperIdentityResponse'
      { $sel:identityId:GetOpenIdTokenForDeveloperIdentityResponse' :: Maybe Text
identityId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:token:GetOpenIdTokenForDeveloperIdentityResponse' :: Maybe Text
token = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetOpenIdTokenForDeveloperIdentityResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | A unique identifier in the format REGION:GUID.
getOpenIdTokenForDeveloperIdentityResponse_identityId :: Lens.Lens' GetOpenIdTokenForDeveloperIdentityResponse (Prelude.Maybe Prelude.Text)
getOpenIdTokenForDeveloperIdentityResponse_identityId :: Lens' GetOpenIdTokenForDeveloperIdentityResponse (Maybe Text)
getOpenIdTokenForDeveloperIdentityResponse_identityId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOpenIdTokenForDeveloperIdentityResponse' {Maybe Text
identityId :: Maybe Text
$sel:identityId:GetOpenIdTokenForDeveloperIdentityResponse' :: GetOpenIdTokenForDeveloperIdentityResponse -> Maybe Text
identityId} -> Maybe Text
identityId) (\s :: GetOpenIdTokenForDeveloperIdentityResponse
s@GetOpenIdTokenForDeveloperIdentityResponse' {} Maybe Text
a -> GetOpenIdTokenForDeveloperIdentityResponse
s {$sel:identityId:GetOpenIdTokenForDeveloperIdentityResponse' :: Maybe Text
identityId = Maybe Text
a} :: GetOpenIdTokenForDeveloperIdentityResponse)

-- | An OpenID token.
getOpenIdTokenForDeveloperIdentityResponse_token :: Lens.Lens' GetOpenIdTokenForDeveloperIdentityResponse (Prelude.Maybe Prelude.Text)
getOpenIdTokenForDeveloperIdentityResponse_token :: Lens' GetOpenIdTokenForDeveloperIdentityResponse (Maybe Text)
getOpenIdTokenForDeveloperIdentityResponse_token = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetOpenIdTokenForDeveloperIdentityResponse' {Maybe Text
token :: Maybe Text
$sel:token:GetOpenIdTokenForDeveloperIdentityResponse' :: GetOpenIdTokenForDeveloperIdentityResponse -> Maybe Text
token} -> Maybe Text
token) (\s :: GetOpenIdTokenForDeveloperIdentityResponse
s@GetOpenIdTokenForDeveloperIdentityResponse' {} Maybe Text
a -> GetOpenIdTokenForDeveloperIdentityResponse
s {$sel:token:GetOpenIdTokenForDeveloperIdentityResponse' :: Maybe Text
token = Maybe Text
a} :: GetOpenIdTokenForDeveloperIdentityResponse)

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

instance
  Prelude.NFData
    GetOpenIdTokenForDeveloperIdentityResponse
  where
  rnf :: GetOpenIdTokenForDeveloperIdentityResponse -> ()
rnf GetOpenIdTokenForDeveloperIdentityResponse' {Int
Maybe Text
httpStatus :: Int
token :: Maybe Text
identityId :: Maybe Text
$sel:httpStatus:GetOpenIdTokenForDeveloperIdentityResponse' :: GetOpenIdTokenForDeveloperIdentityResponse -> Int
$sel:token:GetOpenIdTokenForDeveloperIdentityResponse' :: GetOpenIdTokenForDeveloperIdentityResponse -> Maybe Text
$sel:identityId:GetOpenIdTokenForDeveloperIdentityResponse' :: GetOpenIdTokenForDeveloperIdentityResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
identityId
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Int
httpStatus