{-# 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.Connect.DisassociateQueueQuickConnects
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- This API is in preview release for Amazon Connect and is subject to
-- change.
--
-- Disassociates a set of quick connects from a queue.
module Amazonka.Connect.DisassociateQueueQuickConnects
  ( -- * Creating a Request
    DisassociateQueueQuickConnects (..),
    newDisassociateQueueQuickConnects,

    -- * Request Lenses
    disassociateQueueQuickConnects_instanceId,
    disassociateQueueQuickConnects_queueId,
    disassociateQueueQuickConnects_quickConnectIds,

    -- * Destructuring the Response
    DisassociateQueueQuickConnectsResponse (..),
    newDisassociateQueueQuickConnectsResponse,
  )
where

import Amazonka.Connect.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

-- | /See:/ 'newDisassociateQueueQuickConnects' smart constructor.
data DisassociateQueueQuickConnects = DisassociateQueueQuickConnects'
  { -- | The identifier of the Amazon Connect instance. You can find the
    -- instanceId in the ARN of the instance.
    DisassociateQueueQuickConnects -> Text
instanceId :: Prelude.Text,
    -- | The identifier for the queue.
    DisassociateQueueQuickConnects -> Text
queueId :: Prelude.Text,
    -- | The quick connects to disassociate from the queue.
    DisassociateQueueQuickConnects -> NonEmpty Text
quickConnectIds :: Prelude.NonEmpty Prelude.Text
  }
  deriving (DisassociateQueueQuickConnects
-> DisassociateQueueQuickConnects -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DisassociateQueueQuickConnects
-> DisassociateQueueQuickConnects -> Bool
$c/= :: DisassociateQueueQuickConnects
-> DisassociateQueueQuickConnects -> Bool
== :: DisassociateQueueQuickConnects
-> DisassociateQueueQuickConnects -> Bool
$c== :: DisassociateQueueQuickConnects
-> DisassociateQueueQuickConnects -> Bool
Prelude.Eq, ReadPrec [DisassociateQueueQuickConnects]
ReadPrec DisassociateQueueQuickConnects
Int -> ReadS DisassociateQueueQuickConnects
ReadS [DisassociateQueueQuickConnects]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DisassociateQueueQuickConnects]
$creadListPrec :: ReadPrec [DisassociateQueueQuickConnects]
readPrec :: ReadPrec DisassociateQueueQuickConnects
$creadPrec :: ReadPrec DisassociateQueueQuickConnects
readList :: ReadS [DisassociateQueueQuickConnects]
$creadList :: ReadS [DisassociateQueueQuickConnects]
readsPrec :: Int -> ReadS DisassociateQueueQuickConnects
$creadsPrec :: Int -> ReadS DisassociateQueueQuickConnects
Prelude.Read, Int -> DisassociateQueueQuickConnects -> ShowS
[DisassociateQueueQuickConnects] -> ShowS
DisassociateQueueQuickConnects -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DisassociateQueueQuickConnects] -> ShowS
$cshowList :: [DisassociateQueueQuickConnects] -> ShowS
show :: DisassociateQueueQuickConnects -> String
$cshow :: DisassociateQueueQuickConnects -> String
showsPrec :: Int -> DisassociateQueueQuickConnects -> ShowS
$cshowsPrec :: Int -> DisassociateQueueQuickConnects -> ShowS
Prelude.Show, forall x.
Rep DisassociateQueueQuickConnects x
-> DisassociateQueueQuickConnects
forall x.
DisassociateQueueQuickConnects
-> Rep DisassociateQueueQuickConnects x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DisassociateQueueQuickConnects x
-> DisassociateQueueQuickConnects
$cfrom :: forall x.
DisassociateQueueQuickConnects
-> Rep DisassociateQueueQuickConnects x
Prelude.Generic)

-- |
-- Create a value of 'DisassociateQueueQuickConnects' 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:
--
-- 'instanceId', 'disassociateQueueQuickConnects_instanceId' - The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
--
-- 'queueId', 'disassociateQueueQuickConnects_queueId' - The identifier for the queue.
--
-- 'quickConnectIds', 'disassociateQueueQuickConnects_quickConnectIds' - The quick connects to disassociate from the queue.
newDisassociateQueueQuickConnects ::
  -- | 'instanceId'
  Prelude.Text ->
  -- | 'queueId'
  Prelude.Text ->
  -- | 'quickConnectIds'
  Prelude.NonEmpty Prelude.Text ->
  DisassociateQueueQuickConnects
newDisassociateQueueQuickConnects :: Text -> Text -> NonEmpty Text -> DisassociateQueueQuickConnects
newDisassociateQueueQuickConnects
  Text
pInstanceId_
  Text
pQueueId_
  NonEmpty Text
pQuickConnectIds_ =
    DisassociateQueueQuickConnects'
      { $sel:instanceId:DisassociateQueueQuickConnects' :: Text
instanceId =
          Text
pInstanceId_,
        $sel:queueId:DisassociateQueueQuickConnects' :: Text
queueId = Text
pQueueId_,
        $sel:quickConnectIds:DisassociateQueueQuickConnects' :: NonEmpty Text
quickConnectIds =
          forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty Text
pQuickConnectIds_
      }

-- | The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
disassociateQueueQuickConnects_instanceId :: Lens.Lens' DisassociateQueueQuickConnects Prelude.Text
disassociateQueueQuickConnects_instanceId :: Lens' DisassociateQueueQuickConnects Text
disassociateQueueQuickConnects_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DisassociateQueueQuickConnects' {Text
instanceId :: Text
$sel:instanceId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
instanceId} -> Text
instanceId) (\s :: DisassociateQueueQuickConnects
s@DisassociateQueueQuickConnects' {} Text
a -> DisassociateQueueQuickConnects
s {$sel:instanceId:DisassociateQueueQuickConnects' :: Text
instanceId = Text
a} :: DisassociateQueueQuickConnects)

-- | The identifier for the queue.
disassociateQueueQuickConnects_queueId :: Lens.Lens' DisassociateQueueQuickConnects Prelude.Text
disassociateQueueQuickConnects_queueId :: Lens' DisassociateQueueQuickConnects Text
disassociateQueueQuickConnects_queueId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DisassociateQueueQuickConnects' {Text
queueId :: Text
$sel:queueId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
queueId} -> Text
queueId) (\s :: DisassociateQueueQuickConnects
s@DisassociateQueueQuickConnects' {} Text
a -> DisassociateQueueQuickConnects
s {$sel:queueId:DisassociateQueueQuickConnects' :: Text
queueId = Text
a} :: DisassociateQueueQuickConnects)

-- | The quick connects to disassociate from the queue.
disassociateQueueQuickConnects_quickConnectIds :: Lens.Lens' DisassociateQueueQuickConnects (Prelude.NonEmpty Prelude.Text)
disassociateQueueQuickConnects_quickConnectIds :: Lens' DisassociateQueueQuickConnects (NonEmpty Text)
disassociateQueueQuickConnects_quickConnectIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DisassociateQueueQuickConnects' {NonEmpty Text
quickConnectIds :: NonEmpty Text
$sel:quickConnectIds:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> NonEmpty Text
quickConnectIds} -> NonEmpty Text
quickConnectIds) (\s :: DisassociateQueueQuickConnects
s@DisassociateQueueQuickConnects' {} NonEmpty Text
a -> DisassociateQueueQuickConnects
s {$sel:quickConnectIds:DisassociateQueueQuickConnects' :: NonEmpty Text
quickConnectIds = NonEmpty Text
a} :: DisassociateQueueQuickConnects) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSRequest
    DisassociateQueueQuickConnects
  where
  type
    AWSResponse DisassociateQueueQuickConnects =
      DisassociateQueueQuickConnectsResponse
  request :: (Service -> Service)
-> DisassociateQueueQuickConnects
-> Request DisassociateQueueQuickConnects
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DisassociateQueueQuickConnects
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DisassociateQueueQuickConnects)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull
      DisassociateQueueQuickConnectsResponse
DisassociateQueueQuickConnectsResponse'

instance
  Prelude.Hashable
    DisassociateQueueQuickConnects
  where
  hashWithSalt :: Int -> DisassociateQueueQuickConnects -> Int
hashWithSalt
    Int
_salt
    DisassociateQueueQuickConnects' {NonEmpty Text
Text
quickConnectIds :: NonEmpty Text
queueId :: Text
instanceId :: Text
$sel:quickConnectIds:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> NonEmpty Text
$sel:queueId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
$sel:instanceId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
queueId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty Text
quickConnectIds

instance
  Prelude.NFData
    DisassociateQueueQuickConnects
  where
  rnf :: DisassociateQueueQuickConnects -> ()
rnf DisassociateQueueQuickConnects' {NonEmpty Text
Text
quickConnectIds :: NonEmpty Text
queueId :: Text
instanceId :: Text
$sel:quickConnectIds:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> NonEmpty Text
$sel:queueId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
$sel:instanceId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
instanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
queueId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty Text
quickConnectIds

instance
  Data.ToHeaders
    DisassociateQueueQuickConnects
  where
  toHeaders :: DisassociateQueueQuickConnects -> [Header]
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DisassociateQueueQuickConnects where
  toJSON :: DisassociateQueueQuickConnects -> Value
toJSON DisassociateQueueQuickConnects' {NonEmpty Text
Text
quickConnectIds :: NonEmpty Text
queueId :: Text
instanceId :: Text
$sel:quickConnectIds:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> NonEmpty Text
$sel:queueId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
$sel:instanceId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"QuickConnectIds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty Text
quickConnectIds)
          ]
      )

instance Data.ToPath DisassociateQueueQuickConnects where
  toPath :: DisassociateQueueQuickConnects -> ByteString
toPath DisassociateQueueQuickConnects' {NonEmpty Text
Text
quickConnectIds :: NonEmpty Text
queueId :: Text
instanceId :: Text
$sel:quickConnectIds:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> NonEmpty Text
$sel:queueId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
$sel:instanceId:DisassociateQueueQuickConnects' :: DisassociateQueueQuickConnects -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/queues/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
instanceId,
        ByteString
"/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
queueId,
        ByteString
"/disassociate-quick-connects"
      ]

instance Data.ToQuery DisassociateQueueQuickConnects where
  toQuery :: DisassociateQueueQuickConnects -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDisassociateQueueQuickConnectsResponse' smart constructor.
data DisassociateQueueQuickConnectsResponse = DisassociateQueueQuickConnectsResponse'
  {
  }
  deriving (DisassociateQueueQuickConnectsResponse
-> DisassociateQueueQuickConnectsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DisassociateQueueQuickConnectsResponse
-> DisassociateQueueQuickConnectsResponse -> Bool
$c/= :: DisassociateQueueQuickConnectsResponse
-> DisassociateQueueQuickConnectsResponse -> Bool
== :: DisassociateQueueQuickConnectsResponse
-> DisassociateQueueQuickConnectsResponse -> Bool
$c== :: DisassociateQueueQuickConnectsResponse
-> DisassociateQueueQuickConnectsResponse -> Bool
Prelude.Eq, ReadPrec [DisassociateQueueQuickConnectsResponse]
ReadPrec DisassociateQueueQuickConnectsResponse
Int -> ReadS DisassociateQueueQuickConnectsResponse
ReadS [DisassociateQueueQuickConnectsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DisassociateQueueQuickConnectsResponse]
$creadListPrec :: ReadPrec [DisassociateQueueQuickConnectsResponse]
readPrec :: ReadPrec DisassociateQueueQuickConnectsResponse
$creadPrec :: ReadPrec DisassociateQueueQuickConnectsResponse
readList :: ReadS [DisassociateQueueQuickConnectsResponse]
$creadList :: ReadS [DisassociateQueueQuickConnectsResponse]
readsPrec :: Int -> ReadS DisassociateQueueQuickConnectsResponse
$creadsPrec :: Int -> ReadS DisassociateQueueQuickConnectsResponse
Prelude.Read, Int -> DisassociateQueueQuickConnectsResponse -> ShowS
[DisassociateQueueQuickConnectsResponse] -> ShowS
DisassociateQueueQuickConnectsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DisassociateQueueQuickConnectsResponse] -> ShowS
$cshowList :: [DisassociateQueueQuickConnectsResponse] -> ShowS
show :: DisassociateQueueQuickConnectsResponse -> String
$cshow :: DisassociateQueueQuickConnectsResponse -> String
showsPrec :: Int -> DisassociateQueueQuickConnectsResponse -> ShowS
$cshowsPrec :: Int -> DisassociateQueueQuickConnectsResponse -> ShowS
Prelude.Show, forall x.
Rep DisassociateQueueQuickConnectsResponse x
-> DisassociateQueueQuickConnectsResponse
forall x.
DisassociateQueueQuickConnectsResponse
-> Rep DisassociateQueueQuickConnectsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DisassociateQueueQuickConnectsResponse x
-> DisassociateQueueQuickConnectsResponse
$cfrom :: forall x.
DisassociateQueueQuickConnectsResponse
-> Rep DisassociateQueueQuickConnectsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DisassociateQueueQuickConnectsResponse' 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.
newDisassociateQueueQuickConnectsResponse ::
  DisassociateQueueQuickConnectsResponse
newDisassociateQueueQuickConnectsResponse :: DisassociateQueueQuickConnectsResponse
newDisassociateQueueQuickConnectsResponse =
  DisassociateQueueQuickConnectsResponse
DisassociateQueueQuickConnectsResponse'

instance
  Prelude.NFData
    DisassociateQueueQuickConnectsResponse
  where
  rnf :: DisassociateQueueQuickConnectsResponse -> ()
rnf DisassociateQueueQuickConnectsResponse
_ = ()