packages feed

amazonka-voice-id-2.0: gen/Amazonka/VoiceId/OptOutSpeaker.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.VoiceId.OptOutSpeaker
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Opts out a speaker from Voice ID. A speaker can be opted out regardless
-- of whether or not they already exist in Voice ID. If they don\'t yet
-- exist, a new speaker is created in an opted out state. If they already
-- exist, their existing status is overridden and they are opted out.
-- Enrollment and evaluation authentication requests are rejected for opted
-- out speakers, and opted out speakers have no voice embeddings stored in
-- Voice ID.
module Amazonka.VoiceId.OptOutSpeaker
  ( -- * Creating a Request
    OptOutSpeaker (..),
    newOptOutSpeaker,

    -- * Request Lenses
    optOutSpeaker_domainId,
    optOutSpeaker_speakerId,

    -- * Destructuring the Response
    OptOutSpeakerResponse (..),
    newOptOutSpeakerResponse,

    -- * Response Lenses
    optOutSpeakerResponse_speaker,
    optOutSpeakerResponse_httpStatus,
  )
where

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
import Amazonka.VoiceId.Types

-- | /See:/ 'newOptOutSpeaker' smart constructor.
data OptOutSpeaker = OptOutSpeaker'
  { -- | The identifier of the domain containing the speaker.
    domainId :: Prelude.Text,
    -- | The identifier of the speaker you want opted-out.
    speakerId :: Data.Sensitive Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'OptOutSpeaker' 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:
--
-- 'domainId', 'optOutSpeaker_domainId' - The identifier of the domain containing the speaker.
--
-- 'speakerId', 'optOutSpeaker_speakerId' - The identifier of the speaker you want opted-out.
newOptOutSpeaker ::
  -- | 'domainId'
  Prelude.Text ->
  -- | 'speakerId'
  Prelude.Text ->
  OptOutSpeaker
newOptOutSpeaker pDomainId_ pSpeakerId_ =
  OptOutSpeaker'
    { domainId = pDomainId_,
      speakerId = Data._Sensitive Lens.# pSpeakerId_
    }

-- | The identifier of the domain containing the speaker.
optOutSpeaker_domainId :: Lens.Lens' OptOutSpeaker Prelude.Text
optOutSpeaker_domainId = Lens.lens (\OptOutSpeaker' {domainId} -> domainId) (\s@OptOutSpeaker' {} a -> s {domainId = a} :: OptOutSpeaker)

-- | The identifier of the speaker you want opted-out.
optOutSpeaker_speakerId :: Lens.Lens' OptOutSpeaker Prelude.Text
optOutSpeaker_speakerId = Lens.lens (\OptOutSpeaker' {speakerId} -> speakerId) (\s@OptOutSpeaker' {} a -> s {speakerId = a} :: OptOutSpeaker) Prelude.. Data._Sensitive

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

instance Prelude.Hashable OptOutSpeaker where
  hashWithSalt _salt OptOutSpeaker' {..} =
    _salt
      `Prelude.hashWithSalt` domainId
      `Prelude.hashWithSalt` speakerId

instance Prelude.NFData OptOutSpeaker where
  rnf OptOutSpeaker' {..} =
    Prelude.rnf domainId
      `Prelude.seq` Prelude.rnf speakerId

instance Data.ToHeaders OptOutSpeaker where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ("VoiceID.OptOutSpeaker" :: Prelude.ByteString),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON OptOutSpeaker where
  toJSON OptOutSpeaker' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just ("DomainId" Data..= domainId),
            Prelude.Just ("SpeakerId" Data..= speakerId)
          ]
      )

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

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

-- | /See:/ 'newOptOutSpeakerResponse' smart constructor.
data OptOutSpeakerResponse = OptOutSpeakerResponse'
  { -- | Details about the opted-out speaker.
    speaker :: Prelude.Maybe Speaker,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'OptOutSpeakerResponse' 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:
--
-- 'speaker', 'optOutSpeakerResponse_speaker' - Details about the opted-out speaker.
--
-- 'httpStatus', 'optOutSpeakerResponse_httpStatus' - The response's http status code.
newOptOutSpeakerResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  OptOutSpeakerResponse
newOptOutSpeakerResponse pHttpStatus_ =
  OptOutSpeakerResponse'
    { speaker = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | Details about the opted-out speaker.
optOutSpeakerResponse_speaker :: Lens.Lens' OptOutSpeakerResponse (Prelude.Maybe Speaker)
optOutSpeakerResponse_speaker = Lens.lens (\OptOutSpeakerResponse' {speaker} -> speaker) (\s@OptOutSpeakerResponse' {} a -> s {speaker = a} :: OptOutSpeakerResponse)

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

instance Prelude.NFData OptOutSpeakerResponse where
  rnf OptOutSpeakerResponse' {..} =
    Prelude.rnf speaker
      `Prelude.seq` Prelude.rnf httpStatus