{-# 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.RedshiftServerLess.ListUsageLimits -- 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 usage limits within Amazon Redshift Serverless. -- -- This operation returns paginated results. module Amazonka.RedshiftServerLess.ListUsageLimits ( -- * Creating a Request ListUsageLimits (..), newListUsageLimits, -- * Request Lenses listUsageLimits_maxResults, listUsageLimits_nextToken, listUsageLimits_resourceArn, listUsageLimits_usageType, -- * Destructuring the Response ListUsageLimitsResponse (..), newListUsageLimitsResponse, -- * Response Lenses listUsageLimitsResponse_nextToken, listUsageLimitsResponse_usageLimits, listUsageLimitsResponse_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 Amazonka.RedshiftServerLess.Types import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newListUsageLimits' smart constructor. data ListUsageLimits = ListUsageLimits' { -- | An optional parameter that specifies the maximum number of results to -- return. You can use @nextToken@ to get the next page of results. The -- default is 100. maxResults :: Prelude.Maybe Prelude.Natural, -- | If your initial @ListUsageLimits@ operation returns a @nextToken@, you -- can include the returned @nextToken@ in following @ListUsageLimits@ -- operations, which returns results in the next page. nextToken :: Prelude.Maybe Prelude.Text, -- | The Amazon Resource Name (ARN) associated with the resource whose usage -- limits you want to list. resourceArn :: Prelude.Maybe Prelude.Text, -- | The Amazon Redshift Serverless feature whose limits you want to see. usageType :: Prelude.Maybe UsageLimitUsageType } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListUsageLimits' 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', 'listUsageLimits_maxResults' - An optional parameter that specifies the maximum number of results to -- return. You can use @nextToken@ to get the next page of results. The -- default is 100. -- -- 'nextToken', 'listUsageLimits_nextToken' - If your initial @ListUsageLimits@ operation returns a @nextToken@, you -- can include the returned @nextToken@ in following @ListUsageLimits@ -- operations, which returns results in the next page. -- -- 'resourceArn', 'listUsageLimits_resourceArn' - The Amazon Resource Name (ARN) associated with the resource whose usage -- limits you want to list. -- -- 'usageType', 'listUsageLimits_usageType' - The Amazon Redshift Serverless feature whose limits you want to see. newListUsageLimits :: ListUsageLimits newListUsageLimits = ListUsageLimits' { maxResults = Prelude.Nothing, nextToken = Prelude.Nothing, resourceArn = Prelude.Nothing, usageType = Prelude.Nothing } -- | An optional parameter that specifies the maximum number of results to -- return. You can use @nextToken@ to get the next page of results. The -- default is 100. listUsageLimits_maxResults :: Lens.Lens' ListUsageLimits (Prelude.Maybe Prelude.Natural) listUsageLimits_maxResults = Lens.lens (\ListUsageLimits' {maxResults} -> maxResults) (\s@ListUsageLimits' {} a -> s {maxResults = a} :: ListUsageLimits) -- | If your initial @ListUsageLimits@ operation returns a @nextToken@, you -- can include the returned @nextToken@ in following @ListUsageLimits@ -- operations, which returns results in the next page. listUsageLimits_nextToken :: Lens.Lens' ListUsageLimits (Prelude.Maybe Prelude.Text) listUsageLimits_nextToken = Lens.lens (\ListUsageLimits' {nextToken} -> nextToken) (\s@ListUsageLimits' {} a -> s {nextToken = a} :: ListUsageLimits) -- | The Amazon Resource Name (ARN) associated with the resource whose usage -- limits you want to list. listUsageLimits_resourceArn :: Lens.Lens' ListUsageLimits (Prelude.Maybe Prelude.Text) listUsageLimits_resourceArn = Lens.lens (\ListUsageLimits' {resourceArn} -> resourceArn) (\s@ListUsageLimits' {} a -> s {resourceArn = a} :: ListUsageLimits) -- | The Amazon Redshift Serverless feature whose limits you want to see. listUsageLimits_usageType :: Lens.Lens' ListUsageLimits (Prelude.Maybe UsageLimitUsageType) listUsageLimits_usageType = Lens.lens (\ListUsageLimits' {usageType} -> usageType) (\s@ListUsageLimits' {} a -> s {usageType = a} :: ListUsageLimits) instance Core.AWSPager ListUsageLimits where page rq rs | Core.stop ( rs Lens.^? listUsageLimitsResponse_nextToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop ( rs Lens.^? listUsageLimitsResponse_usageLimits Prelude.. Lens._Just Prelude.. Lens.to Prelude.toList ) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& listUsageLimits_nextToken Lens..~ rs Lens.^? listUsageLimitsResponse_nextToken Prelude.. Lens._Just instance Core.AWSRequest ListUsageLimits where type AWSResponse ListUsageLimits = ListUsageLimitsResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> ListUsageLimitsResponse' Prelude.<$> (x Data..?> "nextToken") Prelude.<*> (x Data..?> "usageLimits") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable ListUsageLimits where hashWithSalt _salt ListUsageLimits' {..} = _salt `Prelude.hashWithSalt` maxResults `Prelude.hashWithSalt` nextToken `Prelude.hashWithSalt` resourceArn `Prelude.hashWithSalt` usageType instance Prelude.NFData ListUsageLimits where rnf ListUsageLimits' {..} = Prelude.rnf maxResults `Prelude.seq` Prelude.rnf nextToken `Prelude.seq` Prelude.rnf resourceArn `Prelude.seq` Prelude.rnf usageType instance Data.ToHeaders ListUsageLimits where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "RedshiftServerless.ListUsageLimits" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON ListUsageLimits where toJSON ListUsageLimits' {..} = Data.object ( Prelude.catMaybes [ ("maxResults" Data..=) Prelude.<$> maxResults, ("nextToken" Data..=) Prelude.<$> nextToken, ("resourceArn" Data..=) Prelude.<$> resourceArn, ("usageType" Data..=) Prelude.<$> usageType ] ) instance Data.ToPath ListUsageLimits where toPath = Prelude.const "/" instance Data.ToQuery ListUsageLimits where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newListUsageLimitsResponse' smart constructor. data ListUsageLimitsResponse = ListUsageLimitsResponse' { -- | When @nextToken@ is returned, there are more results available. The -- value of @nextToken@ is a unique pagination token for each page. Make -- the call again using the returned token to retrieve the next page. nextToken :: Prelude.Maybe Prelude.Text, -- | An array of returned usage limit objects. usageLimits :: Prelude.Maybe (Prelude.NonEmpty UsageLimit), -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListUsageLimitsResponse' 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', 'listUsageLimitsResponse_nextToken' - When @nextToken@ is returned, there are more results available. The -- value of @nextToken@ is a unique pagination token for each page. Make -- the call again using the returned token to retrieve the next page. -- -- 'usageLimits', 'listUsageLimitsResponse_usageLimits' - An array of returned usage limit objects. -- -- 'httpStatus', 'listUsageLimitsResponse_httpStatus' - The response's http status code. newListUsageLimitsResponse :: -- | 'httpStatus' Prelude.Int -> ListUsageLimitsResponse newListUsageLimitsResponse pHttpStatus_ = ListUsageLimitsResponse' { nextToken = Prelude.Nothing, usageLimits = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | When @nextToken@ is returned, there are more results available. The -- value of @nextToken@ is a unique pagination token for each page. Make -- the call again using the returned token to retrieve the next page. listUsageLimitsResponse_nextToken :: Lens.Lens' ListUsageLimitsResponse (Prelude.Maybe Prelude.Text) listUsageLimitsResponse_nextToken = Lens.lens (\ListUsageLimitsResponse' {nextToken} -> nextToken) (\s@ListUsageLimitsResponse' {} a -> s {nextToken = a} :: ListUsageLimitsResponse) -- | An array of returned usage limit objects. listUsageLimitsResponse_usageLimits :: Lens.Lens' ListUsageLimitsResponse (Prelude.Maybe (Prelude.NonEmpty UsageLimit)) listUsageLimitsResponse_usageLimits = Lens.lens (\ListUsageLimitsResponse' {usageLimits} -> usageLimits) (\s@ListUsageLimitsResponse' {} a -> s {usageLimits = a} :: ListUsageLimitsResponse) Prelude.. Lens.mapping Lens.coerced -- | The response's http status code. listUsageLimitsResponse_httpStatus :: Lens.Lens' ListUsageLimitsResponse Prelude.Int listUsageLimitsResponse_httpStatus = Lens.lens (\ListUsageLimitsResponse' {httpStatus} -> httpStatus) (\s@ListUsageLimitsResponse' {} a -> s {httpStatus = a} :: ListUsageLimitsResponse) instance Prelude.NFData ListUsageLimitsResponse where rnf ListUsageLimitsResponse' {..} = Prelude.rnf nextToken `Prelude.seq` Prelude.rnf usageLimits `Prelude.seq` Prelude.rnf httpStatus