{-# 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.IdentityProviderType -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.CognitoIdentityProvider.Types.IdentityProviderType where import Amazonka.CognitoIdentityProvider.Types.IdentityProviderTypeType 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 -- | A container for information about an IdP. -- -- /See:/ 'newIdentityProviderType' smart constructor. data IdentityProviderType = IdentityProviderType' { -- | A mapping of IdP attributes to standard and custom user pool attributes. attributeMapping :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text), -- | The date the IdP was created. creationDate :: Prelude.Maybe Data.POSIX, -- | A list of IdP identifiers. idpIdentifiers :: Prelude.Maybe [Prelude.Text], -- | The date the IdP was last modified. lastModifiedDate :: Prelude.Maybe Data.POSIX, -- | The IdP details. The following list describes the provider detail keys -- for each IdP type. -- -- - For Google and Login with Amazon: -- -- - client_id -- -- - client_secret -- -- - authorize_scopes -- -- - For Facebook: -- -- - client_id -- -- - client_secret -- -- - authorize_scopes -- -- - api_version -- -- - For Sign in with Apple: -- -- - client_id -- -- - team_id -- -- - key_id -- -- - private_key -- -- /You can submit a private_key when you add or update an IdP. -- Describe operations don\'t return the private key./ -- -- - authorize_scopes -- -- - For OIDC providers: -- -- - client_id -- -- - client_secret -- -- - attributes_request_method -- -- - oidc_issuer -- -- - authorize_scopes -- -- - The following keys are only present if Amazon Cognito didn\'t -- discover them at the @oidc_issuer@ URL. -- -- - authorize_url -- -- - token_url -- -- - attributes_url -- -- - jwks_uri -- -- - Amazon Cognito sets the value of the following keys -- automatically. They are read-only. -- -- - attributes_url_add_attributes -- -- - For SAML providers: -- -- - MetadataFile or MetadataURL -- -- - IDPSignout /optional/ providerDetails :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text), -- | The IdP name. providerName :: Prelude.Maybe Prelude.Text, -- | The IdP type. providerType :: Prelude.Maybe IdentityProviderTypeType, -- | The user pool ID. userPoolId :: Prelude.Maybe Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'IdentityProviderType' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'attributeMapping', 'identityProviderType_attributeMapping' - A mapping of IdP attributes to standard and custom user pool attributes. -- -- 'creationDate', 'identityProviderType_creationDate' - The date the IdP was created. -- -- 'idpIdentifiers', 'identityProviderType_idpIdentifiers' - A list of IdP identifiers. -- -- 'lastModifiedDate', 'identityProviderType_lastModifiedDate' - The date the IdP was last modified. -- -- 'providerDetails', 'identityProviderType_providerDetails' - The IdP details. The following list describes the provider detail keys -- for each IdP type. -- -- - For Google and Login with Amazon: -- -- - client_id -- -- - client_secret -- -- - authorize_scopes -- -- - For Facebook: -- -- - client_id -- -- - client_secret -- -- - authorize_scopes -- -- - api_version -- -- - For Sign in with Apple: -- -- - client_id -- -- - team_id -- -- - key_id -- -- - private_key -- -- /You can submit a private_key when you add or update an IdP. -- Describe operations don\'t return the private key./ -- -- - authorize_scopes -- -- - For OIDC providers: -- -- - client_id -- -- - client_secret -- -- - attributes_request_method -- -- - oidc_issuer -- -- - authorize_scopes -- -- - The following keys are only present if Amazon Cognito didn\'t -- discover them at the @oidc_issuer@ URL. -- -- - authorize_url -- -- - token_url -- -- - attributes_url -- -- - jwks_uri -- -- - Amazon Cognito sets the value of the following keys -- automatically. They are read-only. -- -- - attributes_url_add_attributes -- -- - For SAML providers: -- -- - MetadataFile or MetadataURL -- -- - IDPSignout /optional/ -- -- 'providerName', 'identityProviderType_providerName' - The IdP name. -- -- 'providerType', 'identityProviderType_providerType' - The IdP type. -- -- 'userPoolId', 'identityProviderType_userPoolId' - The user pool ID. newIdentityProviderType :: IdentityProviderType newIdentityProviderType = IdentityProviderType' { attributeMapping = Prelude.Nothing, creationDate = Prelude.Nothing, idpIdentifiers = Prelude.Nothing, lastModifiedDate = Prelude.Nothing, providerDetails = Prelude.Nothing, providerName = Prelude.Nothing, providerType = Prelude.Nothing, userPoolId = Prelude.Nothing } -- | A mapping of IdP attributes to standard and custom user pool attributes. identityProviderType_attributeMapping :: Lens.Lens' IdentityProviderType (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) identityProviderType_attributeMapping = Lens.lens (\IdentityProviderType' {attributeMapping} -> attributeMapping) (\s@IdentityProviderType' {} a -> s {attributeMapping = a} :: IdentityProviderType) Prelude.. Lens.mapping Lens.coerced -- | The date the IdP was created. identityProviderType_creationDate :: Lens.Lens' IdentityProviderType (Prelude.Maybe Prelude.UTCTime) identityProviderType_creationDate = Lens.lens (\IdentityProviderType' {creationDate} -> creationDate) (\s@IdentityProviderType' {} a -> s {creationDate = a} :: IdentityProviderType) Prelude.. Lens.mapping Data._Time -- | A list of IdP identifiers. identityProviderType_idpIdentifiers :: Lens.Lens' IdentityProviderType (Prelude.Maybe [Prelude.Text]) identityProviderType_idpIdentifiers = Lens.lens (\IdentityProviderType' {idpIdentifiers} -> idpIdentifiers) (\s@IdentityProviderType' {} a -> s {idpIdentifiers = a} :: IdentityProviderType) Prelude.. Lens.mapping Lens.coerced -- | The date the IdP was last modified. identityProviderType_lastModifiedDate :: Lens.Lens' IdentityProviderType (Prelude.Maybe Prelude.UTCTime) identityProviderType_lastModifiedDate = Lens.lens (\IdentityProviderType' {lastModifiedDate} -> lastModifiedDate) (\s@IdentityProviderType' {} a -> s {lastModifiedDate = a} :: IdentityProviderType) Prelude.. Lens.mapping Data._Time -- | The IdP details. The following list describes the provider detail keys -- for each IdP type. -- -- - For Google and Login with Amazon: -- -- - client_id -- -- - client_secret -- -- - authorize_scopes -- -- - For Facebook: -- -- - client_id -- -- - client_secret -- -- - authorize_scopes -- -- - api_version -- -- - For Sign in with Apple: -- -- - client_id -- -- - team_id -- -- - key_id -- -- - private_key -- -- /You can submit a private_key when you add or update an IdP. -- Describe operations don\'t return the private key./ -- -- - authorize_scopes -- -- - For OIDC providers: -- -- - client_id -- -- - client_secret -- -- - attributes_request_method -- -- - oidc_issuer -- -- - authorize_scopes -- -- - The following keys are only present if Amazon Cognito didn\'t -- discover them at the @oidc_issuer@ URL. -- -- - authorize_url -- -- - token_url -- -- - attributes_url -- -- - jwks_uri -- -- - Amazon Cognito sets the value of the following keys -- automatically. They are read-only. -- -- - attributes_url_add_attributes -- -- - For SAML providers: -- -- - MetadataFile or MetadataURL -- -- - IDPSignout /optional/ identityProviderType_providerDetails :: Lens.Lens' IdentityProviderType (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) identityProviderType_providerDetails = Lens.lens (\IdentityProviderType' {providerDetails} -> providerDetails) (\s@IdentityProviderType' {} a -> s {providerDetails = a} :: IdentityProviderType) Prelude.. Lens.mapping Lens.coerced -- | The IdP name. identityProviderType_providerName :: Lens.Lens' IdentityProviderType (Prelude.Maybe Prelude.Text) identityProviderType_providerName = Lens.lens (\IdentityProviderType' {providerName} -> providerName) (\s@IdentityProviderType' {} a -> s {providerName = a} :: IdentityProviderType) -- | The IdP type. identityProviderType_providerType :: Lens.Lens' IdentityProviderType (Prelude.Maybe IdentityProviderTypeType) identityProviderType_providerType = Lens.lens (\IdentityProviderType' {providerType} -> providerType) (\s@IdentityProviderType' {} a -> s {providerType = a} :: IdentityProviderType) -- | The user pool ID. identityProviderType_userPoolId :: Lens.Lens' IdentityProviderType (Prelude.Maybe Prelude.Text) identityProviderType_userPoolId = Lens.lens (\IdentityProviderType' {userPoolId} -> userPoolId) (\s@IdentityProviderType' {} a -> s {userPoolId = a} :: IdentityProviderType) instance Data.FromJSON IdentityProviderType where parseJSON = Data.withObject "IdentityProviderType" ( \x -> IdentityProviderType' Prelude.<$> ( x Data..:? "AttributeMapping" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "CreationDate") Prelude.<*> (x Data..:? "IdpIdentifiers" Data..!= Prelude.mempty) Prelude.<*> (x Data..:? "LastModifiedDate") Prelude.<*> ( x Data..:? "ProviderDetails" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "ProviderName") Prelude.<*> (x Data..:? "ProviderType") Prelude.<*> (x Data..:? "UserPoolId") ) instance Prelude.Hashable IdentityProviderType where hashWithSalt _salt IdentityProviderType' {..} = _salt `Prelude.hashWithSalt` attributeMapping `Prelude.hashWithSalt` creationDate `Prelude.hashWithSalt` idpIdentifiers `Prelude.hashWithSalt` lastModifiedDate `Prelude.hashWithSalt` providerDetails `Prelude.hashWithSalt` providerName `Prelude.hashWithSalt` providerType `Prelude.hashWithSalt` userPoolId instance Prelude.NFData IdentityProviderType where rnf IdentityProviderType' {..} = Prelude.rnf attributeMapping `Prelude.seq` Prelude.rnf creationDate `Prelude.seq` Prelude.rnf idpIdentifiers `Prelude.seq` Prelude.rnf lastModifiedDate `Prelude.seq` Prelude.rnf providerDetails `Prelude.seq` Prelude.rnf providerName `Prelude.seq` Prelude.rnf providerType `Prelude.seq` Prelude.rnf userPoolId