{-# 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.GroundStation.CreateConfig -- 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 @Config@ with the specified @configData@ parameters. -- -- Only one type of @configData@ can be specified. module Amazonka.GroundStation.CreateConfig ( -- * Creating a Request CreateConfig (..), newCreateConfig, -- * Request Lenses createConfig_tags, createConfig_configData, createConfig_name, -- * Destructuring the Response ConfigIdResponse (..), newConfigIdResponse, -- * Response Lenses configIdResponse_configArn, configIdResponse_configId, configIdResponse_configType, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.GroundStation.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | -- -- /See:/ 'newCreateConfig' smart constructor. data CreateConfig = CreateConfig' { -- | Tags assigned to a @Config@. tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text), -- | Parameters of a @Config@. configData :: ConfigTypeData, -- | Name of a @Config@. name :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateConfig' 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: -- -- 'tags', 'createConfig_tags' - Tags assigned to a @Config@. -- -- 'configData', 'createConfig_configData' - Parameters of a @Config@. -- -- 'name', 'createConfig_name' - Name of a @Config@. newCreateConfig :: -- | 'configData' ConfigTypeData -> -- | 'name' Prelude.Text -> CreateConfig newCreateConfig pConfigData_ pName_ = CreateConfig' { tags = Prelude.Nothing, configData = pConfigData_, name = pName_ } -- | Tags assigned to a @Config@. createConfig_tags :: Lens.Lens' CreateConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) createConfig_tags = Lens.lens (\CreateConfig' {tags} -> tags) (\s@CreateConfig' {} a -> s {tags = a} :: CreateConfig) Prelude.. Lens.mapping Lens.coerced -- | Parameters of a @Config@. createConfig_configData :: Lens.Lens' CreateConfig ConfigTypeData createConfig_configData = Lens.lens (\CreateConfig' {configData} -> configData) (\s@CreateConfig' {} a -> s {configData = a} :: CreateConfig) -- | Name of a @Config@. createConfig_name :: Lens.Lens' CreateConfig Prelude.Text createConfig_name = Lens.lens (\CreateConfig' {name} -> name) (\s@CreateConfig' {} a -> s {name = a} :: CreateConfig) instance Core.AWSRequest CreateConfig where type AWSResponse CreateConfig = ConfigIdResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON (\s h x -> Data.eitherParseJSON x) instance Prelude.Hashable CreateConfig where hashWithSalt _salt CreateConfig' {..} = _salt `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` configData `Prelude.hashWithSalt` name instance Prelude.NFData CreateConfig where rnf CreateConfig' {..} = Prelude.rnf tags `Prelude.seq` Prelude.rnf configData `Prelude.seq` Prelude.rnf name instance Data.ToHeaders CreateConfig where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateConfig where toJSON CreateConfig' {..} = Data.object ( Prelude.catMaybes [ ("tags" Data..=) Prelude.<$> tags, Prelude.Just ("configData" Data..= configData), Prelude.Just ("name" Data..= name) ] ) instance Data.ToPath CreateConfig where toPath = Prelude.const "/config" instance Data.ToQuery CreateConfig where toQuery = Prelude.const Prelude.mempty