{-# 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.LicenseManagerUserSubscriptions.ListProductSubscriptions -- 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 the user-based subscription products available from an identity -- provider. -- -- This operation returns paginated results. module Amazonka.LicenseManagerUserSubscriptions.ListProductSubscriptions ( -- * Creating a Request ListProductSubscriptions (..), newListProductSubscriptions, -- * Request Lenses listProductSubscriptions_filters, listProductSubscriptions_maxResults, listProductSubscriptions_nextToken, listProductSubscriptions_identityProvider, listProductSubscriptions_product, -- * Destructuring the Response ListProductSubscriptionsResponse (..), newListProductSubscriptionsResponse, -- * Response Lenses listProductSubscriptionsResponse_nextToken, listProductSubscriptionsResponse_productUserSummaries, listProductSubscriptionsResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.LicenseManagerUserSubscriptions.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newListProductSubscriptions' smart constructor. data ListProductSubscriptions = ListProductSubscriptions' { -- | An array of structures that you can use to filter the results to those -- that match one or more sets of key-value pairs that you specify. filters :: Prelude.Maybe [Filter], -- | Maximum number of results to return in a single call. maxResults :: Prelude.Maybe Prelude.Int, -- | Token for the next set of results. nextToken :: Prelude.Maybe Prelude.Text, -- | An object that specifies details for the identity provider. identityProvider :: IdentityProvider, -- | The name of the user-based subscription product. product :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListProductSubscriptions' 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: -- -- 'filters', 'listProductSubscriptions_filters' - An array of structures that you can use to filter the results to those -- that match one or more sets of key-value pairs that you specify. -- -- 'maxResults', 'listProductSubscriptions_maxResults' - Maximum number of results to return in a single call. -- -- 'nextToken', 'listProductSubscriptions_nextToken' - Token for the next set of results. -- -- 'identityProvider', 'listProductSubscriptions_identityProvider' - An object that specifies details for the identity provider. -- -- 'product', 'listProductSubscriptions_product' - The name of the user-based subscription product. newListProductSubscriptions :: -- | 'identityProvider' IdentityProvider -> -- | 'product' Prelude.Text -> ListProductSubscriptions newListProductSubscriptions pIdentityProvider_ pProduct_ = ListProductSubscriptions' { filters = Prelude.Nothing, maxResults = Prelude.Nothing, nextToken = Prelude.Nothing, identityProvider = pIdentityProvider_, product = pProduct_ } -- | An array of structures that you can use to filter the results to those -- that match one or more sets of key-value pairs that you specify. listProductSubscriptions_filters :: Lens.Lens' ListProductSubscriptions (Prelude.Maybe [Filter]) listProductSubscriptions_filters = Lens.lens (\ListProductSubscriptions' {filters} -> filters) (\s@ListProductSubscriptions' {} a -> s {filters = a} :: ListProductSubscriptions) Prelude.. Lens.mapping Lens.coerced -- | Maximum number of results to return in a single call. listProductSubscriptions_maxResults :: Lens.Lens' ListProductSubscriptions (Prelude.Maybe Prelude.Int) listProductSubscriptions_maxResults = Lens.lens (\ListProductSubscriptions' {maxResults} -> maxResults) (\s@ListProductSubscriptions' {} a -> s {maxResults = a} :: ListProductSubscriptions) -- | Token for the next set of results. listProductSubscriptions_nextToken :: Lens.Lens' ListProductSubscriptions (Prelude.Maybe Prelude.Text) listProductSubscriptions_nextToken = Lens.lens (\ListProductSubscriptions' {nextToken} -> nextToken) (\s@ListProductSubscriptions' {} a -> s {nextToken = a} :: ListProductSubscriptions) -- | An object that specifies details for the identity provider. listProductSubscriptions_identityProvider :: Lens.Lens' ListProductSubscriptions IdentityProvider listProductSubscriptions_identityProvider = Lens.lens (\ListProductSubscriptions' {identityProvider} -> identityProvider) (\s@ListProductSubscriptions' {} a -> s {identityProvider = a} :: ListProductSubscriptions) -- | The name of the user-based subscription product. listProductSubscriptions_product :: Lens.Lens' ListProductSubscriptions Prelude.Text listProductSubscriptions_product = Lens.lens (\ListProductSubscriptions' {product} -> product) (\s@ListProductSubscriptions' {} a -> s {product = a} :: ListProductSubscriptions) instance Core.AWSPager ListProductSubscriptions where page rq rs | Core.stop ( rs Lens.^? listProductSubscriptionsResponse_nextToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop ( rs Lens.^? listProductSubscriptionsResponse_productUserSummaries Prelude.. Lens._Just ) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& listProductSubscriptions_nextToken Lens..~ rs Lens.^? listProductSubscriptionsResponse_nextToken Prelude.. Lens._Just instance Core.AWSRequest ListProductSubscriptions where type AWSResponse ListProductSubscriptions = ListProductSubscriptionsResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> ListProductSubscriptionsResponse' Prelude.<$> (x Data..?> "NextToken") Prelude.<*> ( x Data..?> "ProductUserSummaries" Core..!@ Prelude.mempty ) Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable ListProductSubscriptions where hashWithSalt _salt ListProductSubscriptions' {..} = _salt `Prelude.hashWithSalt` filters `Prelude.hashWithSalt` maxResults `Prelude.hashWithSalt` nextToken `Prelude.hashWithSalt` identityProvider `Prelude.hashWithSalt` product instance Prelude.NFData ListProductSubscriptions where rnf ListProductSubscriptions' {..} = Prelude.rnf filters `Prelude.seq` Prelude.rnf maxResults `Prelude.seq` Prelude.rnf nextToken `Prelude.seq` Prelude.rnf identityProvider `Prelude.seq` Prelude.rnf product instance Data.ToHeaders ListProductSubscriptions where toHeaders = Prelude.const ( Prelude.mconcat [ "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON ListProductSubscriptions where toJSON ListProductSubscriptions' {..} = Data.object ( Prelude.catMaybes [ ("Filters" Data..=) Prelude.<$> filters, ("MaxResults" Data..=) Prelude.<$> maxResults, ("NextToken" Data..=) Prelude.<$> nextToken, Prelude.Just ("IdentityProvider" Data..= identityProvider), Prelude.Just ("Product" Data..= product) ] ) instance Data.ToPath ListProductSubscriptions where toPath = Prelude.const "/user/ListProductSubscriptions" instance Data.ToQuery ListProductSubscriptions where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newListProductSubscriptionsResponse' smart constructor. data ListProductSubscriptionsResponse = ListProductSubscriptionsResponse' { -- | Token for the next set of results. nextToken :: Prelude.Maybe Prelude.Text, -- | Metadata that describes the list product subscriptions operation. productUserSummaries :: Prelude.Maybe [ProductUserSummary], -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListProductSubscriptionsResponse' 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', 'listProductSubscriptionsResponse_nextToken' - Token for the next set of results. -- -- 'productUserSummaries', 'listProductSubscriptionsResponse_productUserSummaries' - Metadata that describes the list product subscriptions operation. -- -- 'httpStatus', 'listProductSubscriptionsResponse_httpStatus' - The response's http status code. newListProductSubscriptionsResponse :: -- | 'httpStatus' Prelude.Int -> ListProductSubscriptionsResponse newListProductSubscriptionsResponse pHttpStatus_ = ListProductSubscriptionsResponse' { nextToken = Prelude.Nothing, productUserSummaries = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | Token for the next set of results. listProductSubscriptionsResponse_nextToken :: Lens.Lens' ListProductSubscriptionsResponse (Prelude.Maybe Prelude.Text) listProductSubscriptionsResponse_nextToken = Lens.lens (\ListProductSubscriptionsResponse' {nextToken} -> nextToken) (\s@ListProductSubscriptionsResponse' {} a -> s {nextToken = a} :: ListProductSubscriptionsResponse) -- | Metadata that describes the list product subscriptions operation. listProductSubscriptionsResponse_productUserSummaries :: Lens.Lens' ListProductSubscriptionsResponse (Prelude.Maybe [ProductUserSummary]) listProductSubscriptionsResponse_productUserSummaries = Lens.lens (\ListProductSubscriptionsResponse' {productUserSummaries} -> productUserSummaries) (\s@ListProductSubscriptionsResponse' {} a -> s {productUserSummaries = a} :: ListProductSubscriptionsResponse) Prelude.. Lens.mapping Lens.coerced -- | The response's http status code. listProductSubscriptionsResponse_httpStatus :: Lens.Lens' ListProductSubscriptionsResponse Prelude.Int listProductSubscriptionsResponse_httpStatus = Lens.lens (\ListProductSubscriptionsResponse' {httpStatus} -> httpStatus) (\s@ListProductSubscriptionsResponse' {} a -> s {httpStatus = a} :: ListProductSubscriptionsResponse) instance Prelude.NFData ListProductSubscriptionsResponse where rnf ListProductSubscriptionsResponse' {..} = Prelude.rnf nextToken `Prelude.seq` Prelude.rnf productUserSummaries `Prelude.seq` Prelude.rnf httpStatus