{-# 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.Config.ListAggregateDiscoveredResources
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Accepts a resource type and returns a list of resource identifiers that
-- are aggregated for a specific resource type across accounts and regions.
-- A resource identifier includes the resource type, ID, (if available) the
-- custom resource name, source account, and source region. You can narrow
-- the results to include only resources that have specific resource IDs,
-- or a resource name, or source account ID, or source region.
--
-- For example, if the input consists of accountID 12345678910 and the
-- region is us-east-1 for resource type @AWS::EC2::Instance@ then the API
-- returns all the EC2 instance identifiers of accountID 12345678910 and
-- region us-east-1.
--
-- This operation returns paginated results.
module Amazonka.Config.ListAggregateDiscoveredResources
  ( -- * Creating a Request
    ListAggregateDiscoveredResources (..),
    newListAggregateDiscoveredResources,

    -- * Request Lenses
    listAggregateDiscoveredResources_filters,
    listAggregateDiscoveredResources_limit,
    listAggregateDiscoveredResources_nextToken,
    listAggregateDiscoveredResources_configurationAggregatorName,
    listAggregateDiscoveredResources_resourceType,

    -- * Destructuring the Response
    ListAggregateDiscoveredResourcesResponse (..),
    newListAggregateDiscoveredResourcesResponse,

    -- * Response Lenses
    listAggregateDiscoveredResourcesResponse_nextToken,
    listAggregateDiscoveredResourcesResponse_resourceIdentifiers,
    listAggregateDiscoveredResourcesResponse_httpStatus,
  )
where

import Amazonka.Config.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:/ 'newListAggregateDiscoveredResources' smart constructor.
data ListAggregateDiscoveredResources = ListAggregateDiscoveredResources'
  { -- | Filters the results based on the @ResourceFilters@ object.
    ListAggregateDiscoveredResources -> Maybe ResourceFilters
filters :: Prelude.Maybe ResourceFilters,
    -- | The maximum number of resource identifiers returned on each page. You
    -- cannot specify a number greater than 100. If you specify 0, Config uses
    -- the default.
    ListAggregateDiscoveredResources -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The @nextToken@ string returned on a previous page that you use to get
    -- the next page of results in a paginated response.
    ListAggregateDiscoveredResources -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The name of the configuration aggregator.
    ListAggregateDiscoveredResources -> Text
configurationAggregatorName :: Prelude.Text,
    -- | The type of resources that you want Config to list in the response.
    ListAggregateDiscoveredResources -> ResourceType
resourceType :: ResourceType
  }
  deriving (ListAggregateDiscoveredResources
-> ListAggregateDiscoveredResources -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAggregateDiscoveredResources
-> ListAggregateDiscoveredResources -> Bool
$c/= :: ListAggregateDiscoveredResources
-> ListAggregateDiscoveredResources -> Bool
== :: ListAggregateDiscoveredResources
-> ListAggregateDiscoveredResources -> Bool
$c== :: ListAggregateDiscoveredResources
-> ListAggregateDiscoveredResources -> Bool
Prelude.Eq, ReadPrec [ListAggregateDiscoveredResources]
ReadPrec ListAggregateDiscoveredResources
Int -> ReadS ListAggregateDiscoveredResources
ReadS [ListAggregateDiscoveredResources]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAggregateDiscoveredResources]
$creadListPrec :: ReadPrec [ListAggregateDiscoveredResources]
readPrec :: ReadPrec ListAggregateDiscoveredResources
$creadPrec :: ReadPrec ListAggregateDiscoveredResources
readList :: ReadS [ListAggregateDiscoveredResources]
$creadList :: ReadS [ListAggregateDiscoveredResources]
readsPrec :: Int -> ReadS ListAggregateDiscoveredResources
$creadsPrec :: Int -> ReadS ListAggregateDiscoveredResources
Prelude.Read, Int -> ListAggregateDiscoveredResources -> ShowS
[ListAggregateDiscoveredResources] -> ShowS
ListAggregateDiscoveredResources -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAggregateDiscoveredResources] -> ShowS
$cshowList :: [ListAggregateDiscoveredResources] -> ShowS
show :: ListAggregateDiscoveredResources -> String
$cshow :: ListAggregateDiscoveredResources -> String
showsPrec :: Int -> ListAggregateDiscoveredResources -> ShowS
$cshowsPrec :: Int -> ListAggregateDiscoveredResources -> ShowS
Prelude.Show, forall x.
Rep ListAggregateDiscoveredResources x
-> ListAggregateDiscoveredResources
forall x.
ListAggregateDiscoveredResources
-> Rep ListAggregateDiscoveredResources x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListAggregateDiscoveredResources x
-> ListAggregateDiscoveredResources
$cfrom :: forall x.
ListAggregateDiscoveredResources
-> Rep ListAggregateDiscoveredResources x
Prelude.Generic)

-- |
-- Create a value of 'ListAggregateDiscoveredResources' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'filters', 'listAggregateDiscoveredResources_filters' - Filters the results based on the @ResourceFilters@ object.
--
-- 'limit', 'listAggregateDiscoveredResources_limit' - The maximum number of resource identifiers returned on each page. You
-- cannot specify a number greater than 100. If you specify 0, Config uses
-- the default.
--
-- 'nextToken', 'listAggregateDiscoveredResources_nextToken' - The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
--
-- 'configurationAggregatorName', 'listAggregateDiscoveredResources_configurationAggregatorName' - The name of the configuration aggregator.
--
-- 'resourceType', 'listAggregateDiscoveredResources_resourceType' - The type of resources that you want Config to list in the response.
newListAggregateDiscoveredResources ::
  -- | 'configurationAggregatorName'
  Prelude.Text ->
  -- | 'resourceType'
  ResourceType ->
  ListAggregateDiscoveredResources
newListAggregateDiscoveredResources :: Text -> ResourceType -> ListAggregateDiscoveredResources
newListAggregateDiscoveredResources
  Text
pConfigurationAggregatorName_
  ResourceType
pResourceType_ =
    ListAggregateDiscoveredResources'
      { $sel:filters:ListAggregateDiscoveredResources' :: Maybe ResourceFilters
filters =
          forall a. Maybe a
Prelude.Nothing,
        $sel:limit:ListAggregateDiscoveredResources' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListAggregateDiscoveredResources' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:configurationAggregatorName:ListAggregateDiscoveredResources' :: Text
configurationAggregatorName =
          Text
pConfigurationAggregatorName_,
        $sel:resourceType:ListAggregateDiscoveredResources' :: ResourceType
resourceType = ResourceType
pResourceType_
      }

-- | Filters the results based on the @ResourceFilters@ object.
listAggregateDiscoveredResources_filters :: Lens.Lens' ListAggregateDiscoveredResources (Prelude.Maybe ResourceFilters)
listAggregateDiscoveredResources_filters :: Lens' ListAggregateDiscoveredResources (Maybe ResourceFilters)
listAggregateDiscoveredResources_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResources' {Maybe ResourceFilters
filters :: Maybe ResourceFilters
$sel:filters:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe ResourceFilters
filters} -> Maybe ResourceFilters
filters) (\s :: ListAggregateDiscoveredResources
s@ListAggregateDiscoveredResources' {} Maybe ResourceFilters
a -> ListAggregateDiscoveredResources
s {$sel:filters:ListAggregateDiscoveredResources' :: Maybe ResourceFilters
filters = Maybe ResourceFilters
a} :: ListAggregateDiscoveredResources)

-- | The maximum number of resource identifiers returned on each page. You
-- cannot specify a number greater than 100. If you specify 0, Config uses
-- the default.
listAggregateDiscoveredResources_limit :: Lens.Lens' ListAggregateDiscoveredResources (Prelude.Maybe Prelude.Natural)
listAggregateDiscoveredResources_limit :: Lens' ListAggregateDiscoveredResources (Maybe Natural)
listAggregateDiscoveredResources_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResources' {Maybe Natural
limit :: Maybe Natural
$sel:limit:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: ListAggregateDiscoveredResources
s@ListAggregateDiscoveredResources' {} Maybe Natural
a -> ListAggregateDiscoveredResources
s {$sel:limit:ListAggregateDiscoveredResources' :: Maybe Natural
limit = Maybe Natural
a} :: ListAggregateDiscoveredResources)

-- | The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
listAggregateDiscoveredResources_nextToken :: Lens.Lens' ListAggregateDiscoveredResources (Prelude.Maybe Prelude.Text)
listAggregateDiscoveredResources_nextToken :: Lens' ListAggregateDiscoveredResources (Maybe Text)
listAggregateDiscoveredResources_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResources' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAggregateDiscoveredResources
s@ListAggregateDiscoveredResources' {} Maybe Text
a -> ListAggregateDiscoveredResources
s {$sel:nextToken:ListAggregateDiscoveredResources' :: Maybe Text
nextToken = Maybe Text
a} :: ListAggregateDiscoveredResources)

-- | The name of the configuration aggregator.
listAggregateDiscoveredResources_configurationAggregatorName :: Lens.Lens' ListAggregateDiscoveredResources Prelude.Text
listAggregateDiscoveredResources_configurationAggregatorName :: Lens' ListAggregateDiscoveredResources Text
listAggregateDiscoveredResources_configurationAggregatorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResources' {Text
configurationAggregatorName :: Text
$sel:configurationAggregatorName:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Text
configurationAggregatorName} -> Text
configurationAggregatorName) (\s :: ListAggregateDiscoveredResources
s@ListAggregateDiscoveredResources' {} Text
a -> ListAggregateDiscoveredResources
s {$sel:configurationAggregatorName:ListAggregateDiscoveredResources' :: Text
configurationAggregatorName = Text
a} :: ListAggregateDiscoveredResources)

-- | The type of resources that you want Config to list in the response.
listAggregateDiscoveredResources_resourceType :: Lens.Lens' ListAggregateDiscoveredResources ResourceType
listAggregateDiscoveredResources_resourceType :: Lens' ListAggregateDiscoveredResources ResourceType
listAggregateDiscoveredResources_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResources' {ResourceType
resourceType :: ResourceType
$sel:resourceType:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> ResourceType
resourceType} -> ResourceType
resourceType) (\s :: ListAggregateDiscoveredResources
s@ListAggregateDiscoveredResources' {} ResourceType
a -> ListAggregateDiscoveredResources
s {$sel:resourceType:ListAggregateDiscoveredResources' :: ResourceType
resourceType = ResourceType
a} :: ListAggregateDiscoveredResources)

instance
  Core.AWSPager
    ListAggregateDiscoveredResources
  where
  page :: ListAggregateDiscoveredResources
-> AWSResponse ListAggregateDiscoveredResources
-> Maybe ListAggregateDiscoveredResources
page ListAggregateDiscoveredResources
rq AWSResponse ListAggregateDiscoveredResources
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListAggregateDiscoveredResources
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListAggregateDiscoveredResourcesResponse (Maybe Text)
listAggregateDiscoveredResourcesResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListAggregateDiscoveredResources
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  ListAggregateDiscoveredResourcesResponse
  (Maybe [AggregateResourceIdentifier])
listAggregateDiscoveredResourcesResponse_resourceIdentifiers
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ ListAggregateDiscoveredResources
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListAggregateDiscoveredResources (Maybe Text)
listAggregateDiscoveredResources_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListAggregateDiscoveredResources
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListAggregateDiscoveredResourcesResponse (Maybe Text)
listAggregateDiscoveredResourcesResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    ListAggregateDiscoveredResources
  where
  type
    AWSResponse ListAggregateDiscoveredResources =
      ListAggregateDiscoveredResourcesResponse
  request :: (Service -> Service)
-> ListAggregateDiscoveredResources
-> Request ListAggregateDiscoveredResources
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListAggregateDiscoveredResources
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ListAggregateDiscoveredResources)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe [AggregateResourceIdentifier]
-> Int
-> ListAggregateDiscoveredResourcesResponse
ListAggregateDiscoveredResourcesResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ResourceIdentifiers"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    ListAggregateDiscoveredResources
  where
  hashWithSalt :: Int -> ListAggregateDiscoveredResources -> Int
hashWithSalt
    Int
_salt
    ListAggregateDiscoveredResources' {Maybe Natural
Maybe Text
Maybe ResourceFilters
Text
ResourceType
resourceType :: ResourceType
configurationAggregatorName :: Text
nextToken :: Maybe Text
limit :: Maybe Natural
filters :: Maybe ResourceFilters
$sel:resourceType:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> ResourceType
$sel:configurationAggregatorName:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Text
$sel:nextToken:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Text
$sel:limit:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Natural
$sel:filters:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe ResourceFilters
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceFilters
filters
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
configurationAggregatorName
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ResourceType
resourceType

instance
  Prelude.NFData
    ListAggregateDiscoveredResources
  where
  rnf :: ListAggregateDiscoveredResources -> ()
rnf ListAggregateDiscoveredResources' {Maybe Natural
Maybe Text
Maybe ResourceFilters
Text
ResourceType
resourceType :: ResourceType
configurationAggregatorName :: Text
nextToken :: Maybe Text
limit :: Maybe Natural
filters :: Maybe ResourceFilters
$sel:resourceType:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> ResourceType
$sel:configurationAggregatorName:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Text
$sel:nextToken:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Text
$sel:limit:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Natural
$sel:filters:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe ResourceFilters
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceFilters
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
limit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
configurationAggregatorName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ResourceType
resourceType

instance
  Data.ToHeaders
    ListAggregateDiscoveredResources
  where
  toHeaders :: ListAggregateDiscoveredResources -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"StarlingDoveService.ListAggregateDiscoveredResources" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON ListAggregateDiscoveredResources where
  toJSON :: ListAggregateDiscoveredResources -> Value
toJSON ListAggregateDiscoveredResources' {Maybe Natural
Maybe Text
Maybe ResourceFilters
Text
ResourceType
resourceType :: ResourceType
configurationAggregatorName :: Text
nextToken :: Maybe Text
limit :: Maybe Natural
filters :: Maybe ResourceFilters
$sel:resourceType:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> ResourceType
$sel:configurationAggregatorName:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Text
$sel:nextToken:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Text
$sel:limit:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe Natural
$sel:filters:ListAggregateDiscoveredResources' :: ListAggregateDiscoveredResources -> Maybe ResourceFilters
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Filters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ResourceFilters
filters,
            (Key
"Limit" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
limit,
            (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ConfigurationAggregatorName"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
configurationAggregatorName
              ),
            forall a. a -> Maybe a
Prelude.Just (Key
"ResourceType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ResourceType
resourceType)
          ]
      )

instance Data.ToPath ListAggregateDiscoveredResources where
  toPath :: ListAggregateDiscoveredResources -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance
  Data.ToQuery
    ListAggregateDiscoveredResources
  where
  toQuery :: ListAggregateDiscoveredResources -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newListAggregateDiscoveredResourcesResponse' smart constructor.
data ListAggregateDiscoveredResourcesResponse = ListAggregateDiscoveredResourcesResponse'
  { -- | The @nextToken@ string returned on a previous page that you use to get
    -- the next page of results in a paginated response.
    ListAggregateDiscoveredResourcesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Returns a list of @ResourceIdentifiers@ objects.
    ListAggregateDiscoveredResourcesResponse
-> Maybe [AggregateResourceIdentifier]
resourceIdentifiers :: Prelude.Maybe [AggregateResourceIdentifier],
    -- | The response's http status code.
    ListAggregateDiscoveredResourcesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListAggregateDiscoveredResourcesResponse
-> ListAggregateDiscoveredResourcesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAggregateDiscoveredResourcesResponse
-> ListAggregateDiscoveredResourcesResponse -> Bool
$c/= :: ListAggregateDiscoveredResourcesResponse
-> ListAggregateDiscoveredResourcesResponse -> Bool
== :: ListAggregateDiscoveredResourcesResponse
-> ListAggregateDiscoveredResourcesResponse -> Bool
$c== :: ListAggregateDiscoveredResourcesResponse
-> ListAggregateDiscoveredResourcesResponse -> Bool
Prelude.Eq, ReadPrec [ListAggregateDiscoveredResourcesResponse]
ReadPrec ListAggregateDiscoveredResourcesResponse
Int -> ReadS ListAggregateDiscoveredResourcesResponse
ReadS [ListAggregateDiscoveredResourcesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAggregateDiscoveredResourcesResponse]
$creadListPrec :: ReadPrec [ListAggregateDiscoveredResourcesResponse]
readPrec :: ReadPrec ListAggregateDiscoveredResourcesResponse
$creadPrec :: ReadPrec ListAggregateDiscoveredResourcesResponse
readList :: ReadS [ListAggregateDiscoveredResourcesResponse]
$creadList :: ReadS [ListAggregateDiscoveredResourcesResponse]
readsPrec :: Int -> ReadS ListAggregateDiscoveredResourcesResponse
$creadsPrec :: Int -> ReadS ListAggregateDiscoveredResourcesResponse
Prelude.Read, Int -> ListAggregateDiscoveredResourcesResponse -> ShowS
[ListAggregateDiscoveredResourcesResponse] -> ShowS
ListAggregateDiscoveredResourcesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAggregateDiscoveredResourcesResponse] -> ShowS
$cshowList :: [ListAggregateDiscoveredResourcesResponse] -> ShowS
show :: ListAggregateDiscoveredResourcesResponse -> String
$cshow :: ListAggregateDiscoveredResourcesResponse -> String
showsPrec :: Int -> ListAggregateDiscoveredResourcesResponse -> ShowS
$cshowsPrec :: Int -> ListAggregateDiscoveredResourcesResponse -> ShowS
Prelude.Show, forall x.
Rep ListAggregateDiscoveredResourcesResponse x
-> ListAggregateDiscoveredResourcesResponse
forall x.
ListAggregateDiscoveredResourcesResponse
-> Rep ListAggregateDiscoveredResourcesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListAggregateDiscoveredResourcesResponse x
-> ListAggregateDiscoveredResourcesResponse
$cfrom :: forall x.
ListAggregateDiscoveredResourcesResponse
-> Rep ListAggregateDiscoveredResourcesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListAggregateDiscoveredResourcesResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'nextToken', 'listAggregateDiscoveredResourcesResponse_nextToken' - The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
--
-- 'resourceIdentifiers', 'listAggregateDiscoveredResourcesResponse_resourceIdentifiers' - Returns a list of @ResourceIdentifiers@ objects.
--
-- 'httpStatus', 'listAggregateDiscoveredResourcesResponse_httpStatus' - The response's http status code.
newListAggregateDiscoveredResourcesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListAggregateDiscoveredResourcesResponse
newListAggregateDiscoveredResourcesResponse :: Int -> ListAggregateDiscoveredResourcesResponse
newListAggregateDiscoveredResourcesResponse
  Int
pHttpStatus_ =
    ListAggregateDiscoveredResourcesResponse'
      { $sel:nextToken:ListAggregateDiscoveredResourcesResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:resourceIdentifiers:ListAggregateDiscoveredResourcesResponse' :: Maybe [AggregateResourceIdentifier]
resourceIdentifiers =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListAggregateDiscoveredResourcesResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The @nextToken@ string returned on a previous page that you use to get
-- the next page of results in a paginated response.
listAggregateDiscoveredResourcesResponse_nextToken :: Lens.Lens' ListAggregateDiscoveredResourcesResponse (Prelude.Maybe Prelude.Text)
listAggregateDiscoveredResourcesResponse_nextToken :: Lens' ListAggregateDiscoveredResourcesResponse (Maybe Text)
listAggregateDiscoveredResourcesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResourcesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAggregateDiscoveredResourcesResponse' :: ListAggregateDiscoveredResourcesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAggregateDiscoveredResourcesResponse
s@ListAggregateDiscoveredResourcesResponse' {} Maybe Text
a -> ListAggregateDiscoveredResourcesResponse
s {$sel:nextToken:ListAggregateDiscoveredResourcesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListAggregateDiscoveredResourcesResponse)

-- | Returns a list of @ResourceIdentifiers@ objects.
listAggregateDiscoveredResourcesResponse_resourceIdentifiers :: Lens.Lens' ListAggregateDiscoveredResourcesResponse (Prelude.Maybe [AggregateResourceIdentifier])
listAggregateDiscoveredResourcesResponse_resourceIdentifiers :: Lens'
  ListAggregateDiscoveredResourcesResponse
  (Maybe [AggregateResourceIdentifier])
listAggregateDiscoveredResourcesResponse_resourceIdentifiers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResourcesResponse' {Maybe [AggregateResourceIdentifier]
resourceIdentifiers :: Maybe [AggregateResourceIdentifier]
$sel:resourceIdentifiers:ListAggregateDiscoveredResourcesResponse' :: ListAggregateDiscoveredResourcesResponse
-> Maybe [AggregateResourceIdentifier]
resourceIdentifiers} -> Maybe [AggregateResourceIdentifier]
resourceIdentifiers) (\s :: ListAggregateDiscoveredResourcesResponse
s@ListAggregateDiscoveredResourcesResponse' {} Maybe [AggregateResourceIdentifier]
a -> ListAggregateDiscoveredResourcesResponse
s {$sel:resourceIdentifiers:ListAggregateDiscoveredResourcesResponse' :: Maybe [AggregateResourceIdentifier]
resourceIdentifiers = Maybe [AggregateResourceIdentifier]
a} :: ListAggregateDiscoveredResourcesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
listAggregateDiscoveredResourcesResponse_httpStatus :: Lens.Lens' ListAggregateDiscoveredResourcesResponse Prelude.Int
listAggregateDiscoveredResourcesResponse_httpStatus :: Lens' ListAggregateDiscoveredResourcesResponse Int
listAggregateDiscoveredResourcesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAggregateDiscoveredResourcesResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListAggregateDiscoveredResourcesResponse' :: ListAggregateDiscoveredResourcesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListAggregateDiscoveredResourcesResponse
s@ListAggregateDiscoveredResourcesResponse' {} Int
a -> ListAggregateDiscoveredResourcesResponse
s {$sel:httpStatus:ListAggregateDiscoveredResourcesResponse' :: Int
httpStatus = Int
a} :: ListAggregateDiscoveredResourcesResponse)

instance
  Prelude.NFData
    ListAggregateDiscoveredResourcesResponse
  where
  rnf :: ListAggregateDiscoveredResourcesResponse -> ()
rnf ListAggregateDiscoveredResourcesResponse' {Int
Maybe [AggregateResourceIdentifier]
Maybe Text
httpStatus :: Int
resourceIdentifiers :: Maybe [AggregateResourceIdentifier]
nextToken :: Maybe Text
$sel:httpStatus:ListAggregateDiscoveredResourcesResponse' :: ListAggregateDiscoveredResourcesResponse -> Int
$sel:resourceIdentifiers:ListAggregateDiscoveredResourcesResponse' :: ListAggregateDiscoveredResourcesResponse
-> Maybe [AggregateResourceIdentifier]
$sel:nextToken:ListAggregateDiscoveredResourcesResponse' :: ListAggregateDiscoveredResourcesResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [AggregateResourceIdentifier]
resourceIdentifiers
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus