{-# 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.Amplify.Types.DomainAssociation -- 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.Amplify.Types.DomainAssociation where import Amazonka.Amplify.Types.DomainStatus import Amazonka.Amplify.Types.SubDomain 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 -- | Describes a domain association that associates a custom domain with an -- Amplify app. -- -- /See:/ 'newDomainAssociation' smart constructor. data DomainAssociation = DomainAssociation' { -- | Sets branch patterns for automatic subdomain creation. autoSubDomainCreationPatterns :: Prelude.Maybe [Prelude.Text], -- | The required AWS Identity and Access Management (IAM) service role for -- the Amazon Resource Name (ARN) for automatically creating subdomains. autoSubDomainIAMRole :: Prelude.Maybe Prelude.Text, -- | The DNS record for certificate verification. certificateVerificationDNSRecord :: Prelude.Maybe Prelude.Text, -- | The Amazon Resource Name (ARN) for the domain association. domainAssociationArn :: Prelude.Text, -- | The name of the domain. domainName :: Prelude.Text, -- | Enables the automated creation of subdomains for branches. enableAutoSubDomain :: Prelude.Bool, -- | The current status of the domain association. domainStatus :: DomainStatus, -- | The reason for the current status of the domain association. statusReason :: Prelude.Text, -- | The subdomains for the domain association. subDomains :: [SubDomain] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'DomainAssociation' 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: -- -- 'autoSubDomainCreationPatterns', 'domainAssociation_autoSubDomainCreationPatterns' - Sets branch patterns for automatic subdomain creation. -- -- 'autoSubDomainIAMRole', 'domainAssociation_autoSubDomainIAMRole' - The required AWS Identity and Access Management (IAM) service role for -- the Amazon Resource Name (ARN) for automatically creating subdomains. -- -- 'certificateVerificationDNSRecord', 'domainAssociation_certificateVerificationDNSRecord' - The DNS record for certificate verification. -- -- 'domainAssociationArn', 'domainAssociation_domainAssociationArn' - The Amazon Resource Name (ARN) for the domain association. -- -- 'domainName', 'domainAssociation_domainName' - The name of the domain. -- -- 'enableAutoSubDomain', 'domainAssociation_enableAutoSubDomain' - Enables the automated creation of subdomains for branches. -- -- 'domainStatus', 'domainAssociation_domainStatus' - The current status of the domain association. -- -- 'statusReason', 'domainAssociation_statusReason' - The reason for the current status of the domain association. -- -- 'subDomains', 'domainAssociation_subDomains' - The subdomains for the domain association. newDomainAssociation :: -- | 'domainAssociationArn' Prelude.Text -> -- | 'domainName' Prelude.Text -> -- | 'enableAutoSubDomain' Prelude.Bool -> -- | 'domainStatus' DomainStatus -> -- | 'statusReason' Prelude.Text -> DomainAssociation newDomainAssociation pDomainAssociationArn_ pDomainName_ pEnableAutoSubDomain_ pDomainStatus_ pStatusReason_ = DomainAssociation' { autoSubDomainCreationPatterns = Prelude.Nothing, autoSubDomainIAMRole = Prelude.Nothing, certificateVerificationDNSRecord = Prelude.Nothing, domainAssociationArn = pDomainAssociationArn_, domainName = pDomainName_, enableAutoSubDomain = pEnableAutoSubDomain_, domainStatus = pDomainStatus_, statusReason = pStatusReason_, subDomains = Prelude.mempty } -- | Sets branch patterns for automatic subdomain creation. domainAssociation_autoSubDomainCreationPatterns :: Lens.Lens' DomainAssociation (Prelude.Maybe [Prelude.Text]) domainAssociation_autoSubDomainCreationPatterns = Lens.lens (\DomainAssociation' {autoSubDomainCreationPatterns} -> autoSubDomainCreationPatterns) (\s@DomainAssociation' {} a -> s {autoSubDomainCreationPatterns = a} :: DomainAssociation) Prelude.. Lens.mapping Lens.coerced -- | The required AWS Identity and Access Management (IAM) service role for -- the Amazon Resource Name (ARN) for automatically creating subdomains. domainAssociation_autoSubDomainIAMRole :: Lens.Lens' DomainAssociation (Prelude.Maybe Prelude.Text) domainAssociation_autoSubDomainIAMRole = Lens.lens (\DomainAssociation' {autoSubDomainIAMRole} -> autoSubDomainIAMRole) (\s@DomainAssociation' {} a -> s {autoSubDomainIAMRole = a} :: DomainAssociation) -- | The DNS record for certificate verification. domainAssociation_certificateVerificationDNSRecord :: Lens.Lens' DomainAssociation (Prelude.Maybe Prelude.Text) domainAssociation_certificateVerificationDNSRecord = Lens.lens (\DomainAssociation' {certificateVerificationDNSRecord} -> certificateVerificationDNSRecord) (\s@DomainAssociation' {} a -> s {certificateVerificationDNSRecord = a} :: DomainAssociation) -- | The Amazon Resource Name (ARN) for the domain association. domainAssociation_domainAssociationArn :: Lens.Lens' DomainAssociation Prelude.Text domainAssociation_domainAssociationArn = Lens.lens (\DomainAssociation' {domainAssociationArn} -> domainAssociationArn) (\s@DomainAssociation' {} a -> s {domainAssociationArn = a} :: DomainAssociation) -- | The name of the domain. domainAssociation_domainName :: Lens.Lens' DomainAssociation Prelude.Text domainAssociation_domainName = Lens.lens (\DomainAssociation' {domainName} -> domainName) (\s@DomainAssociation' {} a -> s {domainName = a} :: DomainAssociation) -- | Enables the automated creation of subdomains for branches. domainAssociation_enableAutoSubDomain :: Lens.Lens' DomainAssociation Prelude.Bool domainAssociation_enableAutoSubDomain = Lens.lens (\DomainAssociation' {enableAutoSubDomain} -> enableAutoSubDomain) (\s@DomainAssociation' {} a -> s {enableAutoSubDomain = a} :: DomainAssociation) -- | The current status of the domain association. domainAssociation_domainStatus :: Lens.Lens' DomainAssociation DomainStatus domainAssociation_domainStatus = Lens.lens (\DomainAssociation' {domainStatus} -> domainStatus) (\s@DomainAssociation' {} a -> s {domainStatus = a} :: DomainAssociation) -- | The reason for the current status of the domain association. domainAssociation_statusReason :: Lens.Lens' DomainAssociation Prelude.Text domainAssociation_statusReason = Lens.lens (\DomainAssociation' {statusReason} -> statusReason) (\s@DomainAssociation' {} a -> s {statusReason = a} :: DomainAssociation) -- | The subdomains for the domain association. domainAssociation_subDomains :: Lens.Lens' DomainAssociation [SubDomain] domainAssociation_subDomains = Lens.lens (\DomainAssociation' {subDomains} -> subDomains) (\s@DomainAssociation' {} a -> s {subDomains = a} :: DomainAssociation) Prelude.. Lens.coerced instance Data.FromJSON DomainAssociation where parseJSON = Data.withObject "DomainAssociation" ( \x -> DomainAssociation' Prelude.<$> ( x Data..:? "autoSubDomainCreationPatterns" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "autoSubDomainIAMRole") Prelude.<*> (x Data..:? "certificateVerificationDNSRecord") Prelude.<*> (x Data..: "domainAssociationArn") Prelude.<*> (x Data..: "domainName") Prelude.<*> (x Data..: "enableAutoSubDomain") Prelude.<*> (x Data..: "domainStatus") Prelude.<*> (x Data..: "statusReason") Prelude.<*> (x Data..:? "subDomains" Data..!= Prelude.mempty) ) instance Prelude.Hashable DomainAssociation where hashWithSalt _salt DomainAssociation' {..} = _salt `Prelude.hashWithSalt` autoSubDomainCreationPatterns `Prelude.hashWithSalt` autoSubDomainIAMRole `Prelude.hashWithSalt` certificateVerificationDNSRecord `Prelude.hashWithSalt` domainAssociationArn `Prelude.hashWithSalt` domainName `Prelude.hashWithSalt` enableAutoSubDomain `Prelude.hashWithSalt` domainStatus `Prelude.hashWithSalt` statusReason `Prelude.hashWithSalt` subDomains instance Prelude.NFData DomainAssociation where rnf DomainAssociation' {..} = Prelude.rnf autoSubDomainCreationPatterns `Prelude.seq` Prelude.rnf autoSubDomainIAMRole `Prelude.seq` Prelude.rnf certificateVerificationDNSRecord `Prelude.seq` Prelude.rnf domainAssociationArn `Prelude.seq` Prelude.rnf domainName `Prelude.seq` Prelude.rnf enableAutoSubDomain `Prelude.seq` Prelude.rnf domainStatus `Prelude.seq` Prelude.rnf statusReason `Prelude.seq` Prelude.rnf subDomains