packages feed

amazonka-iam-2.0: gen/Amazonka/IAM/UpdateSAMLProvider.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.IAM.UpdateSAMLProvider
-- 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 the metadata document for an existing SAML provider resource
-- object.
--
-- This operation requires
-- <https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4>.
module Amazonka.IAM.UpdateSAMLProvider
  ( -- * Creating a Request
    UpdateSAMLProvider (..),
    newUpdateSAMLProvider,

    -- * Request Lenses
    updateSAMLProvider_sAMLMetadataDocument,
    updateSAMLProvider_sAMLProviderArn,

    -- * Destructuring the Response
    UpdateSAMLProviderResponse (..),
    newUpdateSAMLProviderResponse,

    -- * Response Lenses
    updateSAMLProviderResponse_sAMLProviderArn,
    updateSAMLProviderResponse_httpStatus,
  )
where

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

-- | /See:/ 'newUpdateSAMLProvider' smart constructor.
data UpdateSAMLProvider = UpdateSAMLProvider'
  { -- | An XML document generated by an identity provider (IdP) that supports
    -- SAML 2.0. The document includes the issuer\'s name, expiration
    -- information, and keys that can be used to validate the SAML
    -- authentication response (assertions) that are received from the IdP. You
    -- must generate the metadata document using the identity management
    -- software that is used as your organization\'s IdP.
    sAMLMetadataDocument :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the SAML provider to update.
    --
    -- For more information about ARNs, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
    -- in the /Amazon Web Services General Reference/.
    sAMLProviderArn :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateSAMLProvider' 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:
--
-- 'sAMLMetadataDocument', 'updateSAMLProvider_sAMLMetadataDocument' - An XML document generated by an identity provider (IdP) that supports
-- SAML 2.0. The document includes the issuer\'s name, expiration
-- information, and keys that can be used to validate the SAML
-- authentication response (assertions) that are received from the IdP. You
-- must generate the metadata document using the identity management
-- software that is used as your organization\'s IdP.
--
-- 'sAMLProviderArn', 'updateSAMLProvider_sAMLProviderArn' - The Amazon Resource Name (ARN) of the SAML provider to update.
--
-- For more information about ARNs, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
-- in the /Amazon Web Services General Reference/.
newUpdateSAMLProvider ::
  -- | 'sAMLMetadataDocument'
  Prelude.Text ->
  -- | 'sAMLProviderArn'
  Prelude.Text ->
  UpdateSAMLProvider
newUpdateSAMLProvider
  pSAMLMetadataDocument_
  pSAMLProviderArn_ =
    UpdateSAMLProvider'
      { sAMLMetadataDocument =
          pSAMLMetadataDocument_,
        sAMLProviderArn = pSAMLProviderArn_
      }

-- | An XML document generated by an identity provider (IdP) that supports
-- SAML 2.0. The document includes the issuer\'s name, expiration
-- information, and keys that can be used to validate the SAML
-- authentication response (assertions) that are received from the IdP. You
-- must generate the metadata document using the identity management
-- software that is used as your organization\'s IdP.
updateSAMLProvider_sAMLMetadataDocument :: Lens.Lens' UpdateSAMLProvider Prelude.Text
updateSAMLProvider_sAMLMetadataDocument = Lens.lens (\UpdateSAMLProvider' {sAMLMetadataDocument} -> sAMLMetadataDocument) (\s@UpdateSAMLProvider' {} a -> s {sAMLMetadataDocument = a} :: UpdateSAMLProvider)

-- | The Amazon Resource Name (ARN) of the SAML provider to update.
--
-- For more information about ARNs, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
-- in the /Amazon Web Services General Reference/.
updateSAMLProvider_sAMLProviderArn :: Lens.Lens' UpdateSAMLProvider Prelude.Text
updateSAMLProvider_sAMLProviderArn = Lens.lens (\UpdateSAMLProvider' {sAMLProviderArn} -> sAMLProviderArn) (\s@UpdateSAMLProvider' {} a -> s {sAMLProviderArn = a} :: UpdateSAMLProvider)

instance Core.AWSRequest UpdateSAMLProvider where
  type
    AWSResponse UpdateSAMLProvider =
      UpdateSAMLProviderResponse
  request overrides =
    Request.postQuery (overrides defaultService)
  response =
    Response.receiveXMLWrapper
      "UpdateSAMLProviderResult"
      ( \s h x ->
          UpdateSAMLProviderResponse'
            Prelude.<$> (x Data..@? "SAMLProviderArn")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable UpdateSAMLProvider where
  hashWithSalt _salt UpdateSAMLProvider' {..} =
    _salt
      `Prelude.hashWithSalt` sAMLMetadataDocument
      `Prelude.hashWithSalt` sAMLProviderArn

instance Prelude.NFData UpdateSAMLProvider where
  rnf UpdateSAMLProvider' {..} =
    Prelude.rnf sAMLMetadataDocument
      `Prelude.seq` Prelude.rnf sAMLProviderArn

instance Data.ToHeaders UpdateSAMLProvider where
  toHeaders = Prelude.const Prelude.mempty

instance Data.ToPath UpdateSAMLProvider where
  toPath = Prelude.const "/"

instance Data.ToQuery UpdateSAMLProvider where
  toQuery UpdateSAMLProvider' {..} =
    Prelude.mconcat
      [ "Action"
          Data.=: ("UpdateSAMLProvider" :: Prelude.ByteString),
        "Version"
          Data.=: ("2010-05-08" :: Prelude.ByteString),
        "SAMLMetadataDocument" Data.=: sAMLMetadataDocument,
        "SAMLProviderArn" Data.=: sAMLProviderArn
      ]

-- | Contains the response to a successful UpdateSAMLProvider request.
--
-- /See:/ 'newUpdateSAMLProviderResponse' smart constructor.
data UpdateSAMLProviderResponse = UpdateSAMLProviderResponse'
  { -- | The Amazon Resource Name (ARN) of the SAML provider that was updated.
    sAMLProviderArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateSAMLProviderResponse' 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:
--
-- 'sAMLProviderArn', 'updateSAMLProviderResponse_sAMLProviderArn' - The Amazon Resource Name (ARN) of the SAML provider that was updated.
--
-- 'httpStatus', 'updateSAMLProviderResponse_httpStatus' - The response's http status code.
newUpdateSAMLProviderResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateSAMLProviderResponse
newUpdateSAMLProviderResponse pHttpStatus_ =
  UpdateSAMLProviderResponse'
    { sAMLProviderArn =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the SAML provider that was updated.
updateSAMLProviderResponse_sAMLProviderArn :: Lens.Lens' UpdateSAMLProviderResponse (Prelude.Maybe Prelude.Text)
updateSAMLProviderResponse_sAMLProviderArn = Lens.lens (\UpdateSAMLProviderResponse' {sAMLProviderArn} -> sAMLProviderArn) (\s@UpdateSAMLProviderResponse' {} a -> s {sAMLProviderArn = a} :: UpdateSAMLProviderResponse)

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

instance Prelude.NFData UpdateSAMLProviderResponse where
  rnf UpdateSAMLProviderResponse' {..} =
    Prelude.rnf sAMLProviderArn
      `Prelude.seq` Prelude.rnf httpStatus