{-# 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.AlexaBusiness.RejectSkill
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Disassociates a skill from the organization under a user\'s AWS account.
-- If the skill is a private skill, it moves to an AcceptStatus of PENDING.
-- Any private or public skill that is rejected can be added later by
-- calling the ApproveSkill API.
module Amazonka.AlexaBusiness.RejectSkill
  ( -- * Creating a Request
    RejectSkill (..),
    newRejectSkill,

    -- * Request Lenses
    rejectSkill_skillId,

    -- * Destructuring the Response
    RejectSkillResponse (..),
    newRejectSkillResponse,

    -- * Response Lenses
    rejectSkillResponse_httpStatus,
  )
where

import Amazonka.AlexaBusiness.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:/ 'newRejectSkill' smart constructor.
data RejectSkill = RejectSkill'
  { -- | The unique identifier of the skill.
    RejectSkill -> Text
skillId :: Prelude.Text
  }
  deriving (RejectSkill -> RejectSkill -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RejectSkill -> RejectSkill -> Bool
$c/= :: RejectSkill -> RejectSkill -> Bool
== :: RejectSkill -> RejectSkill -> Bool
$c== :: RejectSkill -> RejectSkill -> Bool
Prelude.Eq, ReadPrec [RejectSkill]
ReadPrec RejectSkill
Int -> ReadS RejectSkill
ReadS [RejectSkill]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RejectSkill]
$creadListPrec :: ReadPrec [RejectSkill]
readPrec :: ReadPrec RejectSkill
$creadPrec :: ReadPrec RejectSkill
readList :: ReadS [RejectSkill]
$creadList :: ReadS [RejectSkill]
readsPrec :: Int -> ReadS RejectSkill
$creadsPrec :: Int -> ReadS RejectSkill
Prelude.Read, Int -> RejectSkill -> ShowS
[RejectSkill] -> ShowS
RejectSkill -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RejectSkill] -> ShowS
$cshowList :: [RejectSkill] -> ShowS
show :: RejectSkill -> String
$cshow :: RejectSkill -> String
showsPrec :: Int -> RejectSkill -> ShowS
$cshowsPrec :: Int -> RejectSkill -> ShowS
Prelude.Show, forall x. Rep RejectSkill x -> RejectSkill
forall x. RejectSkill -> Rep RejectSkill x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RejectSkill x -> RejectSkill
$cfrom :: forall x. RejectSkill -> Rep RejectSkill x
Prelude.Generic)

-- |
-- Create a value of 'RejectSkill' 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:
--
-- 'skillId', 'rejectSkill_skillId' - The unique identifier of the skill.
newRejectSkill ::
  -- | 'skillId'
  Prelude.Text ->
  RejectSkill
newRejectSkill :: Text -> RejectSkill
newRejectSkill Text
pSkillId_ =
  RejectSkill' {$sel:skillId:RejectSkill' :: Text
skillId = Text
pSkillId_}

-- | The unique identifier of the skill.
rejectSkill_skillId :: Lens.Lens' RejectSkill Prelude.Text
rejectSkill_skillId :: Lens' RejectSkill Text
rejectSkill_skillId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RejectSkill' {Text
skillId :: Text
$sel:skillId:RejectSkill' :: RejectSkill -> Text
skillId} -> Text
skillId) (\s :: RejectSkill
s@RejectSkill' {} Text
a -> RejectSkill
s {$sel:skillId:RejectSkill' :: Text
skillId = Text
a} :: RejectSkill)

instance Core.AWSRequest RejectSkill where
  type AWSResponse RejectSkill = RejectSkillResponse
  request :: (Service -> Service) -> RejectSkill -> Request RejectSkill
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 RejectSkill
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse RejectSkill)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> RejectSkillResponse
RejectSkillResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable RejectSkill where
  hashWithSalt :: Int -> RejectSkill -> Int
hashWithSalt Int
_salt RejectSkill' {Text
skillId :: Text
$sel:skillId:RejectSkill' :: RejectSkill -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
skillId

instance Prelude.NFData RejectSkill where
  rnf :: RejectSkill -> ()
rnf RejectSkill' {Text
skillId :: Text
$sel:skillId:RejectSkill' :: RejectSkill -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
skillId

instance Data.ToHeaders RejectSkill where
  toHeaders :: RejectSkill -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AlexaForBusiness.RejectSkill" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON RejectSkill where
  toJSON :: RejectSkill -> Value
toJSON RejectSkill' {Text
skillId :: Text
$sel:skillId:RejectSkill' :: RejectSkill -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"SkillId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
skillId)]
      )

instance Data.ToPath RejectSkill where
  toPath :: RejectSkill -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'RejectSkillResponse' 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', 'rejectSkillResponse_httpStatus' - The response's http status code.
newRejectSkillResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  RejectSkillResponse
newRejectSkillResponse :: Int -> RejectSkillResponse
newRejectSkillResponse Int
pHttpStatus_ =
  RejectSkillResponse' {$sel:httpStatus:RejectSkillResponse' :: Int
httpStatus = Int
pHttpStatus_}

-- | The response's http status code.
rejectSkillResponse_httpStatus :: Lens.Lens' RejectSkillResponse Prelude.Int
rejectSkillResponse_httpStatus :: Lens' RejectSkillResponse Int
rejectSkillResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RejectSkillResponse' {Int
httpStatus :: Int
$sel:httpStatus:RejectSkillResponse' :: RejectSkillResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: RejectSkillResponse
s@RejectSkillResponse' {} Int
a -> RejectSkillResponse
s {$sel:httpStatus:RejectSkillResponse' :: Int
httpStatus = Int
a} :: RejectSkillResponse)

instance Prelude.NFData RejectSkillResponse where
  rnf :: RejectSkillResponse -> ()
rnf RejectSkillResponse' {Int
httpStatus :: Int
$sel:httpStatus:RejectSkillResponse' :: RejectSkillResponse -> Int
..} = forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus