{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CognitoIdentityProvider.Types.UserPoolClientType
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CognitoIdentityProvider.Types.UserPoolClientType where

import Amazonka.CognitoIdentityProvider.Types.AnalyticsConfigurationType
import Amazonka.CognitoIdentityProvider.Types.ExplicitAuthFlowsType
import Amazonka.CognitoIdentityProvider.Types.OAuthFlowType
import Amazonka.CognitoIdentityProvider.Types.PreventUserExistenceErrorTypes
import Amazonka.CognitoIdentityProvider.Types.TokenValidityUnitsType
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Contains information about a user pool client.
--
-- /See:/ 'newUserPoolClientType' smart constructor.
data UserPoolClientType = UserPoolClientType'
  { -- | The time limit, in days, after which the refresh token is no longer
    -- valid and cannot be used.
    UserPoolClientType -> Maybe Natural
refreshTokenValidity :: Prelude.Maybe Prelude.Natural,
    -- | The ID of the client associated with the user pool.
    UserPoolClientType -> Maybe (Sensitive Text)
clientId :: Prelude.Maybe (Core.Sensitive Prelude.Text),
    -- | The authentication flows that are supported by the user pool clients.
    -- Flow names without the @ALLOW_@ prefix are deprecated in favor of new
    -- names with the @ALLOW_@ prefix. Note that values with @ALLOW_@ prefix
    -- cannot be used along with values without @ALLOW_@ prefix.
    --
    -- Valid values include:
    --
    -- -   @ALLOW_ADMIN_USER_PASSWORD_AUTH@: Enable admin based user password
    --     authentication flow @ADMIN_USER_PASSWORD_AUTH@. This setting
    --     replaces the @ADMIN_NO_SRP_AUTH@ setting. With this authentication
    --     flow, Cognito receives the password in the request instead of using
    --     the SRP (Secure Remote Password protocol) protocol to verify
    --     passwords.
    --
    -- -   @ALLOW_CUSTOM_AUTH@: Enable Lambda trigger based authentication.
    --
    -- -   @ALLOW_USER_PASSWORD_AUTH@: Enable user password-based
    --     authentication. In this flow, Cognito receives the password in the
    --     request instead of using the SRP protocol to verify passwords.
    --
    -- -   @ALLOW_USER_SRP_AUTH@: Enable SRP based authentication.
    --
    -- -   @ALLOW_REFRESH_TOKEN_AUTH@: Enable authflow to refresh tokens.
    UserPoolClientType -> Maybe [ExplicitAuthFlowsType]
explicitAuthFlows :: Prelude.Maybe [ExplicitAuthFlowsType],
    -- | The client secret from the user pool request of the client type.
    UserPoolClientType -> Maybe (Sensitive Text)
clientSecret :: Prelude.Maybe (Core.Sensitive Prelude.Text),
    -- | The date the user pool client was last modified.
    UserPoolClientType -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Core.POSIX,
    -- | A list of provider names for the identity providers that are supported
    -- on this client.
    UserPoolClientType -> Maybe [Text]
supportedIdentityProviders :: Prelude.Maybe [Prelude.Text],
    -- | A list of allowed logout URLs for the identity providers.
    UserPoolClientType -> Maybe [Text]
logoutURLs :: Prelude.Maybe [Prelude.Text],
    -- | Set to true if the client is allowed to follow the OAuth protocol when
    -- interacting with Cognito user pools.
    UserPoolClientType -> Maybe Bool
allowedOAuthFlowsUserPoolClient :: Prelude.Maybe Prelude.Bool,
    -- | The user pool ID for the user pool client.
    UserPoolClientType -> Maybe Text
userPoolId :: Prelude.Maybe Prelude.Text,
    -- | The time limit, specified by tokenValidityUnits, defaulting to hours,
    -- after which the refresh token is no longer valid and cannot be used.
    UserPoolClientType -> Maybe Natural
idTokenValidity :: Prelude.Maybe Prelude.Natural,
    -- | The time units used to specify the token validity times of their
    -- respective token.
    UserPoolClientType -> Maybe TokenValidityUnitsType
tokenValidityUnits :: Prelude.Maybe TokenValidityUnitsType,
    -- | The default redirect URI. Must be in the @CallbackURLs@ list.
    --
    -- A redirect URI must:
    --
    -- -   Be an absolute URI.
    --
    -- -   Be registered with the authorization server.
    --
    -- -   Not include a fragment component.
    --
    -- See
    -- <https://tools.ietf.org/html/rfc6749#section-3.1.2 OAuth 2.0 - Redirection Endpoint>.
    --
    -- Amazon Cognito requires HTTPS over HTTP except for http:\/\/localhost
    -- for testing purposes only.
    --
    -- App callback URLs such as myapp:\/\/example are also supported.
    UserPoolClientType -> Maybe Text
defaultRedirectURI :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether token revocation is enabled for the user pool client.
    -- When you create a new user pool client, token revocation is enabled by
    -- default. For more information about revoking tokens, see
    -- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html RevokeToken>.
    UserPoolClientType -> Maybe Bool
enableTokenRevocation :: Prelude.Maybe Prelude.Bool,
    -- | The writeable attributes.
    UserPoolClientType -> Maybe [Text]
writeAttributes :: Prelude.Maybe [Prelude.Text],
    -- | Use this setting to choose which errors and responses are returned by
    -- Cognito APIs during authentication, account confirmation, and password
    -- recovery when the user does not exist in the user pool. When set to
    -- @ENABLED@ and the user does not exist, authentication returns an error
    -- indicating either the username or password was incorrect, and account
    -- confirmation and password recovery return a response indicating a code
    -- was sent to a simulated destination. When set to @LEGACY@, those APIs
    -- will return a @UserNotFoundException@ exception if the user does not
    -- exist in the user pool.
    --
    -- Valid values include:
    --
    -- -   @ENABLED@ - This prevents user existence-related errors.
    --
    -- -   @LEGACY@ - This represents the old behavior of Cognito where user
    --     existence related errors are not prevented.
    --
    -- After February 15th 2020, the value of @PreventUserExistenceErrors@ will
    -- default to @ENABLED@ for newly created user pool clients if no value is
    -- provided.
    UserPoolClientType -> Maybe PreventUserExistenceErrorTypes
preventUserExistenceErrors :: Prelude.Maybe PreventUserExistenceErrorTypes,
    -- | The time limit, specified by tokenValidityUnits, defaulting to hours,
    -- after which the access token is no longer valid and cannot be used.
    UserPoolClientType -> Maybe Natural
accessTokenValidity :: Prelude.Maybe Prelude.Natural,
    -- | The date the user pool client was created.
    UserPoolClientType -> Maybe POSIX
creationDate :: Prelude.Maybe Core.POSIX,
    -- | The Read-only attributes.
    UserPoolClientType -> Maybe [Text]
readAttributes :: Prelude.Maybe [Prelude.Text],
    -- | The allowed OAuth scopes. Possible values provided by OAuth are:
    -- @phone@, @email@, @openid@, and @profile@. Possible values provided by
    -- Amazon Web Services are: @aws.cognito.signin.user.admin@. Custom scopes
    -- created in Resource Servers are also supported.
    UserPoolClientType -> Maybe [Text]
allowedOAuthScopes :: Prelude.Maybe [Prelude.Text],
    -- | The allowed OAuth flows.
    --
    -- Set to @code@ to initiate a code grant flow, which provides an
    -- authorization code as the response. This code can be exchanged for
    -- access tokens with the token endpoint.
    --
    -- Set to @implicit@ to specify that the client should get the access token
    -- (and, optionally, ID token, based on scopes) directly.
    --
    -- Set to @client_credentials@ to specify that the client should get the
    -- access token (and, optionally, ID token, based on scopes) from the token
    -- endpoint using a combination of client and client_secret.
    UserPoolClientType -> Maybe [OAuthFlowType]
allowedOAuthFlows :: Prelude.Maybe [OAuthFlowType],
    -- | The Amazon Pinpoint analytics configuration for the user pool client.
    --
    -- Cognito User Pools only supports sending events to Amazon Pinpoint
    -- projects in the US East (N. Virginia) us-east-1 Region, regardless of
    -- the region in which the user pool resides.
    UserPoolClientType -> Maybe AnalyticsConfigurationType
analyticsConfiguration :: Prelude.Maybe AnalyticsConfigurationType,
    -- | The client name from the user pool request of the client type.
    UserPoolClientType -> Maybe Text
clientName :: Prelude.Maybe Prelude.Text,
    -- | A list of allowed redirect (callback) URLs for the identity providers.
    --
    -- A redirect URI must:
    --
    -- -   Be an absolute URI.
    --
    -- -   Be registered with the authorization server.
    --
    -- -   Not include a fragment component.
    --
    -- See
    -- <https://tools.ietf.org/html/rfc6749#section-3.1.2 OAuth 2.0 - Redirection Endpoint>.
    --
    -- Amazon Cognito requires HTTPS over HTTP except for http:\/\/localhost
    -- for testing purposes only.
    --
    -- App callback URLs such as myapp:\/\/example are also supported.
    UserPoolClientType -> Maybe [Text]
callbackURLs :: Prelude.Maybe [Prelude.Text]
  }
  deriving (UserPoolClientType -> UserPoolClientType -> Bool
(UserPoolClientType -> UserPoolClientType -> Bool)
-> (UserPoolClientType -> UserPoolClientType -> Bool)
-> Eq UserPoolClientType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UserPoolClientType -> UserPoolClientType -> Bool
$c/= :: UserPoolClientType -> UserPoolClientType -> Bool
== :: UserPoolClientType -> UserPoolClientType -> Bool
$c== :: UserPoolClientType -> UserPoolClientType -> Bool
Prelude.Eq, Int -> UserPoolClientType -> ShowS
[UserPoolClientType] -> ShowS
UserPoolClientType -> String
(Int -> UserPoolClientType -> ShowS)
-> (UserPoolClientType -> String)
-> ([UserPoolClientType] -> ShowS)
-> Show UserPoolClientType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UserPoolClientType] -> ShowS
$cshowList :: [UserPoolClientType] -> ShowS
show :: UserPoolClientType -> String
$cshow :: UserPoolClientType -> String
showsPrec :: Int -> UserPoolClientType -> ShowS
$cshowsPrec :: Int -> UserPoolClientType -> ShowS
Prelude.Show, (forall x. UserPoolClientType -> Rep UserPoolClientType x)
-> (forall x. Rep UserPoolClientType x -> UserPoolClientType)
-> Generic UserPoolClientType
forall x. Rep UserPoolClientType x -> UserPoolClientType
forall x. UserPoolClientType -> Rep UserPoolClientType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UserPoolClientType x -> UserPoolClientType
$cfrom :: forall x. UserPoolClientType -> Rep UserPoolClientType x
Prelude.Generic)

-- |
-- Create a value of 'UserPoolClientType' 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:
--
-- 'refreshTokenValidity', 'userPoolClientType_refreshTokenValidity' - The time limit, in days, after which the refresh token is no longer
-- valid and cannot be used.
--
-- 'clientId', 'userPoolClientType_clientId' - The ID of the client associated with the user pool.
--
-- 'explicitAuthFlows', 'userPoolClientType_explicitAuthFlows' - The authentication flows that are supported by the user pool clients.
-- Flow names without the @ALLOW_@ prefix are deprecated in favor of new
-- names with the @ALLOW_@ prefix. Note that values with @ALLOW_@ prefix
-- cannot be used along with values without @ALLOW_@ prefix.
--
-- Valid values include:
--
-- -   @ALLOW_ADMIN_USER_PASSWORD_AUTH@: Enable admin based user password
--     authentication flow @ADMIN_USER_PASSWORD_AUTH@. This setting
--     replaces the @ADMIN_NO_SRP_AUTH@ setting. With this authentication
--     flow, Cognito receives the password in the request instead of using
--     the SRP (Secure Remote Password protocol) protocol to verify
--     passwords.
--
-- -   @ALLOW_CUSTOM_AUTH@: Enable Lambda trigger based authentication.
--
-- -   @ALLOW_USER_PASSWORD_AUTH@: Enable user password-based
--     authentication. In this flow, Cognito receives the password in the
--     request instead of using the SRP protocol to verify passwords.
--
-- -   @ALLOW_USER_SRP_AUTH@: Enable SRP based authentication.
--
-- -   @ALLOW_REFRESH_TOKEN_AUTH@: Enable authflow to refresh tokens.
--
-- 'clientSecret', 'userPoolClientType_clientSecret' - The client secret from the user pool request of the client type.
--
-- 'lastModifiedDate', 'userPoolClientType_lastModifiedDate' - The date the user pool client was last modified.
--
-- 'supportedIdentityProviders', 'userPoolClientType_supportedIdentityProviders' - A list of provider names for the identity providers that are supported
-- on this client.
--
-- 'logoutURLs', 'userPoolClientType_logoutURLs' - A list of allowed logout URLs for the identity providers.
--
-- 'allowedOAuthFlowsUserPoolClient', 'userPoolClientType_allowedOAuthFlowsUserPoolClient' - Set to true if the client is allowed to follow the OAuth protocol when
-- interacting with Cognito user pools.
--
-- 'userPoolId', 'userPoolClientType_userPoolId' - The user pool ID for the user pool client.
--
-- 'idTokenValidity', 'userPoolClientType_idTokenValidity' - The time limit, specified by tokenValidityUnits, defaulting to hours,
-- after which the refresh token is no longer valid and cannot be used.
--
-- 'tokenValidityUnits', 'userPoolClientType_tokenValidityUnits' - The time units used to specify the token validity times of their
-- respective token.
--
-- 'defaultRedirectURI', 'userPoolClientType_defaultRedirectURI' - The default redirect URI. Must be in the @CallbackURLs@ list.
--
-- A redirect URI must:
--
-- -   Be an absolute URI.
--
-- -   Be registered with the authorization server.
--
-- -   Not include a fragment component.
--
-- See
-- <https://tools.ietf.org/html/rfc6749#section-3.1.2 OAuth 2.0 - Redirection Endpoint>.
--
-- Amazon Cognito requires HTTPS over HTTP except for http:\/\/localhost
-- for testing purposes only.
--
-- App callback URLs such as myapp:\/\/example are also supported.
--
-- 'enableTokenRevocation', 'userPoolClientType_enableTokenRevocation' - Indicates whether token revocation is enabled for the user pool client.
-- When you create a new user pool client, token revocation is enabled by
-- default. For more information about revoking tokens, see
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html RevokeToken>.
--
-- 'writeAttributes', 'userPoolClientType_writeAttributes' - The writeable attributes.
--
-- 'preventUserExistenceErrors', 'userPoolClientType_preventUserExistenceErrors' - Use this setting to choose which errors and responses are returned by
-- Cognito APIs during authentication, account confirmation, and password
-- recovery when the user does not exist in the user pool. When set to
-- @ENABLED@ and the user does not exist, authentication returns an error
-- indicating either the username or password was incorrect, and account
-- confirmation and password recovery return a response indicating a code
-- was sent to a simulated destination. When set to @LEGACY@, those APIs
-- will return a @UserNotFoundException@ exception if the user does not
-- exist in the user pool.
--
-- Valid values include:
--
-- -   @ENABLED@ - This prevents user existence-related errors.
--
-- -   @LEGACY@ - This represents the old behavior of Cognito where user
--     existence related errors are not prevented.
--
-- After February 15th 2020, the value of @PreventUserExistenceErrors@ will
-- default to @ENABLED@ for newly created user pool clients if no value is
-- provided.
--
-- 'accessTokenValidity', 'userPoolClientType_accessTokenValidity' - The time limit, specified by tokenValidityUnits, defaulting to hours,
-- after which the access token is no longer valid and cannot be used.
--
-- 'creationDate', 'userPoolClientType_creationDate' - The date the user pool client was created.
--
-- 'readAttributes', 'userPoolClientType_readAttributes' - The Read-only attributes.
--
-- 'allowedOAuthScopes', 'userPoolClientType_allowedOAuthScopes' - The allowed OAuth scopes. Possible values provided by OAuth are:
-- @phone@, @email@, @openid@, and @profile@. Possible values provided by
-- Amazon Web Services are: @aws.cognito.signin.user.admin@. Custom scopes
-- created in Resource Servers are also supported.
--
-- 'allowedOAuthFlows', 'userPoolClientType_allowedOAuthFlows' - The allowed OAuth flows.
--
-- Set to @code@ to initiate a code grant flow, which provides an
-- authorization code as the response. This code can be exchanged for
-- access tokens with the token endpoint.
--
-- Set to @implicit@ to specify that the client should get the access token
-- (and, optionally, ID token, based on scopes) directly.
--
-- Set to @client_credentials@ to specify that the client should get the
-- access token (and, optionally, ID token, based on scopes) from the token
-- endpoint using a combination of client and client_secret.
--
-- 'analyticsConfiguration', 'userPoolClientType_analyticsConfiguration' - The Amazon Pinpoint analytics configuration for the user pool client.
--
-- Cognito User Pools only supports sending events to Amazon Pinpoint
-- projects in the US East (N. Virginia) us-east-1 Region, regardless of
-- the region in which the user pool resides.
--
-- 'clientName', 'userPoolClientType_clientName' - The client name from the user pool request of the client type.
--
-- 'callbackURLs', 'userPoolClientType_callbackURLs' - A list of allowed redirect (callback) URLs for the identity providers.
--
-- A redirect URI must:
--
-- -   Be an absolute URI.
--
-- -   Be registered with the authorization server.
--
-- -   Not include a fragment component.
--
-- See
-- <https://tools.ietf.org/html/rfc6749#section-3.1.2 OAuth 2.0 - Redirection Endpoint>.
--
-- Amazon Cognito requires HTTPS over HTTP except for http:\/\/localhost
-- for testing purposes only.
--
-- App callback URLs such as myapp:\/\/example are also supported.
newUserPoolClientType ::
  UserPoolClientType
newUserPoolClientType :: UserPoolClientType
newUserPoolClientType =
  UserPoolClientType' :: Maybe Natural
-> Maybe (Sensitive Text)
-> Maybe [ExplicitAuthFlowsType]
-> Maybe (Sensitive Text)
-> Maybe POSIX
-> Maybe [Text]
-> Maybe [Text]
-> Maybe Bool
-> Maybe Text
-> Maybe Natural
-> Maybe TokenValidityUnitsType
-> Maybe Text
-> Maybe Bool
-> Maybe [Text]
-> Maybe PreventUserExistenceErrorTypes
-> Maybe Natural
-> Maybe POSIX
-> Maybe [Text]
-> Maybe [Text]
-> Maybe [OAuthFlowType]
-> Maybe AnalyticsConfigurationType
-> Maybe Text
-> Maybe [Text]
-> UserPoolClientType
UserPoolClientType'
    { $sel:refreshTokenValidity:UserPoolClientType' :: Maybe Natural
refreshTokenValidity =
        Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:clientId:UserPoolClientType' :: Maybe (Sensitive Text)
clientId = Maybe (Sensitive Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:explicitAuthFlows:UserPoolClientType' :: Maybe [ExplicitAuthFlowsType]
explicitAuthFlows = Maybe [ExplicitAuthFlowsType]
forall a. Maybe a
Prelude.Nothing,
      $sel:clientSecret:UserPoolClientType' :: Maybe (Sensitive Text)
clientSecret = Maybe (Sensitive Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:UserPoolClientType' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:supportedIdentityProviders:UserPoolClientType' :: Maybe [Text]
supportedIdentityProviders = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:logoutURLs:UserPoolClientType' :: Maybe [Text]
logoutURLs = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:allowedOAuthFlowsUserPoolClient:UserPoolClientType' :: Maybe Bool
allowedOAuthFlowsUserPoolClient = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:userPoolId:UserPoolClientType' :: Maybe Text
userPoolId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:idTokenValidity:UserPoolClientType' :: Maybe Natural
idTokenValidity = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:tokenValidityUnits:UserPoolClientType' :: Maybe TokenValidityUnitsType
tokenValidityUnits = Maybe TokenValidityUnitsType
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRedirectURI:UserPoolClientType' :: Maybe Text
defaultRedirectURI = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:enableTokenRevocation:UserPoolClientType' :: Maybe Bool
enableTokenRevocation = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:writeAttributes:UserPoolClientType' :: Maybe [Text]
writeAttributes = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:preventUserExistenceErrors:UserPoolClientType' :: Maybe PreventUserExistenceErrorTypes
preventUserExistenceErrors = Maybe PreventUserExistenceErrorTypes
forall a. Maybe a
Prelude.Nothing,
      $sel:accessTokenValidity:UserPoolClientType' :: Maybe Natural
accessTokenValidity = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:UserPoolClientType' :: Maybe POSIX
creationDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:readAttributes:UserPoolClientType' :: Maybe [Text]
readAttributes = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:allowedOAuthScopes:UserPoolClientType' :: Maybe [Text]
allowedOAuthScopes = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:allowedOAuthFlows:UserPoolClientType' :: Maybe [OAuthFlowType]
allowedOAuthFlows = Maybe [OAuthFlowType]
forall a. Maybe a
Prelude.Nothing,
      $sel:analyticsConfiguration:UserPoolClientType' :: Maybe AnalyticsConfigurationType
analyticsConfiguration = Maybe AnalyticsConfigurationType
forall a. Maybe a
Prelude.Nothing,
      $sel:clientName:UserPoolClientType' :: Maybe Text
clientName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:callbackURLs:UserPoolClientType' :: Maybe [Text]
callbackURLs = Maybe [Text]
forall a. Maybe a
Prelude.Nothing
    }

-- | The time limit, in days, after which the refresh token is no longer
-- valid and cannot be used.
userPoolClientType_refreshTokenValidity :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Natural)
userPoolClientType_refreshTokenValidity :: (Maybe Natural -> f (Maybe Natural))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_refreshTokenValidity = (UserPoolClientType -> Maybe Natural)
-> (UserPoolClientType -> Maybe Natural -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe Natural)
     (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Natural
refreshTokenValidity :: Maybe Natural
$sel:refreshTokenValidity:UserPoolClientType' :: UserPoolClientType -> Maybe Natural
refreshTokenValidity} -> Maybe Natural
refreshTokenValidity) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Natural
a -> UserPoolClientType
s {$sel:refreshTokenValidity:UserPoolClientType' :: Maybe Natural
refreshTokenValidity = Maybe Natural
a} :: UserPoolClientType)

-- | The ID of the client associated with the user pool.
userPoolClientType_clientId :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Text)
userPoolClientType_clientId :: (Maybe Text -> f (Maybe Text))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_clientId = (UserPoolClientType -> Maybe (Sensitive Text))
-> (UserPoolClientType
    -> Maybe (Sensitive Text) -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe (Sensitive Text)
clientId :: Maybe (Sensitive Text)
$sel:clientId:UserPoolClientType' :: UserPoolClientType -> Maybe (Sensitive Text)
clientId} -> Maybe (Sensitive Text)
clientId) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe (Sensitive Text)
a -> UserPoolClientType
s {$sel:clientId:UserPoolClientType' :: Maybe (Sensitive Text)
clientId = Maybe (Sensitive Text)
a} :: UserPoolClientType) ((Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe Text -> f (Maybe Text))
    -> Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
-> (Maybe Text -> f (Maybe Text))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (Sensitive Text) (Sensitive Text) Text Text
-> Iso
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
     (Maybe Text)
     (Maybe Text)
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 AnIso (Sensitive Text) (Sensitive Text) Text Text
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | The authentication flows that are supported by the user pool clients.
-- Flow names without the @ALLOW_@ prefix are deprecated in favor of new
-- names with the @ALLOW_@ prefix. Note that values with @ALLOW_@ prefix
-- cannot be used along with values without @ALLOW_@ prefix.
--
-- Valid values include:
--
-- -   @ALLOW_ADMIN_USER_PASSWORD_AUTH@: Enable admin based user password
--     authentication flow @ADMIN_USER_PASSWORD_AUTH@. This setting
--     replaces the @ADMIN_NO_SRP_AUTH@ setting. With this authentication
--     flow, Cognito receives the password in the request instead of using
--     the SRP (Secure Remote Password protocol) protocol to verify
--     passwords.
--
-- -   @ALLOW_CUSTOM_AUTH@: Enable Lambda trigger based authentication.
--
-- -   @ALLOW_USER_PASSWORD_AUTH@: Enable user password-based
--     authentication. In this flow, Cognito receives the password in the
--     request instead of using the SRP protocol to verify passwords.
--
-- -   @ALLOW_USER_SRP_AUTH@: Enable SRP based authentication.
--
-- -   @ALLOW_REFRESH_TOKEN_AUTH@: Enable authflow to refresh tokens.
userPoolClientType_explicitAuthFlows :: Lens.Lens' UserPoolClientType (Prelude.Maybe [ExplicitAuthFlowsType])
userPoolClientType_explicitAuthFlows :: (Maybe [ExplicitAuthFlowsType]
 -> f (Maybe [ExplicitAuthFlowsType]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_explicitAuthFlows = (UserPoolClientType -> Maybe [ExplicitAuthFlowsType])
-> (UserPoolClientType
    -> Maybe [ExplicitAuthFlowsType] -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe [ExplicitAuthFlowsType])
     (Maybe [ExplicitAuthFlowsType])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [ExplicitAuthFlowsType]
explicitAuthFlows :: Maybe [ExplicitAuthFlowsType]
$sel:explicitAuthFlows:UserPoolClientType' :: UserPoolClientType -> Maybe [ExplicitAuthFlowsType]
explicitAuthFlows} -> Maybe [ExplicitAuthFlowsType]
explicitAuthFlows) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [ExplicitAuthFlowsType]
a -> UserPoolClientType
s {$sel:explicitAuthFlows:UserPoolClientType' :: Maybe [ExplicitAuthFlowsType]
explicitAuthFlows = Maybe [ExplicitAuthFlowsType]
a} :: UserPoolClientType) ((Maybe [ExplicitAuthFlowsType]
  -> f (Maybe [ExplicitAuthFlowsType]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [ExplicitAuthFlowsType]
     -> f (Maybe [ExplicitAuthFlowsType]))
    -> Maybe [ExplicitAuthFlowsType]
    -> f (Maybe [ExplicitAuthFlowsType]))
-> (Maybe [ExplicitAuthFlowsType]
    -> f (Maybe [ExplicitAuthFlowsType]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ExplicitAuthFlowsType]
  [ExplicitAuthFlowsType]
  [ExplicitAuthFlowsType]
  [ExplicitAuthFlowsType]
-> Iso
     (Maybe [ExplicitAuthFlowsType])
     (Maybe [ExplicitAuthFlowsType])
     (Maybe [ExplicitAuthFlowsType])
     (Maybe [ExplicitAuthFlowsType])
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 AnIso
  [ExplicitAuthFlowsType]
  [ExplicitAuthFlowsType]
  [ExplicitAuthFlowsType]
  [ExplicitAuthFlowsType]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The client secret from the user pool request of the client type.
userPoolClientType_clientSecret :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Text)
userPoolClientType_clientSecret :: (Maybe Text -> f (Maybe Text))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_clientSecret = (UserPoolClientType -> Maybe (Sensitive Text))
-> (UserPoolClientType
    -> Maybe (Sensitive Text) -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe (Sensitive Text)
clientSecret :: Maybe (Sensitive Text)
$sel:clientSecret:UserPoolClientType' :: UserPoolClientType -> Maybe (Sensitive Text)
clientSecret} -> Maybe (Sensitive Text)
clientSecret) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe (Sensitive Text)
a -> UserPoolClientType
s {$sel:clientSecret:UserPoolClientType' :: Maybe (Sensitive Text)
clientSecret = Maybe (Sensitive Text)
a} :: UserPoolClientType) ((Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe Text -> f (Maybe Text))
    -> Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
-> (Maybe Text -> f (Maybe Text))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (Sensitive Text) (Sensitive Text) Text Text
-> Iso
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
     (Maybe Text)
     (Maybe Text)
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 AnIso (Sensitive Text) (Sensitive Text) Text Text
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | The date the user pool client was last modified.
userPoolClientType_lastModifiedDate :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.UTCTime)
userPoolClientType_lastModifiedDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_lastModifiedDate = (UserPoolClientType -> Maybe POSIX)
-> (UserPoolClientType -> Maybe POSIX -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe POSIX
lastModifiedDate :: Maybe POSIX
$sel:lastModifiedDate:UserPoolClientType' :: UserPoolClientType -> Maybe POSIX
lastModifiedDate} -> Maybe POSIX
lastModifiedDate) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe POSIX
a -> UserPoolClientType
s {$sel:lastModifiedDate:UserPoolClientType' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
a} :: UserPoolClientType) ((Maybe POSIX -> f (Maybe POSIX))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | A list of provider names for the identity providers that are supported
-- on this client.
userPoolClientType_supportedIdentityProviders :: Lens.Lens' UserPoolClientType (Prelude.Maybe [Prelude.Text])
userPoolClientType_supportedIdentityProviders :: (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_supportedIdentityProviders = (UserPoolClientType -> Maybe [Text])
-> (UserPoolClientType -> Maybe [Text] -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [Text]
supportedIdentityProviders :: Maybe [Text]
$sel:supportedIdentityProviders:UserPoolClientType' :: UserPoolClientType -> Maybe [Text]
supportedIdentityProviders} -> Maybe [Text]
supportedIdentityProviders) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [Text]
a -> UserPoolClientType
s {$sel:supportedIdentityProviders:UserPoolClientType' :: Maybe [Text]
supportedIdentityProviders = Maybe [Text]
a} :: UserPoolClientType) ((Maybe [Text] -> f (Maybe [Text]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of allowed logout URLs for the identity providers.
userPoolClientType_logoutURLs :: Lens.Lens' UserPoolClientType (Prelude.Maybe [Prelude.Text])
userPoolClientType_logoutURLs :: (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_logoutURLs = (UserPoolClientType -> Maybe [Text])
-> (UserPoolClientType -> Maybe [Text] -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [Text]
logoutURLs :: Maybe [Text]
$sel:logoutURLs:UserPoolClientType' :: UserPoolClientType -> Maybe [Text]
logoutURLs} -> Maybe [Text]
logoutURLs) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [Text]
a -> UserPoolClientType
s {$sel:logoutURLs:UserPoolClientType' :: Maybe [Text]
logoutURLs = Maybe [Text]
a} :: UserPoolClientType) ((Maybe [Text] -> f (Maybe [Text]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Set to true if the client is allowed to follow the OAuth protocol when
-- interacting with Cognito user pools.
userPoolClientType_allowedOAuthFlowsUserPoolClient :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Bool)
userPoolClientType_allowedOAuthFlowsUserPoolClient :: (Maybe Bool -> f (Maybe Bool))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_allowedOAuthFlowsUserPoolClient = (UserPoolClientType -> Maybe Bool)
-> (UserPoolClientType -> Maybe Bool -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Bool
allowedOAuthFlowsUserPoolClient :: Maybe Bool
$sel:allowedOAuthFlowsUserPoolClient:UserPoolClientType' :: UserPoolClientType -> Maybe Bool
allowedOAuthFlowsUserPoolClient} -> Maybe Bool
allowedOAuthFlowsUserPoolClient) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Bool
a -> UserPoolClientType
s {$sel:allowedOAuthFlowsUserPoolClient:UserPoolClientType' :: Maybe Bool
allowedOAuthFlowsUserPoolClient = Maybe Bool
a} :: UserPoolClientType)

-- | The user pool ID for the user pool client.
userPoolClientType_userPoolId :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Text)
userPoolClientType_userPoolId :: (Maybe Text -> f (Maybe Text))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_userPoolId = (UserPoolClientType -> Maybe Text)
-> (UserPoolClientType -> Maybe Text -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Text
userPoolId :: Maybe Text
$sel:userPoolId:UserPoolClientType' :: UserPoolClientType -> Maybe Text
userPoolId} -> Maybe Text
userPoolId) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Text
a -> UserPoolClientType
s {$sel:userPoolId:UserPoolClientType' :: Maybe Text
userPoolId = Maybe Text
a} :: UserPoolClientType)

-- | The time limit, specified by tokenValidityUnits, defaulting to hours,
-- after which the refresh token is no longer valid and cannot be used.
userPoolClientType_idTokenValidity :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Natural)
userPoolClientType_idTokenValidity :: (Maybe Natural -> f (Maybe Natural))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_idTokenValidity = (UserPoolClientType -> Maybe Natural)
-> (UserPoolClientType -> Maybe Natural -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe Natural)
     (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Natural
idTokenValidity :: Maybe Natural
$sel:idTokenValidity:UserPoolClientType' :: UserPoolClientType -> Maybe Natural
idTokenValidity} -> Maybe Natural
idTokenValidity) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Natural
a -> UserPoolClientType
s {$sel:idTokenValidity:UserPoolClientType' :: Maybe Natural
idTokenValidity = Maybe Natural
a} :: UserPoolClientType)

-- | The time units used to specify the token validity times of their
-- respective token.
userPoolClientType_tokenValidityUnits :: Lens.Lens' UserPoolClientType (Prelude.Maybe TokenValidityUnitsType)
userPoolClientType_tokenValidityUnits :: (Maybe TokenValidityUnitsType -> f (Maybe TokenValidityUnitsType))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_tokenValidityUnits = (UserPoolClientType -> Maybe TokenValidityUnitsType)
-> (UserPoolClientType
    -> Maybe TokenValidityUnitsType -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe TokenValidityUnitsType)
     (Maybe TokenValidityUnitsType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe TokenValidityUnitsType
tokenValidityUnits :: Maybe TokenValidityUnitsType
$sel:tokenValidityUnits:UserPoolClientType' :: UserPoolClientType -> Maybe TokenValidityUnitsType
tokenValidityUnits} -> Maybe TokenValidityUnitsType
tokenValidityUnits) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe TokenValidityUnitsType
a -> UserPoolClientType
s {$sel:tokenValidityUnits:UserPoolClientType' :: Maybe TokenValidityUnitsType
tokenValidityUnits = Maybe TokenValidityUnitsType
a} :: UserPoolClientType)

-- | The default redirect URI. Must be in the @CallbackURLs@ list.
--
-- A redirect URI must:
--
-- -   Be an absolute URI.
--
-- -   Be registered with the authorization server.
--
-- -   Not include a fragment component.
--
-- See
-- <https://tools.ietf.org/html/rfc6749#section-3.1.2 OAuth 2.0 - Redirection Endpoint>.
--
-- Amazon Cognito requires HTTPS over HTTP except for http:\/\/localhost
-- for testing purposes only.
--
-- App callback URLs such as myapp:\/\/example are also supported.
userPoolClientType_defaultRedirectURI :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Text)
userPoolClientType_defaultRedirectURI :: (Maybe Text -> f (Maybe Text))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_defaultRedirectURI = (UserPoolClientType -> Maybe Text)
-> (UserPoolClientType -> Maybe Text -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Text
defaultRedirectURI :: Maybe Text
$sel:defaultRedirectURI:UserPoolClientType' :: UserPoolClientType -> Maybe Text
defaultRedirectURI} -> Maybe Text
defaultRedirectURI) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Text
a -> UserPoolClientType
s {$sel:defaultRedirectURI:UserPoolClientType' :: Maybe Text
defaultRedirectURI = Maybe Text
a} :: UserPoolClientType)

-- | Indicates whether token revocation is enabled for the user pool client.
-- When you create a new user pool client, token revocation is enabled by
-- default. For more information about revoking tokens, see
-- <https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html RevokeToken>.
userPoolClientType_enableTokenRevocation :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Bool)
userPoolClientType_enableTokenRevocation :: (Maybe Bool -> f (Maybe Bool))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_enableTokenRevocation = (UserPoolClientType -> Maybe Bool)
-> (UserPoolClientType -> Maybe Bool -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Bool
enableTokenRevocation :: Maybe Bool
$sel:enableTokenRevocation:UserPoolClientType' :: UserPoolClientType -> Maybe Bool
enableTokenRevocation} -> Maybe Bool
enableTokenRevocation) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Bool
a -> UserPoolClientType
s {$sel:enableTokenRevocation:UserPoolClientType' :: Maybe Bool
enableTokenRevocation = Maybe Bool
a} :: UserPoolClientType)

-- | The writeable attributes.
userPoolClientType_writeAttributes :: Lens.Lens' UserPoolClientType (Prelude.Maybe [Prelude.Text])
userPoolClientType_writeAttributes :: (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_writeAttributes = (UserPoolClientType -> Maybe [Text])
-> (UserPoolClientType -> Maybe [Text] -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [Text]
writeAttributes :: Maybe [Text]
$sel:writeAttributes:UserPoolClientType' :: UserPoolClientType -> Maybe [Text]
writeAttributes} -> Maybe [Text]
writeAttributes) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [Text]
a -> UserPoolClientType
s {$sel:writeAttributes:UserPoolClientType' :: Maybe [Text]
writeAttributes = Maybe [Text]
a} :: UserPoolClientType) ((Maybe [Text] -> f (Maybe [Text]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Use this setting to choose which errors and responses are returned by
-- Cognito APIs during authentication, account confirmation, and password
-- recovery when the user does not exist in the user pool. When set to
-- @ENABLED@ and the user does not exist, authentication returns an error
-- indicating either the username or password was incorrect, and account
-- confirmation and password recovery return a response indicating a code
-- was sent to a simulated destination. When set to @LEGACY@, those APIs
-- will return a @UserNotFoundException@ exception if the user does not
-- exist in the user pool.
--
-- Valid values include:
--
-- -   @ENABLED@ - This prevents user existence-related errors.
--
-- -   @LEGACY@ - This represents the old behavior of Cognito where user
--     existence related errors are not prevented.
--
-- After February 15th 2020, the value of @PreventUserExistenceErrors@ will
-- default to @ENABLED@ for newly created user pool clients if no value is
-- provided.
userPoolClientType_preventUserExistenceErrors :: Lens.Lens' UserPoolClientType (Prelude.Maybe PreventUserExistenceErrorTypes)
userPoolClientType_preventUserExistenceErrors :: (Maybe PreventUserExistenceErrorTypes
 -> f (Maybe PreventUserExistenceErrorTypes))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_preventUserExistenceErrors = (UserPoolClientType -> Maybe PreventUserExistenceErrorTypes)
-> (UserPoolClientType
    -> Maybe PreventUserExistenceErrorTypes -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe PreventUserExistenceErrorTypes)
     (Maybe PreventUserExistenceErrorTypes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe PreventUserExistenceErrorTypes
preventUserExistenceErrors :: Maybe PreventUserExistenceErrorTypes
$sel:preventUserExistenceErrors:UserPoolClientType' :: UserPoolClientType -> Maybe PreventUserExistenceErrorTypes
preventUserExistenceErrors} -> Maybe PreventUserExistenceErrorTypes
preventUserExistenceErrors) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe PreventUserExistenceErrorTypes
a -> UserPoolClientType
s {$sel:preventUserExistenceErrors:UserPoolClientType' :: Maybe PreventUserExistenceErrorTypes
preventUserExistenceErrors = Maybe PreventUserExistenceErrorTypes
a} :: UserPoolClientType)

-- | The time limit, specified by tokenValidityUnits, defaulting to hours,
-- after which the access token is no longer valid and cannot be used.
userPoolClientType_accessTokenValidity :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Natural)
userPoolClientType_accessTokenValidity :: (Maybe Natural -> f (Maybe Natural))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_accessTokenValidity = (UserPoolClientType -> Maybe Natural)
-> (UserPoolClientType -> Maybe Natural -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe Natural)
     (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Natural
accessTokenValidity :: Maybe Natural
$sel:accessTokenValidity:UserPoolClientType' :: UserPoolClientType -> Maybe Natural
accessTokenValidity} -> Maybe Natural
accessTokenValidity) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Natural
a -> UserPoolClientType
s {$sel:accessTokenValidity:UserPoolClientType' :: Maybe Natural
accessTokenValidity = Maybe Natural
a} :: UserPoolClientType)

-- | The date the user pool client was created.
userPoolClientType_creationDate :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.UTCTime)
userPoolClientType_creationDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_creationDate = (UserPoolClientType -> Maybe POSIX)
-> (UserPoolClientType -> Maybe POSIX -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:UserPoolClientType' :: UserPoolClientType -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe POSIX
a -> UserPoolClientType
s {$sel:creationDate:UserPoolClientType' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: UserPoolClientType) ((Maybe POSIX -> f (Maybe POSIX))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Read-only attributes.
userPoolClientType_readAttributes :: Lens.Lens' UserPoolClientType (Prelude.Maybe [Prelude.Text])
userPoolClientType_readAttributes :: (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_readAttributes = (UserPoolClientType -> Maybe [Text])
-> (UserPoolClientType -> Maybe [Text] -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [Text]
readAttributes :: Maybe [Text]
$sel:readAttributes:UserPoolClientType' :: UserPoolClientType -> Maybe [Text]
readAttributes} -> Maybe [Text]
readAttributes) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [Text]
a -> UserPoolClientType
s {$sel:readAttributes:UserPoolClientType' :: Maybe [Text]
readAttributes = Maybe [Text]
a} :: UserPoolClientType) ((Maybe [Text] -> f (Maybe [Text]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The allowed OAuth scopes. Possible values provided by OAuth are:
-- @phone@, @email@, @openid@, and @profile@. Possible values provided by
-- Amazon Web Services are: @aws.cognito.signin.user.admin@. Custom scopes
-- created in Resource Servers are also supported.
userPoolClientType_allowedOAuthScopes :: Lens.Lens' UserPoolClientType (Prelude.Maybe [Prelude.Text])
userPoolClientType_allowedOAuthScopes :: (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_allowedOAuthScopes = (UserPoolClientType -> Maybe [Text])
-> (UserPoolClientType -> Maybe [Text] -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [Text]
allowedOAuthScopes :: Maybe [Text]
$sel:allowedOAuthScopes:UserPoolClientType' :: UserPoolClientType -> Maybe [Text]
allowedOAuthScopes} -> Maybe [Text]
allowedOAuthScopes) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [Text]
a -> UserPoolClientType
s {$sel:allowedOAuthScopes:UserPoolClientType' :: Maybe [Text]
allowedOAuthScopes = Maybe [Text]
a} :: UserPoolClientType) ((Maybe [Text] -> f (Maybe [Text]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The allowed OAuth flows.
--
-- Set to @code@ to initiate a code grant flow, which provides an
-- authorization code as the response. This code can be exchanged for
-- access tokens with the token endpoint.
--
-- Set to @implicit@ to specify that the client should get the access token
-- (and, optionally, ID token, based on scopes) directly.
--
-- Set to @client_credentials@ to specify that the client should get the
-- access token (and, optionally, ID token, based on scopes) from the token
-- endpoint using a combination of client and client_secret.
userPoolClientType_allowedOAuthFlows :: Lens.Lens' UserPoolClientType (Prelude.Maybe [OAuthFlowType])
userPoolClientType_allowedOAuthFlows :: (Maybe [OAuthFlowType] -> f (Maybe [OAuthFlowType]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_allowedOAuthFlows = (UserPoolClientType -> Maybe [OAuthFlowType])
-> (UserPoolClientType
    -> Maybe [OAuthFlowType] -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe [OAuthFlowType])
     (Maybe [OAuthFlowType])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [OAuthFlowType]
allowedOAuthFlows :: Maybe [OAuthFlowType]
$sel:allowedOAuthFlows:UserPoolClientType' :: UserPoolClientType -> Maybe [OAuthFlowType]
allowedOAuthFlows} -> Maybe [OAuthFlowType]
allowedOAuthFlows) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [OAuthFlowType]
a -> UserPoolClientType
s {$sel:allowedOAuthFlows:UserPoolClientType' :: Maybe [OAuthFlowType]
allowedOAuthFlows = Maybe [OAuthFlowType]
a} :: UserPoolClientType) ((Maybe [OAuthFlowType] -> f (Maybe [OAuthFlowType]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [OAuthFlowType] -> f (Maybe [OAuthFlowType]))
    -> Maybe [OAuthFlowType] -> f (Maybe [OAuthFlowType]))
-> (Maybe [OAuthFlowType] -> f (Maybe [OAuthFlowType]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [OAuthFlowType] [OAuthFlowType] [OAuthFlowType] [OAuthFlowType]
-> Iso
     (Maybe [OAuthFlowType])
     (Maybe [OAuthFlowType])
     (Maybe [OAuthFlowType])
     (Maybe [OAuthFlowType])
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 AnIso
  [OAuthFlowType] [OAuthFlowType] [OAuthFlowType] [OAuthFlowType]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Pinpoint analytics configuration for the user pool client.
--
-- Cognito User Pools only supports sending events to Amazon Pinpoint
-- projects in the US East (N. Virginia) us-east-1 Region, regardless of
-- the region in which the user pool resides.
userPoolClientType_analyticsConfiguration :: Lens.Lens' UserPoolClientType (Prelude.Maybe AnalyticsConfigurationType)
userPoolClientType_analyticsConfiguration :: (Maybe AnalyticsConfigurationType
 -> f (Maybe AnalyticsConfigurationType))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_analyticsConfiguration = (UserPoolClientType -> Maybe AnalyticsConfigurationType)
-> (UserPoolClientType
    -> Maybe AnalyticsConfigurationType -> UserPoolClientType)
-> Lens
     UserPoolClientType
     UserPoolClientType
     (Maybe AnalyticsConfigurationType)
     (Maybe AnalyticsConfigurationType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe AnalyticsConfigurationType
analyticsConfiguration :: Maybe AnalyticsConfigurationType
$sel:analyticsConfiguration:UserPoolClientType' :: UserPoolClientType -> Maybe AnalyticsConfigurationType
analyticsConfiguration} -> Maybe AnalyticsConfigurationType
analyticsConfiguration) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe AnalyticsConfigurationType
a -> UserPoolClientType
s {$sel:analyticsConfiguration:UserPoolClientType' :: Maybe AnalyticsConfigurationType
analyticsConfiguration = Maybe AnalyticsConfigurationType
a} :: UserPoolClientType)

-- | The client name from the user pool request of the client type.
userPoolClientType_clientName :: Lens.Lens' UserPoolClientType (Prelude.Maybe Prelude.Text)
userPoolClientType_clientName :: (Maybe Text -> f (Maybe Text))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_clientName = (UserPoolClientType -> Maybe Text)
-> (UserPoolClientType -> Maybe Text -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe Text
clientName :: Maybe Text
$sel:clientName:UserPoolClientType' :: UserPoolClientType -> Maybe Text
clientName} -> Maybe Text
clientName) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe Text
a -> UserPoolClientType
s {$sel:clientName:UserPoolClientType' :: Maybe Text
clientName = Maybe Text
a} :: UserPoolClientType)

-- | A list of allowed redirect (callback) URLs for the identity providers.
--
-- A redirect URI must:
--
-- -   Be an absolute URI.
--
-- -   Be registered with the authorization server.
--
-- -   Not include a fragment component.
--
-- See
-- <https://tools.ietf.org/html/rfc6749#section-3.1.2 OAuth 2.0 - Redirection Endpoint>.
--
-- Amazon Cognito requires HTTPS over HTTP except for http:\/\/localhost
-- for testing purposes only.
--
-- App callback URLs such as myapp:\/\/example are also supported.
userPoolClientType_callbackURLs :: Lens.Lens' UserPoolClientType (Prelude.Maybe [Prelude.Text])
userPoolClientType_callbackURLs :: (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType -> f UserPoolClientType
userPoolClientType_callbackURLs = (UserPoolClientType -> Maybe [Text])
-> (UserPoolClientType -> Maybe [Text] -> UserPoolClientType)
-> Lens
     UserPoolClientType UserPoolClientType (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UserPoolClientType' {Maybe [Text]
callbackURLs :: Maybe [Text]
$sel:callbackURLs:UserPoolClientType' :: UserPoolClientType -> Maybe [Text]
callbackURLs} -> Maybe [Text]
callbackURLs) (\s :: UserPoolClientType
s@UserPoolClientType' {} Maybe [Text]
a -> UserPoolClientType
s {$sel:callbackURLs:UserPoolClientType' :: Maybe [Text]
callbackURLs = Maybe [Text]
a} :: UserPoolClientType) ((Maybe [Text] -> f (Maybe [Text]))
 -> UserPoolClientType -> f UserPoolClientType)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UserPoolClientType
-> f UserPoolClientType
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromJSON UserPoolClientType where
  parseJSON :: Value -> Parser UserPoolClientType
parseJSON =
    String
-> (Object -> Parser UserPoolClientType)
-> Value
-> Parser UserPoolClientType
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"UserPoolClientType"
      ( \Object
x ->
          Maybe Natural
-> Maybe (Sensitive Text)
-> Maybe [ExplicitAuthFlowsType]
-> Maybe (Sensitive Text)
-> Maybe POSIX
-> Maybe [Text]
-> Maybe [Text]
-> Maybe Bool
-> Maybe Text
-> Maybe Natural
-> Maybe TokenValidityUnitsType
-> Maybe Text
-> Maybe Bool
-> Maybe [Text]
-> Maybe PreventUserExistenceErrorTypes
-> Maybe Natural
-> Maybe POSIX
-> Maybe [Text]
-> Maybe [Text]
-> Maybe [OAuthFlowType]
-> Maybe AnalyticsConfigurationType
-> Maybe Text
-> Maybe [Text]
-> UserPoolClientType
UserPoolClientType'
            (Maybe Natural
 -> Maybe (Sensitive Text)
 -> Maybe [ExplicitAuthFlowsType]
 -> Maybe (Sensitive Text)
 -> Maybe POSIX
 -> Maybe [Text]
 -> Maybe [Text]
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Natural
 -> Maybe TokenValidityUnitsType
 -> Maybe Text
 -> Maybe Bool
 -> Maybe [Text]
 -> Maybe PreventUserExistenceErrorTypes
 -> Maybe Natural
 -> Maybe POSIX
 -> Maybe [Text]
 -> Maybe [Text]
 -> Maybe [OAuthFlowType]
 -> Maybe AnalyticsConfigurationType
 -> Maybe Text
 -> Maybe [Text]
 -> UserPoolClientType)
-> Parser (Maybe Natural)
-> Parser
     (Maybe (Sensitive Text)
      -> Maybe [ExplicitAuthFlowsType]
      -> Maybe (Sensitive Text)
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RefreshTokenValidity")
            Parser
  (Maybe (Sensitive Text)
   -> Maybe [ExplicitAuthFlowsType]
   -> Maybe (Sensitive Text)
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe (Sensitive Text))
-> Parser
     (Maybe [ExplicitAuthFlowsType]
      -> Maybe (Sensitive Text)
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Sensitive Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClientId")
            Parser
  (Maybe [ExplicitAuthFlowsType]
   -> Maybe (Sensitive Text)
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe [ExplicitAuthFlowsType])
-> Parser
     (Maybe (Sensitive Text)
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [ExplicitAuthFlowsType]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExplicitAuthFlows"
                            Parser (Maybe (Maybe [ExplicitAuthFlowsType]))
-> Maybe [ExplicitAuthFlowsType]
-> Parser (Maybe [ExplicitAuthFlowsType])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [ExplicitAuthFlowsType]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe (Sensitive Text)
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe (Sensitive Text))
-> Parser
     (Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Sensitive Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClientSecret")
            Parser
  (Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe [Text]
      -> Maybe [Text]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LastModifiedDate")
            Parser
  (Maybe [Text]
   -> Maybe [Text]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe [Text])
-> Parser
     (Maybe [Text]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SupportedIdentityProviders"
                            Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe [Text]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LogoutURLs" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AllowedOAuthFlowsUserPoolClient")
            Parser
  (Maybe Text
   -> Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe Text)
-> Parser
     (Maybe Natural
      -> Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"UserPoolId")
            Parser
  (Maybe Natural
   -> Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe Natural)
-> Parser
     (Maybe TokenValidityUnitsType
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"IdTokenValidity")
            Parser
  (Maybe TokenValidityUnitsType
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe TokenValidityUnitsType)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TokenValidityUnitsType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TokenValidityUnits")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DefaultRedirectURI")
            Parser
  (Maybe Bool
   -> Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe Bool)
-> Parser
     (Maybe [Text]
      -> Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EnableTokenRevocation")
            Parser
  (Maybe [Text]
   -> Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe [Text])
-> Parser
     (Maybe PreventUserExistenceErrorTypes
      -> Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"WriteAttributes"
                            Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe PreventUserExistenceErrorTypes
   -> Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe PreventUserExistenceErrorTypes)
-> Parser
     (Maybe Natural
      -> Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe PreventUserExistenceErrorTypes)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PreventUserExistenceErrors")
            Parser
  (Maybe Natural
   -> Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe Natural)
-> Parser
     (Maybe POSIX
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AccessTokenValidity")
            Parser
  (Maybe POSIX
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe [Text]
      -> Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreationDate")
            Parser
  (Maybe [Text]
   -> Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe [Text])
-> Parser
     (Maybe [Text]
      -> Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReadAttributes" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe [Text]
   -> Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe [Text])
-> Parser
     (Maybe [OAuthFlowType]
      -> Maybe AnalyticsConfigurationType
      -> Maybe Text
      -> Maybe [Text]
      -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AllowedOAuthScopes"
                            Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe [OAuthFlowType]
   -> Maybe AnalyticsConfigurationType
   -> Maybe Text
   -> Maybe [Text]
   -> UserPoolClientType)
-> Parser (Maybe [OAuthFlowType])
-> Parser
     (Maybe AnalyticsConfigurationType
      -> Maybe Text -> Maybe [Text] -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [OAuthFlowType]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AllowedOAuthFlows"
                            Parser (Maybe (Maybe [OAuthFlowType]))
-> Maybe [OAuthFlowType] -> Parser (Maybe [OAuthFlowType])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [OAuthFlowType]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe AnalyticsConfigurationType
   -> Maybe Text -> Maybe [Text] -> UserPoolClientType)
-> Parser (Maybe AnalyticsConfigurationType)
-> Parser (Maybe Text -> Maybe [Text] -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AnalyticsConfigurationType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AnalyticsConfiguration")
            Parser (Maybe Text -> Maybe [Text] -> UserPoolClientType)
-> Parser (Maybe Text)
-> Parser (Maybe [Text] -> UserPoolClientType)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ClientName")
            Parser (Maybe [Text] -> UserPoolClientType)
-> Parser (Maybe [Text]) -> Parser UserPoolClientType
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CallbackURLs" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable UserPoolClientType

instance Prelude.NFData UserPoolClientType