{-# 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.OAM.TagResource -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Assigns one or more tags (key-value pairs) to the specified resource. -- Both sinks and links can be tagged. -- -- Tags can help you organize and categorize your resources. You can also -- use them to scope user permissions by granting a user permission to -- access or change only resources with certain tag values. -- -- Tags don\'t have any semantic meaning to Amazon Web Services and are -- interpreted strictly as strings of characters. -- -- You can use the @TagResource@ action with a resource that already has -- tags. If you specify a new tag key for the alarm, this tag is appended -- to the list of tags associated with the alarm. If you specify a tag key -- that is already associated with the alarm, the new tag value that you -- specify replaces the previous value for that tag. -- -- You can associate as many as 50 tags with a resource. -- -- Unlike tagging permissions in other Amazon Web Services services, to tag -- or untag links and sinks you must have the @oam:ResourceTag@ permission. -- The @iam:ResourceTag@ permission does not allow you to tag and untag -- links and sinks. module Amazonka.OAM.TagResource ( -- * Creating a Request TagResource (..), newTagResource, -- * Request Lenses tagResource_resourceArn, tagResource_tags, -- * Destructuring the Response TagResourceResponse (..), newTagResourceResponse, -- * Response Lenses tagResourceResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.OAM.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newTagResource' smart constructor. data TagResource = TagResource' { -- | The ARN of the resource that you\'re adding tags to. -- -- The ARN format of a sink is -- @arn:aws:oam:@/@Region@/@:@/@account-id@/@:sink\/@/@sink-id@/@ @ -- -- The ARN format of a link is -- @arn:aws:oam:@/@Region@/@:@/@account-id@/@:link\/@/@link-id@/@ @ -- -- For more information about ARN format, see -- . resourceArn :: Prelude.Text, -- | The list of key-value pairs to associate with the resource. tags :: Prelude.HashMap Prelude.Text Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'TagResource' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'resourceArn', 'tagResource_resourceArn' - The ARN of the resource that you\'re adding tags to. -- -- The ARN format of a sink is -- @arn:aws:oam:@/@Region@/@:@/@account-id@/@:sink\/@/@sink-id@/@ @ -- -- The ARN format of a link is -- @arn:aws:oam:@/@Region@/@:@/@account-id@/@:link\/@/@link-id@/@ @ -- -- For more information about ARN format, see -- . -- -- 'tags', 'tagResource_tags' - The list of key-value pairs to associate with the resource. newTagResource :: -- | 'resourceArn' Prelude.Text -> TagResource newTagResource pResourceArn_ = TagResource' { resourceArn = pResourceArn_, tags = Prelude.mempty } -- | The ARN of the resource that you\'re adding tags to. -- -- The ARN format of a sink is -- @arn:aws:oam:@/@Region@/@:@/@account-id@/@:sink\/@/@sink-id@/@ @ -- -- The ARN format of a link is -- @arn:aws:oam:@/@Region@/@:@/@account-id@/@:link\/@/@link-id@/@ @ -- -- For more information about ARN format, see -- . tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource) -- | The list of key-value pairs to associate with the resource. tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text) tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced instance Core.AWSRequest TagResource where type AWSResponse TagResource = TagResourceResponse request overrides = Request.putJSON (overrides defaultService) response = Response.receiveEmpty ( \s h x -> TagResourceResponse' Prelude.<$> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable TagResource where hashWithSalt _salt TagResource' {..} = _salt `Prelude.hashWithSalt` resourceArn `Prelude.hashWithSalt` tags instance Prelude.NFData TagResource where rnf TagResource' {..} = Prelude.rnf resourceArn `Prelude.seq` Prelude.rnf tags instance Data.ToHeaders TagResource where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON TagResource where toJSON TagResource' {..} = Data.object ( Prelude.catMaybes [Prelude.Just ("Tags" Data..= tags)] ) instance Data.ToPath TagResource where toPath TagResource' {..} = Prelude.mconcat ["/tags/", Data.toBS resourceArn] instance Data.ToQuery TagResource where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newTagResourceResponse' smart constructor. data TagResourceResponse = TagResourceResponse' { -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'TagResourceResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code. newTagResourceResponse :: -- | 'httpStatus' Prelude.Int -> TagResourceResponse newTagResourceResponse pHttpStatus_ = TagResourceResponse' {httpStatus = pHttpStatus_} -- | The response's http status code. tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse) instance Prelude.NFData TagResourceResponse where rnf TagResourceResponse' {..} = Prelude.rnf httpStatus