{-# 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.ResourceGroupsTagging.GetTagKeys -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns all tag keys currently in use in the specified Amazon Web -- Services Region for the calling account. -- -- This operation supports pagination, where the response can be sent in -- multiple pages. You should check the @PaginationToken@ response -- parameter to determine if there are additional results available to -- return. Repeat the query, passing the @PaginationToken@ response -- parameter value as an input to the next request until you recieve a -- @null@ value. A null value for @PaginationToken@ indicates that there -- are no more results waiting to be returned. -- -- This operation returns paginated results. module Amazonka.ResourceGroupsTagging.GetTagKeys ( -- * Creating a Request GetTagKeys (..), newGetTagKeys, -- * Request Lenses getTagKeys_paginationToken, -- * Destructuring the Response GetTagKeysResponse (..), newGetTagKeysResponse, -- * Response Lenses getTagKeysResponse_paginationToken, getTagKeysResponse_tagKeys, getTagKeysResponse_httpStatus, ) where 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 Amazonka.ResourceGroupsTagging.Types import qualified Amazonka.Response as Response -- | /See:/ 'newGetTagKeys' smart constructor. data GetTagKeys = GetTagKeys' { -- | Specifies a @PaginationToken@ response value from a previous request to -- indicate that you want the next page of results. Leave this parameter -- empty in your initial request. paginationToken :: Prelude.Maybe Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'GetTagKeys' 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: -- -- 'paginationToken', 'getTagKeys_paginationToken' - Specifies a @PaginationToken@ response value from a previous request to -- indicate that you want the next page of results. Leave this parameter -- empty in your initial request. newGetTagKeys :: GetTagKeys newGetTagKeys = GetTagKeys' {paginationToken = Prelude.Nothing} -- | Specifies a @PaginationToken@ response value from a previous request to -- indicate that you want the next page of results. Leave this parameter -- empty in your initial request. getTagKeys_paginationToken :: Lens.Lens' GetTagKeys (Prelude.Maybe Prelude.Text) getTagKeys_paginationToken = Lens.lens (\GetTagKeys' {paginationToken} -> paginationToken) (\s@GetTagKeys' {} a -> s {paginationToken = a} :: GetTagKeys) instance Core.AWSPager GetTagKeys where page rq rs | Core.stop ( rs Lens.^? getTagKeysResponse_paginationToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop ( rs Lens.^? getTagKeysResponse_tagKeys Prelude.. Lens._Just ) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& getTagKeys_paginationToken Lens..~ rs Lens.^? getTagKeysResponse_paginationToken Prelude.. Lens._Just instance Core.AWSRequest GetTagKeys where type AWSResponse GetTagKeys = GetTagKeysResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> GetTagKeysResponse' Prelude.<$> (x Data..?> "PaginationToken") Prelude.<*> (x Data..?> "TagKeys" Core..!@ Prelude.mempty) Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable GetTagKeys where hashWithSalt _salt GetTagKeys' {..} = _salt `Prelude.hashWithSalt` paginationToken instance Prelude.NFData GetTagKeys where rnf GetTagKeys' {..} = Prelude.rnf paginationToken instance Data.ToHeaders GetTagKeys where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "ResourceGroupsTaggingAPI_20170126.GetTagKeys" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON GetTagKeys where toJSON GetTagKeys' {..} = Data.object ( Prelude.catMaybes [ ("PaginationToken" Data..=) Prelude.<$> paginationToken ] ) instance Data.ToPath GetTagKeys where toPath = Prelude.const "/" instance Data.ToQuery GetTagKeys where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newGetTagKeysResponse' smart constructor. data GetTagKeysResponse = GetTagKeysResponse' { -- | A string that indicates that there is more data available than this -- response contains. To receive the next part of the response, specify -- this response value as the @PaginationToken@ value in the request for -- the next page. paginationToken :: Prelude.Maybe Prelude.Text, -- | A list of all tag keys in the Amazon Web Services account. tagKeys :: Prelude.Maybe [Prelude.Text], -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'GetTagKeysResponse' 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: -- -- 'paginationToken', 'getTagKeysResponse_paginationToken' - A string that indicates that there is more data available than this -- response contains. To receive the next part of the response, specify -- this response value as the @PaginationToken@ value in the request for -- the next page. -- -- 'tagKeys', 'getTagKeysResponse_tagKeys' - A list of all tag keys in the Amazon Web Services account. -- -- 'httpStatus', 'getTagKeysResponse_httpStatus' - The response's http status code. newGetTagKeysResponse :: -- | 'httpStatus' Prelude.Int -> GetTagKeysResponse newGetTagKeysResponse pHttpStatus_ = GetTagKeysResponse' { paginationToken = Prelude.Nothing, tagKeys = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | A string that indicates that there is more data available than this -- response contains. To receive the next part of the response, specify -- this response value as the @PaginationToken@ value in the request for -- the next page. getTagKeysResponse_paginationToken :: Lens.Lens' GetTagKeysResponse (Prelude.Maybe Prelude.Text) getTagKeysResponse_paginationToken = Lens.lens (\GetTagKeysResponse' {paginationToken} -> paginationToken) (\s@GetTagKeysResponse' {} a -> s {paginationToken = a} :: GetTagKeysResponse) -- | A list of all tag keys in the Amazon Web Services account. getTagKeysResponse_tagKeys :: Lens.Lens' GetTagKeysResponse (Prelude.Maybe [Prelude.Text]) getTagKeysResponse_tagKeys = Lens.lens (\GetTagKeysResponse' {tagKeys} -> tagKeys) (\s@GetTagKeysResponse' {} a -> s {tagKeys = a} :: GetTagKeysResponse) Prelude.. Lens.mapping Lens.coerced -- | The response's http status code. getTagKeysResponse_httpStatus :: Lens.Lens' GetTagKeysResponse Prelude.Int getTagKeysResponse_httpStatus = Lens.lens (\GetTagKeysResponse' {httpStatus} -> httpStatus) (\s@GetTagKeysResponse' {} a -> s {httpStatus = a} :: GetTagKeysResponse) instance Prelude.NFData GetTagKeysResponse where rnf GetTagKeysResponse' {..} = Prelude.rnf paginationToken `Prelude.seq` Prelude.rnf tagKeys `Prelude.seq` Prelude.rnf httpStatus