{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.Config.ListDiscoveredResources -- Copyright : (c) 2013-2015 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 for -- the resources of that type. A resource identifier includes the resource -- type, ID, and (if available) the custom resource name. The results -- consist of resources that AWS Config has discovered, including those -- that AWS Config is not currently recording. You can narrow the results -- to include only resources that have specific resource IDs or a resource -- name. -- -- You can specify either resource IDs or a resource name but not both in -- the same request. -- -- The response is paginated, and by default AWS Config lists 100 resource -- identifiers on each page. You can customize this number with the 'limit' -- parameter. The response includes a 'nextToken' string, and to get the -- next page of results, run the request again and enter this string for -- the 'nextToken' parameter. -- -- /See:/ for ListDiscoveredResources. module Network.AWS.Config.ListDiscoveredResources ( -- * Creating a Request listDiscoveredResources , ListDiscoveredResources -- * Request Lenses , ldrResourceIds , ldrResourceName , ldrIncludeDeletedResources , ldrNextToken , ldrLimit , ldrResourceType -- * Destructuring the Response , listDiscoveredResourcesResponse , ListDiscoveredResourcesResponse -- * Response Lenses , ldrrsNextToken , ldrrsResourceIdentifiers , ldrrsResponseStatus ) where import Network.AWS.Config.Types import Network.AWS.Config.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'listDiscoveredResources' smart constructor. data ListDiscoveredResources = ListDiscoveredResources' { _ldrResourceIds :: !(Maybe [Text]) , _ldrResourceName :: !(Maybe Text) , _ldrIncludeDeletedResources :: !(Maybe Bool) , _ldrNextToken :: !(Maybe Text) , _ldrLimit :: !(Maybe Nat) , _ldrResourceType :: !ResourceType } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ListDiscoveredResources' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ldrResourceIds' -- -- * 'ldrResourceName' -- -- * 'ldrIncludeDeletedResources' -- -- * 'ldrNextToken' -- -- * 'ldrLimit' -- -- * 'ldrResourceType' listDiscoveredResources :: ResourceType -- ^ 'ldrResourceType' -> ListDiscoveredResources listDiscoveredResources pResourceType_ = ListDiscoveredResources' { _ldrResourceIds = Nothing , _ldrResourceName = Nothing , _ldrIncludeDeletedResources = Nothing , _ldrNextToken = Nothing , _ldrLimit = Nothing , _ldrResourceType = pResourceType_ } -- | The IDs of only those resources that you want AWS Config to list in the -- response. If you do not specify this parameter, AWS Config lists all -- resources of the specified type that it has discovered. ldrResourceIds :: Lens' ListDiscoveredResources [Text] ldrResourceIds = lens _ldrResourceIds (\ s a -> s{_ldrResourceIds = a}) . _Default . _Coerce; -- | The custom name of only those resources that you want AWS Config to list -- in the response. If you do not specify this parameter, AWS Config lists -- all resources of the specified type that it has discovered. ldrResourceName :: Lens' ListDiscoveredResources (Maybe Text) ldrResourceName = lens _ldrResourceName (\ s a -> s{_ldrResourceName = a}); -- | Specifies whether AWS Config includes deleted resources in the results. -- By default, deleted resources are not included. ldrIncludeDeletedResources :: Lens' ListDiscoveredResources (Maybe Bool) ldrIncludeDeletedResources = lens _ldrIncludeDeletedResources (\ s a -> s{_ldrIncludeDeletedResources = a}); -- | The 'nextToken' string returned on a previous page that you use to get -- the next page of results in a paginated response. ldrNextToken :: Lens' ListDiscoveredResources (Maybe Text) ldrNextToken = lens _ldrNextToken (\ s a -> s{_ldrNextToken = a}); -- | The maximum number of resource identifiers returned on each page. The -- default is 100. You cannot specify a limit greater than 100. If you -- specify 0, AWS Config uses the default. ldrLimit :: Lens' ListDiscoveredResources (Maybe Natural) ldrLimit = lens _ldrLimit (\ s a -> s{_ldrLimit = a}) . mapping _Nat; -- | The type of resources that you want AWS Config to list in the response. ldrResourceType :: Lens' ListDiscoveredResources ResourceType ldrResourceType = lens _ldrResourceType (\ s a -> s{_ldrResourceType = a}); instance AWSRequest ListDiscoveredResources where type Rs ListDiscoveredResources = ListDiscoveredResourcesResponse request = postJSON config response = receiveJSON (\ s h x -> ListDiscoveredResourcesResponse' <$> (x .?> "nextToken") <*> (x .?> "resourceIdentifiers" .!@ mempty) <*> (pure (fromEnum s))) instance ToHeaders ListDiscoveredResources where toHeaders = const (mconcat ["X-Amz-Target" =# ("StarlingDoveService.ListDiscoveredResources" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON ListDiscoveredResources where toJSON ListDiscoveredResources'{..} = object (catMaybes [("resourceIds" .=) <$> _ldrResourceIds, ("resourceName" .=) <$> _ldrResourceName, ("includeDeletedResources" .=) <$> _ldrIncludeDeletedResources, ("nextToken" .=) <$> _ldrNextToken, ("limit" .=) <$> _ldrLimit, Just ("resourceType" .= _ldrResourceType)]) instance ToPath ListDiscoveredResources where toPath = const "/" instance ToQuery ListDiscoveredResources where toQuery = const mempty -- | /See:/ 'listDiscoveredResourcesResponse' smart constructor. data ListDiscoveredResourcesResponse = ListDiscoveredResourcesResponse' { _ldrrsNextToken :: !(Maybe Text) , _ldrrsResourceIdentifiers :: !(Maybe [ResourceIdentifier]) , _ldrrsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ListDiscoveredResourcesResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ldrrsNextToken' -- -- * 'ldrrsResourceIdentifiers' -- -- * 'ldrrsResponseStatus' listDiscoveredResourcesResponse :: Int -- ^ 'ldrrsResponseStatus' -> ListDiscoveredResourcesResponse listDiscoveredResourcesResponse pResponseStatus_ = ListDiscoveredResourcesResponse' { _ldrrsNextToken = Nothing , _ldrrsResourceIdentifiers = Nothing , _ldrrsResponseStatus = pResponseStatus_ } -- | The string that you use in a subsequent request to get the next page of -- results in a paginated response. ldrrsNextToken :: Lens' ListDiscoveredResourcesResponse (Maybe Text) ldrrsNextToken = lens _ldrrsNextToken (\ s a -> s{_ldrrsNextToken = a}); -- | The details that identify a resource that is discovered by AWS Config, -- including the resource type, ID, and (if available) the custom resource -- name. ldrrsResourceIdentifiers :: Lens' ListDiscoveredResourcesResponse [ResourceIdentifier] ldrrsResourceIdentifiers = lens _ldrrsResourceIdentifiers (\ s a -> s{_ldrrsResourceIdentifiers = a}) . _Default . _Coerce; -- | The response status code. ldrrsResponseStatus :: Lens' ListDiscoveredResourcesResponse Int ldrrsResponseStatus = lens _ldrrsResponseStatus (\ s a -> s{_ldrrsResponseStatus = a});