{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.Amplify.CreateDomainAssociation -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a new domain association for an Amplify app. This action -- associates a custom domain with the Amplify app module Amazonka.Amplify.CreateDomainAssociation ( -- * Creating a Request CreateDomainAssociation (..), newCreateDomainAssociation, -- * Request Lenses createDomainAssociation_autoSubDomainCreationPatterns, createDomainAssociation_autoSubDomainIAMRole, createDomainAssociation_enableAutoSubDomain, createDomainAssociation_appId, createDomainAssociation_domainName, createDomainAssociation_subDomainSettings, -- * Destructuring the Response CreateDomainAssociationResponse (..), newCreateDomainAssociationResponse, -- * Response Lenses createDomainAssociationResponse_httpStatus, createDomainAssociationResponse_domainAssociation, ) where import Amazonka.Amplify.Types import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | The request structure for the create domain association request. -- -- /See:/ 'newCreateDomainAssociation' smart constructor. data CreateDomainAssociation = CreateDomainAssociation' { -- | Sets the 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, -- | Enables the automated creation of subdomains for branches. enableAutoSubDomain :: Prelude.Maybe Prelude.Bool, -- | The unique ID for an Amplify app. appId :: Prelude.Text, -- | The domain name for the domain association. domainName :: Prelude.Text, -- | The setting for the subdomain. subDomainSettings :: [SubDomainSetting] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateDomainAssociation' 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', 'createDomainAssociation_autoSubDomainCreationPatterns' - Sets the branch patterns for automatic subdomain creation. -- -- 'autoSubDomainIAMRole', 'createDomainAssociation_autoSubDomainIAMRole' - The required AWS Identity and Access Management (IAM) service role for -- the Amazon Resource Name (ARN) for automatically creating subdomains. -- -- 'enableAutoSubDomain', 'createDomainAssociation_enableAutoSubDomain' - Enables the automated creation of subdomains for branches. -- -- 'appId', 'createDomainAssociation_appId' - The unique ID for an Amplify app. -- -- 'domainName', 'createDomainAssociation_domainName' - The domain name for the domain association. -- -- 'subDomainSettings', 'createDomainAssociation_subDomainSettings' - The setting for the subdomain. newCreateDomainAssociation :: -- | 'appId' Prelude.Text -> -- | 'domainName' Prelude.Text -> CreateDomainAssociation newCreateDomainAssociation pAppId_ pDomainName_ = CreateDomainAssociation' { autoSubDomainCreationPatterns = Prelude.Nothing, autoSubDomainIAMRole = Prelude.Nothing, enableAutoSubDomain = Prelude.Nothing, appId = pAppId_, domainName = pDomainName_, subDomainSettings = Prelude.mempty } -- | Sets the branch patterns for automatic subdomain creation. createDomainAssociation_autoSubDomainCreationPatterns :: Lens.Lens' CreateDomainAssociation (Prelude.Maybe [Prelude.Text]) createDomainAssociation_autoSubDomainCreationPatterns = Lens.lens (\CreateDomainAssociation' {autoSubDomainCreationPatterns} -> autoSubDomainCreationPatterns) (\s@CreateDomainAssociation' {} a -> s {autoSubDomainCreationPatterns = a} :: CreateDomainAssociation) 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. createDomainAssociation_autoSubDomainIAMRole :: Lens.Lens' CreateDomainAssociation (Prelude.Maybe Prelude.Text) createDomainAssociation_autoSubDomainIAMRole = Lens.lens (\CreateDomainAssociation' {autoSubDomainIAMRole} -> autoSubDomainIAMRole) (\s@CreateDomainAssociation' {} a -> s {autoSubDomainIAMRole = a} :: CreateDomainAssociation) -- | Enables the automated creation of subdomains for branches. createDomainAssociation_enableAutoSubDomain :: Lens.Lens' CreateDomainAssociation (Prelude.Maybe Prelude.Bool) createDomainAssociation_enableAutoSubDomain = Lens.lens (\CreateDomainAssociation' {enableAutoSubDomain} -> enableAutoSubDomain) (\s@CreateDomainAssociation' {} a -> s {enableAutoSubDomain = a} :: CreateDomainAssociation) -- | The unique ID for an Amplify app. createDomainAssociation_appId :: Lens.Lens' CreateDomainAssociation Prelude.Text createDomainAssociation_appId = Lens.lens (\CreateDomainAssociation' {appId} -> appId) (\s@CreateDomainAssociation' {} a -> s {appId = a} :: CreateDomainAssociation) -- | The domain name for the domain association. createDomainAssociation_domainName :: Lens.Lens' CreateDomainAssociation Prelude.Text createDomainAssociation_domainName = Lens.lens (\CreateDomainAssociation' {domainName} -> domainName) (\s@CreateDomainAssociation' {} a -> s {domainName = a} :: CreateDomainAssociation) -- | The setting for the subdomain. createDomainAssociation_subDomainSettings :: Lens.Lens' CreateDomainAssociation [SubDomainSetting] createDomainAssociation_subDomainSettings = Lens.lens (\CreateDomainAssociation' {subDomainSettings} -> subDomainSettings) (\s@CreateDomainAssociation' {} a -> s {subDomainSettings = a} :: CreateDomainAssociation) Prelude.. Lens.coerced instance Core.AWSRequest CreateDomainAssociation where type AWSResponse CreateDomainAssociation = CreateDomainAssociationResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> CreateDomainAssociationResponse' Prelude.<$> (Prelude.pure (Prelude.fromEnum s)) Prelude.<*> (x Data..:> "domainAssociation") ) instance Prelude.Hashable CreateDomainAssociation where hashWithSalt _salt CreateDomainAssociation' {..} = _salt `Prelude.hashWithSalt` autoSubDomainCreationPatterns `Prelude.hashWithSalt` autoSubDomainIAMRole `Prelude.hashWithSalt` enableAutoSubDomain `Prelude.hashWithSalt` appId `Prelude.hashWithSalt` domainName `Prelude.hashWithSalt` subDomainSettings instance Prelude.NFData CreateDomainAssociation where rnf CreateDomainAssociation' {..} = Prelude.rnf autoSubDomainCreationPatterns `Prelude.seq` Prelude.rnf autoSubDomainIAMRole `Prelude.seq` Prelude.rnf enableAutoSubDomain `Prelude.seq` Prelude.rnf appId `Prelude.seq` Prelude.rnf domainName `Prelude.seq` Prelude.rnf subDomainSettings instance Data.ToHeaders CreateDomainAssociation where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateDomainAssociation where toJSON CreateDomainAssociation' {..} = Data.object ( Prelude.catMaybes [ ("autoSubDomainCreationPatterns" Data..=) Prelude.<$> autoSubDomainCreationPatterns, ("autoSubDomainIAMRole" Data..=) Prelude.<$> autoSubDomainIAMRole, ("enableAutoSubDomain" Data..=) Prelude.<$> enableAutoSubDomain, Prelude.Just ("domainName" Data..= domainName), Prelude.Just ("subDomainSettings" Data..= subDomainSettings) ] ) instance Data.ToPath CreateDomainAssociation where toPath CreateDomainAssociation' {..} = Prelude.mconcat ["/apps/", Data.toBS appId, "/domains"] instance Data.ToQuery CreateDomainAssociation where toQuery = Prelude.const Prelude.mempty -- | The result structure for the create domain association request. -- -- /See:/ 'newCreateDomainAssociationResponse' smart constructor. data CreateDomainAssociationResponse = CreateDomainAssociationResponse' { -- | The response's http status code. httpStatus :: Prelude.Int, -- | Describes the structure of a domain association, which associates a -- custom domain with an Amplify app. domainAssociation :: DomainAssociation } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateDomainAssociationResponse' 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: -- -- 'httpStatus', 'createDomainAssociationResponse_httpStatus' - The response's http status code. -- -- 'domainAssociation', 'createDomainAssociationResponse_domainAssociation' - Describes the structure of a domain association, which associates a -- custom domain with an Amplify app. newCreateDomainAssociationResponse :: -- | 'httpStatus' Prelude.Int -> -- | 'domainAssociation' DomainAssociation -> CreateDomainAssociationResponse newCreateDomainAssociationResponse pHttpStatus_ pDomainAssociation_ = CreateDomainAssociationResponse' { httpStatus = pHttpStatus_, domainAssociation = pDomainAssociation_ } -- | The response's http status code. createDomainAssociationResponse_httpStatus :: Lens.Lens' CreateDomainAssociationResponse Prelude.Int createDomainAssociationResponse_httpStatus = Lens.lens (\CreateDomainAssociationResponse' {httpStatus} -> httpStatus) (\s@CreateDomainAssociationResponse' {} a -> s {httpStatus = a} :: CreateDomainAssociationResponse) -- | Describes the structure of a domain association, which associates a -- custom domain with an Amplify app. createDomainAssociationResponse_domainAssociation :: Lens.Lens' CreateDomainAssociationResponse DomainAssociation createDomainAssociationResponse_domainAssociation = Lens.lens (\CreateDomainAssociationResponse' {domainAssociation} -> domainAssociation) (\s@CreateDomainAssociationResponse' {} a -> s {domainAssociation = a} :: CreateDomainAssociationResponse) instance Prelude.NFData CreateDomainAssociationResponse where rnf CreateDomainAssociationResponse' {..} = Prelude.rnf httpStatus `Prelude.seq` Prelude.rnf domainAssociation