packages feed

amazonka-license-manager-user-subscriptions-2.0: gen/Amazonka/LicenseManagerUserSubscriptions/UpdateIdentityProviderSettings.hs

{-# 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.LicenseManagerUserSubscriptions.UpdateIdentityProviderSettings
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates additional product configuration settings for the registered
-- identity provider.
module Amazonka.LicenseManagerUserSubscriptions.UpdateIdentityProviderSettings
  ( -- * Creating a Request
    UpdateIdentityProviderSettings (..),
    newUpdateIdentityProviderSettings,

    -- * Request Lenses
    updateIdentityProviderSettings_identityProvider,
    updateIdentityProviderSettings_product,
    updateIdentityProviderSettings_updateSettings,

    -- * Destructuring the Response
    UpdateIdentityProviderSettingsResponse (..),
    newUpdateIdentityProviderSettingsResponse,

    -- * Response Lenses
    updateIdentityProviderSettingsResponse_httpStatus,
    updateIdentityProviderSettingsResponse_identityProviderSummary,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.LicenseManagerUserSubscriptions.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateIdentityProviderSettings' smart constructor.
data UpdateIdentityProviderSettings = UpdateIdentityProviderSettings'
  { identityProvider :: IdentityProvider,
    -- | The name of the user-based subscription product.
    product :: Prelude.Text,
    -- | Updates the registered identity provider’s product related configuration
    -- settings. You can update any combination of settings in a single
    -- operation such as the:
    --
    -- -   Subnets which you want to add to provision VPC endpoints.
    --
    -- -   Subnets which you want to remove the VPC endpoints from.
    --
    -- -   Security group ID which permits traffic to the VPC endpoints.
    updateSettings :: UpdateSettings
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateIdentityProviderSettings' 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:
--
-- 'identityProvider', 'updateIdentityProviderSettings_identityProvider' - Undocumented member.
--
-- 'product', 'updateIdentityProviderSettings_product' - The name of the user-based subscription product.
--
-- 'updateSettings', 'updateIdentityProviderSettings_updateSettings' - Updates the registered identity provider’s product related configuration
-- settings. You can update any combination of settings in a single
-- operation such as the:
--
-- -   Subnets which you want to add to provision VPC endpoints.
--
-- -   Subnets which you want to remove the VPC endpoints from.
--
-- -   Security group ID which permits traffic to the VPC endpoints.
newUpdateIdentityProviderSettings ::
  -- | 'identityProvider'
  IdentityProvider ->
  -- | 'product'
  Prelude.Text ->
  -- | 'updateSettings'
  UpdateSettings ->
  UpdateIdentityProviderSettings
newUpdateIdentityProviderSettings
  pIdentityProvider_
  pProduct_
  pUpdateSettings_ =
    UpdateIdentityProviderSettings'
      { identityProvider =
          pIdentityProvider_,
        product = pProduct_,
        updateSettings = pUpdateSettings_
      }

-- | Undocumented member.
updateIdentityProviderSettings_identityProvider :: Lens.Lens' UpdateIdentityProviderSettings IdentityProvider
updateIdentityProviderSettings_identityProvider = Lens.lens (\UpdateIdentityProviderSettings' {identityProvider} -> identityProvider) (\s@UpdateIdentityProviderSettings' {} a -> s {identityProvider = a} :: UpdateIdentityProviderSettings)

-- | The name of the user-based subscription product.
updateIdentityProviderSettings_product :: Lens.Lens' UpdateIdentityProviderSettings Prelude.Text
updateIdentityProviderSettings_product = Lens.lens (\UpdateIdentityProviderSettings' {product} -> product) (\s@UpdateIdentityProviderSettings' {} a -> s {product = a} :: UpdateIdentityProviderSettings)

-- | Updates the registered identity provider’s product related configuration
-- settings. You can update any combination of settings in a single
-- operation such as the:
--
-- -   Subnets which you want to add to provision VPC endpoints.
--
-- -   Subnets which you want to remove the VPC endpoints from.
--
-- -   Security group ID which permits traffic to the VPC endpoints.
updateIdentityProviderSettings_updateSettings :: Lens.Lens' UpdateIdentityProviderSettings UpdateSettings
updateIdentityProviderSettings_updateSettings = Lens.lens (\UpdateIdentityProviderSettings' {updateSettings} -> updateSettings) (\s@UpdateIdentityProviderSettings' {} a -> s {updateSettings = a} :: UpdateIdentityProviderSettings)

instance
  Core.AWSRequest
    UpdateIdentityProviderSettings
  where
  type
    AWSResponse UpdateIdentityProviderSettings =
      UpdateIdentityProviderSettingsResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          UpdateIdentityProviderSettingsResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..:> "IdentityProviderSummary")
      )

instance
  Prelude.Hashable
    UpdateIdentityProviderSettings
  where
  hashWithSalt
    _salt
    UpdateIdentityProviderSettings' {..} =
      _salt
        `Prelude.hashWithSalt` identityProvider
        `Prelude.hashWithSalt` product
        `Prelude.hashWithSalt` updateSettings

instance
  Prelude.NFData
    UpdateIdentityProviderSettings
  where
  rnf UpdateIdentityProviderSettings' {..} =
    Prelude.rnf identityProvider
      `Prelude.seq` Prelude.rnf product
      `Prelude.seq` Prelude.rnf updateSettings

instance
  Data.ToHeaders
    UpdateIdentityProviderSettings
  where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateIdentityProviderSettings where
  toJSON UpdateIdentityProviderSettings' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just
              ("IdentityProvider" Data..= identityProvider),
            Prelude.Just ("Product" Data..= product),
            Prelude.Just
              ("UpdateSettings" Data..= updateSettings)
          ]
      )

instance Data.ToPath UpdateIdentityProviderSettings where
  toPath =
    Prelude.const
      "/identity-provider/UpdateIdentityProviderSettings"

instance Data.ToQuery UpdateIdentityProviderSettings where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newUpdateIdentityProviderSettingsResponse' smart constructor.
data UpdateIdentityProviderSettingsResponse = UpdateIdentityProviderSettingsResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    identityProviderSummary :: IdentityProviderSummary
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateIdentityProviderSettingsResponse' 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:
--
-- 'httpStatus', 'updateIdentityProviderSettingsResponse_httpStatus' - The response's http status code.
--
-- 'identityProviderSummary', 'updateIdentityProviderSettingsResponse_identityProviderSummary' - Undocumented member.
newUpdateIdentityProviderSettingsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'identityProviderSummary'
  IdentityProviderSummary ->
  UpdateIdentityProviderSettingsResponse
newUpdateIdentityProviderSettingsResponse
  pHttpStatus_
  pIdentityProviderSummary_ =
    UpdateIdentityProviderSettingsResponse'
      { httpStatus =
          pHttpStatus_,
        identityProviderSummary =
          pIdentityProviderSummary_
      }

-- | The response's http status code.
updateIdentityProviderSettingsResponse_httpStatus :: Lens.Lens' UpdateIdentityProviderSettingsResponse Prelude.Int
updateIdentityProviderSettingsResponse_httpStatus = Lens.lens (\UpdateIdentityProviderSettingsResponse' {httpStatus} -> httpStatus) (\s@UpdateIdentityProviderSettingsResponse' {} a -> s {httpStatus = a} :: UpdateIdentityProviderSettingsResponse)

-- | Undocumented member.
updateIdentityProviderSettingsResponse_identityProviderSummary :: Lens.Lens' UpdateIdentityProviderSettingsResponse IdentityProviderSummary
updateIdentityProviderSettingsResponse_identityProviderSummary = Lens.lens (\UpdateIdentityProviderSettingsResponse' {identityProviderSummary} -> identityProviderSummary) (\s@UpdateIdentityProviderSettingsResponse' {} a -> s {identityProviderSummary = a} :: UpdateIdentityProviderSettingsResponse)

instance
  Prelude.NFData
    UpdateIdentityProviderSettingsResponse
  where
  rnf UpdateIdentityProviderSettingsResponse' {..} =
    Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf identityProviderSummary