{-# 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.WorkDocs.DescribeUsers -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Describes the specified users. You can describe all users or filter the results (for example, by status or organization). -- -- -- By default, Amazon WorkDocs returns the first 24 active or pending users. If there are more results, the response includes a marker that you can use to request the next set of results. -- -- -- This operation returns paginated results. module Network.AWS.WorkDocs.DescribeUsers ( -- * Creating a Request describeUsers , DescribeUsers -- * Request Lenses , duInclude , duUserIds , duAuthenticationToken , duSort , duMarker , duQuery , duLimit , duOrder , duOrganizationId , duFields -- * Destructuring the Response , describeUsersResponse , DescribeUsersResponse -- * Response Lenses , dursUsers , dursTotalNumberOfUsers , dursMarker , dursResponseStatus ) where import Network.AWS.Lens import Network.AWS.Pager import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.WorkDocs.Types import Network.AWS.WorkDocs.Types.Product -- | /See:/ 'describeUsers' smart constructor. data DescribeUsers = DescribeUsers' { _duInclude :: !(Maybe UserFilterType) , _duUserIds :: !(Maybe Text) , _duAuthenticationToken :: !(Maybe (Sensitive Text)) , _duSort :: !(Maybe UserSortType) , _duMarker :: !(Maybe Text) , _duQuery :: !(Maybe (Sensitive Text)) , _duLimit :: !(Maybe Nat) , _duOrder :: !(Maybe OrderType) , _duOrganizationId :: !(Maybe Text) , _duFields :: !(Maybe Text) } deriving (Eq, Show, Data, Typeable, Generic) -- | Creates a value of 'DescribeUsers' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'duInclude' - The state of the users. Specify "ALL" to include inactive users. -- -- * 'duUserIds' - The IDs of the users. -- -- * 'duAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials. -- -- * 'duSort' - The sorting criteria. -- -- * 'duMarker' - The marker for the next set of results. (You received this marker from a previous call.) -- -- * 'duQuery' - A query to filter users by user name. -- -- * 'duLimit' - The maximum number of items to return. -- -- * 'duOrder' - The order for the results. -- -- * 'duOrganizationId' - The ID of the organization. -- -- * 'duFields' - A comma-separated list of values. Specify "STORAGE_METADATA" to include the user storage quota and utilization information. describeUsers :: DescribeUsers describeUsers = DescribeUsers' { _duInclude = Nothing , _duUserIds = Nothing , _duAuthenticationToken = Nothing , _duSort = Nothing , _duMarker = Nothing , _duQuery = Nothing , _duLimit = Nothing , _duOrder = Nothing , _duOrganizationId = Nothing , _duFields = Nothing } -- | The state of the users. Specify "ALL" to include inactive users. duInclude :: Lens' DescribeUsers (Maybe UserFilterType) duInclude = lens _duInclude (\ s a -> s{_duInclude = a}) -- | The IDs of the users. duUserIds :: Lens' DescribeUsers (Maybe Text) duUserIds = lens _duUserIds (\ s a -> s{_duUserIds = a}) -- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials. duAuthenticationToken :: Lens' DescribeUsers (Maybe Text) duAuthenticationToken = lens _duAuthenticationToken (\ s a -> s{_duAuthenticationToken = a}) . mapping _Sensitive -- | The sorting criteria. duSort :: Lens' DescribeUsers (Maybe UserSortType) duSort = lens _duSort (\ s a -> s{_duSort = a}) -- | The marker for the next set of results. (You received this marker from a previous call.) duMarker :: Lens' DescribeUsers (Maybe Text) duMarker = lens _duMarker (\ s a -> s{_duMarker = a}) -- | A query to filter users by user name. duQuery :: Lens' DescribeUsers (Maybe Text) duQuery = lens _duQuery (\ s a -> s{_duQuery = a}) . mapping _Sensitive -- | The maximum number of items to return. duLimit :: Lens' DescribeUsers (Maybe Natural) duLimit = lens _duLimit (\ s a -> s{_duLimit = a}) . mapping _Nat -- | The order for the results. duOrder :: Lens' DescribeUsers (Maybe OrderType) duOrder = lens _duOrder (\ s a -> s{_duOrder = a}) -- | The ID of the organization. duOrganizationId :: Lens' DescribeUsers (Maybe Text) duOrganizationId = lens _duOrganizationId (\ s a -> s{_duOrganizationId = a}) -- | A comma-separated list of values. Specify "STORAGE_METADATA" to include the user storage quota and utilization information. duFields :: Lens' DescribeUsers (Maybe Text) duFields = lens _duFields (\ s a -> s{_duFields = a}) instance AWSPager DescribeUsers where page rq rs | stop (rs ^. dursMarker) = Nothing | stop (rs ^. dursUsers) = Nothing | otherwise = Just $ rq & duMarker .~ rs ^. dursMarker instance AWSRequest DescribeUsers where type Rs DescribeUsers = DescribeUsersResponse request = get workDocs response = receiveJSON (\ s h x -> DescribeUsersResponse' <$> (x .?> "Users" .!@ mempty) <*> (x .?> "TotalNumberOfUsers") <*> (x .?> "Marker") <*> (pure (fromEnum s))) instance Hashable DescribeUsers where instance NFData DescribeUsers where instance ToHeaders DescribeUsers where toHeaders DescribeUsers'{..} = mconcat ["Authentication" =# _duAuthenticationToken, "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)] instance ToPath DescribeUsers where toPath = const "/api/v1/users" instance ToQuery DescribeUsers where toQuery DescribeUsers'{..} = mconcat ["include" =: _duInclude, "userIds" =: _duUserIds, "sort" =: _duSort, "marker" =: _duMarker, "query" =: _duQuery, "limit" =: _duLimit, "order" =: _duOrder, "organizationId" =: _duOrganizationId, "fields" =: _duFields] -- | /See:/ 'describeUsersResponse' smart constructor. data DescribeUsersResponse = DescribeUsersResponse' { _dursUsers :: !(Maybe [User]) , _dursTotalNumberOfUsers :: !(Maybe Integer) , _dursMarker :: !(Maybe Text) , _dursResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'DescribeUsersResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dursUsers' - The users. -- -- * 'dursTotalNumberOfUsers' - The total number of users included in the results. -- -- * 'dursMarker' - The marker to use when requesting the next set of results. If there are no additional results, the string is empty. -- -- * 'dursResponseStatus' - -- | The response status code. describeUsersResponse :: Int -- ^ 'dursResponseStatus' -> DescribeUsersResponse describeUsersResponse pResponseStatus_ = DescribeUsersResponse' { _dursUsers = Nothing , _dursTotalNumberOfUsers = Nothing , _dursMarker = Nothing , _dursResponseStatus = pResponseStatus_ } -- | The users. dursUsers :: Lens' DescribeUsersResponse [User] dursUsers = lens _dursUsers (\ s a -> s{_dursUsers = a}) . _Default . _Coerce -- | The total number of users included in the results. dursTotalNumberOfUsers :: Lens' DescribeUsersResponse (Maybe Integer) dursTotalNumberOfUsers = lens _dursTotalNumberOfUsers (\ s a -> s{_dursTotalNumberOfUsers = a}) -- | The marker to use when requesting the next set of results. If there are no additional results, the string is empty. dursMarker :: Lens' DescribeUsersResponse (Maybe Text) dursMarker = lens _dursMarker (\ s a -> s{_dursMarker = a}) -- | -- | The response status code. dursResponseStatus :: Lens' DescribeUsersResponse Int dursResponseStatus = lens _dursResponseStatus (\ s a -> s{_dursResponseStatus = a}) instance NFData DescribeUsersResponse where