{-# 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.ChimeSdkMeetings.UntagResource
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Removes the specified tags from the specified resources. When you
-- specify a tag key, the action removes both that key and its associated
-- value. The operation succeeds even if you attempt to remove tags from a
-- resource that were already removed. Note the following:
--
-- - To remove tags from a resource, you need the necessary permissions
-- for the service that the resource belongs to as well as permissions
-- for removing tags. For more information, see the documentation for
-- the service whose resource you want to untag.
--
-- - You can only tag resources that are located in the specified AWS
-- Region for the calling AWS account.
--
-- __Minimum permissions__
--
-- In addition to the @tag:UntagResources@ permission required by this
-- operation, you must also have the remove tags permission defined by the
-- service that created the resource. For example, to remove the tags from
-- an Amazon EC2 instance using the @UntagResources@ operation, you must
-- have both of the following permissions:
--
-- @tag:UntagResource@
--
-- @ChimeSDKMeetings:DeleteTags@
module Amazonka.ChimeSdkMeetings.UntagResource
( -- * Creating a Request
UntagResource (..),
newUntagResource,
-- * Request Lenses
untagResource_resourceARN,
untagResource_tagKeys,
-- * Destructuring the Response
UntagResourceResponse (..),
newUntagResourceResponse,
-- * Response Lenses
untagResourceResponse_httpStatus,
)
where
import Amazonka.ChimeSdkMeetings.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:/ 'newUntagResource' smart constructor.
data UntagResource = UntagResource'
{ -- | The ARN of the resource that you\'re removing tags from.
resourceARN :: Prelude.Text,
-- | The tag keys being removed from the resources.
tagKeys :: [Prelude.Text]
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'UntagResource' 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:
--
-- 'resourceARN', 'untagResource_resourceARN' - The ARN of the resource that you\'re removing tags from.
--
-- 'tagKeys', 'untagResource_tagKeys' - The tag keys being removed from the resources.
newUntagResource ::
-- | 'resourceARN'
Prelude.Text ->
UntagResource
newUntagResource pResourceARN_ =
UntagResource'
{ resourceARN = pResourceARN_,
tagKeys = Prelude.mempty
}
-- | The ARN of the resource that you\'re removing tags from.
untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource)
-- | The tag keys being removed from the resources.
untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
instance Core.AWSRequest UntagResource where
type
AWSResponse UntagResource =
UntagResourceResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveEmpty
( \s h x ->
UntagResourceResponse'
Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable UntagResource where
hashWithSalt _salt UntagResource' {..} =
_salt
`Prelude.hashWithSalt` resourceARN
`Prelude.hashWithSalt` tagKeys
instance Prelude.NFData UntagResource where
rnf UntagResource' {..} =
Prelude.rnf resourceARN
`Prelude.seq` Prelude.rnf tagKeys
instance Data.ToHeaders UntagResource where
toHeaders = Prelude.const Prelude.mempty
instance Data.ToJSON UntagResource where
toJSON UntagResource' {..} =
Data.object
( Prelude.catMaybes
[ Prelude.Just ("ResourceARN" Data..= resourceARN),
Prelude.Just ("TagKeys" Data..= tagKeys)
]
)
instance Data.ToPath UntagResource where
toPath = Prelude.const "/tags"
instance Data.ToQuery UntagResource where
toQuery =
Prelude.const
(Prelude.mconcat ["operation=untag-resource"])
-- | /See:/ 'newUntagResourceResponse' smart constructor.
data UntagResourceResponse = UntagResourceResponse'
{ -- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'UntagResourceResponse' 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', 'untagResourceResponse_httpStatus' - The response's http status code.
newUntagResourceResponse ::
-- | 'httpStatus'
Prelude.Int ->
UntagResourceResponse
newUntagResourceResponse pHttpStatus_ =
UntagResourceResponse' {httpStatus = pHttpStatus_}
-- | The response's http status code.
untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
instance Prelude.NFData UntagResourceResponse where
rnf UntagResourceResponse' {..} =
Prelude.rnf httpStatus