{-# 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.ListTags -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Lists all tags for the specified resource. -- -- This operation returns paginated results. module Amazonka.AlexaBusiness.ListTags ( -- * Creating a Request ListTags (..), newListTags, -- * Request Lenses listTags_maxResults, listTags_nextToken, listTags_arn, -- * Destructuring the Response ListTagsResponse (..), newListTagsResponse, -- * Response Lenses listTagsResponse_nextToken, listTagsResponse_tags, listTagsResponse_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:/ 'newListTags' smart constructor. data ListTags = ListTags' { -- | The maximum number of results to include in the response. If more -- results exist than the specified @MaxResults@ value, a token is included -- in the response so that the remaining results can be retrieved. maxResults :: Prelude.Maybe Prelude.Natural, -- | An optional token returned from a prior request. Use this token for -- pagination of results from this action. If this parameter is specified, -- the response includes only results beyond the token, up to the value -- specified by @MaxResults@. nextToken :: Prelude.Maybe Prelude.Text, -- | The ARN of the specified resource for which to list tags. arn :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListTags' 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: -- -- 'maxResults', 'listTags_maxResults' - The maximum number of results to include in the response. If more -- results exist than the specified @MaxResults@ value, a token is included -- in the response so that the remaining results can be retrieved. -- -- 'nextToken', 'listTags_nextToken' - An optional token returned from a prior request. Use this token for -- pagination of results from this action. If this parameter is specified, -- the response includes only results beyond the token, up to the value -- specified by @MaxResults@. -- -- 'arn', 'listTags_arn' - The ARN of the specified resource for which to list tags. newListTags :: -- | 'arn' Prelude.Text -> ListTags newListTags pArn_ = ListTags' { maxResults = Prelude.Nothing, nextToken = Prelude.Nothing, arn = pArn_ } -- | The maximum number of results to include in the response. If more -- results exist than the specified @MaxResults@ value, a token is included -- in the response so that the remaining results can be retrieved. listTags_maxResults :: Lens.Lens' ListTags (Prelude.Maybe Prelude.Natural) listTags_maxResults = Lens.lens (\ListTags' {maxResults} -> maxResults) (\s@ListTags' {} a -> s {maxResults = a} :: ListTags) -- | An optional token returned from a prior request. Use this token for -- pagination of results from this action. If this parameter is specified, -- the response includes only results beyond the token, up to the value -- specified by @MaxResults@. listTags_nextToken :: Lens.Lens' ListTags (Prelude.Maybe Prelude.Text) listTags_nextToken = Lens.lens (\ListTags' {nextToken} -> nextToken) (\s@ListTags' {} a -> s {nextToken = a} :: ListTags) -- | The ARN of the specified resource for which to list tags. listTags_arn :: Lens.Lens' ListTags Prelude.Text listTags_arn = Lens.lens (\ListTags' {arn} -> arn) (\s@ListTags' {} a -> s {arn = a} :: ListTags) instance Core.AWSPager ListTags where page rq rs | Core.stop ( rs Lens.^? listTagsResponse_nextToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop ( rs Lens.^? listTagsResponse_tags Prelude.. Lens._Just ) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& listTags_nextToken Lens..~ rs Lens.^? listTagsResponse_nextToken Prelude.. Lens._Just instance Core.AWSRequest ListTags where type AWSResponse ListTags = ListTagsResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> ListTagsResponse' Prelude.<$> (x Data..?> "NextToken") Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty) Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable ListTags where hashWithSalt _salt ListTags' {..} = _salt `Prelude.hashWithSalt` maxResults `Prelude.hashWithSalt` nextToken `Prelude.hashWithSalt` arn instance Prelude.NFData ListTags where rnf ListTags' {..} = Prelude.rnf maxResults `Prelude.seq` Prelude.rnf nextToken `Prelude.seq` Prelude.rnf arn instance Data.ToHeaders ListTags where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ("AlexaForBusiness.ListTags" :: Prelude.ByteString), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON ListTags where toJSON ListTags' {..} = Data.object ( Prelude.catMaybes [ ("MaxResults" Data..=) Prelude.<$> maxResults, ("NextToken" Data..=) Prelude.<$> nextToken, Prelude.Just ("Arn" Data..= arn) ] ) instance Data.ToPath ListTags where toPath = Prelude.const "/" instance Data.ToQuery ListTags where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newListTagsResponse' smart constructor. data ListTagsResponse = ListTagsResponse' { -- | The token returned to indicate that there is more data available. nextToken :: Prelude.Maybe Prelude.Text, -- | The tags requested for the specified resource. tags :: Prelude.Maybe [Tag], -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListTagsResponse' 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: -- -- 'nextToken', 'listTagsResponse_nextToken' - The token returned to indicate that there is more data available. -- -- 'tags', 'listTagsResponse_tags' - The tags requested for the specified resource. -- -- 'httpStatus', 'listTagsResponse_httpStatus' - The response's http status code. newListTagsResponse :: -- | 'httpStatus' Prelude.Int -> ListTagsResponse newListTagsResponse pHttpStatus_ = ListTagsResponse' { nextToken = Prelude.Nothing, tags = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The token returned to indicate that there is more data available. listTagsResponse_nextToken :: Lens.Lens' ListTagsResponse (Prelude.Maybe Prelude.Text) listTagsResponse_nextToken = Lens.lens (\ListTagsResponse' {nextToken} -> nextToken) (\s@ListTagsResponse' {} a -> s {nextToken = a} :: ListTagsResponse) -- | The tags requested for the specified resource. listTagsResponse_tags :: Lens.Lens' ListTagsResponse (Prelude.Maybe [Tag]) listTagsResponse_tags = Lens.lens (\ListTagsResponse' {tags} -> tags) (\s@ListTagsResponse' {} a -> s {tags = a} :: ListTagsResponse) Prelude.. Lens.mapping Lens.coerced -- | The response's http status code. listTagsResponse_httpStatus :: Lens.Lens' ListTagsResponse Prelude.Int listTagsResponse_httpStatus = Lens.lens (\ListTagsResponse' {httpStatus} -> httpStatus) (\s@ListTagsResponse' {} a -> s {httpStatus = a} :: ListTagsResponse) instance Prelude.NFData ListTagsResponse where rnf ListTagsResponse' {..} = Prelude.rnf nextToken `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf httpStatus