packages feed

amazonka-iam (empty) → 0.0.0

raw patch · 89 files changed

+12451/−0 lines, 89 filesdep +amazonka-coredep +basesetup-changed

Dependencies added: amazonka-core, base

Files

+ LICENSE view
@@ -0,0 +1,373 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.++Exhibit B - "Incompatible With Secondary Licenses" Notice+---------------------------------------------------------++  This Source Code Form is "Incompatible With Secondary Licenses", as+  defined by the Mozilla Public License, v. 2.0.
+ README.md view
@@ -0,0 +1,26 @@+# Amazon Identity and Access Management SDK++> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!++* [description](#description)+* [Contribute](#contribute)+* [Licence](#licence)++## Description++AWS Identity and Access Management (IAM) enables you to securely control access to AWS services and resources for your users. Using IAM, you can create and manage AWS users and groups and use permissions to allow and deny their access to AWS resources.++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-iam)+and [AWS API Reference](http://docs.aws.amazon.com/IAM/latest/APIReference/Welcome.html).+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`amazonka-iam` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ amazonka-iam.cabal view
@@ -0,0 +1,127 @@+name:                  amazonka-iam+version:               0.0.0+synopsis:              Amazon Identity and Access Management SDK.+homepage:              https://github.com/brendanhay/amazonka+license:               OtherLicense+license-file:          LICENSE+author:                Brendan Hay+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>+copyright:             Copyright (c) 2013-2014 Brendan Hay+category:              Network, AWS, Cloud+build-type:            Simple+extra-source-files:    README.md+cabal-version:         >= 1.10++description:+    AWS Identity and Access Management (IAM) enables you to securely+    control access to AWS services and resources for your users. Using IAM,+    you can create and manage AWS users and groups and use permissions to+    allow and deny their access to AWS resources.+    .+    /See:/ <http://docs.aws.amazon.com/IAM/latest/APIReference/Welcome.html AWS API Reference>+    .+    /Warning:/ This is an experimental preview release which is still under+    heavy development and not intended for public consumption, caveat emptor!++source-repository head+    type:     git+    location: git://github.com/brendanhay/amazonka.git++library+    default-language:  Haskell2010+    hs-source-dirs:    src gen++    ghc-options:       -Wall++    exposed-modules:+          Network.AWS.IAM+        , Network.AWS.IAM.AddClientIDToOpenIDConnectProvider+        , Network.AWS.IAM.AddRoleToInstanceProfile+        , Network.AWS.IAM.AddUserToGroup+        , Network.AWS.IAM.ChangePassword+        , Network.AWS.IAM.CreateAccessKey+        , Network.AWS.IAM.CreateAccountAlias+        , Network.AWS.IAM.CreateGroup+        , Network.AWS.IAM.CreateInstanceProfile+        , Network.AWS.IAM.CreateLoginProfile+        , Network.AWS.IAM.CreateOpenIDConnectProvider+        , Network.AWS.IAM.CreateRole+        , Network.AWS.IAM.CreateSAMLProvider+        , Network.AWS.IAM.CreateUser+        , Network.AWS.IAM.CreateVirtualMFADevice+        , Network.AWS.IAM.DeactivateMFADevice+        , Network.AWS.IAM.DeleteAccessKey+        , Network.AWS.IAM.DeleteAccountAlias+        , Network.AWS.IAM.DeleteAccountPasswordPolicy+        , Network.AWS.IAM.DeleteGroup+        , Network.AWS.IAM.DeleteGroupPolicy+        , Network.AWS.IAM.DeleteInstanceProfile+        , Network.AWS.IAM.DeleteLoginProfile+        , Network.AWS.IAM.DeleteOpenIDConnectProvider+        , Network.AWS.IAM.DeleteRole+        , Network.AWS.IAM.DeleteRolePolicy+        , Network.AWS.IAM.DeleteSAMLProvider+        , Network.AWS.IAM.DeleteServerCertificate+        , Network.AWS.IAM.DeleteSigningCertificate+        , Network.AWS.IAM.DeleteUser+        , Network.AWS.IAM.DeleteUserPolicy+        , Network.AWS.IAM.DeleteVirtualMFADevice+        , Network.AWS.IAM.EnableMFADevice+        , Network.AWS.IAM.GenerateCredentialReport+        , Network.AWS.IAM.GetAccountPasswordPolicy+        , Network.AWS.IAM.GetAccountSummary+        , Network.AWS.IAM.GetCredentialReport+        , Network.AWS.IAM.GetGroup+        , Network.AWS.IAM.GetGroupPolicy+        , Network.AWS.IAM.GetInstanceProfile+        , Network.AWS.IAM.GetLoginProfile+        , Network.AWS.IAM.GetOpenIDConnectProvider+        , Network.AWS.IAM.GetRole+        , Network.AWS.IAM.GetRolePolicy+        , Network.AWS.IAM.GetSAMLProvider+        , Network.AWS.IAM.GetServerCertificate+        , Network.AWS.IAM.GetUser+        , Network.AWS.IAM.GetUserPolicy+        , Network.AWS.IAM.ListAccessKeys+        , Network.AWS.IAM.ListAccountAliases+        , Network.AWS.IAM.ListGroupPolicies+        , Network.AWS.IAM.ListGroups+        , Network.AWS.IAM.ListGroupsForUser+        , Network.AWS.IAM.ListInstanceProfiles+        , Network.AWS.IAM.ListInstanceProfilesForRole+        , Network.AWS.IAM.ListMFADevices+        , Network.AWS.IAM.ListOpenIDConnectProviders+        , Network.AWS.IAM.ListRolePolicies+        , Network.AWS.IAM.ListRoles+        , Network.AWS.IAM.ListSAMLProviders+        , Network.AWS.IAM.ListServerCertificates+        , Network.AWS.IAM.ListSigningCertificates+        , Network.AWS.IAM.ListUserPolicies+        , Network.AWS.IAM.ListUsers+        , Network.AWS.IAM.ListVirtualMFADevices+        , Network.AWS.IAM.PutGroupPolicy+        , Network.AWS.IAM.PutRolePolicy+        , Network.AWS.IAM.PutUserPolicy+        , Network.AWS.IAM.RemoveClientIDFromOpenIDConnectProvider+        , Network.AWS.IAM.RemoveRoleFromInstanceProfile+        , Network.AWS.IAM.RemoveUserFromGroup+        , Network.AWS.IAM.ResyncMFADevice+        , Network.AWS.IAM.Types+        , Network.AWS.IAM.UpdateAccessKey+        , Network.AWS.IAM.UpdateAccountPasswordPolicy+        , Network.AWS.IAM.UpdateAssumeRolePolicy+        , Network.AWS.IAM.UpdateGroup+        , Network.AWS.IAM.UpdateLoginProfile+        , Network.AWS.IAM.UpdateOpenIDConnectProviderThumbprint+        , Network.AWS.IAM.UpdateSAMLProvider+        , Network.AWS.IAM.UpdateServerCertificate+        , Network.AWS.IAM.UpdateSigningCertificate+        , Network.AWS.IAM.UpdateUser+        , Network.AWS.IAM.UploadServerCertificate+        , Network.AWS.IAM.UploadSigningCertificate++    other-modules:++    build-depends:+          amazonka-core+        , base          >= 4.7 && < 5
+ gen/Network/AWS/IAM.hs view
@@ -0,0 +1,185 @@+-- Module      : Network.AWS.IAM+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | AWS Identity and Access Management (IAM) enables you to securely control+-- access to AWS services and resources for your users. Using IAM, you can+-- create and manage AWS users and groups and use permissions to allow and+-- deny their access to AWS resources.+module Network.AWS.IAM+    ( module Network.AWS.IAM.AddClientIDToOpenIDConnectProvider+    , module Network.AWS.IAM.AddRoleToInstanceProfile+    , module Network.AWS.IAM.AddUserToGroup+    , module Network.AWS.IAM.ChangePassword+    , module Network.AWS.IAM.CreateAccessKey+    , module Network.AWS.IAM.CreateAccountAlias+    , module Network.AWS.IAM.CreateGroup+    , module Network.AWS.IAM.CreateInstanceProfile+    , module Network.AWS.IAM.CreateLoginProfile+    , module Network.AWS.IAM.CreateOpenIDConnectProvider+    , module Network.AWS.IAM.CreateRole+    , module Network.AWS.IAM.CreateSAMLProvider+    , module Network.AWS.IAM.CreateUser+    , module Network.AWS.IAM.CreateVirtualMFADevice+    , module Network.AWS.IAM.DeactivateMFADevice+    , module Network.AWS.IAM.DeleteAccessKey+    , module Network.AWS.IAM.DeleteAccountAlias+    , module Network.AWS.IAM.DeleteAccountPasswordPolicy+    , module Network.AWS.IAM.DeleteGroup+    , module Network.AWS.IAM.DeleteGroupPolicy+    , module Network.AWS.IAM.DeleteInstanceProfile+    , module Network.AWS.IAM.DeleteLoginProfile+    , module Network.AWS.IAM.DeleteOpenIDConnectProvider+    , module Network.AWS.IAM.DeleteRole+    , module Network.AWS.IAM.DeleteRolePolicy+    , module Network.AWS.IAM.DeleteSAMLProvider+    , module Network.AWS.IAM.DeleteServerCertificate+    , module Network.AWS.IAM.DeleteSigningCertificate+    , module Network.AWS.IAM.DeleteUser+    , module Network.AWS.IAM.DeleteUserPolicy+    , module Network.AWS.IAM.DeleteVirtualMFADevice+    , module Network.AWS.IAM.EnableMFADevice+    , module Network.AWS.IAM.GenerateCredentialReport+    , module Network.AWS.IAM.GetAccountPasswordPolicy+    , module Network.AWS.IAM.GetAccountSummary+    , module Network.AWS.IAM.GetCredentialReport+    , module Network.AWS.IAM.GetGroup+    , module Network.AWS.IAM.GetGroupPolicy+    , module Network.AWS.IAM.GetInstanceProfile+    , module Network.AWS.IAM.GetLoginProfile+    , module Network.AWS.IAM.GetOpenIDConnectProvider+    , module Network.AWS.IAM.GetRole+    , module Network.AWS.IAM.GetRolePolicy+    , module Network.AWS.IAM.GetSAMLProvider+    , module Network.AWS.IAM.GetServerCertificate+    , module Network.AWS.IAM.GetUser+    , module Network.AWS.IAM.GetUserPolicy+    , module Network.AWS.IAM.ListAccessKeys+    , module Network.AWS.IAM.ListAccountAliases+    , module Network.AWS.IAM.ListGroupPolicies+    , module Network.AWS.IAM.ListGroups+    , module Network.AWS.IAM.ListGroupsForUser+    , module Network.AWS.IAM.ListInstanceProfiles+    , module Network.AWS.IAM.ListInstanceProfilesForRole+    , module Network.AWS.IAM.ListMFADevices+    , module Network.AWS.IAM.ListOpenIDConnectProviders+    , module Network.AWS.IAM.ListRolePolicies+    , module Network.AWS.IAM.ListRoles+    , module Network.AWS.IAM.ListSAMLProviders+    , module Network.AWS.IAM.ListServerCertificates+    , module Network.AWS.IAM.ListSigningCertificates+    , module Network.AWS.IAM.ListUserPolicies+    , module Network.AWS.IAM.ListUsers+    , module Network.AWS.IAM.ListVirtualMFADevices+    , module Network.AWS.IAM.PutGroupPolicy+    , module Network.AWS.IAM.PutRolePolicy+    , module Network.AWS.IAM.PutUserPolicy+    , module Network.AWS.IAM.RemoveClientIDFromOpenIDConnectProvider+    , module Network.AWS.IAM.RemoveRoleFromInstanceProfile+    , module Network.AWS.IAM.RemoveUserFromGroup+    , module Network.AWS.IAM.ResyncMFADevice+    , module Network.AWS.IAM.Types+    , module Network.AWS.IAM.UpdateAccessKey+    , module Network.AWS.IAM.UpdateAccountPasswordPolicy+    , module Network.AWS.IAM.UpdateAssumeRolePolicy+    , module Network.AWS.IAM.UpdateGroup+    , module Network.AWS.IAM.UpdateLoginProfile+    , module Network.AWS.IAM.UpdateOpenIDConnectProviderThumbprint+    , module Network.AWS.IAM.UpdateSAMLProvider+    , module Network.AWS.IAM.UpdateServerCertificate+    , module Network.AWS.IAM.UpdateSigningCertificate+    , module Network.AWS.IAM.UpdateUser+    , module Network.AWS.IAM.UploadServerCertificate+    , module Network.AWS.IAM.UploadSigningCertificate+    ) where++import Network.AWS.IAM.AddClientIDToOpenIDConnectProvider+import Network.AWS.IAM.AddRoleToInstanceProfile+import Network.AWS.IAM.AddUserToGroup+import Network.AWS.IAM.ChangePassword+import Network.AWS.IAM.CreateAccessKey+import Network.AWS.IAM.CreateAccountAlias+import Network.AWS.IAM.CreateGroup+import Network.AWS.IAM.CreateInstanceProfile+import Network.AWS.IAM.CreateLoginProfile+import Network.AWS.IAM.CreateOpenIDConnectProvider+import Network.AWS.IAM.CreateRole+import Network.AWS.IAM.CreateSAMLProvider+import Network.AWS.IAM.CreateUser+import Network.AWS.IAM.CreateVirtualMFADevice+import Network.AWS.IAM.DeactivateMFADevice+import Network.AWS.IAM.DeleteAccessKey+import Network.AWS.IAM.DeleteAccountAlias+import Network.AWS.IAM.DeleteAccountPasswordPolicy+import Network.AWS.IAM.DeleteGroup+import Network.AWS.IAM.DeleteGroupPolicy+import Network.AWS.IAM.DeleteInstanceProfile+import Network.AWS.IAM.DeleteLoginProfile+import Network.AWS.IAM.DeleteOpenIDConnectProvider+import Network.AWS.IAM.DeleteRole+import Network.AWS.IAM.DeleteRolePolicy+import Network.AWS.IAM.DeleteSAMLProvider+import Network.AWS.IAM.DeleteServerCertificate+import Network.AWS.IAM.DeleteSigningCertificate+import Network.AWS.IAM.DeleteUser+import Network.AWS.IAM.DeleteUserPolicy+import Network.AWS.IAM.DeleteVirtualMFADevice+import Network.AWS.IAM.EnableMFADevice+import Network.AWS.IAM.GenerateCredentialReport+import Network.AWS.IAM.GetAccountPasswordPolicy+import Network.AWS.IAM.GetAccountSummary+import Network.AWS.IAM.GetCredentialReport+import Network.AWS.IAM.GetGroup+import Network.AWS.IAM.GetGroupPolicy+import Network.AWS.IAM.GetInstanceProfile+import Network.AWS.IAM.GetLoginProfile+import Network.AWS.IAM.GetOpenIDConnectProvider+import Network.AWS.IAM.GetRole+import Network.AWS.IAM.GetRolePolicy+import Network.AWS.IAM.GetSAMLProvider+import Network.AWS.IAM.GetServerCertificate+import Network.AWS.IAM.GetUser+import Network.AWS.IAM.GetUserPolicy+import Network.AWS.IAM.ListAccessKeys+import Network.AWS.IAM.ListAccountAliases+import Network.AWS.IAM.ListGroupPolicies+import Network.AWS.IAM.ListGroups+import Network.AWS.IAM.ListGroupsForUser+import Network.AWS.IAM.ListInstanceProfiles+import Network.AWS.IAM.ListInstanceProfilesForRole+import Network.AWS.IAM.ListMFADevices+import Network.AWS.IAM.ListOpenIDConnectProviders+import Network.AWS.IAM.ListRolePolicies+import Network.AWS.IAM.ListRoles+import Network.AWS.IAM.ListSAMLProviders+import Network.AWS.IAM.ListServerCertificates+import Network.AWS.IAM.ListSigningCertificates+import Network.AWS.IAM.ListUserPolicies+import Network.AWS.IAM.ListUsers+import Network.AWS.IAM.ListVirtualMFADevices+import Network.AWS.IAM.PutGroupPolicy+import Network.AWS.IAM.PutRolePolicy+import Network.AWS.IAM.PutUserPolicy+import Network.AWS.IAM.RemoveClientIDFromOpenIDConnectProvider+import Network.AWS.IAM.RemoveRoleFromInstanceProfile+import Network.AWS.IAM.RemoveUserFromGroup+import Network.AWS.IAM.ResyncMFADevice+import Network.AWS.IAM.Types+import Network.AWS.IAM.UpdateAccessKey+import Network.AWS.IAM.UpdateAccountPasswordPolicy+import Network.AWS.IAM.UpdateAssumeRolePolicy+import Network.AWS.IAM.UpdateGroup+import Network.AWS.IAM.UpdateLoginProfile+import Network.AWS.IAM.UpdateOpenIDConnectProviderThumbprint+import Network.AWS.IAM.UpdateSAMLProvider+import Network.AWS.IAM.UpdateServerCertificate+import Network.AWS.IAM.UpdateSigningCertificate+import Network.AWS.IAM.UpdateUser+import Network.AWS.IAM.UploadServerCertificate+import Network.AWS.IAM.UploadSigningCertificate
+ gen/Network/AWS/IAM/AddClientIDToOpenIDConnectProvider.hs view
@@ -0,0 +1,108 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.AddClientIDToOpenIDConnectProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Adds a new client ID (also known as audience) to the list of client IDs+-- already registered for the specified IAM OpenID Connect provider. This+-- action is idempotent; it does not fail or return an error if you add an+-- existing client ID to the provider.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html>+module Network.AWS.IAM.AddClientIDToOpenIDConnectProvider+    (+    -- * Request+      AddClientIDToOpenIDConnectProvider+    -- ** Request constructor+    , addClientIDToOpenIDConnectProvider+    -- ** Request lenses+    , acidtoidcpClientID+    , acidtoidcpOpenIDConnectProviderArn++    -- * Response+    , AddClientIDToOpenIDConnectProviderResponse+    -- ** Response constructor+    , addClientIDToOpenIDConnectProviderResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data AddClientIDToOpenIDConnectProvider = AddClientIDToOpenIDConnectProvider+    { _acidtoidcpClientID                 :: Text+    , _acidtoidcpOpenIDConnectProviderArn :: Text+    } deriving (Eq, Ord, Show)++-- | 'AddClientIDToOpenIDConnectProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'acidtoidcpClientID' @::@ 'Text'+--+-- * 'acidtoidcpOpenIDConnectProviderArn' @::@ 'Text'+--+addClientIDToOpenIDConnectProvider :: Text -- ^ 'acidtoidcpOpenIDConnectProviderArn'+                                   -> Text -- ^ 'acidtoidcpClientID'+                                   -> AddClientIDToOpenIDConnectProvider+addClientIDToOpenIDConnectProvider p1 p2 = AddClientIDToOpenIDConnectProvider+    { _acidtoidcpOpenIDConnectProviderArn = p1+    , _acidtoidcpClientID                 = p2+    }++-- | The client ID (also known as audience) to add to the IAM OpenID Connect+-- provider.+acidtoidcpClientID :: Lens' AddClientIDToOpenIDConnectProvider Text+acidtoidcpClientID =+    lens _acidtoidcpClientID (\s a -> s { _acidtoidcpClientID = a })++-- | The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider+-- to add the client ID to. You can get a list of OIDC provider ARNs by+-- using the ListOpenIDConnectProviders action.+acidtoidcpOpenIDConnectProviderArn :: Lens' AddClientIDToOpenIDConnectProvider Text+acidtoidcpOpenIDConnectProviderArn =+    lens _acidtoidcpOpenIDConnectProviderArn+        (\s a -> s { _acidtoidcpOpenIDConnectProviderArn = a })++data AddClientIDToOpenIDConnectProviderResponse = AddClientIDToOpenIDConnectProviderResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'AddClientIDToOpenIDConnectProviderResponse' constructor.+addClientIDToOpenIDConnectProviderResponse :: AddClientIDToOpenIDConnectProviderResponse+addClientIDToOpenIDConnectProviderResponse = AddClientIDToOpenIDConnectProviderResponse++instance ToPath AddClientIDToOpenIDConnectProvider where+    toPath = const "/"++instance ToQuery AddClientIDToOpenIDConnectProvider where+    toQuery AddClientIDToOpenIDConnectProvider{..} = mconcat+        [ "ClientID"                 =? _acidtoidcpClientID+        , "OpenIDConnectProviderArn" =? _acidtoidcpOpenIDConnectProviderArn+        ]++instance ToHeaders AddClientIDToOpenIDConnectProvider++instance AWSRequest AddClientIDToOpenIDConnectProvider where+    type Sv AddClientIDToOpenIDConnectProvider = IAM+    type Rs AddClientIDToOpenIDConnectProvider = AddClientIDToOpenIDConnectProviderResponse++    request  = post "AddClientIDToOpenIDConnectProvider"+    response = nullResponse AddClientIDToOpenIDConnectProviderResponse
+ gen/Network/AWS/IAM/AddRoleToInstanceProfile.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.AddRoleToInstanceProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Adds the specified role to the specified instance profile. For more+-- information about roles, go to Working with Roles. For more information+-- about instance profiles, go to About Instance Profiles.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html>+module Network.AWS.IAM.AddRoleToInstanceProfile+    (+    -- * Request+      AddRoleToInstanceProfile+    -- ** Request constructor+    , addRoleToInstanceProfile+    -- ** Request lenses+    , artipInstanceProfileName+    , artipRoleName++    -- * Response+    , AddRoleToInstanceProfileResponse+    -- ** Response constructor+    , addRoleToInstanceProfileResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data AddRoleToInstanceProfile = AddRoleToInstanceProfile+    { _artipInstanceProfileName :: Text+    , _artipRoleName            :: Text+    } deriving (Eq, Ord, Show)++-- | 'AddRoleToInstanceProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'artipInstanceProfileName' @::@ 'Text'+--+-- * 'artipRoleName' @::@ 'Text'+--+addRoleToInstanceProfile :: Text -- ^ 'artipInstanceProfileName'+                         -> Text -- ^ 'artipRoleName'+                         -> AddRoleToInstanceProfile+addRoleToInstanceProfile p1 p2 = AddRoleToInstanceProfile+    { _artipInstanceProfileName = p1+    , _artipRoleName            = p2+    }++-- | The name of the instance profile to update.+artipInstanceProfileName :: Lens' AddRoleToInstanceProfile Text+artipInstanceProfileName =+    lens _artipInstanceProfileName+        (\s a -> s { _artipInstanceProfileName = a })++-- | The name of the role to add.+artipRoleName :: Lens' AddRoleToInstanceProfile Text+artipRoleName = lens _artipRoleName (\s a -> s { _artipRoleName = a })++data AddRoleToInstanceProfileResponse = AddRoleToInstanceProfileResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'AddRoleToInstanceProfileResponse' constructor.+addRoleToInstanceProfileResponse :: AddRoleToInstanceProfileResponse+addRoleToInstanceProfileResponse = AddRoleToInstanceProfileResponse++instance ToPath AddRoleToInstanceProfile where+    toPath = const "/"++instance ToQuery AddRoleToInstanceProfile where+    toQuery AddRoleToInstanceProfile{..} = mconcat+        [ "InstanceProfileName" =? _artipInstanceProfileName+        , "RoleName"            =? _artipRoleName+        ]++instance ToHeaders AddRoleToInstanceProfile++instance AWSRequest AddRoleToInstanceProfile where+    type Sv AddRoleToInstanceProfile = IAM+    type Rs AddRoleToInstanceProfile = AddRoleToInstanceProfileResponse++    request  = post "AddRoleToInstanceProfile"+    response = nullResponse AddRoleToInstanceProfileResponse
+ gen/Network/AWS/IAM/AddUserToGroup.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.AddUserToGroup+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Adds the specified user to the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html>+module Network.AWS.IAM.AddUserToGroup+    (+    -- * Request+      AddUserToGroup+    -- ** Request constructor+    , addUserToGroup+    -- ** Request lenses+    , autgGroupName+    , autgUserName++    -- * Response+    , AddUserToGroupResponse+    -- ** Response constructor+    , addUserToGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data AddUserToGroup = AddUserToGroup+    { _autgGroupName :: Text+    , _autgUserName  :: Text+    } deriving (Eq, Ord, Show)++-- | 'AddUserToGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'autgGroupName' @::@ 'Text'+--+-- * 'autgUserName' @::@ 'Text'+--+addUserToGroup :: Text -- ^ 'autgGroupName'+               -> Text -- ^ 'autgUserName'+               -> AddUserToGroup+addUserToGroup p1 p2 = AddUserToGroup+    { _autgGroupName = p1+    , _autgUserName  = p2+    }++-- | The name of the group to update.+autgGroupName :: Lens' AddUserToGroup Text+autgGroupName = lens _autgGroupName (\s a -> s { _autgGroupName = a })++-- | The name of the user to add.+autgUserName :: Lens' AddUserToGroup Text+autgUserName = lens _autgUserName (\s a -> s { _autgUserName = a })++data AddUserToGroupResponse = AddUserToGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'AddUserToGroupResponse' constructor.+addUserToGroupResponse :: AddUserToGroupResponse+addUserToGroupResponse = AddUserToGroupResponse++instance ToPath AddUserToGroup where+    toPath = const "/"++instance ToQuery AddUserToGroup where+    toQuery AddUserToGroup{..} = mconcat+        [ "GroupName" =? _autgGroupName+        , "UserName"  =? _autgUserName+        ]++instance ToHeaders AddUserToGroup++instance AWSRequest AddUserToGroup where+    type Sv AddUserToGroup = IAM+    type Rs AddUserToGroup = AddUserToGroupResponse++    request  = post "AddUserToGroup"+    response = nullResponse AddUserToGroupResponse
+ gen/Network/AWS/IAM/ChangePassword.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ChangePassword+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Changes the password of the IAM user who is calling this action. The root+-- account password is not affected by this action. To change the password for+-- a different user, see UpdateLoginProfile. For more information about+-- modifying passwords, see Managing Passwords in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html>+module Network.AWS.IAM.ChangePassword+    (+    -- * Request+      ChangePassword+    -- ** Request constructor+    , changePassword+    -- ** Request lenses+    , cpNewPassword+    , cpOldPassword++    -- * Response+    , ChangePasswordResponse+    -- ** Response constructor+    , changePasswordResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ChangePassword = ChangePassword+    { _cpNewPassword :: Sensitive Text+    , _cpOldPassword :: Sensitive Text+    } deriving (Eq, Ord, Show)++-- | 'ChangePassword' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpNewPassword' @::@ 'Text'+--+-- * 'cpOldPassword' @::@ 'Text'+--+changePassword :: Text -- ^ 'cpOldPassword'+               -> Text -- ^ 'cpNewPassword'+               -> ChangePassword+changePassword p1 p2 = ChangePassword+    { _cpOldPassword = withIso _Sensitive (const id) p1+    , _cpNewPassword = withIso _Sensitive (const id) p2+    }++-- | The new password. The new password must conform to the AWS account's+-- password policy, if one exists.+cpNewPassword :: Lens' ChangePassword Text+cpNewPassword = lens _cpNewPassword (\s a -> s { _cpNewPassword = a }) . _Sensitive++-- | The IAM user's current password.+cpOldPassword :: Lens' ChangePassword Text+cpOldPassword = lens _cpOldPassword (\s a -> s { _cpOldPassword = a }) . _Sensitive++data ChangePasswordResponse = ChangePasswordResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'ChangePasswordResponse' constructor.+changePasswordResponse :: ChangePasswordResponse+changePasswordResponse = ChangePasswordResponse++instance ToPath ChangePassword where+    toPath = const "/"++instance ToQuery ChangePassword where+    toQuery ChangePassword{..} = mconcat+        [ "NewPassword" =? _cpNewPassword+        , "OldPassword" =? _cpOldPassword+        ]++instance ToHeaders ChangePassword++instance AWSRequest ChangePassword where+    type Sv ChangePassword = IAM+    type Rs ChangePassword = ChangePasswordResponse++    request  = post "ChangePassword"+    response = nullResponse ChangePasswordResponse
+ gen/Network/AWS/IAM/CreateAccessKey.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateAccessKey+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates a new AWS secret access key and corresponding AWS access key ID for+-- the specified user. The default status for new keys is Active. If you do+-- not specify a user name, IAM determines the user name implicitly based on+-- the AWS access key ID signing the request. Because this action works for+-- access keys under the AWS account, you can use this action to manage root+-- credentials even if the AWS account has no associated users. For+-- information about limits on the number of keys you can create, see+-- Limitations on IAM Entities in the Using IAM guide. To ensure the security+-- of your AWS account, the secret access key is accessible only during key+-- and user creation. You must save the key (for example, in a text file) if+-- you want to be able to access it again. If a secret key is lost, you can+-- delete the access keys for the associated user and then create new keys.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html>+module Network.AWS.IAM.CreateAccessKey+    (+    -- * Request+      CreateAccessKey+    -- ** Request constructor+    , createAccessKey+    -- ** Request lenses+    , cakUserName++    -- * Response+    , CreateAccessKeyResponse+    -- ** Response constructor+    , createAccessKeyResponse+    -- ** Response lenses+    , cakrAccessKey+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype CreateAccessKey = CreateAccessKey+    { _cakUserName :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'CreateAccessKey' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cakUserName' @::@ 'Maybe' 'Text'+--+createAccessKey :: CreateAccessKey+createAccessKey = CreateAccessKey+    { _cakUserName = Nothing+    }++-- | The user name that the new key will belong to.+cakUserName :: Lens' CreateAccessKey (Maybe Text)+cakUserName = lens _cakUserName (\s a -> s { _cakUserName = a })++newtype CreateAccessKeyResponse = CreateAccessKeyResponse+    { _cakrAccessKey :: AccessKey+    } deriving (Eq, Show)++-- | 'CreateAccessKeyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cakrAccessKey' @::@ 'AccessKey'+--+createAccessKeyResponse :: AccessKey -- ^ 'cakrAccessKey'+                        -> CreateAccessKeyResponse+createAccessKeyResponse p1 = CreateAccessKeyResponse+    { _cakrAccessKey = p1+    }++-- | Information about the access key.+cakrAccessKey :: Lens' CreateAccessKeyResponse AccessKey+cakrAccessKey = lens _cakrAccessKey (\s a -> s { _cakrAccessKey = a })++instance ToPath CreateAccessKey where+    toPath = const "/"++instance ToQuery CreateAccessKey where+    toQuery CreateAccessKey{..} = mconcat+        [ "UserName" =? _cakUserName+        ]++instance ToHeaders CreateAccessKey++instance AWSRequest CreateAccessKey where+    type Sv CreateAccessKey = IAM+    type Rs CreateAccessKey = CreateAccessKeyResponse++    request  = post "CreateAccessKey"+    response = xmlResponse++instance FromXML CreateAccessKeyResponse where+    parseXML = withElement "CreateAccessKeyResult" $ \x -> CreateAccessKeyResponse+        <$> x .@  "AccessKey"
+ gen/Network/AWS/IAM/CreateAccountAlias.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateAccountAlias+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates an alias for your AWS account. For information about using an AWS+-- account alias, see Using an Alias for Your AWS Account ID in the Using IAM+-- guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccountAlias.html>+module Network.AWS.IAM.CreateAccountAlias+    (+    -- * Request+      CreateAccountAlias+    -- ** Request constructor+    , createAccountAlias+    -- ** Request lenses+    , caaAccountAlias++    -- * Response+    , CreateAccountAliasResponse+    -- ** Response constructor+    , createAccountAliasResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype CreateAccountAlias = CreateAccountAlias+    { _caaAccountAlias :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'CreateAccountAlias' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'caaAccountAlias' @::@ 'Text'+--+createAccountAlias :: Text -- ^ 'caaAccountAlias'+                   -> CreateAccountAlias+createAccountAlias p1 = CreateAccountAlias+    { _caaAccountAlias = p1+    }++-- | The name of the account alias to create.+caaAccountAlias :: Lens' CreateAccountAlias Text+caaAccountAlias = lens _caaAccountAlias (\s a -> s { _caaAccountAlias = a })++data CreateAccountAliasResponse = CreateAccountAliasResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'CreateAccountAliasResponse' constructor.+createAccountAliasResponse :: CreateAccountAliasResponse+createAccountAliasResponse = CreateAccountAliasResponse++instance ToPath CreateAccountAlias where+    toPath = const "/"++instance ToQuery CreateAccountAlias where+    toQuery CreateAccountAlias{..} = mconcat+        [ "AccountAlias" =? _caaAccountAlias+        ]++instance ToHeaders CreateAccountAlias++instance AWSRequest CreateAccountAlias where+    type Sv CreateAccountAlias = IAM+    type Rs CreateAccountAlias = CreateAccountAliasResponse++    request  = post "CreateAccountAlias"+    response = nullResponse CreateAccountAliasResponse
+ gen/Network/AWS/IAM/CreateGroup.hs view
@@ -0,0 +1,120 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateGroup+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates a new group. For information about the number of groups you can+-- create, see Limitations on IAM Entities in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateGroup.html>+module Network.AWS.IAM.CreateGroup+    (+    -- * Request+      CreateGroup+    -- ** Request constructor+    , createGroup+    -- ** Request lenses+    , cgGroupName+    , cgPath++    -- * Response+    , CreateGroupResponse+    -- ** Response constructor+    , createGroupResponse+    -- ** Response lenses+    , cgrGroup+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateGroup = CreateGroup+    { _cgGroupName :: Text+    , _cgPath      :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CreateGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cgGroupName' @::@ 'Text'+--+-- * 'cgPath' @::@ 'Maybe' 'Text'+--+createGroup :: Text -- ^ 'cgGroupName'+            -> CreateGroup+createGroup p1 = CreateGroup+    { _cgGroupName = p1+    , _cgPath      = Nothing+    }++-- | The name of the group to create. Do not include the path in this value.+cgGroupName :: Lens' CreateGroup Text+cgGroupName = lens _cgGroupName (\s a -> s { _cgGroupName = a })++-- | The path to the group. For more information about paths, see IAM+-- Identifiers in the Using IAM guide. This parameter is optional. If it is+-- not included, it defaults to a slash (/).+cgPath :: Lens' CreateGroup (Maybe Text)+cgPath = lens _cgPath (\s a -> s { _cgPath = a })++newtype CreateGroupResponse = CreateGroupResponse+    { _cgrGroup :: Group+    } deriving (Eq, Show)++-- | 'CreateGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cgrGroup' @::@ 'Group'+--+createGroupResponse :: Group -- ^ 'cgrGroup'+                    -> CreateGroupResponse+createGroupResponse p1 = CreateGroupResponse+    { _cgrGroup = p1+    }++-- | Information about the group.+cgrGroup :: Lens' CreateGroupResponse Group+cgrGroup = lens _cgrGroup (\s a -> s { _cgrGroup = a })++instance ToPath CreateGroup where+    toPath = const "/"++instance ToQuery CreateGroup where+    toQuery CreateGroup{..} = mconcat+        [ "GroupName" =? _cgGroupName+        , "Path"      =? _cgPath+        ]++instance ToHeaders CreateGroup++instance AWSRequest CreateGroup where+    type Sv CreateGroup = IAM+    type Rs CreateGroup = CreateGroupResponse++    request  = post "CreateGroup"+    response = xmlResponse++instance FromXML CreateGroupResponse where+    parseXML = withElement "CreateGroupResult" $ \x -> CreateGroupResponse+        <$> x .@  "Group"
+ gen/Network/AWS/IAM/CreateInstanceProfile.hs view
@@ -0,0 +1,124 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateInstanceProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates a new instance profile. For information about instance profiles, go+-- to About Instance Profiles. For information about the number of instance+-- profiles you can create, see Limitations on IAM Entities in the Using IAM+-- guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html>+module Network.AWS.IAM.CreateInstanceProfile+    (+    -- * Request+      CreateInstanceProfile+    -- ** Request constructor+    , createInstanceProfile+    -- ** Request lenses+    , cipInstanceProfileName+    , cipPath++    -- * Response+    , CreateInstanceProfileResponse+    -- ** Response constructor+    , createInstanceProfileResponse+    -- ** Response lenses+    , ciprInstanceProfile+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateInstanceProfile = CreateInstanceProfile+    { _cipInstanceProfileName :: Text+    , _cipPath                :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CreateInstanceProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cipInstanceProfileName' @::@ 'Text'+--+-- * 'cipPath' @::@ 'Maybe' 'Text'+--+createInstanceProfile :: Text -- ^ 'cipInstanceProfileName'+                      -> CreateInstanceProfile+createInstanceProfile p1 = CreateInstanceProfile+    { _cipInstanceProfileName = p1+    , _cipPath                = Nothing+    }++-- | The name of the instance profile to create.+cipInstanceProfileName :: Lens' CreateInstanceProfile Text+cipInstanceProfileName =+    lens _cipInstanceProfileName (\s a -> s { _cipInstanceProfileName = a })++-- | The path to the instance profile. For more information about paths, see+-- IAM Identifiers in the Using IAM guide. This parameter is optional. If it+-- is not included, it defaults to a slash (/).+cipPath :: Lens' CreateInstanceProfile (Maybe Text)+cipPath = lens _cipPath (\s a -> s { _cipPath = a })++newtype CreateInstanceProfileResponse = CreateInstanceProfileResponse+    { _ciprInstanceProfile :: InstanceProfile+    } deriving (Eq, Show)++-- | 'CreateInstanceProfileResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ciprInstanceProfile' @::@ 'InstanceProfile'+--+createInstanceProfileResponse :: InstanceProfile -- ^ 'ciprInstanceProfile'+                              -> CreateInstanceProfileResponse+createInstanceProfileResponse p1 = CreateInstanceProfileResponse+    { _ciprInstanceProfile = p1+    }++-- | Information about the instance profile.+ciprInstanceProfile :: Lens' CreateInstanceProfileResponse InstanceProfile+ciprInstanceProfile =+    lens _ciprInstanceProfile (\s a -> s { _ciprInstanceProfile = a })++instance ToPath CreateInstanceProfile where+    toPath = const "/"++instance ToQuery CreateInstanceProfile where+    toQuery CreateInstanceProfile{..} = mconcat+        [ "InstanceProfileName" =? _cipInstanceProfileName+        , "Path"                =? _cipPath+        ]++instance ToHeaders CreateInstanceProfile++instance AWSRequest CreateInstanceProfile where+    type Sv CreateInstanceProfile = IAM+    type Rs CreateInstanceProfile = CreateInstanceProfileResponse++    request  = post "CreateInstanceProfile"+    response = xmlResponse++instance FromXML CreateInstanceProfileResponse where+    parseXML = withElement "CreateInstanceProfileResult" $ \x -> CreateInstanceProfileResponse+        <$> x .@  "InstanceProfile"
+ gen/Network/AWS/IAM/CreateLoginProfile.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateLoginProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates a password for the specified user, giving the user the ability to+-- access AWS services through the AWS Management Console. For more+-- information about managing passwords, see Managing Passwords in the Using+-- IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html>+module Network.AWS.IAM.CreateLoginProfile+    (+    -- * Request+      CreateLoginProfile+    -- ** Request constructor+    , createLoginProfile+    -- ** Request lenses+    , clpPassword+    , clpPasswordResetRequired+    , clpUserName++    -- * Response+    , CreateLoginProfileResponse+    -- ** Response constructor+    , createLoginProfileResponse+    -- ** Response lenses+    , clprLoginProfile+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateLoginProfile = CreateLoginProfile+    { _clpPassword              :: Sensitive Text+    , _clpPasswordResetRequired :: Maybe Bool+    , _clpUserName              :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateLoginProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'clpPassword' @::@ 'Text'+--+-- * 'clpPasswordResetRequired' @::@ 'Maybe' 'Bool'+--+-- * 'clpUserName' @::@ 'Text'+--+createLoginProfile :: Text -- ^ 'clpUserName'+                   -> Text -- ^ 'clpPassword'+                   -> CreateLoginProfile+createLoginProfile p1 p2 = CreateLoginProfile+    { _clpUserName              = p1+    , _clpPassword              = withIso _Sensitive (const id) p2+    , _clpPasswordResetRequired = Nothing+    }++-- | The new password for the user.+clpPassword :: Lens' CreateLoginProfile Text+clpPassword = lens _clpPassword (\s a -> s { _clpPassword = a }) . _Sensitive++-- | Specifies whether the user is required to set a new password on next+-- sign-in.+clpPasswordResetRequired :: Lens' CreateLoginProfile (Maybe Bool)+clpPasswordResetRequired =+    lens _clpPasswordResetRequired+        (\s a -> s { _clpPasswordResetRequired = a })++-- | The name of the user to create a password for.+clpUserName :: Lens' CreateLoginProfile Text+clpUserName = lens _clpUserName (\s a -> s { _clpUserName = a })++newtype CreateLoginProfileResponse = CreateLoginProfileResponse+    { _clprLoginProfile :: LoginProfile+    } deriving (Eq, Show)++-- | 'CreateLoginProfileResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'clprLoginProfile' @::@ 'LoginProfile'+--+createLoginProfileResponse :: LoginProfile -- ^ 'clprLoginProfile'+                           -> CreateLoginProfileResponse+createLoginProfileResponse p1 = CreateLoginProfileResponse+    { _clprLoginProfile = p1+    }++-- | The user name and password create date.+clprLoginProfile :: Lens' CreateLoginProfileResponse LoginProfile+clprLoginProfile = lens _clprLoginProfile (\s a -> s { _clprLoginProfile = a })++instance ToPath CreateLoginProfile where+    toPath = const "/"++instance ToQuery CreateLoginProfile where+    toQuery CreateLoginProfile{..} = mconcat+        [ "Password"              =? _clpPassword+        , "PasswordResetRequired" =? _clpPasswordResetRequired+        , "UserName"              =? _clpUserName+        ]++instance ToHeaders CreateLoginProfile++instance AWSRequest CreateLoginProfile where+    type Sv CreateLoginProfile = IAM+    type Rs CreateLoginProfile = CreateLoginProfileResponse++    request  = post "CreateLoginProfile"+    response = xmlResponse++instance FromXML CreateLoginProfileResponse where+    parseXML = withElement "CreateLoginProfileResult" $ \x -> CreateLoginProfileResponse+        <$> x .@  "LoginProfile"
+ gen/Network/AWS/IAM/CreateOpenIDConnectProvider.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateOpenIDConnectProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates an IAM entity to describe an identity provider (IdP) that supports+-- OpenID Connect (OIDC). The OIDC provider that you create with this+-- operation can be used as a principal in a role's trust policy to establish+-- a trust relationship between AWS and the OIDC provider. When you create the+-- IAM OIDC provider, you specify the URL of the OIDC identity provider (IdP)+-- to trust, a list of client IDs (also known as audiences) that identify the+-- application or applications that are allowed to authenticate using the OIDC+-- provider, and a list of thumbprints of the server certificate(s) that the+-- IdP uses. You get all of this information from the OIDC IdP that you want+-- to use for access to AWS.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html>+module Network.AWS.IAM.CreateOpenIDConnectProvider+    (+    -- * Request+      CreateOpenIDConnectProvider+    -- ** Request constructor+    , createOpenIDConnectProvider+    -- ** Request lenses+    , coidcpClientIDList+    , coidcpThumbprintList+    , coidcpUrl++    -- * Response+    , CreateOpenIDConnectProviderResponse+    -- ** Response constructor+    , createOpenIDConnectProviderResponse+    -- ** Response lenses+    , coidcprOpenIDConnectProviderArn+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateOpenIDConnectProvider = CreateOpenIDConnectProvider+    { _coidcpClientIDList   :: List "ClientIDList" Text+    , _coidcpThumbprintList :: List "ThumbprintList" Text+    , _coidcpUrl            :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateOpenIDConnectProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'coidcpClientIDList' @::@ ['Text']+--+-- * 'coidcpThumbprintList' @::@ ['Text']+--+-- * 'coidcpUrl' @::@ 'Text'+--+createOpenIDConnectProvider :: Text -- ^ 'coidcpUrl'+                            -> CreateOpenIDConnectProvider+createOpenIDConnectProvider p1 = CreateOpenIDConnectProvider+    { _coidcpUrl            = p1+    , _coidcpClientIDList   = mempty+    , _coidcpThumbprintList = mempty+    }++-- | A list of client IDs (also known as audiences). When a mobile or web app+-- registers with an OpenID Connect provider, they establish a value that+-- identifies the application. (This is the value that's sent as the+-- client_id parameter on OAuth requests.) You can register multiple client+-- IDs with the same provider. For example, you might have multiple+-- applications that use the same OIDC provider. You cannot register more+-- than 100 client IDs with a single IAM OIDC provider. There is no defined+-- format for a client ID. The CreateOpenIDConnectProviderRequest action+-- accepts client IDs up to 255 characters long.+coidcpClientIDList :: Lens' CreateOpenIDConnectProvider [Text]+coidcpClientIDList =+    lens _coidcpClientIDList (\s a -> s { _coidcpClientIDList = a })+        . _List++-- | A list of server certificate thumbprints for the OpenID Connect (OIDC)+-- identity provider's server certificate(s). Typically this list includes+-- only one entry. However, IAM lets you have up to five thumbprints for an+-- OIDC provider. This lets you maintain multiple thumbprints if the+-- identity provider is rotating certificates. The server certificate+-- thumbprint is the hex-encoded SHA-1 hash value of the X.509 certificate+-- used by the domain where the OpenID Connect provider makes its keys+-- available. It is always a 40-character string. You must provide at least+-- one thumbprint when creating an IAM OIDC provider. For example, if the+-- OIDC provider is server.example.com and the provider stores its keys at+-- "https://keys.server.example.com/openid-connect", the thumbprint string+-- would be the hex-encoded SHA-1 hash value of the certificate used by+-- https://keys.server.example.com.+coidcpThumbprintList :: Lens' CreateOpenIDConnectProvider [Text]+coidcpThumbprintList =+    lens _coidcpThumbprintList (\s a -> s { _coidcpThumbprintList = a })+        . _List++-- | The URL of the identity provider. The URL must begin with "https://" and+-- should correspond to the iss claim in the provider's OpenID Connect ID+-- tokens. Per the OIDC standard, path components are allowed but query+-- parameters are not. Typically the URL consists of only a host name, like+-- "https://server.example.org" or "https://example.com". You cannot+-- register the same provider multiple times in a single AWS account. If you+-- try to submit a URL that has already been used for an OpenID Connect+-- provider in the AWS account, you will get an error.+coidcpUrl :: Lens' CreateOpenIDConnectProvider Text+coidcpUrl = lens _coidcpUrl (\s a -> s { _coidcpUrl = a })++newtype CreateOpenIDConnectProviderResponse = CreateOpenIDConnectProviderResponse+    { _coidcprOpenIDConnectProviderArn :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'CreateOpenIDConnectProviderResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'coidcprOpenIDConnectProviderArn' @::@ 'Maybe' 'Text'+--+createOpenIDConnectProviderResponse :: CreateOpenIDConnectProviderResponse+createOpenIDConnectProviderResponse = CreateOpenIDConnectProviderResponse+    { _coidcprOpenIDConnectProviderArn = Nothing+    }++-- | The Amazon Resource Name (ARN) of the IAM OpenID Connect provider that+-- was created. For more information, see OpenIDConnectProviderListEntry.+coidcprOpenIDConnectProviderArn :: Lens' CreateOpenIDConnectProviderResponse (Maybe Text)+coidcprOpenIDConnectProviderArn =+    lens _coidcprOpenIDConnectProviderArn+        (\s a -> s { _coidcprOpenIDConnectProviderArn = a })++instance ToPath CreateOpenIDConnectProvider where+    toPath = const "/"++instance ToQuery CreateOpenIDConnectProvider where+    toQuery CreateOpenIDConnectProvider{..} = mconcat+        [ "ClientIDList"   =? _coidcpClientIDList+        , "ThumbprintList" =? _coidcpThumbprintList+        , "Url"            =? _coidcpUrl+        ]++instance ToHeaders CreateOpenIDConnectProvider++instance AWSRequest CreateOpenIDConnectProvider where+    type Sv CreateOpenIDConnectProvider = IAM+    type Rs CreateOpenIDConnectProvider = CreateOpenIDConnectProviderResponse++    request  = post "CreateOpenIDConnectProvider"+    response = xmlResponse++instance FromXML CreateOpenIDConnectProviderResponse where+    parseXML = withElement "CreateOpenIDConnectProviderResult" $ \x -> CreateOpenIDConnectProviderResponse+        <$> x .@? "OpenIDConnectProviderArn"
+ gen/Network/AWS/IAM/CreateRole.hs view
@@ -0,0 +1,138 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateRole+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates a new role for your AWS account. For more information about roles,+-- go to Working with Roles. For information about limitations on role names+-- and the number of roles you can create, go to Limitations on IAM Entities+-- in the Using IAM guide. The example policy grants permission to an EC2+-- instance to assume the role. The policy is URL-encoded according to RFC+-- 3986. For more information about RFC 3986, go to+-- http://www.faqs.org/rfcs/rfc3986.html.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html>+module Network.AWS.IAM.CreateRole+    (+    -- * Request+      CreateRole+    -- ** Request constructor+    , createRole+    -- ** Request lenses+    , crAssumeRolePolicyDocument+    , crPath+    , crRoleName++    -- * Response+    , CreateRoleResponse+    -- ** Response constructor+    , createRoleResponse+    -- ** Response lenses+    , crrRole+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateRole = CreateRole+    { _crAssumeRolePolicyDocument :: Text+    , _crPath                     :: Maybe Text+    , _crRoleName                 :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateRole' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'crAssumeRolePolicyDocument' @::@ 'Text'+--+-- * 'crPath' @::@ 'Maybe' 'Text'+--+-- * 'crRoleName' @::@ 'Text'+--+createRole :: Text -- ^ 'crRoleName'+           -> Text -- ^ 'crAssumeRolePolicyDocument'+           -> CreateRole+createRole p1 p2 = CreateRole+    { _crRoleName                 = p1+    , _crAssumeRolePolicyDocument = p2+    , _crPath                     = Nothing+    }++-- | The policy that grants an entity permission to assume the role.+crAssumeRolePolicyDocument :: Lens' CreateRole Text+crAssumeRolePolicyDocument =+    lens _crAssumeRolePolicyDocument+        (\s a -> s { _crAssumeRolePolicyDocument = a })++-- | The path to the role. For more information about paths, see IAM+-- Identifiers in the Using IAM guide. This parameter is optional. If it is+-- not included, it defaults to a slash (/).+crPath :: Lens' CreateRole (Maybe Text)+crPath = lens _crPath (\s a -> s { _crPath = a })++-- | The name of the role to create.+crRoleName :: Lens' CreateRole Text+crRoleName = lens _crRoleName (\s a -> s { _crRoleName = a })++newtype CreateRoleResponse = CreateRoleResponse+    { _crrRole :: Role+    } deriving (Eq, Show)++-- | 'CreateRoleResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'crrRole' @::@ 'Role'+--+createRoleResponse :: Role -- ^ 'crrRole'+                   -> CreateRoleResponse+createRoleResponse p1 = CreateRoleResponse+    { _crrRole = p1+    }++-- | Information about the role.+crrRole :: Lens' CreateRoleResponse Role+crrRole = lens _crrRole (\s a -> s { _crrRole = a })++instance ToPath CreateRole where+    toPath = const "/"++instance ToQuery CreateRole where+    toQuery CreateRole{..} = mconcat+        [ "AssumeRolePolicyDocument" =? _crAssumeRolePolicyDocument+        , "Path"                     =? _crPath+        , "RoleName"                 =? _crRoleName+        ]++instance ToHeaders CreateRole++instance AWSRequest CreateRole where+    type Sv CreateRole = IAM+    type Rs CreateRole = CreateRoleResponse++    request  = post "CreateRole"+    response = xmlResponse++instance FromXML CreateRoleResponse where+    parseXML = withElement "CreateRoleResult" $ \x -> CreateRoleResponse+        <$> x .@  "Role"
+ gen/Network/AWS/IAM/CreateSAMLProvider.hs view
@@ -0,0 +1,140 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateSAMLProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates an IAM entity to describe an identity provider (IdP) that supports+-- SAML 2.0. The SAML provider that you create with this operation can be used+-- as a principal in a role's trust policy to establish a trust relationship+-- between AWS and a SAML identity provider. You can create an IAM role that+-- supports Web-based single sign-on (SSO) to the AWS Management Console or+-- one that supports API access to AWS. When you create the SAML provider, you+-- upload an a SAML metadata document that you get from your IdP and that+-- includes the issuer's name, expiration information, and keys that can be+-- used to validate the SAML authentication response (assertions) that are+-- received from the IdP. You must generate the metadata document using the+-- identity management software that is used as your organization's IdP. For+-- more information, see Giving Console Access Using SAML and Creating+-- Temporary Security Credentials for SAML Federation in the Using Temporary+-- Credentials guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html>+module Network.AWS.IAM.CreateSAMLProvider+    (+    -- * Request+      CreateSAMLProvider+    -- ** Request constructor+    , createSAMLProvider+    -- ** Request lenses+    , csamlpName+    , csamlpSAMLMetadataDocument++    -- * Response+    , CreateSAMLProviderResponse+    -- ** Response constructor+    , createSAMLProviderResponse+    -- ** Response lenses+    , csamlprSAMLProviderArn+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateSAMLProvider = CreateSAMLProvider+    { _csamlpName                 :: Text+    , _csamlpSAMLMetadataDocument :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateSAMLProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csamlpName' @::@ 'Text'+--+-- * 'csamlpSAMLMetadataDocument' @::@ 'Text'+--+createSAMLProvider :: Text -- ^ 'csamlpSAMLMetadataDocument'+                   -> Text -- ^ 'csamlpName'+                   -> CreateSAMLProvider+createSAMLProvider p1 p2 = CreateSAMLProvider+    { _csamlpSAMLMetadataDocument = p1+    , _csamlpName                 = p2+    }++-- | The name of the provider to create.+csamlpName :: Lens' CreateSAMLProvider Text+csamlpName = lens _csamlpName (\s a -> s { _csamlpName = a })++-- | An XML document generated by an identity provider (IdP) that supports+-- SAML 2.0. The document includes the issuer's name, expiration+-- information, and keys that can be used to validate the SAML+-- authentication response (assertions) that are received from the IdP. You+-- must generate the metadata document using the identity management+-- software that is used as your organization's IdP. For more information,+-- see Creating Temporary Security Credentials for SAML Federation in the+-- Using Temporary Security Credentials guide.+csamlpSAMLMetadataDocument :: Lens' CreateSAMLProvider Text+csamlpSAMLMetadataDocument =+    lens _csamlpSAMLMetadataDocument+        (\s a -> s { _csamlpSAMLMetadataDocument = a })++newtype CreateSAMLProviderResponse = CreateSAMLProviderResponse+    { _csamlprSAMLProviderArn :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'CreateSAMLProviderResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csamlprSAMLProviderArn' @::@ 'Maybe' 'Text'+--+createSAMLProviderResponse :: CreateSAMLProviderResponse+createSAMLProviderResponse = CreateSAMLProviderResponse+    { _csamlprSAMLProviderArn = Nothing+    }++-- | The Amazon Resource Name (ARN) of the SAML provider.+csamlprSAMLProviderArn :: Lens' CreateSAMLProviderResponse (Maybe Text)+csamlprSAMLProviderArn =+    lens _csamlprSAMLProviderArn (\s a -> s { _csamlprSAMLProviderArn = a })++instance ToPath CreateSAMLProvider where+    toPath = const "/"++instance ToQuery CreateSAMLProvider where+    toQuery CreateSAMLProvider{..} = mconcat+        [ "Name"                 =? _csamlpName+        , "SAMLMetadataDocument" =? _csamlpSAMLMetadataDocument+        ]++instance ToHeaders CreateSAMLProvider++instance AWSRequest CreateSAMLProvider where+    type Sv CreateSAMLProvider = IAM+    type Rs CreateSAMLProvider = CreateSAMLProviderResponse++    request  = post "CreateSAMLProvider"+    response = xmlResponse++instance FromXML CreateSAMLProviderResponse where+    parseXML = withElement "CreateSAMLProviderResult" $ \x -> CreateSAMLProviderResponse+        <$> x .@? "SAMLProviderArn"
+ gen/Network/AWS/IAM/CreateUser.hs view
@@ -0,0 +1,120 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateUser+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates a new user for your AWS account. For information about limitations+-- on the number of users you can create, see Limitations on IAM Entities in+-- the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html>+module Network.AWS.IAM.CreateUser+    (+    -- * Request+      CreateUser+    -- ** Request constructor+    , createUser+    -- ** Request lenses+    , cuPath+    , cuUserName++    -- * Response+    , CreateUserResponse+    -- ** Response constructor+    , createUserResponse+    -- ** Response lenses+    , curUser+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateUser = CreateUser+    { _cuPath     :: Maybe Text+    , _cuUserName :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateUser' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cuPath' @::@ 'Maybe' 'Text'+--+-- * 'cuUserName' @::@ 'Text'+--+createUser :: Text -- ^ 'cuUserName'+           -> CreateUser+createUser p1 = CreateUser+    { _cuUserName = p1+    , _cuPath     = Nothing+    }++-- | The path for the user name. For more information about paths, see IAM+-- Identifiers in the Using IAM guide. This parameter is optional. If it is+-- not included, it defaults to a slash (/).+cuPath :: Lens' CreateUser (Maybe Text)+cuPath = lens _cuPath (\s a -> s { _cuPath = a })++-- | The name of the user to create.+cuUserName :: Lens' CreateUser Text+cuUserName = lens _cuUserName (\s a -> s { _cuUserName = a })++newtype CreateUserResponse = CreateUserResponse+    { _curUser :: Maybe User+    } deriving (Eq, Show)++-- | 'CreateUserResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'curUser' @::@ 'Maybe' 'User'+--+createUserResponse :: CreateUserResponse+createUserResponse = CreateUserResponse+    { _curUser = Nothing+    }++-- | Information about the user.+curUser :: Lens' CreateUserResponse (Maybe User)+curUser = lens _curUser (\s a -> s { _curUser = a })++instance ToPath CreateUser where+    toPath = const "/"++instance ToQuery CreateUser where+    toQuery CreateUser{..} = mconcat+        [ "Path"     =? _cuPath+        , "UserName" =? _cuUserName+        ]++instance ToHeaders CreateUser++instance AWSRequest CreateUser where+    type Sv CreateUser = IAM+    type Rs CreateUser = CreateUserResponse++    request  = post "CreateUser"+    response = xmlResponse++instance FromXML CreateUserResponse where+    parseXML = withElement "CreateUserResult" $ \x -> CreateUserResponse+        <$> x .@? "User"
+ gen/Network/AWS/IAM/CreateVirtualMFADevice.hs view
@@ -0,0 +1,132 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.CreateVirtualMFADevice+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Creates a new virtual MFA device for the AWS account. After creating the+-- virtual MFA, use EnableMFADevice to attach the MFA device to an IAM user.+-- For more information about creating and working with virtual MFA devices,+-- go to Using a Virtual MFA Device in the Using IAM guide. For information+-- about limits on the number of MFA devices you can create, see Limitations+-- on Entities in the Using IAM guide. The seed information contained in the+-- QR code and the Base32 string should be treated like any other secret+-- access information, such as your AWS access keys or your passwords. After+-- you provision your virtual device, you should ensure that the information+-- is destroyed following secure procedures.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html>+module Network.AWS.IAM.CreateVirtualMFADevice+    (+    -- * Request+      CreateVirtualMFADevice+    -- ** Request constructor+    , createVirtualMFADevice+    -- ** Request lenses+    , cvmfadPath+    , cvmfadVirtualMFADeviceName++    -- * Response+    , CreateVirtualMFADeviceResponse+    -- ** Response constructor+    , createVirtualMFADeviceResponse+    -- ** Response lenses+    , cvmfadrVirtualMFADevice+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data CreateVirtualMFADevice = CreateVirtualMFADevice+    { _cvmfadPath                 :: Maybe Text+    , _cvmfadVirtualMFADeviceName :: Text+    } deriving (Eq, Ord, Show)++-- | 'CreateVirtualMFADevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cvmfadPath' @::@ 'Maybe' 'Text'+--+-- * 'cvmfadVirtualMFADeviceName' @::@ 'Text'+--+createVirtualMFADevice :: Text -- ^ 'cvmfadVirtualMFADeviceName'+                       -> CreateVirtualMFADevice+createVirtualMFADevice p1 = CreateVirtualMFADevice+    { _cvmfadVirtualMFADeviceName = p1+    , _cvmfadPath                 = Nothing+    }++-- | The path for the virtual MFA device. For more information about paths,+-- see IAM Identifiers in the Using IAM guide. This parameter is optional.+-- If it is not included, it defaults to a slash (/).+cvmfadPath :: Lens' CreateVirtualMFADevice (Maybe Text)+cvmfadPath = lens _cvmfadPath (\s a -> s { _cvmfadPath = a })++-- | The name of the virtual MFA device. Use with path to uniquely identify a+-- virtual MFA device.+cvmfadVirtualMFADeviceName :: Lens' CreateVirtualMFADevice Text+cvmfadVirtualMFADeviceName =+    lens _cvmfadVirtualMFADeviceName+        (\s a -> s { _cvmfadVirtualMFADeviceName = a })++newtype CreateVirtualMFADeviceResponse = CreateVirtualMFADeviceResponse+    { _cvmfadrVirtualMFADevice :: VirtualMFADevice+    } deriving (Eq, Show)++-- | 'CreateVirtualMFADeviceResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cvmfadrVirtualMFADevice' @::@ 'VirtualMFADevice'+--+createVirtualMFADeviceResponse :: VirtualMFADevice -- ^ 'cvmfadrVirtualMFADevice'+                               -> CreateVirtualMFADeviceResponse+createVirtualMFADeviceResponse p1 = CreateVirtualMFADeviceResponse+    { _cvmfadrVirtualMFADevice = p1+    }++-- | A newly created virtual MFA device.+cvmfadrVirtualMFADevice :: Lens' CreateVirtualMFADeviceResponse VirtualMFADevice+cvmfadrVirtualMFADevice =+    lens _cvmfadrVirtualMFADevice (\s a -> s { _cvmfadrVirtualMFADevice = a })++instance ToPath CreateVirtualMFADevice where+    toPath = const "/"++instance ToQuery CreateVirtualMFADevice where+    toQuery CreateVirtualMFADevice{..} = mconcat+        [ "Path"                 =? _cvmfadPath+        , "VirtualMFADeviceName" =? _cvmfadVirtualMFADeviceName+        ]++instance ToHeaders CreateVirtualMFADevice++instance AWSRequest CreateVirtualMFADevice where+    type Sv CreateVirtualMFADevice = IAM+    type Rs CreateVirtualMFADevice = CreateVirtualMFADeviceResponse++    request  = post "CreateVirtualMFADevice"+    response = xmlResponse++instance FromXML CreateVirtualMFADeviceResponse where+    parseXML = withElement "CreateVirtualMFADeviceResult" $ \x -> CreateVirtualMFADeviceResponse+        <$> x .@  "VirtualMFADevice"
+ gen/Network/AWS/IAM/DeactivateMFADevice.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeactivateMFADevice+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deactivates the specified MFA device and removes it from association with+-- the user name for which it was originally enabled. For more information+-- about creating and working with virtual MFA devices, go to Using a Virtual+-- MFA Device in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html>+module Network.AWS.IAM.DeactivateMFADevice+    (+    -- * Request+      DeactivateMFADevice+    -- ** Request constructor+    , deactivateMFADevice+    -- ** Request lenses+    , dmfadSerialNumber+    , dmfadUserName++    -- * Response+    , DeactivateMFADeviceResponse+    -- ** Response constructor+    , deactivateMFADeviceResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data DeactivateMFADevice = DeactivateMFADevice+    { _dmfadSerialNumber :: Text+    , _dmfadUserName     :: Text+    } deriving (Eq, Ord, Show)++-- | 'DeactivateMFADevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dmfadSerialNumber' @::@ 'Text'+--+-- * 'dmfadUserName' @::@ 'Text'+--+deactivateMFADevice :: Text -- ^ 'dmfadUserName'+                    -> Text -- ^ 'dmfadSerialNumber'+                    -> DeactivateMFADevice+deactivateMFADevice p1 p2 = DeactivateMFADevice+    { _dmfadUserName     = p1+    , _dmfadSerialNumber = p2+    }++-- | The serial number that uniquely identifies the MFA device. For virtual+-- MFA devices, the serial number is the device ARN.+dmfadSerialNumber :: Lens' DeactivateMFADevice Text+dmfadSerialNumber =+    lens _dmfadSerialNumber (\s a -> s { _dmfadSerialNumber = a })++-- | The name of the user whose MFA device you want to deactivate.+dmfadUserName :: Lens' DeactivateMFADevice Text+dmfadUserName = lens _dmfadUserName (\s a -> s { _dmfadUserName = a })++data DeactivateMFADeviceResponse = DeactivateMFADeviceResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeactivateMFADeviceResponse' constructor.+deactivateMFADeviceResponse :: DeactivateMFADeviceResponse+deactivateMFADeviceResponse = DeactivateMFADeviceResponse++instance ToPath DeactivateMFADevice where+    toPath = const "/"++instance ToQuery DeactivateMFADevice where+    toQuery DeactivateMFADevice{..} = mconcat+        [ "SerialNumber" =? _dmfadSerialNumber+        , "UserName"     =? _dmfadUserName+        ]++instance ToHeaders DeactivateMFADevice++instance AWSRequest DeactivateMFADevice where+    type Sv DeactivateMFADevice = IAM+    type Rs DeactivateMFADevice = DeactivateMFADeviceResponse++    request  = post "DeactivateMFADevice"+    response = nullResponse DeactivateMFADeviceResponse
+ gen/Network/AWS/IAM/DeleteAccessKey.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteAccessKey+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the access key associated with the specified user. If you do not+-- specify a user name, IAM determines the user name implicitly based on the+-- AWS access key ID signing the request. Because this action works for access+-- keys under the AWS account, you can use this action to manage root+-- credentials even if the AWS account has no associated users.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html>+module Network.AWS.IAM.DeleteAccessKey+    (+    -- * Request+      DeleteAccessKey+    -- ** Request constructor+    , deleteAccessKey+    -- ** Request lenses+    , dakAccessKeyId+    , dakUserName++    -- * Response+    , DeleteAccessKeyResponse+    -- ** Response constructor+    , deleteAccessKeyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data DeleteAccessKey = DeleteAccessKey+    { _dakAccessKeyId :: Text+    , _dakUserName    :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteAccessKey' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dakAccessKeyId' @::@ 'Text'+--+-- * 'dakUserName' @::@ 'Maybe' 'Text'+--+deleteAccessKey :: Text -- ^ 'dakAccessKeyId'+                -> DeleteAccessKey+deleteAccessKey p1 = DeleteAccessKey+    { _dakAccessKeyId = p1+    , _dakUserName    = Nothing+    }++-- | The access key ID for the access key ID and secret access key you want to+-- delete.+dakAccessKeyId :: Lens' DeleteAccessKey Text+dakAccessKeyId = lens _dakAccessKeyId (\s a -> s { _dakAccessKeyId = a })++-- | The name of the user whose key you want to delete.+dakUserName :: Lens' DeleteAccessKey (Maybe Text)+dakUserName = lens _dakUserName (\s a -> s { _dakUserName = a })++data DeleteAccessKeyResponse = DeleteAccessKeyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteAccessKeyResponse' constructor.+deleteAccessKeyResponse :: DeleteAccessKeyResponse+deleteAccessKeyResponse = DeleteAccessKeyResponse++instance ToPath DeleteAccessKey where+    toPath = const "/"++instance ToQuery DeleteAccessKey where+    toQuery DeleteAccessKey{..} = mconcat+        [ "AccessKeyId" =? _dakAccessKeyId+        , "UserName"    =? _dakUserName+        ]++instance ToHeaders DeleteAccessKey++instance AWSRequest DeleteAccessKey where+    type Sv DeleteAccessKey = IAM+    type Rs DeleteAccessKey = DeleteAccessKeyResponse++    request  = post "DeleteAccessKey"+    response = nullResponse DeleteAccessKeyResponse
+ gen/Network/AWS/IAM/DeleteAccountAlias.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteAccountAlias+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified AWS account alias. For information about using an AWS+-- account alias, see Using an Alias for Your AWS Account ID in the Using IAM+-- guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountAlias.html>+module Network.AWS.IAM.DeleteAccountAlias+    (+    -- * Request+      DeleteAccountAlias+    -- ** Request constructor+    , deleteAccountAlias+    -- ** Request lenses+    , daaAccountAlias++    -- * Response+    , DeleteAccountAliasResponse+    -- ** Response constructor+    , deleteAccountAliasResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteAccountAlias = DeleteAccountAlias+    { _daaAccountAlias :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteAccountAlias' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'daaAccountAlias' @::@ 'Text'+--+deleteAccountAlias :: Text -- ^ 'daaAccountAlias'+                   -> DeleteAccountAlias+deleteAccountAlias p1 = DeleteAccountAlias+    { _daaAccountAlias = p1+    }++-- | The name of the account alias to delete.+daaAccountAlias :: Lens' DeleteAccountAlias Text+daaAccountAlias = lens _daaAccountAlias (\s a -> s { _daaAccountAlias = a })++data DeleteAccountAliasResponse = DeleteAccountAliasResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteAccountAliasResponse' constructor.+deleteAccountAliasResponse :: DeleteAccountAliasResponse+deleteAccountAliasResponse = DeleteAccountAliasResponse++instance ToPath DeleteAccountAlias where+    toPath = const "/"++instance ToQuery DeleteAccountAlias where+    toQuery DeleteAccountAlias{..} = mconcat+        [ "AccountAlias" =? _daaAccountAlias+        ]++instance ToHeaders DeleteAccountAlias++instance AWSRequest DeleteAccountAlias where+    type Sv DeleteAccountAlias = IAM+    type Rs DeleteAccountAlias = DeleteAccountAliasResponse++    request  = post "DeleteAccountAlias"+    response = nullResponse DeleteAccountAliasResponse
+ gen/Network/AWS/IAM/DeleteAccountPasswordPolicy.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteAccountPasswordPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the password policy for the AWS account.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html>+module Network.AWS.IAM.DeleteAccountPasswordPolicy+    (+    -- * Request+      DeleteAccountPasswordPolicy+    -- ** Request constructor+    , deleteAccountPasswordPolicy++    -- * Response+    , DeleteAccountPasswordPolicyResponse+    -- ** Response constructor+    , deleteAccountPasswordPolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data DeleteAccountPasswordPolicy = DeleteAccountPasswordPolicy+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteAccountPasswordPolicy' constructor.+deleteAccountPasswordPolicy :: DeleteAccountPasswordPolicy+deleteAccountPasswordPolicy = DeleteAccountPasswordPolicy++data DeleteAccountPasswordPolicyResponse = DeleteAccountPasswordPolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteAccountPasswordPolicyResponse' constructor.+deleteAccountPasswordPolicyResponse :: DeleteAccountPasswordPolicyResponse+deleteAccountPasswordPolicyResponse = DeleteAccountPasswordPolicyResponse++instance ToPath DeleteAccountPasswordPolicy where+    toPath = const "/"++instance ToQuery DeleteAccountPasswordPolicy where+    toQuery = const mempty++instance ToHeaders DeleteAccountPasswordPolicy++instance AWSRequest DeleteAccountPasswordPolicy where+    type Sv DeleteAccountPasswordPolicy = IAM+    type Rs DeleteAccountPasswordPolicy = DeleteAccountPasswordPolicyResponse++    request  = post "DeleteAccountPasswordPolicy"+    response = nullResponse DeleteAccountPasswordPolicyResponse
+ gen/Network/AWS/IAM/DeleteGroup.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteGroup+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified group. The group must not contain any users or have+-- any attached policies.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroup.html>+module Network.AWS.IAM.DeleteGroup+    (+    -- * Request+      DeleteGroup+    -- ** Request constructor+    , deleteGroup+    -- ** Request lenses+    , dgGroupName++    -- * Response+    , DeleteGroupResponse+    -- ** Response constructor+    , deleteGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteGroup = DeleteGroup+    { _dgGroupName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dgGroupName' @::@ 'Text'+--+deleteGroup :: Text -- ^ 'dgGroupName'+            -> DeleteGroup+deleteGroup p1 = DeleteGroup+    { _dgGroupName = p1+    }++-- | The name of the group to delete.+dgGroupName :: Lens' DeleteGroup Text+dgGroupName = lens _dgGroupName (\s a -> s { _dgGroupName = a })++data DeleteGroupResponse = DeleteGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteGroupResponse' constructor.+deleteGroupResponse :: DeleteGroupResponse+deleteGroupResponse = DeleteGroupResponse++instance ToPath DeleteGroup where+    toPath = const "/"++instance ToQuery DeleteGroup where+    toQuery DeleteGroup{..} = mconcat+        [ "GroupName" =? _dgGroupName+        ]++instance ToHeaders DeleteGroup++instance AWSRequest DeleteGroup where+    type Sv DeleteGroup = IAM+    type Rs DeleteGroup = DeleteGroupResponse++    request  = post "DeleteGroup"+    response = nullResponse DeleteGroupResponse
+ gen/Network/AWS/IAM/DeleteGroupPolicy.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteGroupPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified policy that is associated with the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroupPolicy.html>+module Network.AWS.IAM.DeleteGroupPolicy+    (+    -- * Request+      DeleteGroupPolicy+    -- ** Request constructor+    , deleteGroupPolicy+    -- ** Request lenses+    , dgpGroupName+    , dgpPolicyName++    -- * Response+    , DeleteGroupPolicyResponse+    -- ** Response constructor+    , deleteGroupPolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data DeleteGroupPolicy = DeleteGroupPolicy+    { _dgpGroupName  :: Text+    , _dgpPolicyName :: Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteGroupPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dgpGroupName' @::@ 'Text'+--+-- * 'dgpPolicyName' @::@ 'Text'+--+deleteGroupPolicy :: Text -- ^ 'dgpGroupName'+                  -> Text -- ^ 'dgpPolicyName'+                  -> DeleteGroupPolicy+deleteGroupPolicy p1 p2 = DeleteGroupPolicy+    { _dgpGroupName  = p1+    , _dgpPolicyName = p2+    }++-- | The name of the group the policy is associated with.+dgpGroupName :: Lens' DeleteGroupPolicy Text+dgpGroupName = lens _dgpGroupName (\s a -> s { _dgpGroupName = a })++-- | The name of the policy document to delete.+dgpPolicyName :: Lens' DeleteGroupPolicy Text+dgpPolicyName = lens _dgpPolicyName (\s a -> s { _dgpPolicyName = a })++data DeleteGroupPolicyResponse = DeleteGroupPolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteGroupPolicyResponse' constructor.+deleteGroupPolicyResponse :: DeleteGroupPolicyResponse+deleteGroupPolicyResponse = DeleteGroupPolicyResponse++instance ToPath DeleteGroupPolicy where+    toPath = const "/"++instance ToQuery DeleteGroupPolicy where+    toQuery DeleteGroupPolicy{..} = mconcat+        [ "GroupName"  =? _dgpGroupName+        , "PolicyName" =? _dgpPolicyName+        ]++instance ToHeaders DeleteGroupPolicy++instance AWSRequest DeleteGroupPolicy where+    type Sv DeleteGroupPolicy = IAM+    type Rs DeleteGroupPolicy = DeleteGroupPolicyResponse++    request  = post "DeleteGroupPolicy"+    response = nullResponse DeleteGroupPolicyResponse
+ gen/Network/AWS/IAM/DeleteInstanceProfile.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteInstanceProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified instance profile. The instance profile must not have+-- an associated role. Make sure you do not have any Amazon EC2 instances+-- running with the instance profile you are about to delete. Deleting a role+-- or instance profile that is associated with a running instance will break+-- any applications running on the instance. For more information about+-- instance profiles, go to About Instance Profiles.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html>+module Network.AWS.IAM.DeleteInstanceProfile+    (+    -- * Request+      DeleteInstanceProfile+    -- ** Request constructor+    , deleteInstanceProfile+    -- ** Request lenses+    , dipInstanceProfileName++    -- * Response+    , DeleteInstanceProfileResponse+    -- ** Response constructor+    , deleteInstanceProfileResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteInstanceProfile = DeleteInstanceProfile+    { _dipInstanceProfileName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteInstanceProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dipInstanceProfileName' @::@ 'Text'+--+deleteInstanceProfile :: Text -- ^ 'dipInstanceProfileName'+                      -> DeleteInstanceProfile+deleteInstanceProfile p1 = DeleteInstanceProfile+    { _dipInstanceProfileName = p1+    }++-- | The name of the instance profile to delete.+dipInstanceProfileName :: Lens' DeleteInstanceProfile Text+dipInstanceProfileName =+    lens _dipInstanceProfileName (\s a -> s { _dipInstanceProfileName = a })++data DeleteInstanceProfileResponse = DeleteInstanceProfileResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteInstanceProfileResponse' constructor.+deleteInstanceProfileResponse :: DeleteInstanceProfileResponse+deleteInstanceProfileResponse = DeleteInstanceProfileResponse++instance ToPath DeleteInstanceProfile where+    toPath = const "/"++instance ToQuery DeleteInstanceProfile where+    toQuery DeleteInstanceProfile{..} = mconcat+        [ "InstanceProfileName" =? _dipInstanceProfileName+        ]++instance ToHeaders DeleteInstanceProfile++instance AWSRequest DeleteInstanceProfile where+    type Sv DeleteInstanceProfile = IAM+    type Rs DeleteInstanceProfile = DeleteInstanceProfileResponse++    request  = post "DeleteInstanceProfile"+    response = nullResponse DeleteInstanceProfileResponse
+ gen/Network/AWS/IAM/DeleteLoginProfile.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteLoginProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the password for the specified user, which terminates the user's+-- ability to access AWS services through the AWS Management Console. Deleting+-- a user's password does not prevent a user from accessing IAM through the+-- command line interface or the API. To prevent all user access you must also+-- either make the access key inactive or delete it. For more information+-- about making keys inactive or deleting them, see UpdateAccessKey and+-- DeleteAccessKey.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html>+module Network.AWS.IAM.DeleteLoginProfile+    (+    -- * Request+      DeleteLoginProfile+    -- ** Request constructor+    , deleteLoginProfile+    -- ** Request lenses+    , dlpUserName++    -- * Response+    , DeleteLoginProfileResponse+    -- ** Response constructor+    , deleteLoginProfileResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteLoginProfile = DeleteLoginProfile+    { _dlpUserName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteLoginProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dlpUserName' @::@ 'Text'+--+deleteLoginProfile :: Text -- ^ 'dlpUserName'+                   -> DeleteLoginProfile+deleteLoginProfile p1 = DeleteLoginProfile+    { _dlpUserName = p1+    }++-- | The name of the user whose password you want to delete.+dlpUserName :: Lens' DeleteLoginProfile Text+dlpUserName = lens _dlpUserName (\s a -> s { _dlpUserName = a })++data DeleteLoginProfileResponse = DeleteLoginProfileResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteLoginProfileResponse' constructor.+deleteLoginProfileResponse :: DeleteLoginProfileResponse+deleteLoginProfileResponse = DeleteLoginProfileResponse++instance ToPath DeleteLoginProfile where+    toPath = const "/"++instance ToQuery DeleteLoginProfile where+    toQuery DeleteLoginProfile{..} = mconcat+        [ "UserName" =? _dlpUserName+        ]++instance ToHeaders DeleteLoginProfile++instance AWSRequest DeleteLoginProfile where+    type Sv DeleteLoginProfile = IAM+    type Rs DeleteLoginProfile = DeleteLoginProfileResponse++    request  = post "DeleteLoginProfile"+    response = nullResponse DeleteLoginProfileResponse
+ gen/Network/AWS/IAM/DeleteOpenIDConnectProvider.hs view
@@ -0,0 +1,97 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteOpenIDConnectProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes an IAM OpenID Connect identity provider. Deleting an OIDC provider+-- does not update any roles that reference the provider as a principal in+-- their trust policies. Any attempt to assume a role that references a+-- provider that has been deleted will fail. This action is idempotent; it+-- does not fail or return an error if you call the action for a provider that+-- was already deleted.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html>+module Network.AWS.IAM.DeleteOpenIDConnectProvider+    (+    -- * Request+      DeleteOpenIDConnectProvider+    -- ** Request constructor+    , deleteOpenIDConnectProvider+    -- ** Request lenses+    , doidcpOpenIDConnectProviderArn++    -- * Response+    , DeleteOpenIDConnectProviderResponse+    -- ** Response constructor+    , deleteOpenIDConnectProviderResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteOpenIDConnectProvider = DeleteOpenIDConnectProvider+    { _doidcpOpenIDConnectProviderArn :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteOpenIDConnectProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'doidcpOpenIDConnectProviderArn' @::@ 'Text'+--+deleteOpenIDConnectProvider :: Text -- ^ 'doidcpOpenIDConnectProviderArn'+                            -> DeleteOpenIDConnectProvider+deleteOpenIDConnectProvider p1 = DeleteOpenIDConnectProvider+    { _doidcpOpenIDConnectProviderArn = p1+    }++-- | The Amazon Resource Name (ARN) of the IAM OpenID Connect provider to+-- delete. You can get a list of OpenID Connect provider ARNs by using the+-- ListOpenIDConnectProviders action.+doidcpOpenIDConnectProviderArn :: Lens' DeleteOpenIDConnectProvider Text+doidcpOpenIDConnectProviderArn =+    lens _doidcpOpenIDConnectProviderArn+        (\s a -> s { _doidcpOpenIDConnectProviderArn = a })++data DeleteOpenIDConnectProviderResponse = DeleteOpenIDConnectProviderResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteOpenIDConnectProviderResponse' constructor.+deleteOpenIDConnectProviderResponse :: DeleteOpenIDConnectProviderResponse+deleteOpenIDConnectProviderResponse = DeleteOpenIDConnectProviderResponse++instance ToPath DeleteOpenIDConnectProvider where+    toPath = const "/"++instance ToQuery DeleteOpenIDConnectProvider where+    toQuery DeleteOpenIDConnectProvider{..} = mconcat+        [ "OpenIDConnectProviderArn" =? _doidcpOpenIDConnectProviderArn+        ]++instance ToHeaders DeleteOpenIDConnectProvider++instance AWSRequest DeleteOpenIDConnectProvider where+    type Sv DeleteOpenIDConnectProvider = IAM+    type Rs DeleteOpenIDConnectProvider = DeleteOpenIDConnectProviderResponse++    request  = post "DeleteOpenIDConnectProvider"+    response = nullResponse DeleteOpenIDConnectProviderResponse
+ gen/Network/AWS/IAM/DeleteRole.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteRole+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified role. The role must not have any policies attached.+-- For more information about roles, go to Working with Roles. Make sure you+-- do not have any Amazon EC2 instances running with the role you are about to+-- delete. Deleting a role or instance profile that is associated with a+-- running instance will break any applications running on the instance.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRole.html>+module Network.AWS.IAM.DeleteRole+    (+    -- * Request+      DeleteRole+    -- ** Request constructor+    , deleteRole+    -- ** Request lenses+    , drRoleName++    -- * Response+    , DeleteRoleResponse+    -- ** Response constructor+    , deleteRoleResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteRole = DeleteRole+    { _drRoleName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteRole' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drRoleName' @::@ 'Text'+--+deleteRole :: Text -- ^ 'drRoleName'+           -> DeleteRole+deleteRole p1 = DeleteRole+    { _drRoleName = p1+    }++-- | The name of the role to delete.+drRoleName :: Lens' DeleteRole Text+drRoleName = lens _drRoleName (\s a -> s { _drRoleName = a })++data DeleteRoleResponse = DeleteRoleResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteRoleResponse' constructor.+deleteRoleResponse :: DeleteRoleResponse+deleteRoleResponse = DeleteRoleResponse++instance ToPath DeleteRole where+    toPath = const "/"++instance ToQuery DeleteRole where+    toQuery DeleteRole{..} = mconcat+        [ "RoleName" =? _drRoleName+        ]++instance ToHeaders DeleteRole++instance AWSRequest DeleteRole where+    type Sv DeleteRole = IAM+    type Rs DeleteRole = DeleteRoleResponse++    request  = post "DeleteRole"+    response = nullResponse DeleteRoleResponse
+ gen/Network/AWS/IAM/DeleteRolePolicy.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteRolePolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified policy associated with the specified role.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRolePolicy.html>+module Network.AWS.IAM.DeleteRolePolicy+    (+    -- * Request+      DeleteRolePolicy+    -- ** Request constructor+    , deleteRolePolicy+    -- ** Request lenses+    , drpPolicyName+    , drpRoleName++    -- * Response+    , DeleteRolePolicyResponse+    -- ** Response constructor+    , deleteRolePolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data DeleteRolePolicy = DeleteRolePolicy+    { _drpPolicyName :: Text+    , _drpRoleName   :: Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteRolePolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'drpPolicyName' @::@ 'Text'+--+-- * 'drpRoleName' @::@ 'Text'+--+deleteRolePolicy :: Text -- ^ 'drpRoleName'+                 -> Text -- ^ 'drpPolicyName'+                 -> DeleteRolePolicy+deleteRolePolicy p1 p2 = DeleteRolePolicy+    { _drpRoleName   = p1+    , _drpPolicyName = p2+    }++-- | The name of the policy document to delete.+drpPolicyName :: Lens' DeleteRolePolicy Text+drpPolicyName = lens _drpPolicyName (\s a -> s { _drpPolicyName = a })++-- | The name of the role the associated with the policy.+drpRoleName :: Lens' DeleteRolePolicy Text+drpRoleName = lens _drpRoleName (\s a -> s { _drpRoleName = a })++data DeleteRolePolicyResponse = DeleteRolePolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteRolePolicyResponse' constructor.+deleteRolePolicyResponse :: DeleteRolePolicyResponse+deleteRolePolicyResponse = DeleteRolePolicyResponse++instance ToPath DeleteRolePolicy where+    toPath = const "/"++instance ToQuery DeleteRolePolicy where+    toQuery DeleteRolePolicy{..} = mconcat+        [ "PolicyName" =? _drpPolicyName+        , "RoleName"   =? _drpRoleName+        ]++instance ToHeaders DeleteRolePolicy++instance AWSRequest DeleteRolePolicy where+    type Sv DeleteRolePolicy = IAM+    type Rs DeleteRolePolicy = DeleteRolePolicyResponse++    request  = post "DeleteRolePolicy"+    response = nullResponse DeleteRolePolicyResponse
+ gen/Network/AWS/IAM/DeleteSAMLProvider.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteSAMLProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes a SAML provider. Deleting the provider does not update any roles+-- that reference the SAML provider as a principal in their trust policies.+-- Any attempt to assume a role that references a SAML provider that has been+-- deleted will fail.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html>+module Network.AWS.IAM.DeleteSAMLProvider+    (+    -- * Request+      DeleteSAMLProvider+    -- ** Request constructor+    , deleteSAMLProvider+    -- ** Request lenses+    , dsamlpSAMLProviderArn++    -- * Response+    , DeleteSAMLProviderResponse+    -- ** Response constructor+    , deleteSAMLProviderResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteSAMLProvider = DeleteSAMLProvider+    { _dsamlpSAMLProviderArn :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteSAMLProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsamlpSAMLProviderArn' @::@ 'Text'+--+deleteSAMLProvider :: Text -- ^ 'dsamlpSAMLProviderArn'+                   -> DeleteSAMLProvider+deleteSAMLProvider p1 = DeleteSAMLProvider+    { _dsamlpSAMLProviderArn = p1+    }++-- | The Amazon Resource Name (ARN) of the SAML provider to delete.+dsamlpSAMLProviderArn :: Lens' DeleteSAMLProvider Text+dsamlpSAMLProviderArn =+    lens _dsamlpSAMLProviderArn (\s a -> s { _dsamlpSAMLProviderArn = a })++data DeleteSAMLProviderResponse = DeleteSAMLProviderResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteSAMLProviderResponse' constructor.+deleteSAMLProviderResponse :: DeleteSAMLProviderResponse+deleteSAMLProviderResponse = DeleteSAMLProviderResponse++instance ToPath DeleteSAMLProvider where+    toPath = const "/"++instance ToQuery DeleteSAMLProvider where+    toQuery DeleteSAMLProvider{..} = mconcat+        [ "SAMLProviderArn" =? _dsamlpSAMLProviderArn+        ]++instance ToHeaders DeleteSAMLProvider++instance AWSRequest DeleteSAMLProvider where+    type Sv DeleteSAMLProvider = IAM+    type Rs DeleteSAMLProvider = DeleteSAMLProviderResponse++    request  = post "DeleteSAMLProvider"+    response = nullResponse DeleteSAMLProviderResponse
+ gen/Network/AWS/IAM/DeleteServerCertificate.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteServerCertificate+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified server certificate. If you are using a server+-- certificate with Elastic Load Balancing, deleting the certificate could+-- have implications for your application. If Elastic Load Balancing doesn't+-- detect the deletion of bound certificates, it may continue to use the+-- certificates. This could cause Elastic Load Balancing to stop accepting+-- traffic. We recommend that you remove the reference to the certificate from+-- Elastic Load Balancing before using this command to delete the certificate.+-- For more information, go to DeleteLoadBalancerListeners in the Elastic Load+-- Balancing API Reference.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html>+module Network.AWS.IAM.DeleteServerCertificate+    (+    -- * Request+      DeleteServerCertificate+    -- ** Request constructor+    , deleteServerCertificate+    -- ** Request lenses+    , dscServerCertificateName++    -- * Response+    , DeleteServerCertificateResponse+    -- ** Response constructor+    , deleteServerCertificateResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteServerCertificate = DeleteServerCertificate+    { _dscServerCertificateName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteServerCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dscServerCertificateName' @::@ 'Text'+--+deleteServerCertificate :: Text -- ^ 'dscServerCertificateName'+                        -> DeleteServerCertificate+deleteServerCertificate p1 = DeleteServerCertificate+    { _dscServerCertificateName = p1+    }++-- | The name of the server certificate you want to delete.+dscServerCertificateName :: Lens' DeleteServerCertificate Text+dscServerCertificateName =+    lens _dscServerCertificateName+        (\s a -> s { _dscServerCertificateName = a })++data DeleteServerCertificateResponse = DeleteServerCertificateResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteServerCertificateResponse' constructor.+deleteServerCertificateResponse :: DeleteServerCertificateResponse+deleteServerCertificateResponse = DeleteServerCertificateResponse++instance ToPath DeleteServerCertificate where+    toPath = const "/"++instance ToQuery DeleteServerCertificate where+    toQuery DeleteServerCertificate{..} = mconcat+        [ "ServerCertificateName" =? _dscServerCertificateName+        ]++instance ToHeaders DeleteServerCertificate++instance AWSRequest DeleteServerCertificate where+    type Sv DeleteServerCertificate = IAM+    type Rs DeleteServerCertificate = DeleteServerCertificateResponse++    request  = post "DeleteServerCertificate"+    response = nullResponse DeleteServerCertificateResponse
+ gen/Network/AWS/IAM/DeleteSigningCertificate.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteSigningCertificate+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified signing certificate associated with the specified+-- user. If you do not specify a user name, IAM determines the user name+-- implicitly based on the AWS access key ID signing the request. Because this+-- action works for access keys under the AWS account, you can use this action+-- to manage root credentials even if the AWS account has no associated users.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSigningCertificate.html>+module Network.AWS.IAM.DeleteSigningCertificate+    (+    -- * Request+      DeleteSigningCertificate+    -- ** Request constructor+    , deleteSigningCertificate+    -- ** Request lenses+    , dscCertificateId+    , dscUserName++    -- * Response+    , DeleteSigningCertificateResponse+    -- ** Response constructor+    , deleteSigningCertificateResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data DeleteSigningCertificate = DeleteSigningCertificate+    { _dscCertificateId :: Text+    , _dscUserName      :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteSigningCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dscCertificateId' @::@ 'Text'+--+-- * 'dscUserName' @::@ 'Maybe' 'Text'+--+deleteSigningCertificate :: Text -- ^ 'dscCertificateId'+                         -> DeleteSigningCertificate+deleteSigningCertificate p1 = DeleteSigningCertificate+    { _dscCertificateId = p1+    , _dscUserName      = Nothing+    }++-- | The ID of the signing certificate to delete.+dscCertificateId :: Lens' DeleteSigningCertificate Text+dscCertificateId = lens _dscCertificateId (\s a -> s { _dscCertificateId = a })++-- | The name of the user the signing certificate belongs to.+dscUserName :: Lens' DeleteSigningCertificate (Maybe Text)+dscUserName = lens _dscUserName (\s a -> s { _dscUserName = a })++data DeleteSigningCertificateResponse = DeleteSigningCertificateResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteSigningCertificateResponse' constructor.+deleteSigningCertificateResponse :: DeleteSigningCertificateResponse+deleteSigningCertificateResponse = DeleteSigningCertificateResponse++instance ToPath DeleteSigningCertificate where+    toPath = const "/"++instance ToQuery DeleteSigningCertificate where+    toQuery DeleteSigningCertificate{..} = mconcat+        [ "CertificateId" =? _dscCertificateId+        , "UserName"      =? _dscUserName+        ]++instance ToHeaders DeleteSigningCertificate++instance AWSRequest DeleteSigningCertificate where+    type Sv DeleteSigningCertificate = IAM+    type Rs DeleteSigningCertificate = DeleteSigningCertificateResponse++    request  = post "DeleteSigningCertificate"+    response = nullResponse DeleteSigningCertificateResponse
+ gen/Network/AWS/IAM/DeleteUser.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteUser+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified user. The user must not belong to any groups, have+-- any keys or signing certificates, or have any attached policies.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUser.html>+module Network.AWS.IAM.DeleteUser+    (+    -- * Request+      DeleteUser+    -- ** Request constructor+    , deleteUser+    -- ** Request lenses+    , duUserName++    -- * Response+    , DeleteUserResponse+    -- ** Response constructor+    , deleteUserResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteUser = DeleteUser+    { _duUserName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteUser' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'duUserName' @::@ 'Text'+--+deleteUser :: Text -- ^ 'duUserName'+           -> DeleteUser+deleteUser p1 = DeleteUser+    { _duUserName = p1+    }++-- | The name of the user to delete.+duUserName :: Lens' DeleteUser Text+duUserName = lens _duUserName (\s a -> s { _duUserName = a })++data DeleteUserResponse = DeleteUserResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteUserResponse' constructor.+deleteUserResponse :: DeleteUserResponse+deleteUserResponse = DeleteUserResponse++instance ToPath DeleteUser where+    toPath = const "/"++instance ToQuery DeleteUser where+    toQuery DeleteUser{..} = mconcat+        [ "UserName" =? _duUserName+        ]++instance ToHeaders DeleteUser++instance AWSRequest DeleteUser where+    type Sv DeleteUser = IAM+    type Rs DeleteUser = DeleteUserResponse++    request  = post "DeleteUser"+    response = nullResponse DeleteUserResponse
+ gen/Network/AWS/IAM/DeleteUserPolicy.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteUserPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes the specified policy associated with the specified user.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUserPolicy.html>+module Network.AWS.IAM.DeleteUserPolicy+    (+    -- * Request+      DeleteUserPolicy+    -- ** Request constructor+    , deleteUserPolicy+    -- ** Request lenses+    , dupPolicyName+    , dupUserName++    -- * Response+    , DeleteUserPolicyResponse+    -- ** Response constructor+    , deleteUserPolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data DeleteUserPolicy = DeleteUserPolicy+    { _dupPolicyName :: Text+    , _dupUserName   :: Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteUserPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dupPolicyName' @::@ 'Text'+--+-- * 'dupUserName' @::@ 'Text'+--+deleteUserPolicy :: Text -- ^ 'dupUserName'+                 -> Text -- ^ 'dupPolicyName'+                 -> DeleteUserPolicy+deleteUserPolicy p1 p2 = DeleteUserPolicy+    { _dupUserName   = p1+    , _dupPolicyName = p2+    }++-- | The name of the policy document to delete.+dupPolicyName :: Lens' DeleteUserPolicy Text+dupPolicyName = lens _dupPolicyName (\s a -> s { _dupPolicyName = a })++-- | The name of the user the policy is associated with.+dupUserName :: Lens' DeleteUserPolicy Text+dupUserName = lens _dupUserName (\s a -> s { _dupUserName = a })++data DeleteUserPolicyResponse = DeleteUserPolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteUserPolicyResponse' constructor.+deleteUserPolicyResponse :: DeleteUserPolicyResponse+deleteUserPolicyResponse = DeleteUserPolicyResponse++instance ToPath DeleteUserPolicy where+    toPath = const "/"++instance ToQuery DeleteUserPolicy where+    toQuery DeleteUserPolicy{..} = mconcat+        [ "PolicyName" =? _dupPolicyName+        , "UserName"   =? _dupUserName+        ]++instance ToHeaders DeleteUserPolicy++instance AWSRequest DeleteUserPolicy where+    type Sv DeleteUserPolicy = IAM+    type Rs DeleteUserPolicy = DeleteUserPolicyResponse++    request  = post "DeleteUserPolicy"+    response = nullResponse DeleteUserPolicyResponse
+ gen/Network/AWS/IAM/DeleteVirtualMFADevice.hs view
@@ -0,0 +1,90 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.DeleteVirtualMFADevice+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Deletes a virtual MFA device.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html>+module Network.AWS.IAM.DeleteVirtualMFADevice+    (+    -- * Request+      DeleteVirtualMFADevice+    -- ** Request constructor+    , deleteVirtualMFADevice+    -- ** Request lenses+    , dvmfadSerialNumber++    -- * Response+    , DeleteVirtualMFADeviceResponse+    -- ** Response constructor+    , deleteVirtualMFADeviceResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype DeleteVirtualMFADevice = DeleteVirtualMFADevice+    { _dvmfadSerialNumber :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'DeleteVirtualMFADevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dvmfadSerialNumber' @::@ 'Text'+--+deleteVirtualMFADevice :: Text -- ^ 'dvmfadSerialNumber'+                       -> DeleteVirtualMFADevice+deleteVirtualMFADevice p1 = DeleteVirtualMFADevice+    { _dvmfadSerialNumber = p1+    }++-- | The serial number that uniquely identifies the MFA device. For virtual+-- MFA devices, the serial number is the same as the ARN.+dvmfadSerialNumber :: Lens' DeleteVirtualMFADevice Text+dvmfadSerialNumber =+    lens _dvmfadSerialNumber (\s a -> s { _dvmfadSerialNumber = a })++data DeleteVirtualMFADeviceResponse = DeleteVirtualMFADeviceResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteVirtualMFADeviceResponse' constructor.+deleteVirtualMFADeviceResponse :: DeleteVirtualMFADeviceResponse+deleteVirtualMFADeviceResponse = DeleteVirtualMFADeviceResponse++instance ToPath DeleteVirtualMFADevice where+    toPath = const "/"++instance ToQuery DeleteVirtualMFADevice where+    toQuery DeleteVirtualMFADevice{..} = mconcat+        [ "SerialNumber" =? _dvmfadSerialNumber+        ]++instance ToHeaders DeleteVirtualMFADevice++instance AWSRequest DeleteVirtualMFADevice where+    type Sv DeleteVirtualMFADevice = IAM+    type Rs DeleteVirtualMFADevice = DeleteVirtualMFADeviceResponse++    request  = post "DeleteVirtualMFADevice"+    response = nullResponse DeleteVirtualMFADeviceResponse
+ gen/Network/AWS/IAM/EnableMFADevice.hs view
@@ -0,0 +1,129 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.EnableMFADevice+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Enables the specified MFA device and associates it with the specified user+-- name. When enabled, the MFA device is required for every subsequent login+-- by the user name associated with the device.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html>+module Network.AWS.IAM.EnableMFADevice+    (+    -- * Request+      EnableMFADevice+    -- ** Request constructor+    , enableMFADevice+    -- ** Request lenses+    , emfadAuthenticationCode1+    , emfadAuthenticationCode2+    , emfadSerialNumber+    , emfadUserName++    -- * Response+    , EnableMFADeviceResponse+    -- ** Response constructor+    , enableMFADeviceResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data EnableMFADevice = EnableMFADevice+    { _emfadAuthenticationCode1 :: Text+    , _emfadAuthenticationCode2 :: Text+    , _emfadSerialNumber        :: Text+    , _emfadUserName            :: Text+    } deriving (Eq, Ord, Show)++-- | 'EnableMFADevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'emfadAuthenticationCode1' @::@ 'Text'+--+-- * 'emfadAuthenticationCode2' @::@ 'Text'+--+-- * 'emfadSerialNumber' @::@ 'Text'+--+-- * 'emfadUserName' @::@ 'Text'+--+enableMFADevice :: Text -- ^ 'emfadUserName'+                -> Text -- ^ 'emfadSerialNumber'+                -> Text -- ^ 'emfadAuthenticationCode1'+                -> Text -- ^ 'emfadAuthenticationCode2'+                -> EnableMFADevice+enableMFADevice p1 p2 p3 p4 = EnableMFADevice+    { _emfadUserName            = p1+    , _emfadSerialNumber        = p2+    , _emfadAuthenticationCode1 = p3+    , _emfadAuthenticationCode2 = p4+    }++-- | An authentication code emitted by the device.+emfadAuthenticationCode1 :: Lens' EnableMFADevice Text+emfadAuthenticationCode1 =+    lens _emfadAuthenticationCode1+        (\s a -> s { _emfadAuthenticationCode1 = a })++-- | A subsequent authentication code emitted by the device.+emfadAuthenticationCode2 :: Lens' EnableMFADevice Text+emfadAuthenticationCode2 =+    lens _emfadAuthenticationCode2+        (\s a -> s { _emfadAuthenticationCode2 = a })++-- | The serial number that uniquely identifies the MFA device. For virtual+-- MFA devices, the serial number is the device ARN.+emfadSerialNumber :: Lens' EnableMFADevice Text+emfadSerialNumber =+    lens _emfadSerialNumber (\s a -> s { _emfadSerialNumber = a })++-- | The name of the user for whom you want to enable the MFA device.+emfadUserName :: Lens' EnableMFADevice Text+emfadUserName = lens _emfadUserName (\s a -> s { _emfadUserName = a })++data EnableMFADeviceResponse = EnableMFADeviceResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'EnableMFADeviceResponse' constructor.+enableMFADeviceResponse :: EnableMFADeviceResponse+enableMFADeviceResponse = EnableMFADeviceResponse++instance ToPath EnableMFADevice where+    toPath = const "/"++instance ToQuery EnableMFADevice where+    toQuery EnableMFADevice{..} = mconcat+        [ "AuthenticationCode1" =? _emfadAuthenticationCode1+        , "AuthenticationCode2" =? _emfadAuthenticationCode2+        , "SerialNumber"        =? _emfadSerialNumber+        , "UserName"            =? _emfadUserName+        ]++instance ToHeaders EnableMFADevice++instance AWSRequest EnableMFADevice where+    type Sv EnableMFADevice = IAM+    type Rs EnableMFADevice = EnableMFADeviceResponse++    request  = post "EnableMFADevice"+    response = nullResponse EnableMFADeviceResponse
+ gen/Network/AWS/IAM/GenerateCredentialReport.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GenerateCredentialReport+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Generates a credential report for the AWS account. For more information+-- about the credential report, see Getting Credential Reports in the Using+-- IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html>+module Network.AWS.IAM.GenerateCredentialReport+    (+    -- * Request+      GenerateCredentialReport+    -- ** Request constructor+    , generateCredentialReport++    -- * Response+    , GenerateCredentialReportResponse+    -- ** Response constructor+    , generateCredentialReportResponse+    -- ** Response lenses+    , gcrrDescription+    , gcrrState+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GenerateCredentialReport = GenerateCredentialReport+    deriving (Eq, Ord, Show, Generic)++-- | 'GenerateCredentialReport' constructor.+generateCredentialReport :: GenerateCredentialReport+generateCredentialReport = GenerateCredentialReport++data GenerateCredentialReportResponse = GenerateCredentialReportResponse+    { _gcrrDescription :: Maybe Text+    , _gcrrState       :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'GenerateCredentialReportResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gcrrDescription' @::@ 'Maybe' 'Text'+--+-- * 'gcrrState' @::@ 'Maybe' 'Text'+--+generateCredentialReportResponse :: GenerateCredentialReportResponse+generateCredentialReportResponse = GenerateCredentialReportResponse+    { _gcrrState       = Nothing+    , _gcrrDescription = Nothing+    }++-- | Information about the credential report.+gcrrDescription :: Lens' GenerateCredentialReportResponse (Maybe Text)+gcrrDescription = lens _gcrrDescription (\s a -> s { _gcrrDescription = a })++-- | Information about the state of a credential report.+gcrrState :: Lens' GenerateCredentialReportResponse (Maybe Text)+gcrrState = lens _gcrrState (\s a -> s { _gcrrState = a })++instance ToPath GenerateCredentialReport where+    toPath = const "/"++instance ToQuery GenerateCredentialReport where+    toQuery = const mempty++instance ToHeaders GenerateCredentialReport++instance AWSRequest GenerateCredentialReport where+    type Sv GenerateCredentialReport = IAM+    type Rs GenerateCredentialReport = GenerateCredentialReportResponse++    request  = post "GenerateCredentialReport"+    response = xmlResponse++instance FromXML GenerateCredentialReportResponse where+    parseXML = withElement "GenerateCredentialReportResult" $ \x -> GenerateCredentialReportResponse+        <$> x .@? "Description"+        <*> x .@? "State"
+ gen/Network/AWS/IAM/GetAccountPasswordPolicy.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetAccountPasswordPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves the password policy for the AWS account. For more information+-- about using a password policy, go to Managing an IAM Password Policy.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html>+module Network.AWS.IAM.GetAccountPasswordPolicy+    (+    -- * Request+      GetAccountPasswordPolicy+    -- ** Request constructor+    , getAccountPasswordPolicy++    -- * Response+    , GetAccountPasswordPolicyResponse+    -- ** Response constructor+    , getAccountPasswordPolicyResponse+    -- ** Response lenses+    , gapprPasswordPolicy+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GetAccountPasswordPolicy = GetAccountPasswordPolicy+    deriving (Eq, Ord, Show, Generic)++-- | 'GetAccountPasswordPolicy' constructor.+getAccountPasswordPolicy :: GetAccountPasswordPolicy+getAccountPasswordPolicy = GetAccountPasswordPolicy++newtype GetAccountPasswordPolicyResponse = GetAccountPasswordPolicyResponse+    { _gapprPasswordPolicy :: PasswordPolicy+    } deriving (Eq, Show)++-- | 'GetAccountPasswordPolicyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gapprPasswordPolicy' @::@ 'PasswordPolicy'+--+getAccountPasswordPolicyResponse :: PasswordPolicy -- ^ 'gapprPasswordPolicy'+                                 -> GetAccountPasswordPolicyResponse+getAccountPasswordPolicyResponse p1 = GetAccountPasswordPolicyResponse+    { _gapprPasswordPolicy = p1+    }++gapprPasswordPolicy :: Lens' GetAccountPasswordPolicyResponse PasswordPolicy+gapprPasswordPolicy =+    lens _gapprPasswordPolicy (\s a -> s { _gapprPasswordPolicy = a })++instance ToPath GetAccountPasswordPolicy where+    toPath = const "/"++instance ToQuery GetAccountPasswordPolicy where+    toQuery = const mempty++instance ToHeaders GetAccountPasswordPolicy++instance AWSRequest GetAccountPasswordPolicy where+    type Sv GetAccountPasswordPolicy = IAM+    type Rs GetAccountPasswordPolicy = GetAccountPasswordPolicyResponse++    request  = post "GetAccountPasswordPolicy"+    response = xmlResponse++instance FromXML GetAccountPasswordPolicyResponse where+    parseXML = withElement "GetAccountPasswordPolicyResult" $ \x -> GetAccountPasswordPolicyResponse+        <$> x .@  "PasswordPolicy"
+ gen/Network/AWS/IAM/GetAccountSummary.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetAccountSummary+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves account level information about account entity usage and IAM+-- quotas. For information about limitations on IAM entities, see Limitations+-- on IAM Entities in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountSummary.html>+module Network.AWS.IAM.GetAccountSummary+    (+    -- * Request+      GetAccountSummary+    -- ** Request constructor+    , getAccountSummary++    -- * Response+    , GetAccountSummaryResponse+    -- ** Response constructor+    , getAccountSummaryResponse+    -- ** Response lenses+    , gasrSummaryMap+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GetAccountSummary = GetAccountSummary+    deriving (Eq, Ord, Show, Generic)++-- | 'GetAccountSummary' constructor.+getAccountSummary :: GetAccountSummary+getAccountSummary = GetAccountSummary++newtype GetAccountSummaryResponse = GetAccountSummaryResponse+    { _gasrSummaryMap :: EMap "entry" "key" "value" Text Int+    } deriving (Eq, Show, Monoid, Semigroup)++-- | 'GetAccountSummaryResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gasrSummaryMap' @::@ 'HashMap' 'Text' 'Int'+--+getAccountSummaryResponse :: GetAccountSummaryResponse+getAccountSummaryResponse = GetAccountSummaryResponse+    { _gasrSummaryMap = mempty+    }++-- | A set of key value pairs containing account-level information. SummaryMap+-- contains the following keys: AccessKeysPerUserQuota - Maximum number of+-- access keys that can be created per user AccountMFAEnabled - 1 if the+-- root account has an MFA device assigned to it, 0 otherwise+-- AssumeRolePolicySizeQuota - Maximum allowed size for assume role policy+-- documents (in kilobytes) GroupPolicySizeQuota - Maximum allowed size for+-- Group policy documents (in kilobytes) Groups - Number of Groups for the+-- AWS account GroupsPerUserQuota - Maximum number of groups an IAM user can+-- belong to GroupsQuota - Maximum groups allowed for the AWS account+-- InstanceProfiles - Number of instance profiles for the AWS account+-- InstanceProfilesQuota - Maximum instance profiles allowed for the AWS+-- account MFADevices - Number of MFA devices, either assigned or unassigned+-- MFADevicesInUse - Number of MFA devices that have been assigned to an IAM+-- user or to the root account RolePolicySizeQuota - Maximum allowed size+-- for role policy documents (in kilobytes) Roles - Number of roles for the+-- AWS account RolesQuota - Maximum roles allowed for the AWS account+-- ServerCertificates - Number of server certificates for the AWS account+-- ServerCertificatesQuota - Maximum server certificates allowed for the AWS+-- account SigningCertificatesPerUserQuota - Maximum number of X509+-- certificates allowed for a user UserPolicySizeQuota - Maximum allowed+-- size for user policy documents (in kilobytes) Users - Number of users for+-- the AWS account UsersQuota - Maximum users allowed for the AWS account.+gasrSummaryMap :: Lens' GetAccountSummaryResponse (HashMap Text Int)+gasrSummaryMap = lens _gasrSummaryMap (\s a -> s { _gasrSummaryMap = a }) . _EMap++instance ToPath GetAccountSummary where+    toPath = const "/"++instance ToQuery GetAccountSummary where+    toQuery = const mempty++instance ToHeaders GetAccountSummary++instance AWSRequest GetAccountSummary where+    type Sv GetAccountSummary = IAM+    type Rs GetAccountSummary = GetAccountSummaryResponse++    request  = post "GetAccountSummary"+    response = xmlResponse++instance FromXML GetAccountSummaryResponse where+    parseXML = withElement "GetAccountSummaryResult" $ \x -> GetAccountSummaryResponse+        <$> x .@  "SummaryMap"
+ gen/Network/AWS/IAM/GetCredentialReport.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetCredentialReport+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves a credential report for the AWS account. For more information+-- about the credential report, see Getting Credential Reports in the Using+-- IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html>+module Network.AWS.IAM.GetCredentialReport+    (+    -- * Request+      GetCredentialReport+    -- ** Request constructor+    , getCredentialReport++    -- * Response+    , GetCredentialReportResponse+    -- ** Response constructor+    , getCredentialReportResponse+    -- ** Response lenses+    , gcrrContent+    , gcrrGeneratedTime+    , gcrrReportFormat+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GetCredentialReport = GetCredentialReport+    deriving (Eq, Ord, Show, Generic)++-- | 'GetCredentialReport' constructor.+getCredentialReport :: GetCredentialReport+getCredentialReport = GetCredentialReport++data GetCredentialReportResponse = GetCredentialReportResponse+    { _gcrrContent       :: Maybe Base64+    , _gcrrGeneratedTime :: Maybe RFC822+    , _gcrrReportFormat  :: Maybe Text+    } deriving (Eq, Show)++-- | 'GetCredentialReportResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gcrrContent' @::@ 'Maybe' 'Base64'+--+-- * 'gcrrGeneratedTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'gcrrReportFormat' @::@ 'Maybe' 'Text'+--+getCredentialReportResponse :: GetCredentialReportResponse+getCredentialReportResponse = GetCredentialReportResponse+    { _gcrrContent       = Nothing+    , _gcrrReportFormat  = Nothing+    , _gcrrGeneratedTime = Nothing+    }++-- | Contains the credential report. The report is Base64-encoded.+gcrrContent :: Lens' GetCredentialReportResponse (Maybe Base64)+gcrrContent = lens _gcrrContent (\s a -> s { _gcrrContent = a })++-- | The time and date when the credential report was created, in ISO 8601+-- date-time format.+gcrrGeneratedTime :: Lens' GetCredentialReportResponse (Maybe UTCTime)+gcrrGeneratedTime =+    lens _gcrrGeneratedTime (\s a -> s { _gcrrGeneratedTime = a })+        . mapping _Time++-- | The format (MIME type) of the credential report.+gcrrReportFormat :: Lens' GetCredentialReportResponse (Maybe Text)+gcrrReportFormat = lens _gcrrReportFormat (\s a -> s { _gcrrReportFormat = a })++instance ToPath GetCredentialReport where+    toPath = const "/"++instance ToQuery GetCredentialReport where+    toQuery = const mempty++instance ToHeaders GetCredentialReport++instance AWSRequest GetCredentialReport where+    type Sv GetCredentialReport = IAM+    type Rs GetCredentialReport = GetCredentialReportResponse++    request  = post "GetCredentialReport"+    response = xmlResponse++instance FromXML GetCredentialReportResponse where+    parseXML = withElement "GetCredentialReportResult" $ \x -> GetCredentialReportResponse+        <$> x .@? "Content"+        <*> x .@? "GeneratedTime"+        <*> x .@? "ReportFormat"
+ gen/Network/AWS/IAM/GetGroup.hs view
@@ -0,0 +1,173 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetGroup+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Returns a list of users that are in the specified group. You can paginate+-- the results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html>+module Network.AWS.IAM.GetGroup+    (+    -- * Request+      GetGroup+    -- ** Request constructor+    , getGroup+    -- ** Request lenses+    , ggGroupName+    , ggMarker+    , ggMaxItems++    -- * Response+    , GetGroupResponse+    -- ** Response constructor+    , getGroupResponse+    -- ** Response lenses+    , ggrGroup+    , ggrIsTruncated+    , ggrMarker+    , ggrUsers+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GetGroup = GetGroup+    { _ggGroupName :: Text+    , _ggMarker    :: Maybe Text+    , _ggMaxItems  :: Maybe Nat+    } deriving (Eq, Ord, Show)++-- | 'GetGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ggGroupName' @::@ 'Text'+--+-- * 'ggMarker' @::@ 'Maybe' 'Text'+--+-- * 'ggMaxItems' @::@ 'Maybe' 'Natural'+--+getGroup :: Text -- ^ 'ggGroupName'+         -> GetGroup+getGroup p1 = GetGroup+    { _ggGroupName = p1+    , _ggMarker    = Nothing+    , _ggMaxItems  = Nothing+    }++-- | The name of the group.+ggGroupName :: Lens' GetGroup Text+ggGroupName = lens _ggGroupName (\s a -> s { _ggGroupName = a })++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+ggMarker :: Lens' GetGroup (Maybe Text)+ggMarker = lens _ggMarker (\s a -> s { _ggMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- groups you want in the response. If there are additional groups beyond+-- the maximum you specify, the IsTruncated response element is true. This+-- parameter is optional. If you do not include it, it defaults to 100.+ggMaxItems :: Lens' GetGroup (Maybe Natural)+ggMaxItems = lens _ggMaxItems (\s a -> s { _ggMaxItems = a }) . mapping _Nat++data GetGroupResponse = GetGroupResponse+    { _ggrGroup       :: Group+    , _ggrIsTruncated :: Maybe Bool+    , _ggrMarker      :: Maybe Text+    , _ggrUsers       :: List "Users" User+    } deriving (Eq, Show)++-- | 'GetGroupResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ggrGroup' @::@ 'Group'+--+-- * 'ggrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'ggrMarker' @::@ 'Maybe' 'Text'+--+-- * 'ggrUsers' @::@ ['User']+--+getGroupResponse :: Group -- ^ 'ggrGroup'+                 -> GetGroupResponse+getGroupResponse p1 = GetGroupResponse+    { _ggrGroup       = p1+    , _ggrUsers       = mempty+    , _ggrIsTruncated = Nothing+    , _ggrMarker      = Nothing+    }++-- | Information about the group.+ggrGroup :: Lens' GetGroupResponse Group+ggrGroup = lens _ggrGroup (\s a -> s { _ggrGroup = a })++-- | A flag that indicates whether there are more user names to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more user names in the+-- list.+ggrIsTruncated :: Lens' GetGroupResponse (Maybe Bool)+ggrIsTruncated = lens _ggrIsTruncated (\s a -> s { _ggrIsTruncated = a })++-- | If IsTruncated is true, then this element is present and contains the+-- value to use for the Marker parameter in a subsequent pagination request.+ggrMarker :: Lens' GetGroupResponse (Maybe Text)+ggrMarker = lens _ggrMarker (\s a -> s { _ggrMarker = a })++-- | A list of users in the group.+ggrUsers :: Lens' GetGroupResponse [User]+ggrUsers = lens _ggrUsers (\s a -> s { _ggrUsers = a }) . _List++instance ToPath GetGroup where+    toPath = const "/"++instance ToQuery GetGroup where+    toQuery GetGroup{..} = mconcat+        [ "GroupName" =? _ggGroupName+        , "Marker"    =? _ggMarker+        , "MaxItems"  =? _ggMaxItems+        ]++instance ToHeaders GetGroup++instance AWSRequest GetGroup where+    type Sv GetGroup = IAM+    type Rs GetGroup = GetGroupResponse++    request  = post "GetGroup"+    response = xmlResponse++instance FromXML GetGroupResponse where+    parseXML = withElement "GetGroupResult" $ \x -> GetGroupResponse+        <$> x .@  "Group"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "Users"++instance AWSPager GetGroup where+    page rq rs+        | stop (rs ^. ggrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & ggMarker .~ rs ^. ggrMarker
+ gen/Network/AWS/IAM/GetGroupPolicy.hs view
@@ -0,0 +1,143 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetGroupPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves the specified policy document for the specified group. The+-- returned policy is URL-encoded according to RFC 3986. For more information+-- about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroupPolicy.html>+module Network.AWS.IAM.GetGroupPolicy+    (+    -- * Request+      GetGroupPolicy+    -- ** Request constructor+    , getGroupPolicy+    -- ** Request lenses+    , ggpGroupName+    , ggpPolicyName++    -- * Response+    , GetGroupPolicyResponse+    -- ** Response constructor+    , getGroupPolicyResponse+    -- ** Response lenses+    , ggprGroupName+    , ggprPolicyDocument+    , ggprPolicyName+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GetGroupPolicy = GetGroupPolicy+    { _ggpGroupName  :: Text+    , _ggpPolicyName :: Text+    } deriving (Eq, Ord, Show)++-- | 'GetGroupPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ggpGroupName' @::@ 'Text'+--+-- * 'ggpPolicyName' @::@ 'Text'+--+getGroupPolicy :: Text -- ^ 'ggpGroupName'+               -> Text -- ^ 'ggpPolicyName'+               -> GetGroupPolicy+getGroupPolicy p1 p2 = GetGroupPolicy+    { _ggpGroupName  = p1+    , _ggpPolicyName = p2+    }++-- | The name of the group the policy is associated with.+ggpGroupName :: Lens' GetGroupPolicy Text+ggpGroupName = lens _ggpGroupName (\s a -> s { _ggpGroupName = a })++-- | The name of the policy document to get.+ggpPolicyName :: Lens' GetGroupPolicy Text+ggpPolicyName = lens _ggpPolicyName (\s a -> s { _ggpPolicyName = a })++data GetGroupPolicyResponse = GetGroupPolicyResponse+    { _ggprGroupName      :: Text+    , _ggprPolicyDocument :: Text+    , _ggprPolicyName     :: Text+    } deriving (Eq, Ord, Show)++-- | 'GetGroupPolicyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ggprGroupName' @::@ 'Text'+--+-- * 'ggprPolicyDocument' @::@ 'Text'+--+-- * 'ggprPolicyName' @::@ 'Text'+--+getGroupPolicyResponse :: Text -- ^ 'ggprGroupName'+                       -> Text -- ^ 'ggprPolicyName'+                       -> Text -- ^ 'ggprPolicyDocument'+                       -> GetGroupPolicyResponse+getGroupPolicyResponse p1 p2 p3 = GetGroupPolicyResponse+    { _ggprGroupName      = p1+    , _ggprPolicyName     = p2+    , _ggprPolicyDocument = p3+    }++-- | The group the policy is associated with.+ggprGroupName :: Lens' GetGroupPolicyResponse Text+ggprGroupName = lens _ggprGroupName (\s a -> s { _ggprGroupName = a })++-- | The policy document.+ggprPolicyDocument :: Lens' GetGroupPolicyResponse Text+ggprPolicyDocument =+    lens _ggprPolicyDocument (\s a -> s { _ggprPolicyDocument = a })++-- | The name of the policy.+ggprPolicyName :: Lens' GetGroupPolicyResponse Text+ggprPolicyName = lens _ggprPolicyName (\s a -> s { _ggprPolicyName = a })++instance ToPath GetGroupPolicy where+    toPath = const "/"++instance ToQuery GetGroupPolicy where+    toQuery GetGroupPolicy{..} = mconcat+        [ "GroupName"  =? _ggpGroupName+        , "PolicyName" =? _ggpPolicyName+        ]++instance ToHeaders GetGroupPolicy++instance AWSRequest GetGroupPolicy where+    type Sv GetGroupPolicy = IAM+    type Rs GetGroupPolicy = GetGroupPolicyResponse++    request  = post "GetGroupPolicy"+    response = xmlResponse++instance FromXML GetGroupPolicyResponse where+    parseXML = withElement "GetGroupPolicyResult" $ \x -> GetGroupPolicyResponse+        <$> x .@  "GroupName"+        <*> x .@  "PolicyDocument"+        <*> x .@  "PolicyName"
+ gen/Network/AWS/IAM/GetInstanceProfile.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetInstanceProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves information about the specified instance profile, including the+-- instance profile's path, GUID, ARN, and role. For more information about+-- instance profiles, go to About Instance Profiles. For more information+-- about ARNs, go to ARNs.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html>+module Network.AWS.IAM.GetInstanceProfile+    (+    -- * Request+      GetInstanceProfile+    -- ** Request constructor+    , getInstanceProfile+    -- ** Request lenses+    , gipInstanceProfileName++    -- * Response+    , GetInstanceProfileResponse+    -- ** Response constructor+    , getInstanceProfileResponse+    -- ** Response lenses+    , giprInstanceProfile+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype GetInstanceProfile = GetInstanceProfile+    { _gipInstanceProfileName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetInstanceProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gipInstanceProfileName' @::@ 'Text'+--+getInstanceProfile :: Text -- ^ 'gipInstanceProfileName'+                   -> GetInstanceProfile+getInstanceProfile p1 = GetInstanceProfile+    { _gipInstanceProfileName = p1+    }++-- | The name of the instance profile to get information about.+gipInstanceProfileName :: Lens' GetInstanceProfile Text+gipInstanceProfileName =+    lens _gipInstanceProfileName (\s a -> s { _gipInstanceProfileName = a })++newtype GetInstanceProfileResponse = GetInstanceProfileResponse+    { _giprInstanceProfile :: InstanceProfile+    } deriving (Eq, Show)++-- | 'GetInstanceProfileResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'giprInstanceProfile' @::@ 'InstanceProfile'+--+getInstanceProfileResponse :: InstanceProfile -- ^ 'giprInstanceProfile'+                           -> GetInstanceProfileResponse+getInstanceProfileResponse p1 = GetInstanceProfileResponse+    { _giprInstanceProfile = p1+    }++-- | Information about the instance profile.+giprInstanceProfile :: Lens' GetInstanceProfileResponse InstanceProfile+giprInstanceProfile =+    lens _giprInstanceProfile (\s a -> s { _giprInstanceProfile = a })++instance ToPath GetInstanceProfile where+    toPath = const "/"++instance ToQuery GetInstanceProfile where+    toQuery GetInstanceProfile{..} = mconcat+        [ "InstanceProfileName" =? _gipInstanceProfileName+        ]++instance ToHeaders GetInstanceProfile++instance AWSRequest GetInstanceProfile where+    type Sv GetInstanceProfile = IAM+    type Rs GetInstanceProfile = GetInstanceProfileResponse++    request  = post "GetInstanceProfile"+    response = xmlResponse++instance FromXML GetInstanceProfileResponse where+    parseXML = withElement "GetInstanceProfileResult" $ \x -> GetInstanceProfileResponse+        <$> x .@  "InstanceProfile"
+ gen/Network/AWS/IAM/GetLoginProfile.hs view
@@ -0,0 +1,109 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetLoginProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves the user name and password-creation date for the specified user.+-- If the user has not been assigned a password, the action returns a 404+-- (NoSuchEntity) error.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html>+module Network.AWS.IAM.GetLoginProfile+    (+    -- * Request+      GetLoginProfile+    -- ** Request constructor+    , getLoginProfile+    -- ** Request lenses+    , glpUserName++    -- * Response+    , GetLoginProfileResponse+    -- ** Response constructor+    , getLoginProfileResponse+    -- ** Response lenses+    , glprLoginProfile+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype GetLoginProfile = GetLoginProfile+    { _glpUserName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetLoginProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'glpUserName' @::@ 'Text'+--+getLoginProfile :: Text -- ^ 'glpUserName'+                -> GetLoginProfile+getLoginProfile p1 = GetLoginProfile+    { _glpUserName = p1+    }++-- | The name of the user whose login profile you want to retrieve.+glpUserName :: Lens' GetLoginProfile Text+glpUserName = lens _glpUserName (\s a -> s { _glpUserName = a })++newtype GetLoginProfileResponse = GetLoginProfileResponse+    { _glprLoginProfile :: LoginProfile+    } deriving (Eq, Show)++-- | 'GetLoginProfileResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'glprLoginProfile' @::@ 'LoginProfile'+--+getLoginProfileResponse :: LoginProfile -- ^ 'glprLoginProfile'+                        -> GetLoginProfileResponse+getLoginProfileResponse p1 = GetLoginProfileResponse+    { _glprLoginProfile = p1+    }++-- | The user name and password create date for the user.+glprLoginProfile :: Lens' GetLoginProfileResponse LoginProfile+glprLoginProfile = lens _glprLoginProfile (\s a -> s { _glprLoginProfile = a })++instance ToPath GetLoginProfile where+    toPath = const "/"++instance ToQuery GetLoginProfile where+    toQuery GetLoginProfile{..} = mconcat+        [ "UserName" =? _glpUserName+        ]++instance ToHeaders GetLoginProfile++instance AWSRequest GetLoginProfile where+    type Sv GetLoginProfile = IAM+    type Rs GetLoginProfile = GetLoginProfileResponse++    request  = post "GetLoginProfile"+    response = xmlResponse++instance FromXML GetLoginProfileResponse where+    parseXML = withElement "GetLoginProfileResult" $ \x -> GetLoginProfileResponse+        <$> x .@  "LoginProfile"
+ gen/Network/AWS/IAM/GetOpenIDConnectProvider.hs view
@@ -0,0 +1,152 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetOpenIDConnectProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Returns information about the specified OpenID Connect provider.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html>+module Network.AWS.IAM.GetOpenIDConnectProvider+    (+    -- * Request+      GetOpenIDConnectProvider+    -- ** Request constructor+    , getOpenIDConnectProvider+    -- ** Request lenses+    , goidcpOpenIDConnectProviderArn++    -- * Response+    , GetOpenIDConnectProviderResponse+    -- ** Response constructor+    , getOpenIDConnectProviderResponse+    -- ** Response lenses+    , goidcprClientIDList+    , goidcprCreateDate+    , goidcprThumbprintList+    , goidcprUrl+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype GetOpenIDConnectProvider = GetOpenIDConnectProvider+    { _goidcpOpenIDConnectProviderArn :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetOpenIDConnectProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'goidcpOpenIDConnectProviderArn' @::@ 'Text'+--+getOpenIDConnectProvider :: Text -- ^ 'goidcpOpenIDConnectProviderArn'+                         -> GetOpenIDConnectProvider+getOpenIDConnectProvider p1 = GetOpenIDConnectProvider+    { _goidcpOpenIDConnectProviderArn = p1+    }++-- | The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider+-- to get information for. You can get a list of OIDC provider ARNs by using+-- the ListOpenIDConnectProviders action.+goidcpOpenIDConnectProviderArn :: Lens' GetOpenIDConnectProvider Text+goidcpOpenIDConnectProviderArn =+    lens _goidcpOpenIDConnectProviderArn+        (\s a -> s { _goidcpOpenIDConnectProviderArn = a })++data GetOpenIDConnectProviderResponse = GetOpenIDConnectProviderResponse+    { _goidcprClientIDList   :: List "ClientIDList" Text+    , _goidcprCreateDate     :: Maybe RFC822+    , _goidcprThumbprintList :: List "ThumbprintList" Text+    , _goidcprUrl            :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'GetOpenIDConnectProviderResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'goidcprClientIDList' @::@ ['Text']+--+-- * 'goidcprCreateDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'goidcprThumbprintList' @::@ ['Text']+--+-- * 'goidcprUrl' @::@ 'Maybe' 'Text'+--+getOpenIDConnectProviderResponse :: GetOpenIDConnectProviderResponse+getOpenIDConnectProviderResponse = GetOpenIDConnectProviderResponse+    { _goidcprUrl            = Nothing+    , _goidcprClientIDList   = mempty+    , _goidcprThumbprintList = mempty+    , _goidcprCreateDate     = Nothing+    }++-- | A list of client IDs (also known as audiences) that are associated with+-- the specified IAM OpenID Connect provider. For more information, see+-- CreateOpenIDConnectProvider.+goidcprClientIDList :: Lens' GetOpenIDConnectProviderResponse [Text]+goidcprClientIDList =+    lens _goidcprClientIDList (\s a -> s { _goidcprClientIDList = a })+        . _List++-- | The date and time when the IAM OpenID Connect provider entity was created+-- in the AWS account.+goidcprCreateDate :: Lens' GetOpenIDConnectProviderResponse (Maybe UTCTime)+goidcprCreateDate =+    lens _goidcprCreateDate (\s a -> s { _goidcprCreateDate = a })+        . mapping _Time++-- | A list of certificate thumbprints that are associated with the specified+-- IAM OpenID Connect provider. For more information, see+-- CreateOpenIDConnectProvider.+goidcprThumbprintList :: Lens' GetOpenIDConnectProviderResponse [Text]+goidcprThumbprintList =+    lens _goidcprThumbprintList (\s a -> s { _goidcprThumbprintList = a })+        . _List++-- | The URL that the IAM OpenID Connect provider is associated with. For more+-- information, see CreateOpenIDConnectProvider.+goidcprUrl :: Lens' GetOpenIDConnectProviderResponse (Maybe Text)+goidcprUrl = lens _goidcprUrl (\s a -> s { _goidcprUrl = a })++instance ToPath GetOpenIDConnectProvider where+    toPath = const "/"++instance ToQuery GetOpenIDConnectProvider where+    toQuery GetOpenIDConnectProvider{..} = mconcat+        [ "OpenIDConnectProviderArn" =? _goidcpOpenIDConnectProviderArn+        ]++instance ToHeaders GetOpenIDConnectProvider++instance AWSRequest GetOpenIDConnectProvider where+    type Sv GetOpenIDConnectProvider = IAM+    type Rs GetOpenIDConnectProvider = GetOpenIDConnectProviderResponse++    request  = post "GetOpenIDConnectProvider"+    response = xmlResponse++instance FromXML GetOpenIDConnectProviderResponse where+    parseXML = withElement "GetOpenIDConnectProviderResult" $ \x -> GetOpenIDConnectProviderResponse+        <$> x .@  "ClientIDList"+        <*> x .@? "CreateDate"+        <*> x .@  "ThumbprintList"+        <*> x .@? "Url"
+ gen/Network/AWS/IAM/GetRole.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetRole+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves information about the specified role, including the role's path,+-- GUID, ARN, and the policy granting permission to assume the role. For more+-- information about ARNs, go to ARNs. For more information about roles, go to+-- Working with Roles. The returned policy is URL-encoded according to RFC+-- 3986. For more information about RFC 3986, go to+-- http://www.faqs.org/rfcs/rfc3986.html.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html>+module Network.AWS.IAM.GetRole+    (+    -- * Request+      GetRole+    -- ** Request constructor+    , getRole+    -- ** Request lenses+    , grRoleName++    -- * Response+    , GetRoleResponse+    -- ** Response constructor+    , getRoleResponse+    -- ** Response lenses+    , grrRole+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype GetRole = GetRole+    { _grRoleName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetRole' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'grRoleName' @::@ 'Text'+--+getRole :: Text -- ^ 'grRoleName'+        -> GetRole+getRole p1 = GetRole+    { _grRoleName = p1+    }++-- | The name of the role to get information about.+grRoleName :: Lens' GetRole Text+grRoleName = lens _grRoleName (\s a -> s { _grRoleName = a })++newtype GetRoleResponse = GetRoleResponse+    { _grrRole :: Role+    } deriving (Eq, Show)++-- | 'GetRoleResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'grrRole' @::@ 'Role'+--+getRoleResponse :: Role -- ^ 'grrRole'+                -> GetRoleResponse+getRoleResponse p1 = GetRoleResponse+    { _grrRole = p1+    }++-- | Information about the role.+grrRole :: Lens' GetRoleResponse Role+grrRole = lens _grrRole (\s a -> s { _grrRole = a })++instance ToPath GetRole where+    toPath = const "/"++instance ToQuery GetRole where+    toQuery GetRole{..} = mconcat+        [ "RoleName" =? _grRoleName+        ]++instance ToHeaders GetRole++instance AWSRequest GetRole where+    type Sv GetRole = IAM+    type Rs GetRole = GetRoleResponse++    request  = post "GetRole"+    response = xmlResponse++instance FromXML GetRoleResponse where+    parseXML = withElement "GetRoleResult" $ \x -> GetRoleResponse+        <$> x .@  "Role"
+ gen/Network/AWS/IAM/GetRolePolicy.hs view
@@ -0,0 +1,144 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetRolePolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves the specified policy document for the specified role. For more+-- information about roles, go to Working with Roles. The returned policy is+-- URL-encoded according to RFC 3986. For more information about RFC 3986, go+-- to http://www.faqs.org/rfcs/rfc3986.html.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRolePolicy.html>+module Network.AWS.IAM.GetRolePolicy+    (+    -- * Request+      GetRolePolicy+    -- ** Request constructor+    , getRolePolicy+    -- ** Request lenses+    , grpPolicyName+    , grpRoleName++    -- * Response+    , GetRolePolicyResponse+    -- ** Response constructor+    , getRolePolicyResponse+    -- ** Response lenses+    , grprPolicyDocument+    , grprPolicyName+    , grprRoleName+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GetRolePolicy = GetRolePolicy+    { _grpPolicyName :: Text+    , _grpRoleName   :: Text+    } deriving (Eq, Ord, Show)++-- | 'GetRolePolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'grpPolicyName' @::@ 'Text'+--+-- * 'grpRoleName' @::@ 'Text'+--+getRolePolicy :: Text -- ^ 'grpRoleName'+              -> Text -- ^ 'grpPolicyName'+              -> GetRolePolicy+getRolePolicy p1 p2 = GetRolePolicy+    { _grpRoleName   = p1+    , _grpPolicyName = p2+    }++-- | The name of the policy document to get.+grpPolicyName :: Lens' GetRolePolicy Text+grpPolicyName = lens _grpPolicyName (\s a -> s { _grpPolicyName = a })++-- | The name of the role associated with the policy.+grpRoleName :: Lens' GetRolePolicy Text+grpRoleName = lens _grpRoleName (\s a -> s { _grpRoleName = a })++data GetRolePolicyResponse = GetRolePolicyResponse+    { _grprPolicyDocument :: Text+    , _grprPolicyName     :: Text+    , _grprRoleName       :: Text+    } deriving (Eq, Ord, Show)++-- | 'GetRolePolicyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'grprPolicyDocument' @::@ 'Text'+--+-- * 'grprPolicyName' @::@ 'Text'+--+-- * 'grprRoleName' @::@ 'Text'+--+getRolePolicyResponse :: Text -- ^ 'grprRoleName'+                      -> Text -- ^ 'grprPolicyName'+                      -> Text -- ^ 'grprPolicyDocument'+                      -> GetRolePolicyResponse+getRolePolicyResponse p1 p2 p3 = GetRolePolicyResponse+    { _grprRoleName       = p1+    , _grprPolicyName     = p2+    , _grprPolicyDocument = p3+    }++-- | The policy document.+grprPolicyDocument :: Lens' GetRolePolicyResponse Text+grprPolicyDocument =+    lens _grprPolicyDocument (\s a -> s { _grprPolicyDocument = a })++-- | The name of the policy.+grprPolicyName :: Lens' GetRolePolicyResponse Text+grprPolicyName = lens _grprPolicyName (\s a -> s { _grprPolicyName = a })++-- | The role the policy is associated with.+grprRoleName :: Lens' GetRolePolicyResponse Text+grprRoleName = lens _grprRoleName (\s a -> s { _grprRoleName = a })++instance ToPath GetRolePolicy where+    toPath = const "/"++instance ToQuery GetRolePolicy where+    toQuery GetRolePolicy{..} = mconcat+        [ "PolicyName" =? _grpPolicyName+        , "RoleName"   =? _grpRoleName+        ]++instance ToHeaders GetRolePolicy++instance AWSRequest GetRolePolicy where+    type Sv GetRolePolicy = IAM+    type Rs GetRolePolicy = GetRolePolicyResponse++    request  = post "GetRolePolicy"+    response = xmlResponse++instance FromXML GetRolePolicyResponse where+    parseXML = withElement "GetRolePolicyResult" $ \x -> GetRolePolicyResponse+        <$> x .@  "PolicyDocument"+        <*> x .@  "PolicyName"+        <*> x .@  "RoleName"
+ gen/Network/AWS/IAM/GetSAMLProvider.hs view
@@ -0,0 +1,136 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetSAMLProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Returns the SAML provider metadocument that was uploaded when the provider+-- was created or updated.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html>+module Network.AWS.IAM.GetSAMLProvider+    (+    -- * Request+      GetSAMLProvider+    -- ** Request constructor+    , getSAMLProvider+    -- ** Request lenses+    , gsamlpSAMLProviderArn++    -- * Response+    , GetSAMLProviderResponse+    -- ** Response constructor+    , getSAMLProviderResponse+    -- ** Response lenses+    , gsamlprCreateDate+    , gsamlprSAMLMetadataDocument+    , gsamlprValidUntil+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype GetSAMLProvider = GetSAMLProvider+    { _gsamlpSAMLProviderArn :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetSAMLProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gsamlpSAMLProviderArn' @::@ 'Text'+--+getSAMLProvider :: Text -- ^ 'gsamlpSAMLProviderArn'+                -> GetSAMLProvider+getSAMLProvider p1 = GetSAMLProvider+    { _gsamlpSAMLProviderArn = p1+    }++-- | The Amazon Resource Name (ARN) of the SAML provider to get information+-- about.+gsamlpSAMLProviderArn :: Lens' GetSAMLProvider Text+gsamlpSAMLProviderArn =+    lens _gsamlpSAMLProviderArn (\s a -> s { _gsamlpSAMLProviderArn = a })++data GetSAMLProviderResponse = GetSAMLProviderResponse+    { _gsamlprCreateDate           :: Maybe RFC822+    , _gsamlprSAMLMetadataDocument :: Maybe Text+    , _gsamlprValidUntil           :: Maybe RFC822+    } deriving (Eq, Ord, Show)++-- | 'GetSAMLProviderResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gsamlprCreateDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'gsamlprSAMLMetadataDocument' @::@ 'Maybe' 'Text'+--+-- * 'gsamlprValidUntil' @::@ 'Maybe' 'UTCTime'+--+getSAMLProviderResponse :: GetSAMLProviderResponse+getSAMLProviderResponse = GetSAMLProviderResponse+    { _gsamlprSAMLMetadataDocument = Nothing+    , _gsamlprCreateDate           = Nothing+    , _gsamlprValidUntil           = Nothing+    }++-- | The date and time when the SAML provider was created.+gsamlprCreateDate :: Lens' GetSAMLProviderResponse (Maybe UTCTime)+gsamlprCreateDate =+    lens _gsamlprCreateDate (\s a -> s { _gsamlprCreateDate = a })+        . mapping _Time++-- | The XML metadata document that includes information about an identity+-- provider.+gsamlprSAMLMetadataDocument :: Lens' GetSAMLProviderResponse (Maybe Text)+gsamlprSAMLMetadataDocument =+    lens _gsamlprSAMLMetadataDocument+        (\s a -> s { _gsamlprSAMLMetadataDocument = a })++-- | The expiration date and time for the SAML provider.+gsamlprValidUntil :: Lens' GetSAMLProviderResponse (Maybe UTCTime)+gsamlprValidUntil =+    lens _gsamlprValidUntil (\s a -> s { _gsamlprValidUntil = a })+        . mapping _Time++instance ToPath GetSAMLProvider where+    toPath = const "/"++instance ToQuery GetSAMLProvider where+    toQuery GetSAMLProvider{..} = mconcat+        [ "SAMLProviderArn" =? _gsamlpSAMLProviderArn+        ]++instance ToHeaders GetSAMLProvider++instance AWSRequest GetSAMLProvider where+    type Sv GetSAMLProvider = IAM+    type Rs GetSAMLProvider = GetSAMLProviderResponse++    request  = post "GetSAMLProvider"+    response = xmlResponse++instance FromXML GetSAMLProviderResponse where+    parseXML = withElement "GetSAMLProviderResult" $ \x -> GetSAMLProviderResponse+        <$> x .@? "CreateDate"+        <*> x .@? "SAMLMetadataDocument"+        <*> x .@? "ValidUntil"
+ gen/Network/AWS/IAM/GetServerCertificate.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetServerCertificate+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves information about the specified server certificate.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html>+module Network.AWS.IAM.GetServerCertificate+    (+    -- * Request+      GetServerCertificate+    -- ** Request constructor+    , getServerCertificate+    -- ** Request lenses+    , gscServerCertificateName++    -- * Response+    , GetServerCertificateResponse+    -- ** Response constructor+    , getServerCertificateResponse+    -- ** Response lenses+    , gscrServerCertificate+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype GetServerCertificate = GetServerCertificate+    { _gscServerCertificateName :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetServerCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gscServerCertificateName' @::@ 'Text'+--+getServerCertificate :: Text -- ^ 'gscServerCertificateName'+                     -> GetServerCertificate+getServerCertificate p1 = GetServerCertificate+    { _gscServerCertificateName = p1+    }++-- | The name of the server certificate you want to retrieve information+-- about.+gscServerCertificateName :: Lens' GetServerCertificate Text+gscServerCertificateName =+    lens _gscServerCertificateName+        (\s a -> s { _gscServerCertificateName = a })++newtype GetServerCertificateResponse = GetServerCertificateResponse+    { _gscrServerCertificate :: ServerCertificate+    } deriving (Eq, Show)++-- | 'GetServerCertificateResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gscrServerCertificate' @::@ 'ServerCertificate'+--+getServerCertificateResponse :: ServerCertificate -- ^ 'gscrServerCertificate'+                             -> GetServerCertificateResponse+getServerCertificateResponse p1 = GetServerCertificateResponse+    { _gscrServerCertificate = p1+    }++-- | Information about the server certificate.+gscrServerCertificate :: Lens' GetServerCertificateResponse ServerCertificate+gscrServerCertificate =+    lens _gscrServerCertificate (\s a -> s { _gscrServerCertificate = a })++instance ToPath GetServerCertificate where+    toPath = const "/"++instance ToQuery GetServerCertificate where+    toQuery GetServerCertificate{..} = mconcat+        [ "ServerCertificateName" =? _gscServerCertificateName+        ]++instance ToHeaders GetServerCertificate++instance AWSRequest GetServerCertificate where+    type Sv GetServerCertificate = IAM+    type Rs GetServerCertificate = GetServerCertificateResponse++    request  = post "GetServerCertificate"+    response = xmlResponse++instance FromXML GetServerCertificateResponse where+    parseXML = withElement "GetServerCertificateResult" $ \x -> GetServerCertificateResponse+        <$> x .@  "ServerCertificate"
+ gen/Network/AWS/IAM/GetUser.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetUser+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves information about the specified user, including the user's+-- creation date, path, unique ID, and ARN. If you do not specify a user name,+-- IAM determines the user name implicitly based on the AWS access key ID used+-- to sign the request.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html>+module Network.AWS.IAM.GetUser+    (+    -- * Request+      GetUser+    -- ** Request constructor+    , getUser+    -- ** Request lenses+    , guUserName++    -- * Response+    , GetUserResponse+    -- ** Response constructor+    , getUserResponse+    -- ** Response lenses+    , gurUser+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++newtype GetUser = GetUser+    { _guUserName :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'GetUser' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'guUserName' @::@ 'Maybe' 'Text'+--+getUser :: GetUser+getUser = GetUser+    { _guUserName = Nothing+    }++-- | The name of the user to get information about. This parameter is+-- optional. If it is not included, it defaults to the user making the+-- request.+guUserName :: Lens' GetUser (Maybe Text)+guUserName = lens _guUserName (\s a -> s { _guUserName = a })++newtype GetUserResponse = GetUserResponse+    { _gurUser :: User+    } deriving (Eq, Show)++-- | 'GetUserResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gurUser' @::@ 'User'+--+getUserResponse :: User -- ^ 'gurUser'+                -> GetUserResponse+getUserResponse p1 = GetUserResponse+    { _gurUser = p1+    }++-- | Information about the user.+gurUser :: Lens' GetUserResponse User+gurUser = lens _gurUser (\s a -> s { _gurUser = a })++instance ToPath GetUser where+    toPath = const "/"++instance ToQuery GetUser where+    toQuery GetUser{..} = mconcat+        [ "UserName" =? _guUserName+        ]++instance ToHeaders GetUser++instance AWSRequest GetUser where+    type Sv GetUser = IAM+    type Rs GetUser = GetUserResponse++    request  = post "GetUser"+    response = xmlResponse++instance FromXML GetUserResponse where+    parseXML = withElement "GetUserResult" $ \x -> GetUserResponse+        <$> x .@  "User"
+ gen/Network/AWS/IAM/GetUserPolicy.hs view
@@ -0,0 +1,143 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.GetUserPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Retrieves the specified policy document for the specified user. The+-- returned policy is URL-encoded according to RFC 3986. For more information+-- about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUserPolicy.html>+module Network.AWS.IAM.GetUserPolicy+    (+    -- * Request+      GetUserPolicy+    -- ** Request constructor+    , getUserPolicy+    -- ** Request lenses+    , gupPolicyName+    , gupUserName++    -- * Response+    , GetUserPolicyResponse+    -- ** Response constructor+    , getUserPolicyResponse+    -- ** Response lenses+    , guprPolicyDocument+    , guprPolicyName+    , guprUserName+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data GetUserPolicy = GetUserPolicy+    { _gupPolicyName :: Text+    , _gupUserName   :: Text+    } deriving (Eq, Ord, Show)++-- | 'GetUserPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gupPolicyName' @::@ 'Text'+--+-- * 'gupUserName' @::@ 'Text'+--+getUserPolicy :: Text -- ^ 'gupUserName'+              -> Text -- ^ 'gupPolicyName'+              -> GetUserPolicy+getUserPolicy p1 p2 = GetUserPolicy+    { _gupUserName   = p1+    , _gupPolicyName = p2+    }++-- | The name of the policy document to get.+gupPolicyName :: Lens' GetUserPolicy Text+gupPolicyName = lens _gupPolicyName (\s a -> s { _gupPolicyName = a })++-- | The name of the user who the policy is associated with.+gupUserName :: Lens' GetUserPolicy Text+gupUserName = lens _gupUserName (\s a -> s { _gupUserName = a })++data GetUserPolicyResponse = GetUserPolicyResponse+    { _guprPolicyDocument :: Text+    , _guprPolicyName     :: Text+    , _guprUserName       :: Text+    } deriving (Eq, Ord, Show)++-- | 'GetUserPolicyResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'guprPolicyDocument' @::@ 'Text'+--+-- * 'guprPolicyName' @::@ 'Text'+--+-- * 'guprUserName' @::@ 'Text'+--+getUserPolicyResponse :: Text -- ^ 'guprUserName'+                      -> Text -- ^ 'guprPolicyName'+                      -> Text -- ^ 'guprPolicyDocument'+                      -> GetUserPolicyResponse+getUserPolicyResponse p1 p2 p3 = GetUserPolicyResponse+    { _guprUserName       = p1+    , _guprPolicyName     = p2+    , _guprPolicyDocument = p3+    }++-- | The policy document.+guprPolicyDocument :: Lens' GetUserPolicyResponse Text+guprPolicyDocument =+    lens _guprPolicyDocument (\s a -> s { _guprPolicyDocument = a })++-- | The name of the policy.+guprPolicyName :: Lens' GetUserPolicyResponse Text+guprPolicyName = lens _guprPolicyName (\s a -> s { _guprPolicyName = a })++-- | The user the policy is associated with.+guprUserName :: Lens' GetUserPolicyResponse Text+guprUserName = lens _guprUserName (\s a -> s { _guprUserName = a })++instance ToPath GetUserPolicy where+    toPath = const "/"++instance ToQuery GetUserPolicy where+    toQuery GetUserPolicy{..} = mconcat+        [ "PolicyName" =? _gupPolicyName+        , "UserName"   =? _gupUserName+        ]++instance ToHeaders GetUserPolicy++instance AWSRequest GetUserPolicy where+    type Sv GetUserPolicy = IAM+    type Rs GetUserPolicy = GetUserPolicyResponse++    request  = post "GetUserPolicy"+    response = xmlResponse++instance FromXML GetUserPolicyResponse where+    parseXML = withElement "GetUserPolicyResult" $ \x -> GetUserPolicyResponse+        <$> x .@  "PolicyDocument"+        <*> x .@  "PolicyName"+        <*> x .@  "UserName"
+ gen/Network/AWS/IAM/ListAccessKeys.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListAccessKeys+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Returns information about the access key IDs associated with the specified+-- user. If there are none, the action returns an empty list. Although each+-- user is limited to a small number of keys, you can still paginate the+-- results using the MaxItems and Marker parameters. If the UserName field is+-- not specified, the UserName is determined implicitly based on the AWS+-- access key ID used to sign the request. Because this action works for+-- access keys under the AWS account, you can use this action to manage root+-- credentials even if the AWS account has no associated users.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html>+module Network.AWS.IAM.ListAccessKeys+    (+    -- * Request+      ListAccessKeys+    -- ** Request constructor+    , listAccessKeys+    -- ** Request lenses+    , lakMarker+    , lakMaxItems+    , lakUserName++    -- * Response+    , ListAccessKeysResponse+    -- ** Response constructor+    , listAccessKeysResponse+    -- ** Response lenses+    , lakrAccessKeyMetadata+    , lakrIsTruncated+    , lakrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListAccessKeys = ListAccessKeys+    { _lakMarker   :: Maybe Text+    , _lakMaxItems :: Maybe Nat+    , _lakUserName :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListAccessKeys' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lakMarker' @::@ 'Maybe' 'Text'+--+-- * 'lakMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lakUserName' @::@ 'Maybe' 'Text'+--+listAccessKeys :: ListAccessKeys+listAccessKeys = ListAccessKeys+    { _lakUserName = Nothing+    , _lakMarker   = Nothing+    , _lakMaxItems = Nothing+    }++-- | Use this parameter only when paginating results, and only in a subsequent+-- request after you've received a response where the results are truncated.+-- Set it to the value of the Marker element in the response you just+-- received.+lakMarker :: Lens' ListAccessKeys (Maybe Text)+lakMarker = lens _lakMarker (\s a -> s { _lakMarker = a })++-- | Use this parameter only when paginating results to indicate the maximum+-- number of keys you want in the response. If there are additional keys+-- beyond the maximum you specify, the IsTruncated response element is true.+-- This parameter is optional. If you do not include it, it defaults to 100.+lakMaxItems :: Lens' ListAccessKeys (Maybe Natural)+lakMaxItems = lens _lakMaxItems (\s a -> s { _lakMaxItems = a }) . mapping _Nat++-- | The name of the user.+lakUserName :: Lens' ListAccessKeys (Maybe Text)+lakUserName = lens _lakUserName (\s a -> s { _lakUserName = a })++data ListAccessKeysResponse = ListAccessKeysResponse+    { _lakrAccessKeyMetadata :: List "AccessKeyMetadata" AccessKeyMetadata+    , _lakrIsTruncated       :: Maybe Bool+    , _lakrMarker            :: Maybe Text+    } deriving (Eq, Show)++-- | 'ListAccessKeysResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lakrAccessKeyMetadata' @::@ ['AccessKeyMetadata']+--+-- * 'lakrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lakrMarker' @::@ 'Maybe' 'Text'+--+listAccessKeysResponse :: ListAccessKeysResponse+listAccessKeysResponse = ListAccessKeysResponse+    { _lakrAccessKeyMetadata = mempty+    , _lakrIsTruncated       = Nothing+    , _lakrMarker            = Nothing+    }++-- | A list of access key metadata.+lakrAccessKeyMetadata :: Lens' ListAccessKeysResponse [AccessKeyMetadata]+lakrAccessKeyMetadata =+    lens _lakrAccessKeyMetadata (\s a -> s { _lakrAccessKeyMetadata = a })+        . _List++-- | A flag that indicates whether there are more keys to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more keys in the list.+lakrIsTruncated :: Lens' ListAccessKeysResponse (Maybe Bool)+lakrIsTruncated = lens _lakrIsTruncated (\s a -> s { _lakrIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lakrMarker :: Lens' ListAccessKeysResponse (Maybe Text)+lakrMarker = lens _lakrMarker (\s a -> s { _lakrMarker = a })++instance ToPath ListAccessKeys where+    toPath = const "/"++instance ToQuery ListAccessKeys where+    toQuery ListAccessKeys{..} = mconcat+        [ "Marker"   =? _lakMarker+        , "MaxItems" =? _lakMaxItems+        , "UserName" =? _lakUserName+        ]++instance ToHeaders ListAccessKeys++instance AWSRequest ListAccessKeys where+    type Sv ListAccessKeys = IAM+    type Rs ListAccessKeys = ListAccessKeysResponse++    request  = post "ListAccessKeys"+    response = xmlResponse++instance FromXML ListAccessKeysResponse where+    parseXML = withElement "ListAccessKeysResult" $ \x -> ListAccessKeysResponse+        <$> x .@  "AccessKeyMetadata"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"++instance AWSPager ListAccessKeys where+    page rq rs+        | stop (rs ^. lakrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lakMarker .~ rs ^. lakrMarker
+ gen/Network/AWS/IAM/ListAccountAliases.hs view
@@ -0,0 +1,157 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListAccountAliases+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the account aliases associated with the account. For information+-- about using an AWS account alias, see Using an Alias for Your AWS Account+-- ID in the Using IAM guide. You can paginate the results using the MaxItems+-- and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccountAliases.html>+module Network.AWS.IAM.ListAccountAliases+    (+    -- * Request+      ListAccountAliases+    -- ** Request constructor+    , listAccountAliases+    -- ** Request lenses+    , laaMarker+    , laaMaxItems++    -- * Response+    , ListAccountAliasesResponse+    -- ** Response constructor+    , listAccountAliasesResponse+    -- ** Response lenses+    , laarAccountAliases+    , laarIsTruncated+    , laarMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListAccountAliases = ListAccountAliases+    { _laaMarker   :: Maybe Text+    , _laaMaxItems :: Maybe Nat+    } deriving (Eq, Ord, Show)++-- | 'ListAccountAliases' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'laaMarker' @::@ 'Maybe' 'Text'+--+-- * 'laaMaxItems' @::@ 'Maybe' 'Natural'+--+listAccountAliases :: ListAccountAliases+listAccountAliases = ListAccountAliases+    { _laaMarker   = Nothing+    , _laaMaxItems = Nothing+    }++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+laaMarker :: Lens' ListAccountAliases (Maybe Text)+laaMarker = lens _laaMarker (\s a -> s { _laaMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- account aliases you want in the response. If there are additional account+-- aliases beyond the maximum you specify, the IsTruncated response element+-- is true. This parameter is optional. If you do not include it, it+-- defaults to 100.+laaMaxItems :: Lens' ListAccountAliases (Maybe Natural)+laaMaxItems = lens _laaMaxItems (\s a -> s { _laaMaxItems = a }) . mapping _Nat++data ListAccountAliasesResponse = ListAccountAliasesResponse+    { _laarAccountAliases :: List "AccountAliases" Text+    , _laarIsTruncated    :: Maybe Bool+    , _laarMarker         :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListAccountAliasesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'laarAccountAliases' @::@ ['Text']+--+-- * 'laarIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'laarMarker' @::@ 'Maybe' 'Text'+--+listAccountAliasesResponse :: ListAccountAliasesResponse+listAccountAliasesResponse = ListAccountAliasesResponse+    { _laarAccountAliases = mempty+    , _laarIsTruncated    = Nothing+    , _laarMarker         = Nothing+    }++-- | A list of aliases associated with the account.+laarAccountAliases :: Lens' ListAccountAliasesResponse [Text]+laarAccountAliases =+    lens _laarAccountAliases (\s a -> s { _laarAccountAliases = a })+        . _List++-- | A flag that indicates whether there are more account aliases to list. If+-- your results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more account aliases in+-- the list.+laarIsTruncated :: Lens' ListAccountAliasesResponse (Maybe Bool)+laarIsTruncated = lens _laarIsTruncated (\s a -> s { _laarIsTruncated = a })++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+laarMarker :: Lens' ListAccountAliasesResponse (Maybe Text)+laarMarker = lens _laarMarker (\s a -> s { _laarMarker = a })++instance ToPath ListAccountAliases where+    toPath = const "/"++instance ToQuery ListAccountAliases where+    toQuery ListAccountAliases{..} = mconcat+        [ "Marker"   =? _laaMarker+        , "MaxItems" =? _laaMaxItems+        ]++instance ToHeaders ListAccountAliases++instance AWSRequest ListAccountAliases where+    type Sv ListAccountAliases = IAM+    type Rs ListAccountAliases = ListAccountAliasesResponse++    request  = post "ListAccountAliases"+    response = xmlResponse++instance FromXML ListAccountAliasesResponse where+    parseXML = withElement "ListAccountAliasesResult" $ \x -> ListAccountAliasesResponse+        <$> x .@  "AccountAliases"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"++instance AWSPager ListAccountAliases where+    page rq rs+        | stop (rs ^. laarIsTruncated) = Nothing+        | otherwise = Just $ rq+            & laaMarker .~ rs ^. laarMarker
+ gen/Network/AWS/IAM/ListGroupPolicies.hs view
@@ -0,0 +1,164 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListGroupPolicies+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the names of the policies associated with the specified group. If+-- there are none, the action returns an empty list. You can paginate the+-- results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupPolicies.html>+module Network.AWS.IAM.ListGroupPolicies+    (+    -- * Request+      ListGroupPolicies+    -- ** Request constructor+    , listGroupPolicies+    -- ** Request lenses+    , lgpGroupName+    , lgpMarker+    , lgpMaxItems++    -- * Response+    , ListGroupPoliciesResponse+    -- ** Response constructor+    , listGroupPoliciesResponse+    -- ** Response lenses+    , lgprIsTruncated+    , lgprMarker+    , lgprPolicyNames+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListGroupPolicies = ListGroupPolicies+    { _lgpGroupName :: Text+    , _lgpMarker    :: Maybe Text+    , _lgpMaxItems  :: Maybe Nat+    } deriving (Eq, Ord, Show)++-- | 'ListGroupPolicies' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lgpGroupName' @::@ 'Text'+--+-- * 'lgpMarker' @::@ 'Maybe' 'Text'+--+-- * 'lgpMaxItems' @::@ 'Maybe' 'Natural'+--+listGroupPolicies :: Text -- ^ 'lgpGroupName'+                  -> ListGroupPolicies+listGroupPolicies p1 = ListGroupPolicies+    { _lgpGroupName = p1+    , _lgpMarker    = Nothing+    , _lgpMaxItems  = Nothing+    }++-- | The name of the group to list policies for.+lgpGroupName :: Lens' ListGroupPolicies Text+lgpGroupName = lens _lgpGroupName (\s a -> s { _lgpGroupName = a })++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+lgpMarker :: Lens' ListGroupPolicies (Maybe Text)+lgpMarker = lens _lgpMarker (\s a -> s { _lgpMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- policy names you want in the response. If there are additional policy+-- names beyond the maximum you specify, the IsTruncated response element is+-- true. This parameter is optional. If you do not include it, it defaults+-- to 100.+lgpMaxItems :: Lens' ListGroupPolicies (Maybe Natural)+lgpMaxItems = lens _lgpMaxItems (\s a -> s { _lgpMaxItems = a }) . mapping _Nat++data ListGroupPoliciesResponse = ListGroupPoliciesResponse+    { _lgprIsTruncated :: Maybe Bool+    , _lgprMarker      :: Maybe Text+    , _lgprPolicyNames :: List "PolicyNames" Text+    } deriving (Eq, Ord, Show)++-- | 'ListGroupPoliciesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lgprIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lgprMarker' @::@ 'Maybe' 'Text'+--+-- * 'lgprPolicyNames' @::@ ['Text']+--+listGroupPoliciesResponse :: ListGroupPoliciesResponse+listGroupPoliciesResponse = ListGroupPoliciesResponse+    { _lgprPolicyNames = mempty+    , _lgprIsTruncated = Nothing+    , _lgprMarker      = Nothing+    }++-- | A flag that indicates whether there are more policy names to list. If+-- your results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more policy names in the+-- list.+lgprIsTruncated :: Lens' ListGroupPoliciesResponse (Maybe Bool)+lgprIsTruncated = lens _lgprIsTruncated (\s a -> s { _lgprIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lgprMarker :: Lens' ListGroupPoliciesResponse (Maybe Text)+lgprMarker = lens _lgprMarker (\s a -> s { _lgprMarker = a })++-- | A list of policy names.+lgprPolicyNames :: Lens' ListGroupPoliciesResponse [Text]+lgprPolicyNames = lens _lgprPolicyNames (\s a -> s { _lgprPolicyNames = a }) . _List++instance ToPath ListGroupPolicies where+    toPath = const "/"++instance ToQuery ListGroupPolicies where+    toQuery ListGroupPolicies{..} = mconcat+        [ "GroupName" =? _lgpGroupName+        , "Marker"    =? _lgpMarker+        , "MaxItems"  =? _lgpMaxItems+        ]++instance ToHeaders ListGroupPolicies++instance AWSRequest ListGroupPolicies where+    type Sv ListGroupPolicies = IAM+    type Rs ListGroupPolicies = ListGroupPoliciesResponse++    request  = post "ListGroupPolicies"+    response = xmlResponse++instance FromXML ListGroupPoliciesResponse where+    parseXML = withElement "ListGroupPoliciesResult" $ \x -> ListGroupPoliciesResponse+        <$> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "PolicyNames"++instance AWSPager ListGroupPolicies where+    page rq rs+        | stop (rs ^. lgprIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lgpMarker .~ rs ^. lgprMarker
+ gen/Network/AWS/IAM/ListGroups.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListGroups+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the groups that have the specified path prefix. You can paginate the+-- results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html>+module Network.AWS.IAM.ListGroups+    (+    -- * Request+      ListGroups+    -- ** Request constructor+    , listGroups+    -- ** Request lenses+    , lgMarker+    , lgMaxItems+    , lgPathPrefix++    -- * Response+    , ListGroupsResponse+    -- ** Response constructor+    , listGroupsResponse+    -- ** Response lenses+    , lgrGroups+    , lgrIsTruncated+    , lgrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListGroups = ListGroups+    { _lgMarker     :: Maybe Text+    , _lgMaxItems   :: Maybe Nat+    , _lgPathPrefix :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListGroups' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lgMarker' @::@ 'Maybe' 'Text'+--+-- * 'lgMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lgPathPrefix' @::@ 'Maybe' 'Text'+--+listGroups :: ListGroups+listGroups = ListGroups+    { _lgPathPrefix = Nothing+    , _lgMarker     = Nothing+    , _lgMaxItems   = Nothing+    }++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+lgMarker :: Lens' ListGroups (Maybe Text)+lgMarker = lens _lgMarker (\s a -> s { _lgMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- groups you want in the response. If there are additional groups beyond+-- the maximum you specify, the IsTruncated response element is true. This+-- parameter is optional. If you do not include it, it defaults to 100.+lgMaxItems :: Lens' ListGroups (Maybe Natural)+lgMaxItems = lens _lgMaxItems (\s a -> s { _lgMaxItems = a }) . mapping _Nat++-- | The path prefix for filtering the results. For example, the prefix+-- /division_abc/subdivision_xyz/ gets all groups whose path starts with+-- /division_abc/subdivision_xyz/. This parameter is optional. If it is not+-- included, it defaults to a slash (/), listing all groups.+lgPathPrefix :: Lens' ListGroups (Maybe Text)+lgPathPrefix = lens _lgPathPrefix (\s a -> s { _lgPathPrefix = a })++data ListGroupsResponse = ListGroupsResponse+    { _lgrGroups      :: List "Groups" Group+    , _lgrIsTruncated :: Maybe Bool+    , _lgrMarker      :: Maybe Text+    } deriving (Eq, Show)++-- | 'ListGroupsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lgrGroups' @::@ ['Group']+--+-- * 'lgrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lgrMarker' @::@ 'Maybe' 'Text'+--+listGroupsResponse :: ListGroupsResponse+listGroupsResponse = ListGroupsResponse+    { _lgrGroups      = mempty+    , _lgrIsTruncated = Nothing+    , _lgrMarker      = Nothing+    }++-- | A list of groups.+lgrGroups :: Lens' ListGroupsResponse [Group]+lgrGroups = lens _lgrGroups (\s a -> s { _lgrGroups = a }) . _List++-- | A flag that indicates whether there are more groups to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more groups in the list.+lgrIsTruncated :: Lens' ListGroupsResponse (Maybe Bool)+lgrIsTruncated = lens _lgrIsTruncated (\s a -> s { _lgrIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lgrMarker :: Lens' ListGroupsResponse (Maybe Text)+lgrMarker = lens _lgrMarker (\s a -> s { _lgrMarker = a })++instance ToPath ListGroups where+    toPath = const "/"++instance ToQuery ListGroups where+    toQuery ListGroups{..} = mconcat+        [ "Marker"     =? _lgMarker+        , "MaxItems"   =? _lgMaxItems+        , "PathPrefix" =? _lgPathPrefix+        ]++instance ToHeaders ListGroups++instance AWSRequest ListGroups where+    type Sv ListGroups = IAM+    type Rs ListGroups = ListGroupsResponse++    request  = post "ListGroups"+    response = xmlResponse++instance FromXML ListGroupsResponse where+    parseXML = withElement "ListGroupsResult" $ \x -> ListGroupsResponse+        <$> x .@  "Groups"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"++instance AWSPager ListGroups where+    page rq rs+        | stop (rs ^. lgrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lgMarker .~ rs ^. lgrMarker
+ gen/Network/AWS/IAM/ListGroupsForUser.hs view
@@ -0,0 +1,161 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListGroupsForUser+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the groups the specified user belongs to. You can paginate the+-- results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html>+module Network.AWS.IAM.ListGroupsForUser+    (+    -- * Request+      ListGroupsForUser+    -- ** Request constructor+    , listGroupsForUser+    -- ** Request lenses+    , lgfuMarker+    , lgfuMaxItems+    , lgfuUserName++    -- * Response+    , ListGroupsForUserResponse+    -- ** Response constructor+    , listGroupsForUserResponse+    -- ** Response lenses+    , lgfurGroups+    , lgfurIsTruncated+    , lgfurMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListGroupsForUser = ListGroupsForUser+    { _lgfuMarker   :: Maybe Text+    , _lgfuMaxItems :: Maybe Nat+    , _lgfuUserName :: Text+    } deriving (Eq, Ord, Show)++-- | 'ListGroupsForUser' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lgfuMarker' @::@ 'Maybe' 'Text'+--+-- * 'lgfuMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lgfuUserName' @::@ 'Text'+--+listGroupsForUser :: Text -- ^ 'lgfuUserName'+                  -> ListGroupsForUser+listGroupsForUser p1 = ListGroupsForUser+    { _lgfuUserName = p1+    , _lgfuMarker   = Nothing+    , _lgfuMaxItems = Nothing+    }++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+lgfuMarker :: Lens' ListGroupsForUser (Maybe Text)+lgfuMarker = lens _lgfuMarker (\s a -> s { _lgfuMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- groups you want in the response. If there are additional groups beyond+-- the maximum you specify, the IsTruncated response element is true. This+-- parameter is optional. If you do not include it, it defaults to 100.+lgfuMaxItems :: Lens' ListGroupsForUser (Maybe Natural)+lgfuMaxItems = lens _lgfuMaxItems (\s a -> s { _lgfuMaxItems = a }) . mapping _Nat++-- | The name of the user to list groups for.+lgfuUserName :: Lens' ListGroupsForUser Text+lgfuUserName = lens _lgfuUserName (\s a -> s { _lgfuUserName = a })++data ListGroupsForUserResponse = ListGroupsForUserResponse+    { _lgfurGroups      :: List "Groups" Group+    , _lgfurIsTruncated :: Maybe Bool+    , _lgfurMarker      :: Maybe Text+    } deriving (Eq, Show)++-- | 'ListGroupsForUserResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lgfurGroups' @::@ ['Group']+--+-- * 'lgfurIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lgfurMarker' @::@ 'Maybe' 'Text'+--+listGroupsForUserResponse :: ListGroupsForUserResponse+listGroupsForUserResponse = ListGroupsForUserResponse+    { _lgfurGroups      = mempty+    , _lgfurIsTruncated = Nothing+    , _lgfurMarker      = Nothing+    }++-- | A list of groups.+lgfurGroups :: Lens' ListGroupsForUserResponse [Group]+lgfurGroups = lens _lgfurGroups (\s a -> s { _lgfurGroups = a }) . _List++-- | A flag that indicates whether there are more groups to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more groups in the list.+lgfurIsTruncated :: Lens' ListGroupsForUserResponse (Maybe Bool)+lgfurIsTruncated = lens _lgfurIsTruncated (\s a -> s { _lgfurIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lgfurMarker :: Lens' ListGroupsForUserResponse (Maybe Text)+lgfurMarker = lens _lgfurMarker (\s a -> s { _lgfurMarker = a })++instance ToPath ListGroupsForUser where+    toPath = const "/"++instance ToQuery ListGroupsForUser where+    toQuery ListGroupsForUser{..} = mconcat+        [ "Marker"   =? _lgfuMarker+        , "MaxItems" =? _lgfuMaxItems+        , "UserName" =? _lgfuUserName+        ]++instance ToHeaders ListGroupsForUser++instance AWSRequest ListGroupsForUser where+    type Sv ListGroupsForUser = IAM+    type Rs ListGroupsForUser = ListGroupsForUserResponse++    request  = post "ListGroupsForUser"+    response = xmlResponse++instance FromXML ListGroupsForUserResponse where+    parseXML = withElement "ListGroupsForUserResult" $ \x -> ListGroupsForUserResponse+        <$> x .@  "Groups"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"++instance AWSPager ListGroupsForUser where+    page rq rs+        | stop (rs ^. lgfurIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lgfuMarker .~ rs ^. lgfurMarker
+ gen/Network/AWS/IAM/ListInstanceProfiles.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListInstanceProfiles+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the instance profiles that have the specified path prefix. If there+-- are none, the action returns an empty list. For more information about+-- instance profiles, go to About Instance Profiles. You can paginate the+-- results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html>+module Network.AWS.IAM.ListInstanceProfiles+    (+    -- * Request+      ListInstanceProfiles+    -- ** Request constructor+    , listInstanceProfiles+    -- ** Request lenses+    , lipMarker+    , lipMaxItems+    , lipPathPrefix++    -- * Response+    , ListInstanceProfilesResponse+    -- ** Response constructor+    , listInstanceProfilesResponse+    -- ** Response lenses+    , liprInstanceProfiles+    , liprIsTruncated+    , liprMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListInstanceProfiles = ListInstanceProfiles+    { _lipMarker     :: Maybe Text+    , _lipMaxItems   :: Maybe Nat+    , _lipPathPrefix :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListInstanceProfiles' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lipMarker' @::@ 'Maybe' 'Text'+--+-- * 'lipMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lipPathPrefix' @::@ 'Maybe' 'Text'+--+listInstanceProfiles :: ListInstanceProfiles+listInstanceProfiles = ListInstanceProfiles+    { _lipPathPrefix = Nothing+    , _lipMarker     = Nothing+    , _lipMaxItems   = Nothing+    }++-- | Use this parameter only when paginating results, and only in a subsequent+-- request after you've received a response where the results are truncated.+-- Set it to the value of the Marker element in the response you just+-- received.+lipMarker :: Lens' ListInstanceProfiles (Maybe Text)+lipMarker = lens _lipMarker (\s a -> s { _lipMarker = a })++-- | Use this parameter only when paginating results to indicate the maximum+-- number of instance profiles you want in the response. If there are+-- additional instance profiles beyond the maximum you specify, the+-- IsTruncated response element is true. This parameter is optional. If you+-- do not include it, it defaults to 100.+lipMaxItems :: Lens' ListInstanceProfiles (Maybe Natural)+lipMaxItems = lens _lipMaxItems (\s a -> s { _lipMaxItems = a }) . mapping _Nat++-- | The path prefix for filtering the results. For example, the prefix+-- /application_abc/component_xyz/ gets all instance profiles whose path+-- starts with /application_abc/component_xyz/. This parameter is optional.+-- If it is not included, it defaults to a slash (/), listing all instance+-- profiles.+lipPathPrefix :: Lens' ListInstanceProfiles (Maybe Text)+lipPathPrefix = lens _lipPathPrefix (\s a -> s { _lipPathPrefix = a })++data ListInstanceProfilesResponse = ListInstanceProfilesResponse+    { _liprInstanceProfiles :: List "InstanceProfiles" InstanceProfile+    , _liprIsTruncated      :: Maybe Bool+    , _liprMarker           :: Maybe Text+    } deriving (Eq, Show)++-- | 'ListInstanceProfilesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'liprInstanceProfiles' @::@ ['InstanceProfile']+--+-- * 'liprIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'liprMarker' @::@ 'Maybe' 'Text'+--+listInstanceProfilesResponse :: ListInstanceProfilesResponse+listInstanceProfilesResponse = ListInstanceProfilesResponse+    { _liprInstanceProfiles = mempty+    , _liprIsTruncated      = Nothing+    , _liprMarker           = Nothing+    }++-- | A list of instance profiles.+liprInstanceProfiles :: Lens' ListInstanceProfilesResponse [InstanceProfile]+liprInstanceProfiles =+    lens _liprInstanceProfiles (\s a -> s { _liprInstanceProfiles = a })+        . _List++-- | A flag that indicates whether there are more instance profiles to list.+-- If your results were truncated, you can make a subsequent pagination+-- request using the Marker request parameter to retrieve more instance+-- profiles in the list.+liprIsTruncated :: Lens' ListInstanceProfilesResponse (Maybe Bool)+liprIsTruncated = lens _liprIsTruncated (\s a -> s { _liprIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+liprMarker :: Lens' ListInstanceProfilesResponse (Maybe Text)+liprMarker = lens _liprMarker (\s a -> s { _liprMarker = a })++instance ToPath ListInstanceProfiles where+    toPath = const "/"++instance ToQuery ListInstanceProfiles where+    toQuery ListInstanceProfiles{..} = mconcat+        [ "Marker"     =? _lipMarker+        , "MaxItems"   =? _lipMaxItems+        , "PathPrefix" =? _lipPathPrefix+        ]++instance ToHeaders ListInstanceProfiles++instance AWSRequest ListInstanceProfiles where+    type Sv ListInstanceProfiles = IAM+    type Rs ListInstanceProfiles = ListInstanceProfilesResponse++    request  = post "ListInstanceProfiles"+    response = xmlResponse++instance FromXML ListInstanceProfilesResponse where+    parseXML = withElement "ListInstanceProfilesResult" $ \x -> ListInstanceProfilesResponse+        <$> x .@  "InstanceProfiles"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"++instance AWSPager ListInstanceProfiles where+    page rq rs+        | stop (rs ^. liprIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lipMarker .~ rs ^. liprMarker
+ gen/Network/AWS/IAM/ListInstanceProfilesForRole.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListInstanceProfilesForRole+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the instance profiles that have the specified associated role. If+-- there are none, the action returns an empty list. For more information+-- about instance profiles, go to About Instance Profiles. You can paginate+-- the results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html>+module Network.AWS.IAM.ListInstanceProfilesForRole+    (+    -- * Request+      ListInstanceProfilesForRole+    -- ** Request constructor+    , listInstanceProfilesForRole+    -- ** Request lenses+    , lipfrMarker+    , lipfrMaxItems+    , lipfrRoleName++    -- * Response+    , ListInstanceProfilesForRoleResponse+    -- ** Response constructor+    , listInstanceProfilesForRoleResponse+    -- ** Response lenses+    , lipfrrInstanceProfiles+    , lipfrrIsTruncated+    , lipfrrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListInstanceProfilesForRole = ListInstanceProfilesForRole+    { _lipfrMarker   :: Maybe Text+    , _lipfrMaxItems :: Maybe Nat+    , _lipfrRoleName :: Text+    } deriving (Eq, Ord, Show)++-- | 'ListInstanceProfilesForRole' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lipfrMarker' @::@ 'Maybe' 'Text'+--+-- * 'lipfrMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lipfrRoleName' @::@ 'Text'+--+listInstanceProfilesForRole :: Text -- ^ 'lipfrRoleName'+                            -> ListInstanceProfilesForRole+listInstanceProfilesForRole p1 = ListInstanceProfilesForRole+    { _lipfrRoleName = p1+    , _lipfrMarker   = Nothing+    , _lipfrMaxItems = Nothing+    }++-- | Use this parameter only when paginating results, and only in a subsequent+-- request after you've received a response where the results are truncated.+-- Set it to the value of the Marker element in the response you just+-- received.+lipfrMarker :: Lens' ListInstanceProfilesForRole (Maybe Text)+lipfrMarker = lens _lipfrMarker (\s a -> s { _lipfrMarker = a })++-- | Use this parameter only when paginating results to indicate the maximum+-- number of instance profiles you want in the response. If there are+-- additional instance profiles beyond the maximum you specify, the+-- IsTruncated response element is true. This parameter is optional. If you+-- do not include it, it defaults to 100.+lipfrMaxItems :: Lens' ListInstanceProfilesForRole (Maybe Natural)+lipfrMaxItems = lens _lipfrMaxItems (\s a -> s { _lipfrMaxItems = a }) . mapping _Nat++-- | The name of the role to list instance profiles for.+lipfrRoleName :: Lens' ListInstanceProfilesForRole Text+lipfrRoleName = lens _lipfrRoleName (\s a -> s { _lipfrRoleName = a })++data ListInstanceProfilesForRoleResponse = ListInstanceProfilesForRoleResponse+    { _lipfrrInstanceProfiles :: List "InstanceProfiles" InstanceProfile+    , _lipfrrIsTruncated      :: Maybe Bool+    , _lipfrrMarker           :: Maybe Text+    } deriving (Eq, Show)++-- | 'ListInstanceProfilesForRoleResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lipfrrInstanceProfiles' @::@ ['InstanceProfile']+--+-- * 'lipfrrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lipfrrMarker' @::@ 'Maybe' 'Text'+--+listInstanceProfilesForRoleResponse :: ListInstanceProfilesForRoleResponse+listInstanceProfilesForRoleResponse = ListInstanceProfilesForRoleResponse+    { _lipfrrInstanceProfiles = mempty+    , _lipfrrIsTruncated      = Nothing+    , _lipfrrMarker           = Nothing+    }++-- | A list of instance profiles.+lipfrrInstanceProfiles :: Lens' ListInstanceProfilesForRoleResponse [InstanceProfile]+lipfrrInstanceProfiles =+    lens _lipfrrInstanceProfiles (\s a -> s { _lipfrrInstanceProfiles = a })+        . _List++-- | A flag that indicates whether there are more instance profiles to list.+-- If your results were truncated, you can make a subsequent pagination+-- request using the Marker request parameter to retrieve more instance+-- profiles in the list.+lipfrrIsTruncated :: Lens' ListInstanceProfilesForRoleResponse (Maybe Bool)+lipfrrIsTruncated =+    lens _lipfrrIsTruncated (\s a -> s { _lipfrrIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lipfrrMarker :: Lens' ListInstanceProfilesForRoleResponse (Maybe Text)+lipfrrMarker = lens _lipfrrMarker (\s a -> s { _lipfrrMarker = a })++instance ToPath ListInstanceProfilesForRole where+    toPath = const "/"++instance ToQuery ListInstanceProfilesForRole where+    toQuery ListInstanceProfilesForRole{..} = mconcat+        [ "Marker"   =? _lipfrMarker+        , "MaxItems" =? _lipfrMaxItems+        , "RoleName" =? _lipfrRoleName+        ]++instance ToHeaders ListInstanceProfilesForRole++instance AWSRequest ListInstanceProfilesForRole where+    type Sv ListInstanceProfilesForRole = IAM+    type Rs ListInstanceProfilesForRole = ListInstanceProfilesForRoleResponse++    request  = post "ListInstanceProfilesForRole"+    response = xmlResponse++instance FromXML ListInstanceProfilesForRoleResponse where+    parseXML = withElement "ListInstanceProfilesForRoleResult" $ \x -> ListInstanceProfilesForRoleResponse+        <$> x .@  "InstanceProfiles"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"++instance AWSPager ListInstanceProfilesForRole where+    page rq rs+        | stop (rs ^. lipfrrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lipfrMarker .~ rs ^. lipfrrMarker
+ gen/Network/AWS/IAM/ListMFADevices.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListMFADevices+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the MFA devices. If the request includes the user name, then this+-- action lists all the MFA devices associated with the specified user name.+-- If you do not specify a user name, IAM determines the user name implicitly+-- based on the AWS access key ID signing the request. You can paginate the+-- results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADevices.html>+module Network.AWS.IAM.ListMFADevices+    (+    -- * Request+      ListMFADevices+    -- ** Request constructor+    , listMFADevices+    -- ** Request lenses+    , lmfadMarker+    , lmfadMaxItems+    , lmfadUserName++    -- * Response+    , ListMFADevicesResponse+    -- ** Response constructor+    , listMFADevicesResponse+    -- ** Response lenses+    , lmfadrIsTruncated+    , lmfadrMFADevices+    , lmfadrMarker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListMFADevices = ListMFADevices+    { _lmfadMarker   :: Maybe Text+    , _lmfadMaxItems :: Maybe Nat+    , _lmfadUserName :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListMFADevices' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lmfadMarker' @::@ 'Maybe' 'Text'+--+-- * 'lmfadMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lmfadUserName' @::@ 'Maybe' 'Text'+--+listMFADevices :: ListMFADevices+listMFADevices = ListMFADevices+    { _lmfadUserName = Nothing+    , _lmfadMarker   = Nothing+    , _lmfadMaxItems = Nothing+    }++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+lmfadMarker :: Lens' ListMFADevices (Maybe Text)+lmfadMarker = lens _lmfadMarker (\s a -> s { _lmfadMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- MFA devices you want in the response. If there are additional MFA devices+-- beyond the maximum you specify, the IsTruncated response element is true.+-- This parameter is optional. If you do not include it, it defaults to 100.+lmfadMaxItems :: Lens' ListMFADevices (Maybe Natural)+lmfadMaxItems = lens _lmfadMaxItems (\s a -> s { _lmfadMaxItems = a }) . mapping _Nat++-- | The name of the user whose MFA devices you want to list.+lmfadUserName :: Lens' ListMFADevices (Maybe Text)+lmfadUserName = lens _lmfadUserName (\s a -> s { _lmfadUserName = a })++data ListMFADevicesResponse = ListMFADevicesResponse+    { _lmfadrIsTruncated :: Maybe Bool+    , _lmfadrMFADevices  :: List "MFADevices" MFADevice+    , _lmfadrMarker      :: Maybe Text+    } deriving (Eq, Show)++-- | 'ListMFADevicesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lmfadrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lmfadrMFADevices' @::@ ['MFADevice']+--+-- * 'lmfadrMarker' @::@ 'Maybe' 'Text'+--+listMFADevicesResponse :: ListMFADevicesResponse+listMFADevicesResponse = ListMFADevicesResponse+    { _lmfadrMFADevices  = mempty+    , _lmfadrIsTruncated = Nothing+    , _lmfadrMarker      = Nothing+    }++-- | A flag that indicates whether there are more MFA devices to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more MFA devices in the+-- list.+lmfadrIsTruncated :: Lens' ListMFADevicesResponse (Maybe Bool)+lmfadrIsTruncated =+    lens _lmfadrIsTruncated (\s a -> s { _lmfadrIsTruncated = a })++-- | A list of MFA devices.+lmfadrMFADevices :: Lens' ListMFADevicesResponse [MFADevice]+lmfadrMFADevices = lens _lmfadrMFADevices (\s a -> s { _lmfadrMFADevices = a }) . _List++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lmfadrMarker :: Lens' ListMFADevicesResponse (Maybe Text)+lmfadrMarker = lens _lmfadrMarker (\s a -> s { _lmfadrMarker = a })++instance ToPath ListMFADevices where+    toPath = const "/"++instance ToQuery ListMFADevices where+    toQuery ListMFADevices{..} = mconcat+        [ "Marker"   =? _lmfadMarker+        , "MaxItems" =? _lmfadMaxItems+        , "UserName" =? _lmfadUserName+        ]++instance ToHeaders ListMFADevices++instance AWSRequest ListMFADevices where+    type Sv ListMFADevices = IAM+    type Rs ListMFADevices = ListMFADevicesResponse++    request  = post "ListMFADevices"+    response = xmlResponse++instance FromXML ListMFADevicesResponse where+    parseXML = withElement "ListMFADevicesResult" $ \x -> ListMFADevicesResponse+        <$> x .@? "IsTruncated"+        <*> x .@  "MFADevices"+        <*> x .@? "Marker"++instance AWSPager ListMFADevices where+    page rq rs+        | stop (rs ^. lmfadrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lmfadMarker .~ rs ^. lmfadrMarker
+ gen/Network/AWS/IAM/ListOpenIDConnectProviders.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListOpenIDConnectProviders+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists information about the OpenID Connect providers in the AWS account.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html>+module Network.AWS.IAM.ListOpenIDConnectProviders+    (+    -- * Request+      ListOpenIDConnectProviders+    -- ** Request constructor+    , listOpenIDConnectProviders++    -- * Response+    , ListOpenIDConnectProvidersResponse+    -- ** Response constructor+    , listOpenIDConnectProvidersResponse+    -- ** Response lenses+    , loidcprOpenIDConnectProviderList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListOpenIDConnectProviders = ListOpenIDConnectProviders+    deriving (Eq, Ord, Show, Generic)++-- | 'ListOpenIDConnectProviders' constructor.+listOpenIDConnectProviders :: ListOpenIDConnectProviders+listOpenIDConnectProviders = ListOpenIDConnectProviders++newtype ListOpenIDConnectProvidersResponse = ListOpenIDConnectProvidersResponse+    { _loidcprOpenIDConnectProviderList :: List "OpenIDConnectProviderList" OpenIDConnectProviderListEntry+    } deriving (Eq, Show, Monoid, Semigroup)++instance GHC.Exts.IsList ListOpenIDConnectProvidersResponse where+    type Item ListOpenIDConnectProvidersResponse = OpenIDConnectProviderListEntry++    fromList = ListOpenIDConnectProvidersResponse . GHC.Exts.fromList+    toList   = GHC.Exts.toList . _loidcprOpenIDConnectProviderList++-- | 'ListOpenIDConnectProvidersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'loidcprOpenIDConnectProviderList' @::@ ['OpenIDConnectProviderListEntry']+--+listOpenIDConnectProvidersResponse :: ListOpenIDConnectProvidersResponse+listOpenIDConnectProvidersResponse = ListOpenIDConnectProvidersResponse+    { _loidcprOpenIDConnectProviderList = mempty+    }++-- | The list of IAM OpenID Connect providers in the AWS account.+loidcprOpenIDConnectProviderList :: Lens' ListOpenIDConnectProvidersResponse [OpenIDConnectProviderListEntry]+loidcprOpenIDConnectProviderList =+    lens _loidcprOpenIDConnectProviderList+        (\s a -> s { _loidcprOpenIDConnectProviderList = a })+            . _List++instance ToPath ListOpenIDConnectProviders where+    toPath = const "/"++instance ToQuery ListOpenIDConnectProviders where+    toQuery = const mempty++instance ToHeaders ListOpenIDConnectProviders++instance AWSRequest ListOpenIDConnectProviders where+    type Sv ListOpenIDConnectProviders = IAM+    type Rs ListOpenIDConnectProviders = ListOpenIDConnectProvidersResponse++    request  = post "ListOpenIDConnectProviders"+    response = xmlResponse++instance FromXML ListOpenIDConnectProvidersResponse where+    parseXML = withElement "ListOpenIDConnectProvidersResult" $ \x -> ListOpenIDConnectProvidersResponse+        <$> x .@  "OpenIDConnectProviderList"
+ gen/Network/AWS/IAM/ListRolePolicies.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListRolePolicies+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the names of the policies associated with the specified role. If+-- there are none, the action returns an empty list. You can paginate the+-- results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html>+module Network.AWS.IAM.ListRolePolicies+    (+    -- * Request+      ListRolePolicies+    -- ** Request constructor+    , listRolePolicies+    -- ** Request lenses+    , lrpMarker+    , lrpMaxItems+    , lrpRoleName++    -- * Response+    , ListRolePoliciesResponse+    -- ** Response constructor+    , listRolePoliciesResponse+    -- ** Response lenses+    , lrprIsTruncated+    , lrprMarker+    , lrprPolicyNames+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListRolePolicies = ListRolePolicies+    { _lrpMarker   :: Maybe Text+    , _lrpMaxItems :: Maybe Nat+    , _lrpRoleName :: Text+    } deriving (Eq, Ord, Show)++-- | 'ListRolePolicies' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lrpMarker' @::@ 'Maybe' 'Text'+--+-- * 'lrpMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lrpRoleName' @::@ 'Text'+--+listRolePolicies :: Text -- ^ 'lrpRoleName'+                 -> ListRolePolicies+listRolePolicies p1 = ListRolePolicies+    { _lrpRoleName = p1+    , _lrpMarker   = Nothing+    , _lrpMaxItems = Nothing+    }++-- | Use this parameter only when paginating results, and only in a subsequent+-- request after you've received a response where the results are truncated.+-- Set it to the value of the Marker element in the response you just+-- received.+lrpMarker :: Lens' ListRolePolicies (Maybe Text)+lrpMarker = lens _lrpMarker (\s a -> s { _lrpMarker = a })++-- | Use this parameter only when paginating results to indicate the maximum+-- number of role policies you want in the response. If there are additional+-- role policies beyond the maximum you specify, the IsTruncated response+-- element is true. This parameter is optional. If you do not include it, it+-- defaults to 100.+lrpMaxItems :: Lens' ListRolePolicies (Maybe Natural)+lrpMaxItems = lens _lrpMaxItems (\s a -> s { _lrpMaxItems = a }) . mapping _Nat++-- | The name of the role to list policies for.+lrpRoleName :: Lens' ListRolePolicies Text+lrpRoleName = lens _lrpRoleName (\s a -> s { _lrpRoleName = a })++data ListRolePoliciesResponse = ListRolePoliciesResponse+    { _lrprIsTruncated :: Maybe Bool+    , _lrprMarker      :: Maybe Text+    , _lrprPolicyNames :: List "PolicyNames" Text+    } deriving (Eq, Ord, Show)++-- | 'ListRolePoliciesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lrprIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lrprMarker' @::@ 'Maybe' 'Text'+--+-- * 'lrprPolicyNames' @::@ ['Text']+--+listRolePoliciesResponse :: ListRolePoliciesResponse+listRolePoliciesResponse = ListRolePoliciesResponse+    { _lrprPolicyNames = mempty+    , _lrprIsTruncated = Nothing+    , _lrprMarker      = Nothing+    }++-- | A flag that indicates whether there are more policy names to list. If+-- your results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more policy names in the+-- list.+lrprIsTruncated :: Lens' ListRolePoliciesResponse (Maybe Bool)+lrprIsTruncated = lens _lrprIsTruncated (\s a -> s { _lrprIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lrprMarker :: Lens' ListRolePoliciesResponse (Maybe Text)+lrprMarker = lens _lrprMarker (\s a -> s { _lrprMarker = a })++-- | A list of policy names.+lrprPolicyNames :: Lens' ListRolePoliciesResponse [Text]+lrprPolicyNames = lens _lrprPolicyNames (\s a -> s { _lrprPolicyNames = a }) . _List++instance ToPath ListRolePolicies where+    toPath = const "/"++instance ToQuery ListRolePolicies where+    toQuery ListRolePolicies{..} = mconcat+        [ "Marker"   =? _lrpMarker+        , "MaxItems" =? _lrpMaxItems+        , "RoleName" =? _lrpRoleName+        ]++instance ToHeaders ListRolePolicies++instance AWSRequest ListRolePolicies where+    type Sv ListRolePolicies = IAM+    type Rs ListRolePolicies = ListRolePoliciesResponse++    request  = post "ListRolePolicies"+    response = xmlResponse++instance FromXML ListRolePoliciesResponse where+    parseXML = withElement "ListRolePoliciesResult" $ \x -> ListRolePoliciesResponse+        <$> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "PolicyNames"++instance AWSPager ListRolePolicies where+    page rq rs+        | stop (rs ^. lrprIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lrpMarker .~ rs ^. lrprMarker
+ gen/Network/AWS/IAM/ListRoles.hs view
@@ -0,0 +1,168 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListRoles+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the roles that have the specified path prefix. If there are none, the+-- action returns an empty list. For more information about roles, go to+-- Working with Roles. You can paginate the results using the MaxItems and+-- Marker parameters. The returned policy is URL-encoded according to RFC+-- 3986. For more information about RFC 3986, go to+-- http://www.faqs.org/rfcs/rfc3986.html.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html>+module Network.AWS.IAM.ListRoles+    (+    -- * Request+      ListRoles+    -- ** Request constructor+    , listRoles+    -- ** Request lenses+    , lrMarker+    , lrMaxItems+    , lrPathPrefix++    -- * Response+    , ListRolesResponse+    -- ** Response constructor+    , listRolesResponse+    -- ** Response lenses+    , lrrIsTruncated+    , lrrMarker+    , lrrRoles+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListRoles = ListRoles+    { _lrMarker     :: Maybe Text+    , _lrMaxItems   :: Maybe Nat+    , _lrPathPrefix :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListRoles' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lrMarker' @::@ 'Maybe' 'Text'+--+-- * 'lrMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lrPathPrefix' @::@ 'Maybe' 'Text'+--+listRoles :: ListRoles+listRoles = ListRoles+    { _lrPathPrefix = Nothing+    , _lrMarker     = Nothing+    , _lrMaxItems   = Nothing+    }++-- | Use this parameter only when paginating results, and only in a subsequent+-- request after you've received a response where the results are truncated.+-- Set it to the value of the Marker element in the response you just+-- received.+lrMarker :: Lens' ListRoles (Maybe Text)+lrMarker = lens _lrMarker (\s a -> s { _lrMarker = a })++-- | Use this parameter only when paginating results to indicate the maximum+-- number of roles you want in the response. If there are additional roles+-- beyond the maximum you specify, the IsTruncated response element is true.+-- This parameter is optional. If you do not include it, it defaults to 100.+lrMaxItems :: Lens' ListRoles (Maybe Natural)+lrMaxItems = lens _lrMaxItems (\s a -> s { _lrMaxItems = a }) . mapping _Nat++-- | The path prefix for filtering the results. For example, the prefix+-- /application_abc/component_xyz/ gets all roles whose path starts with+-- /application_abc/component_xyz/. This parameter is optional. If it is not+-- included, it defaults to a slash (/), listing all roles.+lrPathPrefix :: Lens' ListRoles (Maybe Text)+lrPathPrefix = lens _lrPathPrefix (\s a -> s { _lrPathPrefix = a })++data ListRolesResponse = ListRolesResponse+    { _lrrIsTruncated :: Maybe Bool+    , _lrrMarker      :: Maybe Text+    , _lrrRoles       :: List "Roles" Role+    } deriving (Eq, Show)++-- | 'ListRolesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lrrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lrrMarker' @::@ 'Maybe' 'Text'+--+-- * 'lrrRoles' @::@ ['Role']+--+listRolesResponse :: ListRolesResponse+listRolesResponse = ListRolesResponse+    { _lrrRoles       = mempty+    , _lrrIsTruncated = Nothing+    , _lrrMarker      = Nothing+    }++-- | A flag that indicates whether there are more roles to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more roles in the list.+lrrIsTruncated :: Lens' ListRolesResponse (Maybe Bool)+lrrIsTruncated = lens _lrrIsTruncated (\s a -> s { _lrrIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lrrMarker :: Lens' ListRolesResponse (Maybe Text)+lrrMarker = lens _lrrMarker (\s a -> s { _lrrMarker = a })++-- | A list of roles.+lrrRoles :: Lens' ListRolesResponse [Role]+lrrRoles = lens _lrrRoles (\s a -> s { _lrrRoles = a }) . _List++instance ToPath ListRoles where+    toPath = const "/"++instance ToQuery ListRoles where+    toQuery ListRoles{..} = mconcat+        [ "Marker"     =? _lrMarker+        , "MaxItems"   =? _lrMaxItems+        , "PathPrefix" =? _lrPathPrefix+        ]++instance ToHeaders ListRoles++instance AWSRequest ListRoles where+    type Sv ListRoles = IAM+    type Rs ListRoles = ListRolesResponse++    request  = post "ListRoles"+    response = xmlResponse++instance FromXML ListRolesResponse where+    parseXML = withElement "ListRolesResult" $ \x -> ListRolesResponse+        <$> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "Roles"++instance AWSPager ListRoles where+    page rq rs+        | stop (rs ^. lrrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lrMarker .~ rs ^. lrrMarker
+ gen/Network/AWS/IAM/ListSAMLProviders.hs view
@@ -0,0 +1,97 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListSAMLProviders+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the SAML providers in the account.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html>+module Network.AWS.IAM.ListSAMLProviders+    (+    -- * Request+      ListSAMLProviders+    -- ** Request constructor+    , listSAMLProviders++    -- * Response+    , ListSAMLProvidersResponse+    -- ** Response constructor+    , listSAMLProvidersResponse+    -- ** Response lenses+    , lsamlprSAMLProviderList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListSAMLProviders = ListSAMLProviders+    deriving (Eq, Ord, Show, Generic)++-- | 'ListSAMLProviders' constructor.+listSAMLProviders :: ListSAMLProviders+listSAMLProviders = ListSAMLProviders++newtype ListSAMLProvidersResponse = ListSAMLProvidersResponse+    { _lsamlprSAMLProviderList :: List "SAMLProviderList" SAMLProviderListEntry+    } deriving (Eq, Show, Monoid, Semigroup)++instance GHC.Exts.IsList ListSAMLProvidersResponse where+    type Item ListSAMLProvidersResponse = SAMLProviderListEntry++    fromList = ListSAMLProvidersResponse . GHC.Exts.fromList+    toList   = GHC.Exts.toList . _lsamlprSAMLProviderList++-- | 'ListSAMLProvidersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lsamlprSAMLProviderList' @::@ ['SAMLProviderListEntry']+--+listSAMLProvidersResponse :: ListSAMLProvidersResponse+listSAMLProvidersResponse = ListSAMLProvidersResponse+    { _lsamlprSAMLProviderList = mempty+    }++-- | The list of SAML providers for this account.+lsamlprSAMLProviderList :: Lens' ListSAMLProvidersResponse [SAMLProviderListEntry]+lsamlprSAMLProviderList =+    lens _lsamlprSAMLProviderList (\s a -> s { _lsamlprSAMLProviderList = a })+        . _List++instance ToPath ListSAMLProviders where+    toPath = const "/"++instance ToQuery ListSAMLProviders where+    toQuery = const mempty++instance ToHeaders ListSAMLProviders++instance AWSRequest ListSAMLProviders where+    type Sv ListSAMLProviders = IAM+    type Rs ListSAMLProviders = ListSAMLProvidersResponse++    request  = post "ListSAMLProviders"+    response = xmlResponse++instance FromXML ListSAMLProvidersResponse where+    parseXML = withElement "ListSAMLProvidersResult" $ \x -> ListSAMLProvidersResponse+        <$> x .@  "SAMLProviderList"
+ gen/Network/AWS/IAM/ListServerCertificates.hs view
@@ -0,0 +1,170 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListServerCertificates+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the server certificates that have the specified path prefix. If none+-- exist, the action returns an empty list. You can paginate the results using+-- the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html>+module Network.AWS.IAM.ListServerCertificates+    (+    -- * Request+      ListServerCertificates+    -- ** Request constructor+    , listServerCertificates+    -- ** Request lenses+    , lscMarker+    , lscMaxItems+    , lscPathPrefix++    -- * Response+    , ListServerCertificatesResponse+    -- ** Response constructor+    , listServerCertificatesResponse+    -- ** Response lenses+    , lscrIsTruncated+    , lscrMarker+    , lscrServerCertificateMetadataList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListServerCertificates = ListServerCertificates+    { _lscMarker     :: Maybe Text+    , _lscMaxItems   :: Maybe Nat+    , _lscPathPrefix :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListServerCertificates' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lscMarker' @::@ 'Maybe' 'Text'+--+-- * 'lscMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lscPathPrefix' @::@ 'Maybe' 'Text'+--+listServerCertificates :: ListServerCertificates+listServerCertificates = ListServerCertificates+    { _lscPathPrefix = Nothing+    , _lscMarker     = Nothing+    , _lscMaxItems   = Nothing+    }++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+lscMarker :: Lens' ListServerCertificates (Maybe Text)+lscMarker = lens _lscMarker (\s a -> s { _lscMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- server certificates you want in the response. If there are additional+-- server certificates beyond the maximum you specify, the IsTruncated+-- response element will be set to true. This parameter is optional. If you+-- do not include it, it defaults to 100.+lscMaxItems :: Lens' ListServerCertificates (Maybe Natural)+lscMaxItems = lens _lscMaxItems (\s a -> s { _lscMaxItems = a }) . mapping _Nat++-- | The path prefix for filtering the results. For example:+-- /company/servercerts would get all server certificates for which the path+-- starts with /company/servercerts. This parameter is optional. If it is+-- not included, it defaults to a slash (/), listing all server+-- certificates.+lscPathPrefix :: Lens' ListServerCertificates (Maybe Text)+lscPathPrefix = lens _lscPathPrefix (\s a -> s { _lscPathPrefix = a })++data ListServerCertificatesResponse = ListServerCertificatesResponse+    { _lscrIsTruncated                   :: Maybe Bool+    , _lscrMarker                        :: Maybe Text+    , _lscrServerCertificateMetadataList :: List "ServerCertificateMetadataList" ServerCertificateMetadata+    } deriving (Eq, Show)++-- | 'ListServerCertificatesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lscrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lscrMarker' @::@ 'Maybe' 'Text'+--+-- * 'lscrServerCertificateMetadataList' @::@ ['ServerCertificateMetadata']+--+listServerCertificatesResponse :: ListServerCertificatesResponse+listServerCertificatesResponse = ListServerCertificatesResponse+    { _lscrServerCertificateMetadataList = mempty+    , _lscrIsTruncated                   = Nothing+    , _lscrMarker                        = Nothing+    }++-- | A flag that indicates whether there are more server certificates to list.+-- If your results were truncated, you can make a subsequent pagination+-- request using the Marker request parameter to retrieve more server+-- certificates in the list.+lscrIsTruncated :: Lens' ListServerCertificatesResponse (Maybe Bool)+lscrIsTruncated = lens _lscrIsTruncated (\s a -> s { _lscrIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lscrMarker :: Lens' ListServerCertificatesResponse (Maybe Text)+lscrMarker = lens _lscrMarker (\s a -> s { _lscrMarker = a })++-- | A list of server certificates.+lscrServerCertificateMetadataList :: Lens' ListServerCertificatesResponse [ServerCertificateMetadata]+lscrServerCertificateMetadataList =+    lens _lscrServerCertificateMetadataList+        (\s a -> s { _lscrServerCertificateMetadataList = a })+            . _List++instance ToPath ListServerCertificates where+    toPath = const "/"++instance ToQuery ListServerCertificates where+    toQuery ListServerCertificates{..} = mconcat+        [ "Marker"     =? _lscMarker+        , "MaxItems"   =? _lscMaxItems+        , "PathPrefix" =? _lscPathPrefix+        ]++instance ToHeaders ListServerCertificates++instance AWSRequest ListServerCertificates where+    type Sv ListServerCertificates = IAM+    type Rs ListServerCertificates = ListServerCertificatesResponse++    request  = post "ListServerCertificates"+    response = xmlResponse++instance FromXML ListServerCertificatesResponse where+    parseXML = withElement "ListServerCertificatesResult" $ \x -> ListServerCertificatesResponse+        <$> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "ServerCertificateMetadataList"++instance AWSPager ListServerCertificates where+    page rq rs+        | stop (rs ^. lscrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lscMarker .~ rs ^. lscrMarker
+ gen/Network/AWS/IAM/ListSigningCertificates.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListSigningCertificates+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Returns information about the signing certificates associated with the+-- specified user. If there are none, the action returns an empty list.+-- Although each user is limited to a small number of signing certificates,+-- you can still paginate the results using the MaxItems and Marker+-- parameters. If the UserName field is not specified, the user name is+-- determined implicitly based on the AWS access key ID used to sign the+-- request. Because this action works for access keys under the AWS account,+-- you can use this action to manage root credentials even if the AWS account+-- has no associated users.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSigningCertificates.html>+module Network.AWS.IAM.ListSigningCertificates+    (+    -- * Request+      ListSigningCertificates+    -- ** Request constructor+    , listSigningCertificates+    -- ** Request lenses+    , lsc1Marker+    , lsc1MaxItems+    , lsc1UserName++    -- * Response+    , ListSigningCertificatesResponse+    -- ** Response constructor+    , listSigningCertificatesResponse+    -- ** Response lenses+    , lscr1Certificates+    , lscr1IsTruncated+    , lscr1Marker+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListSigningCertificates = ListSigningCertificates+    { _lsc1Marker   :: Maybe Text+    , _lsc1MaxItems :: Maybe Nat+    , _lsc1UserName :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListSigningCertificates' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lsc1Marker' @::@ 'Maybe' 'Text'+--+-- * 'lsc1MaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lsc1UserName' @::@ 'Maybe' 'Text'+--+listSigningCertificates :: ListSigningCertificates+listSigningCertificates = ListSigningCertificates+    { _lsc1UserName = Nothing+    , _lsc1Marker   = Nothing+    , _lsc1MaxItems = Nothing+    }++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+lsc1Marker :: Lens' ListSigningCertificates (Maybe Text)+lsc1Marker = lens _lsc1Marker (\s a -> s { _lsc1Marker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- certificate IDs you want in the response. If there are additional+-- certificate IDs beyond the maximum you specify, the IsTruncated response+-- element is true. This parameter is optional. If you do not include it, it+-- defaults to 100.+lsc1MaxItems :: Lens' ListSigningCertificates (Maybe Natural)+lsc1MaxItems = lens _lsc1MaxItems (\s a -> s { _lsc1MaxItems = a }) . mapping _Nat++-- | The name of the user.+lsc1UserName :: Lens' ListSigningCertificates (Maybe Text)+lsc1UserName = lens _lsc1UserName (\s a -> s { _lsc1UserName = a })++data ListSigningCertificatesResponse = ListSigningCertificatesResponse+    { _lscr1Certificates :: List "Certificates" SigningCertificate+    , _lscr1IsTruncated  :: Maybe Bool+    , _lscr1Marker       :: Maybe Text+    } deriving (Eq, Show)++-- | 'ListSigningCertificatesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lscr1Certificates' @::@ ['SigningCertificate']+--+-- * 'lscr1IsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lscr1Marker' @::@ 'Maybe' 'Text'+--+listSigningCertificatesResponse :: ListSigningCertificatesResponse+listSigningCertificatesResponse = ListSigningCertificatesResponse+    { _lscr1Certificates = mempty+    , _lscr1IsTruncated  = Nothing+    , _lscr1Marker       = Nothing+    }++-- | A list of the user's signing certificate information.+lscr1Certificates :: Lens' ListSigningCertificatesResponse [SigningCertificate]+lscr1Certificates =+    lens _lscr1Certificates (\s a -> s { _lscr1Certificates = a })+        . _List++-- | A flag that indicates whether there are more certificate IDs to list. If+-- your results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more certificates in the+-- list.+lscr1IsTruncated :: Lens' ListSigningCertificatesResponse (Maybe Bool)+lscr1IsTruncated = lens _lscr1IsTruncated (\s a -> s { _lscr1IsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lscr1Marker :: Lens' ListSigningCertificatesResponse (Maybe Text)+lscr1Marker = lens _lscr1Marker (\s a -> s { _lscr1Marker = a })++instance ToPath ListSigningCertificates where+    toPath = const "/"++instance ToQuery ListSigningCertificates where+    toQuery ListSigningCertificates{..} = mconcat+        [ "Marker"   =? _lsc1Marker+        , "MaxItems" =? _lsc1MaxItems+        , "UserName" =? _lsc1UserName+        ]++instance ToHeaders ListSigningCertificates++instance AWSRequest ListSigningCertificates where+    type Sv ListSigningCertificates = IAM+    type Rs ListSigningCertificates = ListSigningCertificatesResponse++    request  = post "ListSigningCertificates"+    response = xmlResponse++instance FromXML ListSigningCertificatesResponse where+    parseXML = withElement "ListSigningCertificatesResult" $ \x -> ListSigningCertificatesResponse+        <$> x .@  "Certificates"+        <*> x .@? "IsTruncated"+        <*> x .@? "Marker"++instance AWSPager ListSigningCertificates where+    page rq rs+        | stop (rs ^. lscr1IsTruncated) = Nothing+        | otherwise = Just $ rq+            & lsc1Marker .~ rs ^. lscr1Marker
+ gen/Network/AWS/IAM/ListUserPolicies.hs view
@@ -0,0 +1,164 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListUserPolicies+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the names of the policies associated with the specified user. If+-- there are none, the action returns an empty list. You can paginate the+-- results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html>+module Network.AWS.IAM.ListUserPolicies+    (+    -- * Request+      ListUserPolicies+    -- ** Request constructor+    , listUserPolicies+    -- ** Request lenses+    , lupMarker+    , lupMaxItems+    , lupUserName++    -- * Response+    , ListUserPoliciesResponse+    -- ** Response constructor+    , listUserPoliciesResponse+    -- ** Response lenses+    , luprIsTruncated+    , luprMarker+    , luprPolicyNames+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListUserPolicies = ListUserPolicies+    { _lupMarker   :: Maybe Text+    , _lupMaxItems :: Maybe Nat+    , _lupUserName :: Text+    } deriving (Eq, Ord, Show)++-- | 'ListUserPolicies' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lupMarker' @::@ 'Maybe' 'Text'+--+-- * 'lupMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'lupUserName' @::@ 'Text'+--+listUserPolicies :: Text -- ^ 'lupUserName'+                 -> ListUserPolicies+listUserPolicies p1 = ListUserPolicies+    { _lupUserName = p1+    , _lupMarker   = Nothing+    , _lupMaxItems = Nothing+    }++-- | Use this only when paginating results, and only in a subsequent request+-- after you've received a response where the results are truncated. Set it+-- to the value of the Marker element in the response you just received.+lupMarker :: Lens' ListUserPolicies (Maybe Text)+lupMarker = lens _lupMarker (\s a -> s { _lupMarker = a })++-- | Use this only when paginating results to indicate the maximum number of+-- policy names you want in the response. If there are additional policy+-- names beyond the maximum you specify, the IsTruncated response element is+-- true. This parameter is optional. If you do not include it, it defaults+-- to 100.+lupMaxItems :: Lens' ListUserPolicies (Maybe Natural)+lupMaxItems = lens _lupMaxItems (\s a -> s { _lupMaxItems = a }) . mapping _Nat++-- | The name of the user to list policies for.+lupUserName :: Lens' ListUserPolicies Text+lupUserName = lens _lupUserName (\s a -> s { _lupUserName = a })++data ListUserPoliciesResponse = ListUserPoliciesResponse+    { _luprIsTruncated :: Maybe Bool+    , _luprMarker      :: Maybe Text+    , _luprPolicyNames :: List "PolicyNames" Text+    } deriving (Eq, Ord, Show)++-- | 'ListUserPoliciesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'luprIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'luprMarker' @::@ 'Maybe' 'Text'+--+-- * 'luprPolicyNames' @::@ ['Text']+--+listUserPoliciesResponse :: ListUserPoliciesResponse+listUserPoliciesResponse = ListUserPoliciesResponse+    { _luprPolicyNames = mempty+    , _luprIsTruncated = Nothing+    , _luprMarker      = Nothing+    }++-- | A flag that indicates whether there are more policy names to list. If+-- your results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more policy names in the+-- list.+luprIsTruncated :: Lens' ListUserPoliciesResponse (Maybe Bool)+luprIsTruncated = lens _luprIsTruncated (\s a -> s { _luprIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+luprMarker :: Lens' ListUserPoliciesResponse (Maybe Text)+luprMarker = lens _luprMarker (\s a -> s { _luprMarker = a })++-- | A list of policy names.+luprPolicyNames :: Lens' ListUserPoliciesResponse [Text]+luprPolicyNames = lens _luprPolicyNames (\s a -> s { _luprPolicyNames = a }) . _List++instance ToPath ListUserPolicies where+    toPath = const "/"++instance ToQuery ListUserPolicies where+    toQuery ListUserPolicies{..} = mconcat+        [ "Marker"   =? _lupMarker+        , "MaxItems" =? _lupMaxItems+        , "UserName" =? _lupUserName+        ]++instance ToHeaders ListUserPolicies++instance AWSRequest ListUserPolicies where+    type Sv ListUserPolicies = IAM+    type Rs ListUserPolicies = ListUserPoliciesResponse++    request  = post "ListUserPolicies"+    response = xmlResponse++instance FromXML ListUserPoliciesResponse where+    parseXML = withElement "ListUserPoliciesResult" $ \x -> ListUserPoliciesResponse+        <$> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "PolicyNames"++instance AWSPager ListUserPolicies where+    page rq rs+        | stop (rs ^. luprIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lupMarker .~ rs ^. luprMarker
+ gen/Network/AWS/IAM/ListUsers.hs view
@@ -0,0 +1,168 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListUsers+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the IAM users that have the specified path prefix. If no path prefix+-- is specified, the action returns all users in the AWS account. If there are+-- none, the action returns an empty list. You can paginate the results using+-- the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html>+module Network.AWS.IAM.ListUsers+    (+    -- * Request+      ListUsers+    -- ** Request constructor+    , listUsers+    -- ** Request lenses+    , luMarker+    , luMaxItems+    , luPathPrefix++    -- * Response+    , ListUsersResponse+    -- ** Response constructor+    , listUsersResponse+    -- ** Response lenses+    , lurIsTruncated+    , lurMarker+    , lurUsers+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListUsers = ListUsers+    { _luMarker     :: Maybe Text+    , _luMaxItems   :: Maybe Nat+    , _luPathPrefix :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListUsers' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'luMarker' @::@ 'Maybe' 'Text'+--+-- * 'luMaxItems' @::@ 'Maybe' 'Natural'+--+-- * 'luPathPrefix' @::@ 'Maybe' 'Text'+--+listUsers :: ListUsers+listUsers = ListUsers+    { _luPathPrefix = Nothing+    , _luMarker     = Nothing+    , _luMaxItems   = Nothing+    }++-- | Use this parameter only when paginating results, and only in a subsequent+-- request after you've received a response where the results are truncated.+-- Set it to the value of the Marker element in the response you just+-- received.+luMarker :: Lens' ListUsers (Maybe Text)+luMarker = lens _luMarker (\s a -> s { _luMarker = a })++-- | Use this parameter only when paginating results to indicate the maximum+-- number of user names you want in the response. If there are additional+-- user names beyond the maximum you specify, the IsTruncated response+-- element is true. This parameter is optional. If you do not include it, it+-- defaults to 100.+luMaxItems :: Lens' ListUsers (Maybe Natural)+luMaxItems = lens _luMaxItems (\s a -> s { _luMaxItems = a }) . mapping _Nat++-- | The path prefix for filtering the results. For example:+-- /division_abc/subdivision_xyz/, which would get all user names whose path+-- starts with /division_abc/subdivision_xyz/. This parameter is optional.+-- If it is not included, it defaults to a slash (/), listing all user+-- names.+luPathPrefix :: Lens' ListUsers (Maybe Text)+luPathPrefix = lens _luPathPrefix (\s a -> s { _luPathPrefix = a })++data ListUsersResponse = ListUsersResponse+    { _lurIsTruncated :: Maybe Bool+    , _lurMarker      :: Maybe Text+    , _lurUsers       :: List "Users" User+    } deriving (Eq, Show)++-- | 'ListUsersResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lurIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lurMarker' @::@ 'Maybe' 'Text'+--+-- * 'lurUsers' @::@ ['User']+--+listUsersResponse :: ListUsersResponse+listUsersResponse = ListUsersResponse+    { _lurUsers       = mempty+    , _lurIsTruncated = Nothing+    , _lurMarker      = Nothing+    }++-- | A flag that indicates whether there are more user names to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more users in the list.+lurIsTruncated :: Lens' ListUsersResponse (Maybe Bool)+lurIsTruncated = lens _lurIsTruncated (\s a -> s { _lurIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lurMarker :: Lens' ListUsersResponse (Maybe Text)+lurMarker = lens _lurMarker (\s a -> s { _lurMarker = a })++-- | A list of users.+lurUsers :: Lens' ListUsersResponse [User]+lurUsers = lens _lurUsers (\s a -> s { _lurUsers = a }) . _List++instance ToPath ListUsers where+    toPath = const "/"++instance ToQuery ListUsers where+    toQuery ListUsers{..} = mconcat+        [ "Marker"     =? _luMarker+        , "MaxItems"   =? _luMaxItems+        , "PathPrefix" =? _luPathPrefix+        ]++instance ToHeaders ListUsers++instance AWSRequest ListUsers where+    type Sv ListUsers = IAM+    type Rs ListUsers = ListUsersResponse++    request  = post "ListUsers"+    response = xmlResponse++instance FromXML ListUsersResponse where+    parseXML = withElement "ListUsersResult" $ \x -> ListUsersResponse+        <$> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "Users"++instance AWSPager ListUsers where+    page rq rs+        | stop (rs ^. lurIsTruncated) = Nothing+        | otherwise = Just $ rq+            & luMarker .~ rs ^. lurMarker
+ gen/Network/AWS/IAM/ListVirtualMFADevices.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ListVirtualMFADevices+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Lists the virtual MFA devices under the AWS account by assignment status.+-- If you do not specify an assignment status, the action returns a list of+-- all virtual MFA devices. Assignment status can be Assigned, Unassigned, or+-- Any. You can paginate the results using the MaxItems and Marker parameters.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html>+module Network.AWS.IAM.ListVirtualMFADevices+    (+    -- * Request+      ListVirtualMFADevices+    -- ** Request constructor+    , listVirtualMFADevices+    -- ** Request lenses+    , lvmfadAssignmentStatus+    , lvmfadMarker+    , lvmfadMaxItems++    -- * Response+    , ListVirtualMFADevicesResponse+    -- ** Response constructor+    , listVirtualMFADevicesResponse+    -- ** Response lenses+    , lvmfadrIsTruncated+    , lvmfadrMarker+    , lvmfadrVirtualMFADevices+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ListVirtualMFADevices = ListVirtualMFADevices+    { _lvmfadAssignmentStatus :: Maybe Text+    , _lvmfadMarker           :: Maybe Text+    , _lvmfadMaxItems         :: Maybe Nat+    } deriving (Eq, Ord, Show)++-- | 'ListVirtualMFADevices' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lvmfadAssignmentStatus' @::@ 'Maybe' 'Text'+--+-- * 'lvmfadMarker' @::@ 'Maybe' 'Text'+--+-- * 'lvmfadMaxItems' @::@ 'Maybe' 'Natural'+--+listVirtualMFADevices :: ListVirtualMFADevices+listVirtualMFADevices = ListVirtualMFADevices+    { _lvmfadAssignmentStatus = Nothing+    , _lvmfadMarker           = Nothing+    , _lvmfadMaxItems         = Nothing+    }++-- | The status (unassigned or assigned) of the devices to list. If you do not+-- specify an AssignmentStatus, the action defaults to Any which lists both+-- assigned and unassigned virtual MFA devices.+lvmfadAssignmentStatus :: Lens' ListVirtualMFADevices (Maybe Text)+lvmfadAssignmentStatus =+    lens _lvmfadAssignmentStatus (\s a -> s { _lvmfadAssignmentStatus = a })++-- | Use this parameter only when paginating results, and only in a subsequent+-- request after you've received a response where the results are truncated.+-- Set it to the value of the Marker element in the response you just+-- received.+lvmfadMarker :: Lens' ListVirtualMFADevices (Maybe Text)+lvmfadMarker = lens _lvmfadMarker (\s a -> s { _lvmfadMarker = a })++-- | Use this parameter only when paginating results to indicate the maximum+-- number of MFA devices you want in the response. If there are additional+-- MFA devices beyond the maximum you specify, the IsTruncated response+-- element is true. This parameter is optional. If you do not include it, it+-- defaults to 100.+lvmfadMaxItems :: Lens' ListVirtualMFADevices (Maybe Natural)+lvmfadMaxItems = lens _lvmfadMaxItems (\s a -> s { _lvmfadMaxItems = a }) . mapping _Nat++data ListVirtualMFADevicesResponse = ListVirtualMFADevicesResponse+    { _lvmfadrIsTruncated       :: Maybe Bool+    , _lvmfadrMarker            :: Maybe Text+    , _lvmfadrVirtualMFADevices :: List "VirtualMFADevices" VirtualMFADevice+    } deriving (Eq, Show)++-- | 'ListVirtualMFADevicesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lvmfadrIsTruncated' @::@ 'Maybe' 'Bool'+--+-- * 'lvmfadrMarker' @::@ 'Maybe' 'Text'+--+-- * 'lvmfadrVirtualMFADevices' @::@ ['VirtualMFADevice']+--+listVirtualMFADevicesResponse :: ListVirtualMFADevicesResponse+listVirtualMFADevicesResponse = ListVirtualMFADevicesResponse+    { _lvmfadrVirtualMFADevices = mempty+    , _lvmfadrIsTruncated       = Nothing+    , _lvmfadrMarker            = Nothing+    }++-- | A flag that indicates whether there are more items to list. If your+-- results were truncated, you can make a subsequent pagination request+-- using the Marker request parameter to retrieve more items the list.+lvmfadrIsTruncated :: Lens' ListVirtualMFADevicesResponse (Maybe Bool)+lvmfadrIsTruncated =+    lens _lvmfadrIsTruncated (\s a -> s { _lvmfadrIsTruncated = a })++-- | If IsTruncated is true, this element is present and contains the value to+-- use for the Marker parameter in a subsequent pagination request.+lvmfadrMarker :: Lens' ListVirtualMFADevicesResponse (Maybe Text)+lvmfadrMarker = lens _lvmfadrMarker (\s a -> s { _lvmfadrMarker = a })++-- | The list of virtual MFA devices in the current account that match the+-- AssignmentStatus value that was passed in the request.+lvmfadrVirtualMFADevices :: Lens' ListVirtualMFADevicesResponse [VirtualMFADevice]+lvmfadrVirtualMFADevices =+    lens _lvmfadrVirtualMFADevices+        (\s a -> s { _lvmfadrVirtualMFADevices = a })+            . _List++instance ToPath ListVirtualMFADevices where+    toPath = const "/"++instance ToQuery ListVirtualMFADevices where+    toQuery ListVirtualMFADevices{..} = mconcat+        [ "AssignmentStatus" =? _lvmfadAssignmentStatus+        , "Marker"           =? _lvmfadMarker+        , "MaxItems"         =? _lvmfadMaxItems+        ]++instance ToHeaders ListVirtualMFADevices++instance AWSRequest ListVirtualMFADevices where+    type Sv ListVirtualMFADevices = IAM+    type Rs ListVirtualMFADevices = ListVirtualMFADevicesResponse++    request  = post "ListVirtualMFADevices"+    response = xmlResponse++instance FromXML ListVirtualMFADevicesResponse where+    parseXML = withElement "ListVirtualMFADevicesResult" $ \x -> ListVirtualMFADevicesResponse+        <$> x .@? "IsTruncated"+        <*> x .@? "Marker"+        <*> x .@  "VirtualMFADevices"++instance AWSPager ListVirtualMFADevices where+    page rq rs+        | stop (rs ^. lvmfadrIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lvmfadMarker .~ rs ^. lvmfadrMarker
+ gen/Network/AWS/IAM/PutGroupPolicy.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.PutGroupPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Adds (or updates) a policy document associated with the specified group.+-- For information about policies, refer to Overview of Policies in the Using+-- IAM guide. For information about limits on the number of policies you can+-- associate with a group, see Limitations on IAM Entities in the Using IAM+-- guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_PutGroupPolicy.html>+module Network.AWS.IAM.PutGroupPolicy+    (+    -- * Request+      PutGroupPolicy+    -- ** Request constructor+    , putGroupPolicy+    -- ** Request lenses+    , pgpGroupName+    , pgpPolicyDocument+    , pgpPolicyName++    -- * Response+    , PutGroupPolicyResponse+    -- ** Response constructor+    , putGroupPolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data PutGroupPolicy = PutGroupPolicy+    { _pgpGroupName      :: Text+    , _pgpPolicyDocument :: Text+    , _pgpPolicyName     :: Text+    } deriving (Eq, Ord, Show)++-- | 'PutGroupPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pgpGroupName' @::@ 'Text'+--+-- * 'pgpPolicyDocument' @::@ 'Text'+--+-- * 'pgpPolicyName' @::@ 'Text'+--+putGroupPolicy :: Text -- ^ 'pgpGroupName'+               -> Text -- ^ 'pgpPolicyName'+               -> Text -- ^ 'pgpPolicyDocument'+               -> PutGroupPolicy+putGroupPolicy p1 p2 p3 = PutGroupPolicy+    { _pgpGroupName      = p1+    , _pgpPolicyName     = p2+    , _pgpPolicyDocument = p3+    }++-- | The name of the group to associate the policy with.+pgpGroupName :: Lens' PutGroupPolicy Text+pgpGroupName = lens _pgpGroupName (\s a -> s { _pgpGroupName = a })++-- | The policy document.+pgpPolicyDocument :: Lens' PutGroupPolicy Text+pgpPolicyDocument =+    lens _pgpPolicyDocument (\s a -> s { _pgpPolicyDocument = a })++-- | The name of the policy document.+pgpPolicyName :: Lens' PutGroupPolicy Text+pgpPolicyName = lens _pgpPolicyName (\s a -> s { _pgpPolicyName = a })++data PutGroupPolicyResponse = PutGroupPolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'PutGroupPolicyResponse' constructor.+putGroupPolicyResponse :: PutGroupPolicyResponse+putGroupPolicyResponse = PutGroupPolicyResponse++instance ToPath PutGroupPolicy where+    toPath = const "/"++instance ToQuery PutGroupPolicy where+    toQuery PutGroupPolicy{..} = mconcat+        [ "GroupName"      =? _pgpGroupName+        , "PolicyDocument" =? _pgpPolicyDocument+        , "PolicyName"     =? _pgpPolicyName+        ]++instance ToHeaders PutGroupPolicy++instance AWSRequest PutGroupPolicy where+    type Sv PutGroupPolicy = IAM+    type Rs PutGroupPolicy = PutGroupPolicyResponse++    request  = post "PutGroupPolicy"+    response = nullResponse PutGroupPolicyResponse
+ gen/Network/AWS/IAM/PutRolePolicy.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.PutRolePolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Adds (or updates) a policy document associated with the specified role. For+-- information about policies, go to Overview of Policies in the Using IAM+-- guide. For information about limits on the policies you can associate with+-- a role, see Limitations on IAM Entities in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html>+module Network.AWS.IAM.PutRolePolicy+    (+    -- * Request+      PutRolePolicy+    -- ** Request constructor+    , putRolePolicy+    -- ** Request lenses+    , prpPolicyDocument+    , prpPolicyName+    , prpRoleName++    -- * Response+    , PutRolePolicyResponse+    -- ** Response constructor+    , putRolePolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data PutRolePolicy = PutRolePolicy+    { _prpPolicyDocument :: Text+    , _prpPolicyName     :: Text+    , _prpRoleName       :: Text+    } deriving (Eq, Ord, Show)++-- | 'PutRolePolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'prpPolicyDocument' @::@ 'Text'+--+-- * 'prpPolicyName' @::@ 'Text'+--+-- * 'prpRoleName' @::@ 'Text'+--+putRolePolicy :: Text -- ^ 'prpRoleName'+              -> Text -- ^ 'prpPolicyName'+              -> Text -- ^ 'prpPolicyDocument'+              -> PutRolePolicy+putRolePolicy p1 p2 p3 = PutRolePolicy+    { _prpRoleName       = p1+    , _prpPolicyName     = p2+    , _prpPolicyDocument = p3+    }++-- | The policy document.+prpPolicyDocument :: Lens' PutRolePolicy Text+prpPolicyDocument =+    lens _prpPolicyDocument (\s a -> s { _prpPolicyDocument = a })++-- | The name of the policy document.+prpPolicyName :: Lens' PutRolePolicy Text+prpPolicyName = lens _prpPolicyName (\s a -> s { _prpPolicyName = a })++-- | The name of the role to associate the policy with.+prpRoleName :: Lens' PutRolePolicy Text+prpRoleName = lens _prpRoleName (\s a -> s { _prpRoleName = a })++data PutRolePolicyResponse = PutRolePolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'PutRolePolicyResponse' constructor.+putRolePolicyResponse :: PutRolePolicyResponse+putRolePolicyResponse = PutRolePolicyResponse++instance ToPath PutRolePolicy where+    toPath = const "/"++instance ToQuery PutRolePolicy where+    toQuery PutRolePolicy{..} = mconcat+        [ "PolicyDocument" =? _prpPolicyDocument+        , "PolicyName"     =? _prpPolicyName+        , "RoleName"       =? _prpRoleName+        ]++instance ToHeaders PutRolePolicy++instance AWSRequest PutRolePolicy where+    type Sv PutRolePolicy = IAM+    type Rs PutRolePolicy = PutRolePolicyResponse++    request  = post "PutRolePolicy"+    response = nullResponse PutRolePolicyResponse
+ gen/Network/AWS/IAM/PutUserPolicy.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.PutUserPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Adds (or updates) a policy document associated with the specified user. For+-- information about policies, refer to Overview of Policies in the Using IAM+-- guide. For information about limits on the number of policies you can+-- associate with a user, see Limitations on IAM Entities in the Using IAM+-- guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html>+module Network.AWS.IAM.PutUserPolicy+    (+    -- * Request+      PutUserPolicy+    -- ** Request constructor+    , putUserPolicy+    -- ** Request lenses+    , pupPolicyDocument+    , pupPolicyName+    , pupUserName++    -- * Response+    , PutUserPolicyResponse+    -- ** Response constructor+    , putUserPolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data PutUserPolicy = PutUserPolicy+    { _pupPolicyDocument :: Text+    , _pupPolicyName     :: Text+    , _pupUserName       :: Text+    } deriving (Eq, Ord, Show)++-- | 'PutUserPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pupPolicyDocument' @::@ 'Text'+--+-- * 'pupPolicyName' @::@ 'Text'+--+-- * 'pupUserName' @::@ 'Text'+--+putUserPolicy :: Text -- ^ 'pupUserName'+              -> Text -- ^ 'pupPolicyName'+              -> Text -- ^ 'pupPolicyDocument'+              -> PutUserPolicy+putUserPolicy p1 p2 p3 = PutUserPolicy+    { _pupUserName       = p1+    , _pupPolicyName     = p2+    , _pupPolicyDocument = p3+    }++-- | The policy document.+pupPolicyDocument :: Lens' PutUserPolicy Text+pupPolicyDocument =+    lens _pupPolicyDocument (\s a -> s { _pupPolicyDocument = a })++-- | The name of the policy document.+pupPolicyName :: Lens' PutUserPolicy Text+pupPolicyName = lens _pupPolicyName (\s a -> s { _pupPolicyName = a })++-- | The name of the user to associate the policy with.+pupUserName :: Lens' PutUserPolicy Text+pupUserName = lens _pupUserName (\s a -> s { _pupUserName = a })++data PutUserPolicyResponse = PutUserPolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'PutUserPolicyResponse' constructor.+putUserPolicyResponse :: PutUserPolicyResponse+putUserPolicyResponse = PutUserPolicyResponse++instance ToPath PutUserPolicy where+    toPath = const "/"++instance ToQuery PutUserPolicy where+    toQuery PutUserPolicy{..} = mconcat+        [ "PolicyDocument" =? _pupPolicyDocument+        , "PolicyName"     =? _pupPolicyName+        , "UserName"       =? _pupUserName+        ]++instance ToHeaders PutUserPolicy++instance AWSRequest PutUserPolicy where+    type Sv PutUserPolicy = IAM+    type Rs PutUserPolicy = PutUserPolicyResponse++    request  = post "PutUserPolicy"+    response = nullResponse PutUserPolicyResponse
+ gen/Network/AWS/IAM/RemoveClientIDFromOpenIDConnectProvider.hs view
@@ -0,0 +1,109 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.RemoveClientIDFromOpenIDConnectProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Removes the specified client ID (also known as audience) from the list of+-- client IDs registered for the specified IAM OpenID Connect provider. This+-- action is idempotent; it does not fail or return an error if you try to+-- remove a client ID that was removed previously.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html>+module Network.AWS.IAM.RemoveClientIDFromOpenIDConnectProvider+    (+    -- * Request+      RemoveClientIDFromOpenIDConnectProvider+    -- ** Request constructor+    , removeClientIDFromOpenIDConnectProvider+    -- ** Request lenses+    , rcidfoidcpClientID+    , rcidfoidcpOpenIDConnectProviderArn++    -- * Response+    , RemoveClientIDFromOpenIDConnectProviderResponse+    -- ** Response constructor+    , removeClientIDFromOpenIDConnectProviderResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data RemoveClientIDFromOpenIDConnectProvider = RemoveClientIDFromOpenIDConnectProvider+    { _rcidfoidcpClientID                 :: Text+    , _rcidfoidcpOpenIDConnectProviderArn :: Text+    } deriving (Eq, Ord, Show)++-- | 'RemoveClientIDFromOpenIDConnectProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcidfoidcpClientID' @::@ 'Text'+--+-- * 'rcidfoidcpOpenIDConnectProviderArn' @::@ 'Text'+--+removeClientIDFromOpenIDConnectProvider :: Text -- ^ 'rcidfoidcpOpenIDConnectProviderArn'+                                        -> Text -- ^ 'rcidfoidcpClientID'+                                        -> RemoveClientIDFromOpenIDConnectProvider+removeClientIDFromOpenIDConnectProvider p1 p2 = RemoveClientIDFromOpenIDConnectProvider+    { _rcidfoidcpOpenIDConnectProviderArn = p1+    , _rcidfoidcpClientID                 = p2+    }++-- | The client ID (also known as audience) to remove from the IAM OpenID+-- Connect provider. For more information about client IDs, see+-- CreateOpenIDConnectProvider.+rcidfoidcpClientID :: Lens' RemoveClientIDFromOpenIDConnectProvider Text+rcidfoidcpClientID =+    lens _rcidfoidcpClientID (\s a -> s { _rcidfoidcpClientID = a })++-- | The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider+-- to remove the client ID from. You can get a list of OIDC provider ARNs by+-- using the ListOpenIDConnectProviders action.+rcidfoidcpOpenIDConnectProviderArn :: Lens' RemoveClientIDFromOpenIDConnectProvider Text+rcidfoidcpOpenIDConnectProviderArn =+    lens _rcidfoidcpOpenIDConnectProviderArn+        (\s a -> s { _rcidfoidcpOpenIDConnectProviderArn = a })++data RemoveClientIDFromOpenIDConnectProviderResponse = RemoveClientIDFromOpenIDConnectProviderResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'RemoveClientIDFromOpenIDConnectProviderResponse' constructor.+removeClientIDFromOpenIDConnectProviderResponse :: RemoveClientIDFromOpenIDConnectProviderResponse+removeClientIDFromOpenIDConnectProviderResponse = RemoveClientIDFromOpenIDConnectProviderResponse++instance ToPath RemoveClientIDFromOpenIDConnectProvider where+    toPath = const "/"++instance ToQuery RemoveClientIDFromOpenIDConnectProvider where+    toQuery RemoveClientIDFromOpenIDConnectProvider{..} = mconcat+        [ "ClientID"                 =? _rcidfoidcpClientID+        , "OpenIDConnectProviderArn" =? _rcidfoidcpOpenIDConnectProviderArn+        ]++instance ToHeaders RemoveClientIDFromOpenIDConnectProvider++instance AWSRequest RemoveClientIDFromOpenIDConnectProvider where+    type Sv RemoveClientIDFromOpenIDConnectProvider = IAM+    type Rs RemoveClientIDFromOpenIDConnectProvider = RemoveClientIDFromOpenIDConnectProviderResponse++    request  = post "RemoveClientIDFromOpenIDConnectProvider"+    response = nullResponse RemoveClientIDFromOpenIDConnectProviderResponse
+ gen/Network/AWS/IAM/RemoveRoleFromInstanceProfile.hs view
@@ -0,0 +1,107 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.RemoveRoleFromInstanceProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Removes the specified role from the specified instance profile. Make sure+-- you do not have any Amazon EC2 instances running with the role you are+-- about to remove from the instance profile. Removing a role from an instance+-- profile that is associated with a running instance will break any+-- applications running on the instance. For more information about roles, go+-- to Working with Roles. For more information about instance profiles, go to+-- About Instance Profiles.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html>+module Network.AWS.IAM.RemoveRoleFromInstanceProfile+    (+    -- * Request+      RemoveRoleFromInstanceProfile+    -- ** Request constructor+    , removeRoleFromInstanceProfile+    -- ** Request lenses+    , rrfipInstanceProfileName+    , rrfipRoleName++    -- * Response+    , RemoveRoleFromInstanceProfileResponse+    -- ** Response constructor+    , removeRoleFromInstanceProfileResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data RemoveRoleFromInstanceProfile = RemoveRoleFromInstanceProfile+    { _rrfipInstanceProfileName :: Text+    , _rrfipRoleName            :: Text+    } deriving (Eq, Ord, Show)++-- | 'RemoveRoleFromInstanceProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rrfipInstanceProfileName' @::@ 'Text'+--+-- * 'rrfipRoleName' @::@ 'Text'+--+removeRoleFromInstanceProfile :: Text -- ^ 'rrfipInstanceProfileName'+                              -> Text -- ^ 'rrfipRoleName'+                              -> RemoveRoleFromInstanceProfile+removeRoleFromInstanceProfile p1 p2 = RemoveRoleFromInstanceProfile+    { _rrfipInstanceProfileName = p1+    , _rrfipRoleName            = p2+    }++-- | The name of the instance profile to update.+rrfipInstanceProfileName :: Lens' RemoveRoleFromInstanceProfile Text+rrfipInstanceProfileName =+    lens _rrfipInstanceProfileName+        (\s a -> s { _rrfipInstanceProfileName = a })++-- | The name of the role to remove.+rrfipRoleName :: Lens' RemoveRoleFromInstanceProfile Text+rrfipRoleName = lens _rrfipRoleName (\s a -> s { _rrfipRoleName = a })++data RemoveRoleFromInstanceProfileResponse = RemoveRoleFromInstanceProfileResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'RemoveRoleFromInstanceProfileResponse' constructor.+removeRoleFromInstanceProfileResponse :: RemoveRoleFromInstanceProfileResponse+removeRoleFromInstanceProfileResponse = RemoveRoleFromInstanceProfileResponse++instance ToPath RemoveRoleFromInstanceProfile where+    toPath = const "/"++instance ToQuery RemoveRoleFromInstanceProfile where+    toQuery RemoveRoleFromInstanceProfile{..} = mconcat+        [ "InstanceProfileName" =? _rrfipInstanceProfileName+        , "RoleName"            =? _rrfipRoleName+        ]++instance ToHeaders RemoveRoleFromInstanceProfile++instance AWSRequest RemoveRoleFromInstanceProfile where+    type Sv RemoveRoleFromInstanceProfile = IAM+    type Rs RemoveRoleFromInstanceProfile = RemoveRoleFromInstanceProfileResponse++    request  = post "RemoveRoleFromInstanceProfile"+    response = nullResponse RemoveRoleFromInstanceProfileResponse
+ gen/Network/AWS/IAM/RemoveUserFromGroup.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.RemoveUserFromGroup+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Removes the specified user from the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html>+module Network.AWS.IAM.RemoveUserFromGroup+    (+    -- * Request+      RemoveUserFromGroup+    -- ** Request constructor+    , removeUserFromGroup+    -- ** Request lenses+    , rufgGroupName+    , rufgUserName++    -- * Response+    , RemoveUserFromGroupResponse+    -- ** Response constructor+    , removeUserFromGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data RemoveUserFromGroup = RemoveUserFromGroup+    { _rufgGroupName :: Text+    , _rufgUserName  :: Text+    } deriving (Eq, Ord, Show)++-- | 'RemoveUserFromGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rufgGroupName' @::@ 'Text'+--+-- * 'rufgUserName' @::@ 'Text'+--+removeUserFromGroup :: Text -- ^ 'rufgGroupName'+                    -> Text -- ^ 'rufgUserName'+                    -> RemoveUserFromGroup+removeUserFromGroup p1 p2 = RemoveUserFromGroup+    { _rufgGroupName = p1+    , _rufgUserName  = p2+    }++-- | The name of the group to update.+rufgGroupName :: Lens' RemoveUserFromGroup Text+rufgGroupName = lens _rufgGroupName (\s a -> s { _rufgGroupName = a })++-- | The name of the user to remove.+rufgUserName :: Lens' RemoveUserFromGroup Text+rufgUserName = lens _rufgUserName (\s a -> s { _rufgUserName = a })++data RemoveUserFromGroupResponse = RemoveUserFromGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'RemoveUserFromGroupResponse' constructor.+removeUserFromGroupResponse :: RemoveUserFromGroupResponse+removeUserFromGroupResponse = RemoveUserFromGroupResponse++instance ToPath RemoveUserFromGroup where+    toPath = const "/"++instance ToQuery RemoveUserFromGroup where+    toQuery RemoveUserFromGroup{..} = mconcat+        [ "GroupName" =? _rufgGroupName+        , "UserName"  =? _rufgUserName+        ]++instance ToHeaders RemoveUserFromGroup++instance AWSRequest RemoveUserFromGroup where+    type Sv RemoveUserFromGroup = IAM+    type Rs RemoveUserFromGroup = RemoveUserFromGroupResponse++    request  = post "RemoveUserFromGroup"+    response = nullResponse RemoveUserFromGroupResponse
+ gen/Network/AWS/IAM/ResyncMFADevice.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.ResyncMFADevice+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Synchronizes the specified MFA device with AWS servers. For more+-- information about creating and working with virtual MFA devices, go to+-- Using a Virtual MFA Device in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html>+module Network.AWS.IAM.ResyncMFADevice+    (+    -- * Request+      ResyncMFADevice+    -- ** Request constructor+    , resyncMFADevice+    -- ** Request lenses+    , rmfadAuthenticationCode1+    , rmfadAuthenticationCode2+    , rmfadSerialNumber+    , rmfadUserName++    -- * Response+    , ResyncMFADeviceResponse+    -- ** Response constructor+    , resyncMFADeviceResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data ResyncMFADevice = ResyncMFADevice+    { _rmfadAuthenticationCode1 :: Text+    , _rmfadAuthenticationCode2 :: Text+    , _rmfadSerialNumber        :: Text+    , _rmfadUserName            :: Text+    } deriving (Eq, Ord, Show)++-- | 'ResyncMFADevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rmfadAuthenticationCode1' @::@ 'Text'+--+-- * 'rmfadAuthenticationCode2' @::@ 'Text'+--+-- * 'rmfadSerialNumber' @::@ 'Text'+--+-- * 'rmfadUserName' @::@ 'Text'+--+resyncMFADevice :: Text -- ^ 'rmfadUserName'+                -> Text -- ^ 'rmfadSerialNumber'+                -> Text -- ^ 'rmfadAuthenticationCode1'+                -> Text -- ^ 'rmfadAuthenticationCode2'+                -> ResyncMFADevice+resyncMFADevice p1 p2 p3 p4 = ResyncMFADevice+    { _rmfadUserName            = p1+    , _rmfadSerialNumber        = p2+    , _rmfadAuthenticationCode1 = p3+    , _rmfadAuthenticationCode2 = p4+    }++-- | An authentication code emitted by the device.+rmfadAuthenticationCode1 :: Lens' ResyncMFADevice Text+rmfadAuthenticationCode1 =+    lens _rmfadAuthenticationCode1+        (\s a -> s { _rmfadAuthenticationCode1 = a })++-- | A subsequent authentication code emitted by the device.+rmfadAuthenticationCode2 :: Lens' ResyncMFADevice Text+rmfadAuthenticationCode2 =+    lens _rmfadAuthenticationCode2+        (\s a -> s { _rmfadAuthenticationCode2 = a })++-- | Serial number that uniquely identifies the MFA device.+rmfadSerialNumber :: Lens' ResyncMFADevice Text+rmfadSerialNumber =+    lens _rmfadSerialNumber (\s a -> s { _rmfadSerialNumber = a })++-- | The name of the user whose MFA device you want to resynchronize.+rmfadUserName :: Lens' ResyncMFADevice Text+rmfadUserName = lens _rmfadUserName (\s a -> s { _rmfadUserName = a })++data ResyncMFADeviceResponse = ResyncMFADeviceResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'ResyncMFADeviceResponse' constructor.+resyncMFADeviceResponse :: ResyncMFADeviceResponse+resyncMFADeviceResponse = ResyncMFADeviceResponse++instance ToPath ResyncMFADevice where+    toPath = const "/"++instance ToQuery ResyncMFADevice where+    toQuery ResyncMFADevice{..} = mconcat+        [ "AuthenticationCode1" =? _rmfadAuthenticationCode1+        , "AuthenticationCode2" =? _rmfadAuthenticationCode2+        , "SerialNumber"        =? _rmfadSerialNumber+        , "UserName"            =? _rmfadUserName+        ]++instance ToHeaders ResyncMFADevice++instance AWSRequest ResyncMFADevice where+    type Sv ResyncMFADevice = IAM+    type Rs ResyncMFADevice = ResyncMFADeviceResponse++    request  = post "ResyncMFADevice"+    response = nullResponse ResyncMFADeviceResponse
+ gen/Network/AWS/IAM/Types.hs view
@@ -0,0 +1,1451 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.Types+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++module Network.AWS.IAM.Types+    (+    -- * Service+      IAM+    -- ** Error+    , RESTError+    -- ** XML+    , ns++    -- * AssignmentStatusType+    , AssignmentStatusType (..)++    -- * PasswordPolicy+    , PasswordPolicy+    , passwordPolicy+    , ppAllowUsersToChangePassword+    , ppExpirePasswords+    , ppHardExpiry+    , ppMaxPasswordAge+    , ppMinimumPasswordLength+    , ppPasswordReusePrevention+    , ppRequireLowercaseCharacters+    , ppRequireNumbers+    , ppRequireSymbols+    , ppRequireUppercaseCharacters++    -- * Group+    , Group+    , group+    , gArn+    , gCreateDate+    , gGroupId+    , gGroupName+    , gPath++    -- * MFADevice+    , MFADevice+    , mfadevice+    , mfadEnableDate+    , mfadSerialNumber+    , mfadUserName++    -- * InstanceProfile+    , InstanceProfile+    , instanceProfile+    , ipArn+    , ipCreateDate+    , ipInstanceProfileId+    , ipInstanceProfileName+    , ipPath+    , ipRoles++    -- * ReportFormatType+    , ReportFormatType (..)++    -- * ServerCertificateMetadata+    , ServerCertificateMetadata+    , serverCertificateMetadata+    , scmArn+    , scmExpiration+    , scmPath+    , scmServerCertificateId+    , scmServerCertificateName+    , scmUploadDate++    -- * OpenIDConnectProviderListEntry+    , OpenIDConnectProviderListEntry+    , openIDConnectProviderListEntry+    , oidcpleArn++    -- * LoginProfile+    , LoginProfile+    , loginProfile+    , lpCreateDate+    , lpPasswordResetRequired+    , lpUserName++    -- * SummaryKeyType+    , SummaryKeyType (..)++    -- * ReportStateType+    , ReportStateType (..)++    -- * User+    , User+    , user+    , uArn+    , uCreateDate+    , uPasswordLastUsed+    , uPath+    , uUserId+    , uUserName++    -- * StatusType+    , StatusType (..)++    -- * SAMLProviderListEntry+    , SAMLProviderListEntry+    , samlproviderListEntry+    , samlpleArn+    , samlpleCreateDate+    , samlpleValidUntil++    -- * Role+    , Role+    , role+    , rArn+    , rAssumeRolePolicyDocument+    , rCreateDate+    , rPath+    , rRoleId+    , rRoleName++    -- * ServerCertificate+    , ServerCertificate+    , serverCertificate+    , scCertificateBody+    , scCertificateChain+    , scServerCertificateMetadata++    -- * AccessKey+    , AccessKey+    , accessKey+    , akAccessKeyId+    , akCreateDate+    , akSecretAccessKey+    , akStatus+    , akUserName++    -- * VirtualMFADevice+    , VirtualMFADevice+    , virtualMFADevice+    , vmfadBase32StringSeed+    , vmfadEnableDate+    , vmfadQRCodePNG+    , vmfadSerialNumber+    , vmfadUser++    -- * SigningCertificate+    , SigningCertificate+    , signingCertificate+    , sc1CertificateBody+    , sc1CertificateId+    , sc1Status+    , sc1UploadDate+    , sc1UserName++    -- * AccessKeyMetadata+    , AccessKeyMetadata+    , accessKeyMetadata+    , akmAccessKeyId+    , akmCreateDate+    , akmStatus+    , akmUserName+    ) where++import Network.AWS.Error+import Network.AWS.Prelude+import Network.AWS.Signing.V4+import qualified GHC.Exts++-- | Version @2010-05-08@ of the Amazon Identity and Access Management service.+data IAM++instance AWSService IAM where+    type Sg IAM = V4+    type Er IAM = RESTError++    service = Service+        { _svcEndpoint     = global+        , _svcAbbrev       = "IAM"+        , _svcPrefix       = "iam"+        , _svcVersion      = "2010-05-08"+        , _svcTargetPrefix = Nothing+        , _svcJSONVersion  = Nothing+        }++    handle = restError statusSuccess++ns :: Text+ns = "https://iam.amazonaws.com/doc/2010-05-08/"++data AssignmentStatusType+    = Any        -- ^ Any+    | Assigned   -- ^ Assigned+    | Unassigned -- ^ Unassigned+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable AssignmentStatusType++instance FromText AssignmentStatusType where+    parser = match "Any"        Any+         <|> match "Assigned"   Assigned+         <|> match "Unassigned" Unassigned++instance ToText AssignmentStatusType where+    toText = \case+        Any        -> "Any"+        Assigned   -> "Assigned"+        Unassigned -> "Unassigned"++instance FromXML AssignmentStatusType where+    parseXML = parseXMLText "AssignmentStatusType"++instance ToQuery AssignmentStatusType where+    toQuery = toQuery . toText++data PasswordPolicy = PasswordPolicy+    { _ppAllowUsersToChangePassword :: Maybe Bool+    , _ppExpirePasswords            :: Maybe Bool+    , _ppHardExpiry                 :: Maybe Bool+    , _ppMaxPasswordAge             :: Maybe Nat+    , _ppMinimumPasswordLength      :: Maybe Nat+    , _ppPasswordReusePrevention    :: Maybe Nat+    , _ppRequireLowercaseCharacters :: Maybe Bool+    , _ppRequireNumbers             :: Maybe Bool+    , _ppRequireSymbols             :: Maybe Bool+    , _ppRequireUppercaseCharacters :: Maybe Bool+    } deriving (Eq, Ord, Show)++-- | 'PasswordPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ppAllowUsersToChangePassword' @::@ 'Maybe' 'Bool'+--+-- * 'ppExpirePasswords' @::@ 'Maybe' 'Bool'+--+-- * 'ppHardExpiry' @::@ 'Maybe' 'Bool'+--+-- * 'ppMaxPasswordAge' @::@ 'Maybe' 'Natural'+--+-- * 'ppMinimumPasswordLength' @::@ 'Maybe' 'Natural'+--+-- * 'ppPasswordReusePrevention' @::@ 'Maybe' 'Natural'+--+-- * 'ppRequireLowercaseCharacters' @::@ 'Maybe' 'Bool'+--+-- * 'ppRequireNumbers' @::@ 'Maybe' 'Bool'+--+-- * 'ppRequireSymbols' @::@ 'Maybe' 'Bool'+--+-- * 'ppRequireUppercaseCharacters' @::@ 'Maybe' 'Bool'+--+passwordPolicy :: PasswordPolicy+passwordPolicy = PasswordPolicy+    { _ppMinimumPasswordLength      = Nothing+    , _ppRequireSymbols             = Nothing+    , _ppRequireNumbers             = Nothing+    , _ppRequireUppercaseCharacters = Nothing+    , _ppRequireLowercaseCharacters = Nothing+    , _ppAllowUsersToChangePassword = Nothing+    , _ppExpirePasswords            = Nothing+    , _ppMaxPasswordAge             = Nothing+    , _ppPasswordReusePrevention    = Nothing+    , _ppHardExpiry                 = Nothing+    }++-- | Specifies whether IAM users are allowed to change their own password.+ppAllowUsersToChangePassword :: Lens' PasswordPolicy (Maybe Bool)+ppAllowUsersToChangePassword =+    lens _ppAllowUsersToChangePassword+        (\s a -> s { _ppAllowUsersToChangePassword = a })++-- | Specifies whether IAM users are required to change their password after a+-- specified number of days.+ppExpirePasswords :: Lens' PasswordPolicy (Maybe Bool)+ppExpirePasswords =+    lens _ppExpirePasswords (\s a -> s { _ppExpirePasswords = a })++-- | Specifies whether IAM users are prevented from setting a new password+-- after their password has expired.+ppHardExpiry :: Lens' PasswordPolicy (Maybe Bool)+ppHardExpiry = lens _ppHardExpiry (\s a -> s { _ppHardExpiry = a })++-- | The number of days that an IAM user password is valid.+ppMaxPasswordAge :: Lens' PasswordPolicy (Maybe Natural)+ppMaxPasswordAge = lens _ppMaxPasswordAge (\s a -> s { _ppMaxPasswordAge = a }) . mapping _Nat++-- | Minimum length to require for IAM user passwords.+ppMinimumPasswordLength :: Lens' PasswordPolicy (Maybe Natural)+ppMinimumPasswordLength =+    lens _ppMinimumPasswordLength (\s a -> s { _ppMinimumPasswordLength = a })+        . mapping _Nat++-- | Specifies the number of previous passwords that IAM users are prevented+-- from reusing.+ppPasswordReusePrevention :: Lens' PasswordPolicy (Maybe Natural)+ppPasswordReusePrevention =+    lens _ppPasswordReusePrevention+        (\s a -> s { _ppPasswordReusePrevention = a })+            . mapping _Nat++-- | Specifies whether to require lowercase characters for IAM user passwords.+ppRequireLowercaseCharacters :: Lens' PasswordPolicy (Maybe Bool)+ppRequireLowercaseCharacters =+    lens _ppRequireLowercaseCharacters+        (\s a -> s { _ppRequireLowercaseCharacters = a })++-- | Specifies whether to require numbers for IAM user passwords.+ppRequireNumbers :: Lens' PasswordPolicy (Maybe Bool)+ppRequireNumbers = lens _ppRequireNumbers (\s a -> s { _ppRequireNumbers = a })++-- | Specifies whether to require symbols for IAM user passwords.+ppRequireSymbols :: Lens' PasswordPolicy (Maybe Bool)+ppRequireSymbols = lens _ppRequireSymbols (\s a -> s { _ppRequireSymbols = a })++-- | Specifies whether to require uppercase characters for IAM user passwords.+ppRequireUppercaseCharacters :: Lens' PasswordPolicy (Maybe Bool)+ppRequireUppercaseCharacters =+    lens _ppRequireUppercaseCharacters+        (\s a -> s { _ppRequireUppercaseCharacters = a })++instance FromXML PasswordPolicy where+    parseXML x = PasswordPolicy+        <$> x .@? "AllowUsersToChangePassword"+        <*> x .@? "ExpirePasswords"+        <*> x .@? "HardExpiry"+        <*> x .@? "MaxPasswordAge"+        <*> x .@? "MinimumPasswordLength"+        <*> x .@? "PasswordReusePrevention"+        <*> x .@? "RequireLowercaseCharacters"+        <*> x .@? "RequireNumbers"+        <*> x .@? "RequireSymbols"+        <*> x .@? "RequireUppercaseCharacters"++instance ToQuery PasswordPolicy where+    toQuery PasswordPolicy{..} = mconcat+        [ "AllowUsersToChangePassword" =? _ppAllowUsersToChangePassword+        , "ExpirePasswords"            =? _ppExpirePasswords+        , "HardExpiry"                 =? _ppHardExpiry+        , "MaxPasswordAge"             =? _ppMaxPasswordAge+        , "MinimumPasswordLength"      =? _ppMinimumPasswordLength+        , "PasswordReusePrevention"    =? _ppPasswordReusePrevention+        , "RequireLowercaseCharacters" =? _ppRequireLowercaseCharacters+        , "RequireNumbers"             =? _ppRequireNumbers+        , "RequireSymbols"             =? _ppRequireSymbols+        , "RequireUppercaseCharacters" =? _ppRequireUppercaseCharacters+        ]++data Group = Group+    { _gArn        :: Text+    , _gCreateDate :: RFC822+    , _gGroupId    :: Text+    , _gGroupName  :: Text+    , _gPath       :: Text+    } deriving (Eq, Ord, Show)++-- | 'Group' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gArn' @::@ 'Text'+--+-- * 'gCreateDate' @::@ 'UTCTime'+--+-- * 'gGroupId' @::@ 'Text'+--+-- * 'gGroupName' @::@ 'Text'+--+-- * 'gPath' @::@ 'Text'+--+group :: Text -- ^ 'gPath'+      -> Text -- ^ 'gGroupName'+      -> Text -- ^ 'gGroupId'+      -> Text -- ^ 'gArn'+      -> UTCTime -- ^ 'gCreateDate'+      -> Group+group p1 p2 p3 p4 p5 = Group+    { _gPath       = p1+    , _gGroupName  = p2+    , _gGroupId    = p3+    , _gArn        = p4+    , _gCreateDate = withIso _Time (const id) p5+    }++-- | The Amazon Resource Name (ARN) specifying the group. For more information+-- about ARNs and how to use them in policies, see IAM Identifiers in the+-- Using IAM guide.+gArn :: Lens' Group Text+gArn = lens _gArn (\s a -> s { _gArn = a })++-- | The date when the group was created.+gCreateDate :: Lens' Group UTCTime+gCreateDate = lens _gCreateDate (\s a -> s { _gCreateDate = a }) . _Time++-- | The stable and unique string identifying the group. For more information+-- about IDs, see IAM Identifiers in the Using IAM guide.+gGroupId :: Lens' Group Text+gGroupId = lens _gGroupId (\s a -> s { _gGroupId = a })++-- | The name that identifies the group.+gGroupName :: Lens' Group Text+gGroupName = lens _gGroupName (\s a -> s { _gGroupName = a })++-- | The path to the group. For more information about paths, see IAM+-- Identifiers in the Using IAM guide.+gPath :: Lens' Group Text+gPath = lens _gPath (\s a -> s { _gPath = a })++instance FromXML Group where+    parseXML x = Group+        <$> x .@  "Arn"+        <*> x .@  "CreateDate"+        <*> x .@  "GroupId"+        <*> x .@  "GroupName"+        <*> x .@  "Path"++instance ToQuery Group where+    toQuery Group{..} = mconcat+        [ "Arn"        =? _gArn+        , "CreateDate" =? _gCreateDate+        , "GroupId"    =? _gGroupId+        , "GroupName"  =? _gGroupName+        , "Path"       =? _gPath+        ]++data MFADevice = MFADevice+    { _mfadEnableDate   :: RFC822+    , _mfadSerialNumber :: Text+    , _mfadUserName     :: Text+    } deriving (Eq, Ord, Show)++-- | 'MFADevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mfadEnableDate' @::@ 'UTCTime'+--+-- * 'mfadSerialNumber' @::@ 'Text'+--+-- * 'mfadUserName' @::@ 'Text'+--+mfadevice :: Text -- ^ 'mfadUserName'+          -> Text -- ^ 'mfadSerialNumber'+          -> UTCTime -- ^ 'mfadEnableDate'+          -> MFADevice+mfadevice p1 p2 p3 = MFADevice+    { _mfadUserName     = p1+    , _mfadSerialNumber = p2+    , _mfadEnableDate   = withIso _Time (const id) p3+    }++-- | The date when the MFA device was enabled for the user.+mfadEnableDate :: Lens' MFADevice UTCTime+mfadEnableDate = lens _mfadEnableDate (\s a -> s { _mfadEnableDate = a }) . _Time++-- | The serial number that uniquely identifies the MFA device. For virtual+-- MFA devices, the serial number is the device ARN.+mfadSerialNumber :: Lens' MFADevice Text+mfadSerialNumber = lens _mfadSerialNumber (\s a -> s { _mfadSerialNumber = a })++-- | The user with whom the MFA device is associated.+mfadUserName :: Lens' MFADevice Text+mfadUserName = lens _mfadUserName (\s a -> s { _mfadUserName = a })++instance FromXML MFADevice where+    parseXML x = MFADevice+        <$> x .@  "EnableDate"+        <*> x .@  "SerialNumber"+        <*> x .@  "UserName"++instance ToQuery MFADevice where+    toQuery MFADevice{..} = mconcat+        [ "EnableDate"   =? _mfadEnableDate+        , "SerialNumber" =? _mfadSerialNumber+        , "UserName"     =? _mfadUserName+        ]++data InstanceProfile = InstanceProfile+    { _ipArn                 :: Text+    , _ipCreateDate          :: RFC822+    , _ipInstanceProfileId   :: Text+    , _ipInstanceProfileName :: Text+    , _ipPath                :: Text+    , _ipRoles               :: List "Roles" Role+    } deriving (Eq, Show)++-- | 'InstanceProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ipArn' @::@ 'Text'+--+-- * 'ipCreateDate' @::@ 'UTCTime'+--+-- * 'ipInstanceProfileId' @::@ 'Text'+--+-- * 'ipInstanceProfileName' @::@ 'Text'+--+-- * 'ipPath' @::@ 'Text'+--+-- * 'ipRoles' @::@ ['Role']+--+instanceProfile :: Text -- ^ 'ipPath'+                -> Text -- ^ 'ipInstanceProfileName'+                -> Text -- ^ 'ipInstanceProfileId'+                -> Text -- ^ 'ipArn'+                -> UTCTime -- ^ 'ipCreateDate'+                -> InstanceProfile+instanceProfile p1 p2 p3 p4 p5 = InstanceProfile+    { _ipPath                = p1+    , _ipInstanceProfileName = p2+    , _ipInstanceProfileId   = p3+    , _ipArn                 = p4+    , _ipCreateDate          = withIso _Time (const id) p5+    , _ipRoles               = mempty+    }++-- | The Amazon Resource Name (ARN) specifying the instance profile. For more+-- information about ARNs and how to use them in policies, see IAM+-- Identifiers in the Using IAM guide.+ipArn :: Lens' InstanceProfile Text+ipArn = lens _ipArn (\s a -> s { _ipArn = a })++-- | The date when the instance profile was created.+ipCreateDate :: Lens' InstanceProfile UTCTime+ipCreateDate = lens _ipCreateDate (\s a -> s { _ipCreateDate = a }) . _Time++-- | The stable and unique string identifying the instance profile. For more+-- information about IDs, see IAM Identifiers in the Using IAM guide.+ipInstanceProfileId :: Lens' InstanceProfile Text+ipInstanceProfileId =+    lens _ipInstanceProfileId (\s a -> s { _ipInstanceProfileId = a })++-- | The name identifying the instance profile.+ipInstanceProfileName :: Lens' InstanceProfile Text+ipInstanceProfileName =+    lens _ipInstanceProfileName (\s a -> s { _ipInstanceProfileName = a })++-- | The path to the instance profile. For more information about paths, see+-- IAM Identifiers in the Using IAM guide.+ipPath :: Lens' InstanceProfile Text+ipPath = lens _ipPath (\s a -> s { _ipPath = a })++-- | The role associated with the instance profile.+ipRoles :: Lens' InstanceProfile [Role]+ipRoles = lens _ipRoles (\s a -> s { _ipRoles = a }) . _List++instance FromXML InstanceProfile where+    parseXML x = InstanceProfile+        <$> x .@  "Arn"+        <*> x .@  "CreateDate"+        <*> x .@  "InstanceProfileId"+        <*> x .@  "InstanceProfileName"+        <*> x .@  "Path"+        <*> x .@  "Roles"++instance ToQuery InstanceProfile where+    toQuery InstanceProfile{..} = mconcat+        [ "Arn"                 =? _ipArn+        , "CreateDate"          =? _ipCreateDate+        , "InstanceProfileId"   =? _ipInstanceProfileId+        , "InstanceProfileName" =? _ipInstanceProfileName+        , "Path"                =? _ipPath+        , "Roles"               =? _ipRoles+        ]++data ReportFormatType+    = TextCsv -- ^ text/csv+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable ReportFormatType++instance FromText ReportFormatType where+    parser = match "text/csv" TextCsv++instance ToText ReportFormatType where+    toText TextCsv = "text/csv"++instance FromXML ReportFormatType where+    parseXML = parseXMLText "ReportFormatType"++instance ToQuery ReportFormatType where+    toQuery = toQuery . toText++data ServerCertificateMetadata = ServerCertificateMetadata+    { _scmArn                   :: Text+    , _scmExpiration            :: Maybe RFC822+    , _scmPath                  :: Text+    , _scmServerCertificateId   :: Text+    , _scmServerCertificateName :: Text+    , _scmUploadDate            :: Maybe RFC822+    } deriving (Eq, Ord, Show)++-- | 'ServerCertificateMetadata' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'scmArn' @::@ 'Text'+--+-- * 'scmExpiration' @::@ 'Maybe' 'UTCTime'+--+-- * 'scmPath' @::@ 'Text'+--+-- * 'scmServerCertificateId' @::@ 'Text'+--+-- * 'scmServerCertificateName' @::@ 'Text'+--+-- * 'scmUploadDate' @::@ 'Maybe' 'UTCTime'+--+serverCertificateMetadata :: Text -- ^ 'scmPath'+                          -> Text -- ^ 'scmServerCertificateName'+                          -> Text -- ^ 'scmServerCertificateId'+                          -> Text -- ^ 'scmArn'+                          -> ServerCertificateMetadata+serverCertificateMetadata p1 p2 p3 p4 = ServerCertificateMetadata+    { _scmPath                  = p1+    , _scmServerCertificateName = p2+    , _scmServerCertificateId   = p3+    , _scmArn                   = p4+    , _scmUploadDate            = Nothing+    , _scmExpiration            = Nothing+    }++-- | The Amazon Resource Name (ARN) specifying the server certificate. For+-- more information about ARNs and how to use them in policies, see IAM+-- Identifiers in the Using IAM guide.+scmArn :: Lens' ServerCertificateMetadata Text+scmArn = lens _scmArn (\s a -> s { _scmArn = a })++-- | The date on which the certificate is set to expire.+scmExpiration :: Lens' ServerCertificateMetadata (Maybe UTCTime)+scmExpiration = lens _scmExpiration (\s a -> s { _scmExpiration = a }) . mapping _Time++-- | The path to the server certificate. For more information about paths, see+-- IAM Identifiers in the Using IAM guide.+scmPath :: Lens' ServerCertificateMetadata Text+scmPath = lens _scmPath (\s a -> s { _scmPath = a })++-- | The stable and unique string identifying the server certificate. For more+-- information about IDs, see IAM Identifiers in the Using IAM guide.+scmServerCertificateId :: Lens' ServerCertificateMetadata Text+scmServerCertificateId =+    lens _scmServerCertificateId (\s a -> s { _scmServerCertificateId = a })++-- | The name that identifies the server certificate.+scmServerCertificateName :: Lens' ServerCertificateMetadata Text+scmServerCertificateName =+    lens _scmServerCertificateName+        (\s a -> s { _scmServerCertificateName = a })++-- | The date when the server certificate was uploaded.+scmUploadDate :: Lens' ServerCertificateMetadata (Maybe UTCTime)+scmUploadDate = lens _scmUploadDate (\s a -> s { _scmUploadDate = a }) . mapping _Time++instance FromXML ServerCertificateMetadata where+    parseXML x = ServerCertificateMetadata+        <$> x .@  "Arn"+        <*> x .@? "Expiration"+        <*> x .@  "Path"+        <*> x .@  "ServerCertificateId"+        <*> x .@  "ServerCertificateName"+        <*> x .@? "UploadDate"++instance ToQuery ServerCertificateMetadata where+    toQuery ServerCertificateMetadata{..} = mconcat+        [ "Arn"                   =? _scmArn+        , "Expiration"            =? _scmExpiration+        , "Path"                  =? _scmPath+        , "ServerCertificateId"   =? _scmServerCertificateId+        , "ServerCertificateName" =? _scmServerCertificateName+        , "UploadDate"            =? _scmUploadDate+        ]++newtype OpenIDConnectProviderListEntry = OpenIDConnectProviderListEntry+    { _oidcpleArn :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'OpenIDConnectProviderListEntry' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'oidcpleArn' @::@ 'Maybe' 'Text'+--+openIDConnectProviderListEntry :: OpenIDConnectProviderListEntry+openIDConnectProviderListEntry = OpenIDConnectProviderListEntry+    { _oidcpleArn = Nothing+    }++oidcpleArn :: Lens' OpenIDConnectProviderListEntry (Maybe Text)+oidcpleArn = lens _oidcpleArn (\s a -> s { _oidcpleArn = a })++instance FromXML OpenIDConnectProviderListEntry where+    parseXML x = OpenIDConnectProviderListEntry+        <$> x .@? "Arn"++instance ToQuery OpenIDConnectProviderListEntry where+    toQuery OpenIDConnectProviderListEntry{..} = mconcat+        [ "Arn" =? _oidcpleArn+        ]++data LoginProfile = LoginProfile+    { _lpCreateDate            :: RFC822+    , _lpPasswordResetRequired :: Maybe Bool+    , _lpUserName              :: Text+    } deriving (Eq, Ord, Show)++-- | 'LoginProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lpCreateDate' @::@ 'UTCTime'+--+-- * 'lpPasswordResetRequired' @::@ 'Maybe' 'Bool'+--+-- * 'lpUserName' @::@ 'Text'+--+loginProfile :: Text -- ^ 'lpUserName'+             -> UTCTime -- ^ 'lpCreateDate'+             -> LoginProfile+loginProfile p1 p2 = LoginProfile+    { _lpUserName              = p1+    , _lpCreateDate            = withIso _Time (const id) p2+    , _lpPasswordResetRequired = Nothing+    }++-- | The date when the password for the user was created.+lpCreateDate :: Lens' LoginProfile UTCTime+lpCreateDate = lens _lpCreateDate (\s a -> s { _lpCreateDate = a }) . _Time++-- | Specifies whether the user is required to set a new password on next+-- sign-in.+lpPasswordResetRequired :: Lens' LoginProfile (Maybe Bool)+lpPasswordResetRequired =+    lens _lpPasswordResetRequired (\s a -> s { _lpPasswordResetRequired = a })++-- | The name of the user, which can be used for signing in to the AWS+-- Management Console.+lpUserName :: Lens' LoginProfile Text+lpUserName = lens _lpUserName (\s a -> s { _lpUserName = a })++instance FromXML LoginProfile where+    parseXML x = LoginProfile+        <$> x .@  "CreateDate"+        <*> x .@? "PasswordResetRequired"+        <*> x .@  "UserName"++instance ToQuery LoginProfile where+    toQuery LoginProfile{..} = mconcat+        [ "CreateDate"            =? _lpCreateDate+        , "PasswordResetRequired" =? _lpPasswordResetRequired+        , "UserName"              =? _lpUserName+        ]++data SummaryKeyType+    = AccessKeysPerUserQuota          -- ^ AccessKeysPerUserQuota+    | AccountMFAEnabled               -- ^ AccountMFAEnabled+    | GroupPolicySizeQuota            -- ^ GroupPolicySizeQuota+    | Groups                          -- ^ Groups+    | GroupsPerUserQuota              -- ^ GroupsPerUserQuota+    | GroupsQuota                     -- ^ GroupsQuota+    | MFADevices                      -- ^ MFADevices+    | MFADevicesInUse                 -- ^ MFADevicesInUse+    | ServerCertificates              -- ^ ServerCertificates+    | ServerCertificatesQuota         -- ^ ServerCertificatesQuota+    | SigningCertificatesPerUserQuota -- ^ SigningCertificatesPerUserQuota+    | UserPolicySizeQuota             -- ^ UserPolicySizeQuota+    | Users                           -- ^ Users+    | UsersQuota                      -- ^ UsersQuota+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable SummaryKeyType++instance FromText SummaryKeyType where+    parser = match "AccessKeysPerUserQuota"          AccessKeysPerUserQuota+         <|> match "AccountMFAEnabled"               AccountMFAEnabled+         <|> match "GroupPolicySizeQuota"            GroupPolicySizeQuota+         <|> match "Groups"                          Groups+         <|> match "GroupsPerUserQuota"              GroupsPerUserQuota+         <|> match "GroupsQuota"                     GroupsQuota+         <|> match "MFADevices"                      MFADevices+         <|> match "MFADevicesInUse"                 MFADevicesInUse+         <|> match "ServerCertificates"              ServerCertificates+         <|> match "ServerCertificatesQuota"         ServerCertificatesQuota+         <|> match "SigningCertificatesPerUserQuota" SigningCertificatesPerUserQuota+         <|> match "UserPolicySizeQuota"             UserPolicySizeQuota+         <|> match "Users"                           Users+         <|> match "UsersQuota"                      UsersQuota++instance ToText SummaryKeyType where+    toText = \case+        AccessKeysPerUserQuota          -> "AccessKeysPerUserQuota"+        AccountMFAEnabled               -> "AccountMFAEnabled"+        GroupPolicySizeQuota            -> "GroupPolicySizeQuota"+        Groups                          -> "Groups"+        GroupsPerUserQuota              -> "GroupsPerUserQuota"+        GroupsQuota                     -> "GroupsQuota"+        MFADevices                      -> "MFADevices"+        MFADevicesInUse                 -> "MFADevicesInUse"+        ServerCertificates              -> "ServerCertificates"+        ServerCertificatesQuota         -> "ServerCertificatesQuota"+        SigningCertificatesPerUserQuota -> "SigningCertificatesPerUserQuota"+        UserPolicySizeQuota             -> "UserPolicySizeQuota"+        Users                           -> "Users"+        UsersQuota                      -> "UsersQuota"++instance FromXML SummaryKeyType where+    parseXML = parseXMLText "SummaryKeyType"++instance ToQuery SummaryKeyType where+    toQuery = toQuery . toText++data ReportStateType+    = Complete   -- ^ COMPLETE+    | Inprogress -- ^ INPROGRESS+    | Started    -- ^ STARTED+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable ReportStateType++instance FromText ReportStateType where+    parser = match "COMPLETE"   Complete+         <|> match "INPROGRESS" Inprogress+         <|> match "STARTED"    Started++instance ToText ReportStateType where+    toText = \case+        Complete   -> "COMPLETE"+        Inprogress -> "INPROGRESS"+        Started    -> "STARTED"++instance FromXML ReportStateType where+    parseXML = parseXMLText "ReportStateType"++instance ToQuery ReportStateType where+    toQuery = toQuery . toText++data User = User+    { _uArn              :: Text+    , _uCreateDate       :: RFC822+    , _uPasswordLastUsed :: Maybe RFC822+    , _uPath             :: Text+    , _uUserId           :: Text+    , _uUserName         :: Text+    } deriving (Eq, Ord, Show)++-- | 'User' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uArn' @::@ 'Text'+--+-- * 'uCreateDate' @::@ 'UTCTime'+--+-- * 'uPasswordLastUsed' @::@ 'Maybe' 'UTCTime'+--+-- * 'uPath' @::@ 'Text'+--+-- * 'uUserId' @::@ 'Text'+--+-- * 'uUserName' @::@ 'Text'+--+user :: Text -- ^ 'uPath'+     -> Text -- ^ 'uUserName'+     -> Text -- ^ 'uUserId'+     -> Text -- ^ 'uArn'+     -> UTCTime -- ^ 'uCreateDate'+     -> User+user p1 p2 p3 p4 p5 = User+    { _uPath             = p1+    , _uUserName         = p2+    , _uUserId           = p3+    , _uArn              = p4+    , _uCreateDate       = withIso _Time (const id) p5+    , _uPasswordLastUsed = Nothing+    }++-- | The Amazon Resource Name (ARN) that identifies the user. For more+-- information about ARNs and how to use ARNs in policies, see IAM+-- Identifiers in the Using IAM guide.+uArn :: Lens' User Text+uArn = lens _uArn (\s a -> s { _uArn = a })++-- | The date and time, in ISO 8601 date-time format, when the user was+-- created.+uCreateDate :: Lens' User UTCTime+uCreateDate = lens _uCreateDate (\s a -> s { _uCreateDate = a }) . _Time++-- | The date and time, in ISO 8601 date-time format, when the user's password+-- was last used to sign in to an AWS website. For a list of AWS websites+-- that capture a user's last sign-in time, see the Credential Reports topic+-- in the Using IAM guide. If a password is used more than once in a+-- five-minute span, only the first use is returned in this field. When the+-- user does not have a password, this field is null (not present). When a+-- user's password exists but has never been used, or when there is no+-- sign-in data associated with the user, this field is null (not present).+-- This value is returned only in the GetUser and ListUsers actions.+uPasswordLastUsed :: Lens' User (Maybe UTCTime)+uPasswordLastUsed =+    lens _uPasswordLastUsed (\s a -> s { _uPasswordLastUsed = a })+        . mapping _Time++-- | The path to the user. For more information about paths, see IAM+-- Identifiers in the Using IAM guide.+uPath :: Lens' User Text+uPath = lens _uPath (\s a -> s { _uPath = a })++-- | The stable and unique string identifying the user. For more information+-- about IDs, see IAM Identifiers in the Using IAM guide.+uUserId :: Lens' User Text+uUserId = lens _uUserId (\s a -> s { _uUserId = a })++-- | The friendly name identifying the user.+uUserName :: Lens' User Text+uUserName = lens _uUserName (\s a -> s { _uUserName = a })++instance FromXML User where+    parseXML x = User+        <$> x .@  "Arn"+        <*> x .@  "CreateDate"+        <*> x .@? "PasswordLastUsed"+        <*> x .@  "Path"+        <*> x .@  "UserId"+        <*> x .@  "UserName"++instance ToQuery User where+    toQuery User{..} = mconcat+        [ "Arn"              =? _uArn+        , "CreateDate"       =? _uCreateDate+        , "PasswordLastUsed" =? _uPasswordLastUsed+        , "Path"             =? _uPath+        , "UserId"           =? _uUserId+        , "UserName"         =? _uUserName+        ]++data StatusType+    = Active   -- ^ Active+    | Inactive -- ^ Inactive+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable StatusType++instance FromText StatusType where+    parser = match "Active"   Active+         <|> match "Inactive" Inactive++instance ToText StatusType where+    toText = \case+        Active   -> "Active"+        Inactive -> "Inactive"++instance FromXML StatusType where+    parseXML = parseXMLText "StatusType"++instance ToQuery StatusType where+    toQuery = toQuery . toText++data SAMLProviderListEntry = SAMLProviderListEntry+    { _samlpleArn        :: Maybe Text+    , _samlpleCreateDate :: Maybe RFC822+    , _samlpleValidUntil :: Maybe RFC822+    } deriving (Eq, Ord, Show)++-- | 'SAMLProviderListEntry' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'samlpleArn' @::@ 'Maybe' 'Text'+--+-- * 'samlpleCreateDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'samlpleValidUntil' @::@ 'Maybe' 'UTCTime'+--+samlproviderListEntry :: SAMLProviderListEntry+samlproviderListEntry = SAMLProviderListEntry+    { _samlpleArn        = Nothing+    , _samlpleValidUntil = Nothing+    , _samlpleCreateDate = Nothing+    }++-- | The Amazon Resource Name (ARN) of the SAML provider.+samlpleArn :: Lens' SAMLProviderListEntry (Maybe Text)+samlpleArn = lens _samlpleArn (\s a -> s { _samlpleArn = a })++-- | The date and time when the SAML provider was created.+samlpleCreateDate :: Lens' SAMLProviderListEntry (Maybe UTCTime)+samlpleCreateDate =+    lens _samlpleCreateDate (\s a -> s { _samlpleCreateDate = a })+        . mapping _Time++-- | The expiration date and time for the SAML provider.+samlpleValidUntil :: Lens' SAMLProviderListEntry (Maybe UTCTime)+samlpleValidUntil =+    lens _samlpleValidUntil (\s a -> s { _samlpleValidUntil = a })+        . mapping _Time++instance FromXML SAMLProviderListEntry where+    parseXML x = SAMLProviderListEntry+        <$> x .@? "Arn"+        <*> x .@? "CreateDate"+        <*> x .@? "ValidUntil"++instance ToQuery SAMLProviderListEntry where+    toQuery SAMLProviderListEntry{..} = mconcat+        [ "Arn"        =? _samlpleArn+        , "CreateDate" =? _samlpleCreateDate+        , "ValidUntil" =? _samlpleValidUntil+        ]++data Role = Role+    { _rArn                      :: Text+    , _rAssumeRolePolicyDocument :: Maybe Text+    , _rCreateDate               :: RFC822+    , _rPath                     :: Text+    , _rRoleId                   :: Text+    , _rRoleName                 :: Text+    } deriving (Eq, Ord, Show)++-- | 'Role' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rArn' @::@ 'Text'+--+-- * 'rAssumeRolePolicyDocument' @::@ 'Maybe' 'Text'+--+-- * 'rCreateDate' @::@ 'UTCTime'+--+-- * 'rPath' @::@ 'Text'+--+-- * 'rRoleId' @::@ 'Text'+--+-- * 'rRoleName' @::@ 'Text'+--+role :: Text -- ^ 'rPath'+     -> Text -- ^ 'rRoleName'+     -> Text -- ^ 'rRoleId'+     -> Text -- ^ 'rArn'+     -> UTCTime -- ^ 'rCreateDate'+     -> Role+role p1 p2 p3 p4 p5 = Role+    { _rPath                     = p1+    , _rRoleName                 = p2+    , _rRoleId                   = p3+    , _rArn                      = p4+    , _rCreateDate               = withIso _Time (const id) p5+    , _rAssumeRolePolicyDocument = Nothing+    }++-- | The Amazon Resource Name (ARN) specifying the role. For more information+-- about ARNs and how to use them in policies, see IAM Identifiers in the+-- Using IAM guide.+rArn :: Lens' Role Text+rArn = lens _rArn (\s a -> s { _rArn = a })++-- | The policy that grants an entity permission to assume the role. The+-- returned policy is URL-encoded according to RFC 3986. For more+-- information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.+rAssumeRolePolicyDocument :: Lens' Role (Maybe Text)+rAssumeRolePolicyDocument =+    lens _rAssumeRolePolicyDocument+        (\s a -> s { _rAssumeRolePolicyDocument = a })++-- | The date when the role was created.+rCreateDate :: Lens' Role UTCTime+rCreateDate = lens _rCreateDate (\s a -> s { _rCreateDate = a }) . _Time++-- | The path to the role. For more information about paths, see IAM+-- Identifiers in the Using IAM guide.+rPath :: Lens' Role Text+rPath = lens _rPath (\s a -> s { _rPath = a })++-- | The stable and unique string identifying the role. For more information+-- about IDs, see IAM Identifiers in the Using IAM guide.+rRoleId :: Lens' Role Text+rRoleId = lens _rRoleId (\s a -> s { _rRoleId = a })++-- | The name that identifies the role.+rRoleName :: Lens' Role Text+rRoleName = lens _rRoleName (\s a -> s { _rRoleName = a })++instance FromXML Role where+    parseXML x = Role+        <$> x .@  "Arn"+        <*> x .@? "AssumeRolePolicyDocument"+        <*> x .@  "CreateDate"+        <*> x .@  "Path"+        <*> x .@  "RoleId"+        <*> x .@  "RoleName"++instance ToQuery Role where+    toQuery Role{..} = mconcat+        [ "Arn"                      =? _rArn+        , "AssumeRolePolicyDocument" =? _rAssumeRolePolicyDocument+        , "CreateDate"               =? _rCreateDate+        , "Path"                     =? _rPath+        , "RoleId"                   =? _rRoleId+        , "RoleName"                 =? _rRoleName+        ]++data ServerCertificate = ServerCertificate+    { _scCertificateBody           :: Text+    , _scCertificateChain          :: Maybe Text+    , _scServerCertificateMetadata :: ServerCertificateMetadata+    } deriving (Eq, Show)++-- | 'ServerCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'scCertificateBody' @::@ 'Text'+--+-- * 'scCertificateChain' @::@ 'Maybe' 'Text'+--+-- * 'scServerCertificateMetadata' @::@ 'ServerCertificateMetadata'+--+serverCertificate :: ServerCertificateMetadata -- ^ 'scServerCertificateMetadata'+                  -> Text -- ^ 'scCertificateBody'+                  -> ServerCertificate+serverCertificate p1 p2 = ServerCertificate+    { _scServerCertificateMetadata = p1+    , _scCertificateBody           = p2+    , _scCertificateChain          = Nothing+    }++-- | The contents of the public key certificate.+scCertificateBody :: Lens' ServerCertificate Text+scCertificateBody =+    lens _scCertificateBody (\s a -> s { _scCertificateBody = a })++-- | The contents of the public key certificate chain.+scCertificateChain :: Lens' ServerCertificate (Maybe Text)+scCertificateChain =+    lens _scCertificateChain (\s a -> s { _scCertificateChain = a })++-- | The meta information of the server certificate, such as its name, path,+-- ID, and ARN.+scServerCertificateMetadata :: Lens' ServerCertificate ServerCertificateMetadata+scServerCertificateMetadata =+    lens _scServerCertificateMetadata+        (\s a -> s { _scServerCertificateMetadata = a })++instance FromXML ServerCertificate where+    parseXML x = ServerCertificate+        <$> x .@  "CertificateBody"+        <*> x .@? "CertificateChain"+        <*> x .@  "ServerCertificateMetadata"++instance ToQuery ServerCertificate where+    toQuery ServerCertificate{..} = mconcat+        [ "CertificateBody"           =? _scCertificateBody+        , "CertificateChain"          =? _scCertificateChain+        , "ServerCertificateMetadata" =? _scServerCertificateMetadata+        ]++data AccessKey = AccessKey+    { _akAccessKeyId     :: Text+    , _akCreateDate      :: Maybe RFC822+    , _akSecretAccessKey :: Sensitive Text+    , _akStatus          :: Text+    , _akUserName        :: Text+    } deriving (Eq, Ord, Show)++-- | 'AccessKey' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'akAccessKeyId' @::@ 'Text'+--+-- * 'akCreateDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'akSecretAccessKey' @::@ 'Text'+--+-- * 'akStatus' @::@ 'Text'+--+-- * 'akUserName' @::@ 'Text'+--+accessKey :: Text -- ^ 'akUserName'+          -> Text -- ^ 'akAccessKeyId'+          -> Text -- ^ 'akStatus'+          -> Text -- ^ 'akSecretAccessKey'+          -> AccessKey+accessKey p1 p2 p3 p4 = AccessKey+    { _akUserName        = p1+    , _akAccessKeyId     = p2+    , _akStatus          = p3+    , _akSecretAccessKey = withIso _Sensitive (const id) p4+    , _akCreateDate      = Nothing+    }++-- | The ID for this access key.+akAccessKeyId :: Lens' AccessKey Text+akAccessKeyId = lens _akAccessKeyId (\s a -> s { _akAccessKeyId = a })++-- | The date when the access key was created.+akCreateDate :: Lens' AccessKey (Maybe UTCTime)+akCreateDate = lens _akCreateDate (\s a -> s { _akCreateDate = a }) . mapping _Time++-- | The secret key used to sign requests.+akSecretAccessKey :: Lens' AccessKey Text+akSecretAccessKey =+    lens _akSecretAccessKey (\s a -> s { _akSecretAccessKey = a })+        . _Sensitive++-- | The status of the access key. Active means the key is valid for API+-- calls, while Inactive means it is not.+akStatus :: Lens' AccessKey Text+akStatus = lens _akStatus (\s a -> s { _akStatus = a })++-- | The name of the IAM user that the access key is associated with.+akUserName :: Lens' AccessKey Text+akUserName = lens _akUserName (\s a -> s { _akUserName = a })++instance FromXML AccessKey where+    parseXML x = AccessKey+        <$> x .@  "AccessKeyId"+        <*> x .@? "CreateDate"+        <*> x .@  "SecretAccessKey"+        <*> x .@  "Status"+        <*> x .@  "UserName"++instance ToQuery AccessKey where+    toQuery AccessKey{..} = mconcat+        [ "AccessKeyId"     =? _akAccessKeyId+        , "CreateDate"      =? _akCreateDate+        , "SecretAccessKey" =? _akSecretAccessKey+        , "Status"          =? _akStatus+        , "UserName"        =? _akUserName+        ]++data VirtualMFADevice = VirtualMFADevice+    { _vmfadBase32StringSeed :: Maybe Base64+    , _vmfadEnableDate       :: Maybe RFC822+    , _vmfadQRCodePNG        :: Maybe Base64+    , _vmfadSerialNumber     :: Text+    , _vmfadUser             :: Maybe User+    } deriving (Eq, Show)++-- | 'VirtualMFADevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vmfadBase32StringSeed' @::@ 'Maybe' 'Base64'+--+-- * 'vmfadEnableDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'vmfadQRCodePNG' @::@ 'Maybe' 'Base64'+--+-- * 'vmfadSerialNumber' @::@ 'Text'+--+-- * 'vmfadUser' @::@ 'Maybe' 'User'+--+virtualMFADevice :: Text -- ^ 'vmfadSerialNumber'+                 -> VirtualMFADevice+virtualMFADevice p1 = VirtualMFADevice+    { _vmfadSerialNumber     = p1+    , _vmfadBase32StringSeed = Nothing+    , _vmfadQRCodePNG        = Nothing+    , _vmfadUser             = Nothing+    , _vmfadEnableDate       = Nothing+    }++-- | The Base32 seed defined as specified in RFC3548. The Base32StringSeed is+-- Base64-encoded.+vmfadBase32StringSeed :: Lens' VirtualMFADevice (Maybe Base64)+vmfadBase32StringSeed =+    lens _vmfadBase32StringSeed (\s a -> s { _vmfadBase32StringSeed = a })++-- | The date and time on which the virtual MFA device was enabled.+vmfadEnableDate :: Lens' VirtualMFADevice (Maybe UTCTime)+vmfadEnableDate = lens _vmfadEnableDate (\s a -> s { _vmfadEnableDate = a }) . mapping _Time++-- | A QR code PNG image that encodes+-- otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String+-- where $virtualMFADeviceName is one of the create call arguments,+-- AccountName is the user name if set (otherwise, the account ID+-- otherwise), and Base32String is the seed in Base32 format. The+-- Base32String value is Base64-encoded.+vmfadQRCodePNG :: Lens' VirtualMFADevice (Maybe Base64)+vmfadQRCodePNG = lens _vmfadQRCodePNG (\s a -> s { _vmfadQRCodePNG = a })++-- | The serial number associated with VirtualMFADevice.+vmfadSerialNumber :: Lens' VirtualMFADevice Text+vmfadSerialNumber =+    lens _vmfadSerialNumber (\s a -> s { _vmfadSerialNumber = a })++vmfadUser :: Lens' VirtualMFADevice (Maybe User)+vmfadUser = lens _vmfadUser (\s a -> s { _vmfadUser = a })++instance FromXML VirtualMFADevice where+    parseXML x = VirtualMFADevice+        <$> x .@? "Base32StringSeed"+        <*> x .@? "EnableDate"+        <*> x .@? "QRCodePNG"+        <*> x .@  "SerialNumber"+        <*> x .@? "User"++instance ToQuery VirtualMFADevice where+    toQuery VirtualMFADevice{..} = mconcat+        [ "Base32StringSeed" =? _vmfadBase32StringSeed+        , "EnableDate"       =? _vmfadEnableDate+        , "QRCodePNG"        =? _vmfadQRCodePNG+        , "SerialNumber"     =? _vmfadSerialNumber+        , "User"             =? _vmfadUser+        ]++data SigningCertificate = SigningCertificate+    { _sc1CertificateBody :: Text+    , _sc1CertificateId   :: Text+    , _sc1Status          :: Text+    , _sc1UploadDate      :: Maybe RFC822+    , _sc1UserName        :: Text+    } deriving (Eq, Ord, Show)++-- | 'SigningCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sc1CertificateBody' @::@ 'Text'+--+-- * 'sc1CertificateId' @::@ 'Text'+--+-- * 'sc1Status' @::@ 'Text'+--+-- * 'sc1UploadDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'sc1UserName' @::@ 'Text'+--+signingCertificate :: Text -- ^ 'sc1UserName'+                   -> Text -- ^ 'sc1CertificateId'+                   -> Text -- ^ 'sc1CertificateBody'+                   -> Text -- ^ 'sc1Status'+                   -> SigningCertificate+signingCertificate p1 p2 p3 p4 = SigningCertificate+    { _sc1UserName        = p1+    , _sc1CertificateId   = p2+    , _sc1CertificateBody = p3+    , _sc1Status          = p4+    , _sc1UploadDate      = Nothing+    }++-- | The contents of the signing certificate.+sc1CertificateBody :: Lens' SigningCertificate Text+sc1CertificateBody =+    lens _sc1CertificateBody (\s a -> s { _sc1CertificateBody = a })++-- | The ID for the signing certificate.+sc1CertificateId :: Lens' SigningCertificate Text+sc1CertificateId = lens _sc1CertificateId (\s a -> s { _sc1CertificateId = a })++-- | The status of the signing certificate. Active means the key is valid for+-- API calls, while Inactive means it is not.+sc1Status :: Lens' SigningCertificate Text+sc1Status = lens _sc1Status (\s a -> s { _sc1Status = a })++-- | The date when the signing certificate was uploaded.+sc1UploadDate :: Lens' SigningCertificate (Maybe UTCTime)+sc1UploadDate = lens _sc1UploadDate (\s a -> s { _sc1UploadDate = a }) . mapping _Time++-- | The name of the user the signing certificate is associated with.+sc1UserName :: Lens' SigningCertificate Text+sc1UserName = lens _sc1UserName (\s a -> s { _sc1UserName = a })++instance FromXML SigningCertificate where+    parseXML x = SigningCertificate+        <$> x .@  "CertificateBody"+        <*> x .@  "CertificateId"+        <*> x .@  "Status"+        <*> x .@? "UploadDate"+        <*> x .@  "UserName"++instance ToQuery SigningCertificate where+    toQuery SigningCertificate{..} = mconcat+        [ "CertificateBody" =? _sc1CertificateBody+        , "CertificateId"   =? _sc1CertificateId+        , "Status"          =? _sc1Status+        , "UploadDate"      =? _sc1UploadDate+        , "UserName"        =? _sc1UserName+        ]++data AccessKeyMetadata = AccessKeyMetadata+    { _akmAccessKeyId :: Maybe Text+    , _akmCreateDate  :: Maybe RFC822+    , _akmStatus      :: Maybe Text+    , _akmUserName    :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'AccessKeyMetadata' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'akmAccessKeyId' @::@ 'Maybe' 'Text'+--+-- * 'akmCreateDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'akmStatus' @::@ 'Maybe' 'Text'+--+-- * 'akmUserName' @::@ 'Maybe' 'Text'+--+accessKeyMetadata :: AccessKeyMetadata+accessKeyMetadata = AccessKeyMetadata+    { _akmUserName    = Nothing+    , _akmAccessKeyId = Nothing+    , _akmStatus      = Nothing+    , _akmCreateDate  = Nothing+    }++-- | The ID for this access key.+akmAccessKeyId :: Lens' AccessKeyMetadata (Maybe Text)+akmAccessKeyId = lens _akmAccessKeyId (\s a -> s { _akmAccessKeyId = a })++-- | The date when the access key was created.+akmCreateDate :: Lens' AccessKeyMetadata (Maybe UTCTime)+akmCreateDate = lens _akmCreateDate (\s a -> s { _akmCreateDate = a }) . mapping _Time++-- | The status of the access key. Active means the key is valid for API+-- calls; Inactive means it is not.+akmStatus :: Lens' AccessKeyMetadata (Maybe Text)+akmStatus = lens _akmStatus (\s a -> s { _akmStatus = a })++-- | The name of the IAM user that the key is associated with.+akmUserName :: Lens' AccessKeyMetadata (Maybe Text)+akmUserName = lens _akmUserName (\s a -> s { _akmUserName = a })++instance FromXML AccessKeyMetadata where+    parseXML x = AccessKeyMetadata+        <$> x .@? "AccessKeyId"+        <*> x .@? "CreateDate"+        <*> x .@? "Status"+        <*> x .@? "UserName"++instance ToQuery AccessKeyMetadata where+    toQuery AccessKeyMetadata{..} = mconcat+        [ "AccessKeyId" =? _akmAccessKeyId+        , "CreateDate"  =? _akmCreateDate+        , "Status"      =? _akmStatus+        , "UserName"    =? _akmUserName+        ]
+ gen/Network/AWS/IAM/UpdateAccessKey.hs view
@@ -0,0 +1,118 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateAccessKey+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Changes the status of the specified access key from Active to Inactive, or+-- vice versa. This action can be used to disable a user's key as part of a+-- key rotation work flow. If the UserName field is not specified, the+-- UserName is determined implicitly based on the AWS access key ID used to+-- sign the request. Because this action works for access keys under the AWS+-- account, you can use this action to manage root credentials even if the AWS+-- account has no associated users. For information about rotating keys, see+-- Managing Keys and Certificates in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html>+module Network.AWS.IAM.UpdateAccessKey+    (+    -- * Request+      UpdateAccessKey+    -- ** Request constructor+    , updateAccessKey+    -- ** Request lenses+    , uakAccessKeyId+    , uakStatus+    , uakUserName++    -- * Response+    , UpdateAccessKeyResponse+    -- ** Response constructor+    , updateAccessKeyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateAccessKey = UpdateAccessKey+    { _uakAccessKeyId :: Text+    , _uakStatus      :: Text+    , _uakUserName    :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateAccessKey' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uakAccessKeyId' @::@ 'Text'+--+-- * 'uakStatus' @::@ 'Text'+--+-- * 'uakUserName' @::@ 'Maybe' 'Text'+--+updateAccessKey :: Text -- ^ 'uakAccessKeyId'+                -> Text -- ^ 'uakStatus'+                -> UpdateAccessKey+updateAccessKey p1 p2 = UpdateAccessKey+    { _uakAccessKeyId = p1+    , _uakStatus      = p2+    , _uakUserName    = Nothing+    }++-- | The access key ID of the secret access key you want to update.+uakAccessKeyId :: Lens' UpdateAccessKey Text+uakAccessKeyId = lens _uakAccessKeyId (\s a -> s { _uakAccessKeyId = a })++-- | The status you want to assign to the secret access key. Active means the+-- key can be used for API calls to AWS, while Inactive means the key cannot+-- be used.+uakStatus :: Lens' UpdateAccessKey Text+uakStatus = lens _uakStatus (\s a -> s { _uakStatus = a })++-- | The name of the user whose key you want to update.+uakUserName :: Lens' UpdateAccessKey (Maybe Text)+uakUserName = lens _uakUserName (\s a -> s { _uakUserName = a })++data UpdateAccessKeyResponse = UpdateAccessKeyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateAccessKeyResponse' constructor.+updateAccessKeyResponse :: UpdateAccessKeyResponse+updateAccessKeyResponse = UpdateAccessKeyResponse++instance ToPath UpdateAccessKey where+    toPath = const "/"++instance ToQuery UpdateAccessKey where+    toQuery UpdateAccessKey{..} = mconcat+        [ "AccessKeyId" =? _uakAccessKeyId+        , "Status"      =? _uakStatus+        , "UserName"    =? _uakUserName+        ]++instance ToHeaders UpdateAccessKey++instance AWSRequest UpdateAccessKey where+    type Sv UpdateAccessKey = IAM+    type Rs UpdateAccessKey = UpdateAccessKeyResponse++    request  = post "UpdateAccessKey"+    response = nullResponse UpdateAccessKeyResponse
+ gen/Network/AWS/IAM/UpdateAccountPasswordPolicy.hs view
@@ -0,0 +1,199 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateAccountPasswordPolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Updates the password policy settings for the AWS account. For more+-- information about using a password policy, see Managing an IAM Password+-- Policy in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html>+module Network.AWS.IAM.UpdateAccountPasswordPolicy+    (+    -- * Request+      UpdateAccountPasswordPolicy+    -- ** Request constructor+    , updateAccountPasswordPolicy+    -- ** Request lenses+    , uappAllowUsersToChangePassword+    , uappHardExpiry+    , uappMaxPasswordAge+    , uappMinimumPasswordLength+    , uappPasswordReusePrevention+    , uappRequireLowercaseCharacters+    , uappRequireNumbers+    , uappRequireSymbols+    , uappRequireUppercaseCharacters++    -- * Response+    , UpdateAccountPasswordPolicyResponse+    -- ** Response constructor+    , updateAccountPasswordPolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateAccountPasswordPolicy = UpdateAccountPasswordPolicy+    { _uappAllowUsersToChangePassword :: Maybe Bool+    , _uappHardExpiry                 :: Maybe Bool+    , _uappMaxPasswordAge             :: Maybe Nat+    , _uappMinimumPasswordLength      :: Maybe Nat+    , _uappPasswordReusePrevention    :: Maybe Nat+    , _uappRequireLowercaseCharacters :: Maybe Bool+    , _uappRequireNumbers             :: Maybe Bool+    , _uappRequireSymbols             :: Maybe Bool+    , _uappRequireUppercaseCharacters :: Maybe Bool+    } deriving (Eq, Ord, Show)++-- | 'UpdateAccountPasswordPolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uappAllowUsersToChangePassword' @::@ 'Maybe' 'Bool'+--+-- * 'uappHardExpiry' @::@ 'Maybe' 'Bool'+--+-- * 'uappMaxPasswordAge' @::@ 'Maybe' 'Natural'+--+-- * 'uappMinimumPasswordLength' @::@ 'Maybe' 'Natural'+--+-- * 'uappPasswordReusePrevention' @::@ 'Maybe' 'Natural'+--+-- * 'uappRequireLowercaseCharacters' @::@ 'Maybe' 'Bool'+--+-- * 'uappRequireNumbers' @::@ 'Maybe' 'Bool'+--+-- * 'uappRequireSymbols' @::@ 'Maybe' 'Bool'+--+-- * 'uappRequireUppercaseCharacters' @::@ 'Maybe' 'Bool'+--+updateAccountPasswordPolicy :: UpdateAccountPasswordPolicy+updateAccountPasswordPolicy = UpdateAccountPasswordPolicy+    { _uappMinimumPasswordLength      = Nothing+    , _uappRequireSymbols             = Nothing+    , _uappRequireNumbers             = Nothing+    , _uappRequireUppercaseCharacters = Nothing+    , _uappRequireLowercaseCharacters = Nothing+    , _uappAllowUsersToChangePassword = Nothing+    , _uappMaxPasswordAge             = Nothing+    , _uappPasswordReusePrevention    = Nothing+    , _uappHardExpiry                 = Nothing+    }++-- | Allows all IAM users in your account to use the AWS Management Console to+-- change their own passwords. For more information, see Letting IAM Users+-- Change Their Own Passwords in the Using IAM guide. Default value: false.+uappAllowUsersToChangePassword :: Lens' UpdateAccountPasswordPolicy (Maybe Bool)+uappAllowUsersToChangePassword =+    lens _uappAllowUsersToChangePassword+        (\s a -> s { _uappAllowUsersToChangePassword = a })++-- | Prevents IAM users from setting a new password after their password has+-- expired. Default value: false.+uappHardExpiry :: Lens' UpdateAccountPasswordPolicy (Maybe Bool)+uappHardExpiry = lens _uappHardExpiry (\s a -> s { _uappHardExpiry = a })++-- | The number of days that an IAM user password is valid. The default value+-- of 0 means IAM user passwords never expire. Default value: 0.+uappMaxPasswordAge :: Lens' UpdateAccountPasswordPolicy (Maybe Natural)+uappMaxPasswordAge =+    lens _uappMaxPasswordAge (\s a -> s { _uappMaxPasswordAge = a })+        . mapping _Nat++-- | The minimum number of characters allowed in an IAM user password. Default+-- value: 6.+uappMinimumPasswordLength :: Lens' UpdateAccountPasswordPolicy (Maybe Natural)+uappMinimumPasswordLength =+    lens _uappMinimumPasswordLength+        (\s a -> s { _uappMinimumPasswordLength = a })+            . mapping _Nat++-- | Specifies the number of previous passwords that IAM users are prevented+-- from reusing. The default value of 0 means IAM users are not prevented+-- from reusing previous passwords. Default value: 0.+uappPasswordReusePrevention :: Lens' UpdateAccountPasswordPolicy (Maybe Natural)+uappPasswordReusePrevention =+    lens _uappPasswordReusePrevention+        (\s a -> s { _uappPasswordReusePrevention = a })+            . mapping _Nat++-- | Specifies whether IAM user passwords must contain at least one lowercase+-- character from the ISO basic Latin alphabet (a to z). Default value:+-- false.+uappRequireLowercaseCharacters :: Lens' UpdateAccountPasswordPolicy (Maybe Bool)+uappRequireLowercaseCharacters =+    lens _uappRequireLowercaseCharacters+        (\s a -> s { _uappRequireLowercaseCharacters = a })++-- | Specifies whether IAM user passwords must contain at least one numeric+-- character (0 to 9). Default value: false.+uappRequireNumbers :: Lens' UpdateAccountPasswordPolicy (Maybe Bool)+uappRequireNumbers =+    lens _uappRequireNumbers (\s a -> s { _uappRequireNumbers = a })++-- | Specifies whether IAM user passwords must contain at least one of the+-- following non-alphanumeric characters: ! @ # $ % ^ &amp;amp; * ( ) _ + -+-- = [ ] { } | ' Default value: false.+uappRequireSymbols :: Lens' UpdateAccountPasswordPolicy (Maybe Bool)+uappRequireSymbols =+    lens _uappRequireSymbols (\s a -> s { _uappRequireSymbols = a })++-- | Specifies whether IAM user passwords must contain at least one uppercase+-- character from the ISO basic Latin alphabet (A to Z). Default value:+-- false.+uappRequireUppercaseCharacters :: Lens' UpdateAccountPasswordPolicy (Maybe Bool)+uappRequireUppercaseCharacters =+    lens _uappRequireUppercaseCharacters+        (\s a -> s { _uappRequireUppercaseCharacters = a })++data UpdateAccountPasswordPolicyResponse = UpdateAccountPasswordPolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateAccountPasswordPolicyResponse' constructor.+updateAccountPasswordPolicyResponse :: UpdateAccountPasswordPolicyResponse+updateAccountPasswordPolicyResponse = UpdateAccountPasswordPolicyResponse++instance ToPath UpdateAccountPasswordPolicy where+    toPath = const "/"++instance ToQuery UpdateAccountPasswordPolicy where+    toQuery UpdateAccountPasswordPolicy{..} = mconcat+        [ "AllowUsersToChangePassword" =? _uappAllowUsersToChangePassword+        , "HardExpiry"                 =? _uappHardExpiry+        , "MaxPasswordAge"             =? _uappMaxPasswordAge+        , "MinimumPasswordLength"      =? _uappMinimumPasswordLength+        , "PasswordReusePrevention"    =? _uappPasswordReusePrevention+        , "RequireLowercaseCharacters" =? _uappRequireLowercaseCharacters+        , "RequireNumbers"             =? _uappRequireNumbers+        , "RequireSymbols"             =? _uappRequireSymbols+        , "RequireUppercaseCharacters" =? _uappRequireUppercaseCharacters+        ]++instance ToHeaders UpdateAccountPasswordPolicy++instance AWSRequest UpdateAccountPasswordPolicy where+    type Sv UpdateAccountPasswordPolicy = IAM+    type Rs UpdateAccountPasswordPolicy = UpdateAccountPasswordPolicyResponse++    request  = post "UpdateAccountPasswordPolicy"+    response = nullResponse UpdateAccountPasswordPolicyResponse
+ gen/Network/AWS/IAM/UpdateAssumeRolePolicy.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateAssumeRolePolicy+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Updates the policy that grants an entity permission to assume a role. For+-- more information about roles, go to Working with Roles.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html>+module Network.AWS.IAM.UpdateAssumeRolePolicy+    (+    -- * Request+      UpdateAssumeRolePolicy+    -- ** Request constructor+    , updateAssumeRolePolicy+    -- ** Request lenses+    , uarpPolicyDocument+    , uarpRoleName++    -- * Response+    , UpdateAssumeRolePolicyResponse+    -- ** Response constructor+    , updateAssumeRolePolicyResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateAssumeRolePolicy = UpdateAssumeRolePolicy+    { _uarpPolicyDocument :: Text+    , _uarpRoleName       :: Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateAssumeRolePolicy' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uarpPolicyDocument' @::@ 'Text'+--+-- * 'uarpRoleName' @::@ 'Text'+--+updateAssumeRolePolicy :: Text -- ^ 'uarpRoleName'+                       -> Text -- ^ 'uarpPolicyDocument'+                       -> UpdateAssumeRolePolicy+updateAssumeRolePolicy p1 p2 = UpdateAssumeRolePolicy+    { _uarpRoleName       = p1+    , _uarpPolicyDocument = p2+    }++-- | The policy that grants an entity permission to assume the role.+uarpPolicyDocument :: Lens' UpdateAssumeRolePolicy Text+uarpPolicyDocument =+    lens _uarpPolicyDocument (\s a -> s { _uarpPolicyDocument = a })++-- | The name of the role to update.+uarpRoleName :: Lens' UpdateAssumeRolePolicy Text+uarpRoleName = lens _uarpRoleName (\s a -> s { _uarpRoleName = a })++data UpdateAssumeRolePolicyResponse = UpdateAssumeRolePolicyResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateAssumeRolePolicyResponse' constructor.+updateAssumeRolePolicyResponse :: UpdateAssumeRolePolicyResponse+updateAssumeRolePolicyResponse = UpdateAssumeRolePolicyResponse++instance ToPath UpdateAssumeRolePolicy where+    toPath = const "/"++instance ToQuery UpdateAssumeRolePolicy where+    toQuery UpdateAssumeRolePolicy{..} = mconcat+        [ "PolicyDocument" =? _uarpPolicyDocument+        , "RoleName"       =? _uarpRoleName+        ]++instance ToHeaders UpdateAssumeRolePolicy++instance AWSRequest UpdateAssumeRolePolicy where+    type Sv UpdateAssumeRolePolicy = IAM+    type Rs UpdateAssumeRolePolicy = UpdateAssumeRolePolicyResponse++    request  = post "UpdateAssumeRolePolicy"+    response = nullResponse UpdateAssumeRolePolicyResponse
+ gen/Network/AWS/IAM/UpdateGroup.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateGroup+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Updates the name and/or the path of the specified group. You should+-- understand the implications of changing a group's path or name. For more+-- information, see Renaming Users and Groups in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateGroup.html>+module Network.AWS.IAM.UpdateGroup+    (+    -- * Request+      UpdateGroup+    -- ** Request constructor+    , updateGroup+    -- ** Request lenses+    , ugGroupName+    , ugNewGroupName+    , ugNewPath++    -- * Response+    , UpdateGroupResponse+    -- ** Response constructor+    , updateGroupResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateGroup = UpdateGroup+    { _ugGroupName    :: Text+    , _ugNewGroupName :: Maybe Text+    , _ugNewPath      :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ugGroupName' @::@ 'Text'+--+-- * 'ugNewGroupName' @::@ 'Maybe' 'Text'+--+-- * 'ugNewPath' @::@ 'Maybe' 'Text'+--+updateGroup :: Text -- ^ 'ugGroupName'+            -> UpdateGroup+updateGroup p1 = UpdateGroup+    { _ugGroupName    = p1+    , _ugNewPath      = Nothing+    , _ugNewGroupName = Nothing+    }++-- | Name of the group to update. If you're changing the name of the group,+-- this is the original name.+ugGroupName :: Lens' UpdateGroup Text+ugGroupName = lens _ugGroupName (\s a -> s { _ugGroupName = a })++-- | New name for the group. Only include this if changing the group's name.+ugNewGroupName :: Lens' UpdateGroup (Maybe Text)+ugNewGroupName = lens _ugNewGroupName (\s a -> s { _ugNewGroupName = a })++-- | New path for the group. Only include this if changing the group's path.+ugNewPath :: Lens' UpdateGroup (Maybe Text)+ugNewPath = lens _ugNewPath (\s a -> s { _ugNewPath = a })++data UpdateGroupResponse = UpdateGroupResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateGroupResponse' constructor.+updateGroupResponse :: UpdateGroupResponse+updateGroupResponse = UpdateGroupResponse++instance ToPath UpdateGroup where+    toPath = const "/"++instance ToQuery UpdateGroup where+    toQuery UpdateGroup{..} = mconcat+        [ "GroupName"    =? _ugGroupName+        , "NewGroupName" =? _ugNewGroupName+        , "NewPath"      =? _ugNewPath+        ]++instance ToHeaders UpdateGroup++instance AWSRequest UpdateGroup where+    type Sv UpdateGroup = IAM+    type Rs UpdateGroup = UpdateGroupResponse++    request  = post "UpdateGroup"+    response = nullResponse UpdateGroupResponse
+ gen/Network/AWS/IAM/UpdateLoginProfile.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateLoginProfile+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Changes the password for the specified user. Users can change their own+-- passwords by calling ChangePassword. For more information about modifying+-- passwords, see Managing Passwords in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateLoginProfile.html>+module Network.AWS.IAM.UpdateLoginProfile+    (+    -- * Request+      UpdateLoginProfile+    -- ** Request constructor+    , updateLoginProfile+    -- ** Request lenses+    , ulpPassword+    , ulpPasswordResetRequired+    , ulpUserName++    -- * Response+    , UpdateLoginProfileResponse+    -- ** Response constructor+    , updateLoginProfileResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateLoginProfile = UpdateLoginProfile+    { _ulpPassword              :: Maybe (Sensitive Text)+    , _ulpPasswordResetRequired :: Maybe Bool+    , _ulpUserName              :: Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateLoginProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ulpPassword' @::@ 'Maybe' 'Text'+--+-- * 'ulpPasswordResetRequired' @::@ 'Maybe' 'Bool'+--+-- * 'ulpUserName' @::@ 'Text'+--+updateLoginProfile :: Text -- ^ 'ulpUserName'+                   -> UpdateLoginProfile+updateLoginProfile p1 = UpdateLoginProfile+    { _ulpUserName              = p1+    , _ulpPassword              = Nothing+    , _ulpPasswordResetRequired = Nothing+    }++-- | The new password for the specified user.+ulpPassword :: Lens' UpdateLoginProfile (Maybe Text)+ulpPassword = lens _ulpPassword (\s a -> s { _ulpPassword = a }) . mapping _Sensitive++-- | Require the specified user to set a new password on next sign-in.+ulpPasswordResetRequired :: Lens' UpdateLoginProfile (Maybe Bool)+ulpPasswordResetRequired =+    lens _ulpPasswordResetRequired+        (\s a -> s { _ulpPasswordResetRequired = a })++-- | The name of the user whose password you want to update.+ulpUserName :: Lens' UpdateLoginProfile Text+ulpUserName = lens _ulpUserName (\s a -> s { _ulpUserName = a })++data UpdateLoginProfileResponse = UpdateLoginProfileResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateLoginProfileResponse' constructor.+updateLoginProfileResponse :: UpdateLoginProfileResponse+updateLoginProfileResponse = UpdateLoginProfileResponse++instance ToPath UpdateLoginProfile where+    toPath = const "/"++instance ToQuery UpdateLoginProfile where+    toQuery UpdateLoginProfile{..} = mconcat+        [ "Password"              =? _ulpPassword+        , "PasswordResetRequired" =? _ulpPasswordResetRequired+        , "UserName"              =? _ulpUserName+        ]++instance ToHeaders UpdateLoginProfile++instance AWSRequest UpdateLoginProfile where+    type Sv UpdateLoginProfile = IAM+    type Rs UpdateLoginProfile = UpdateLoginProfileResponse++    request  = post "UpdateLoginProfile"+    response = nullResponse UpdateLoginProfileResponse
+ gen/Network/AWS/IAM/UpdateOpenIDConnectProviderThumbprint.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateOpenIDConnectProviderThumbprint+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Replaces the existing list of server certificate thumbprints with a new+-- list. The list that you pass with this action completely replaces the+-- existing list of thumbprints. (The lists are not merged.) Typically, you+-- need to update a thumbprint only when the identity provider's certificate+-- changes, which occurs rarely. However, if the provider's certificate does+-- change, any attempt to assume an IAM role that specifies the IAM provider+-- as a principal will fail until the certificate thumbprint is updated.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html>+module Network.AWS.IAM.UpdateOpenIDConnectProviderThumbprint+    (+    -- * Request+      UpdateOpenIDConnectProviderThumbprint+    -- ** Request constructor+    , updateOpenIDConnectProviderThumbprint+    -- ** Request lenses+    , uoidcptOpenIDConnectProviderArn+    , uoidcptThumbprintList++    -- * Response+    , UpdateOpenIDConnectProviderThumbprintResponse+    -- ** Response constructor+    , updateOpenIDConnectProviderThumbprintResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateOpenIDConnectProviderThumbprint = UpdateOpenIDConnectProviderThumbprint+    { _uoidcptOpenIDConnectProviderArn :: Text+    , _uoidcptThumbprintList           :: List "ThumbprintList" Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateOpenIDConnectProviderThumbprint' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uoidcptOpenIDConnectProviderArn' @::@ 'Text'+--+-- * 'uoidcptThumbprintList' @::@ ['Text']+--+updateOpenIDConnectProviderThumbprint :: Text -- ^ 'uoidcptOpenIDConnectProviderArn'+                                      -> UpdateOpenIDConnectProviderThumbprint+updateOpenIDConnectProviderThumbprint p1 = UpdateOpenIDConnectProviderThumbprint+    { _uoidcptOpenIDConnectProviderArn = p1+    , _uoidcptThumbprintList           = mempty+    }++-- | The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider+-- to update the thumbprint for. You can get a list of OIDC provider ARNs by+-- using the ListOpenIDConnectProviders action.+uoidcptOpenIDConnectProviderArn :: Lens' UpdateOpenIDConnectProviderThumbprint Text+uoidcptOpenIDConnectProviderArn =+    lens _uoidcptOpenIDConnectProviderArn+        (\s a -> s { _uoidcptOpenIDConnectProviderArn = a })++-- | A list of certificate thumbprints that are associated with the specified+-- IAM OpenID Connect provider. For more information, see+-- CreateOpenIDConnectProvider.+uoidcptThumbprintList :: Lens' UpdateOpenIDConnectProviderThumbprint [Text]+uoidcptThumbprintList =+    lens _uoidcptThumbprintList (\s a -> s { _uoidcptThumbprintList = a })+        . _List++data UpdateOpenIDConnectProviderThumbprintResponse = UpdateOpenIDConnectProviderThumbprintResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateOpenIDConnectProviderThumbprintResponse' constructor.+updateOpenIDConnectProviderThumbprintResponse :: UpdateOpenIDConnectProviderThumbprintResponse+updateOpenIDConnectProviderThumbprintResponse = UpdateOpenIDConnectProviderThumbprintResponse++instance ToPath UpdateOpenIDConnectProviderThumbprint where+    toPath = const "/"++instance ToQuery UpdateOpenIDConnectProviderThumbprint where+    toQuery UpdateOpenIDConnectProviderThumbprint{..} = mconcat+        [ "OpenIDConnectProviderArn" =? _uoidcptOpenIDConnectProviderArn+        , "ThumbprintList"           =? _uoidcptThumbprintList+        ]++instance ToHeaders UpdateOpenIDConnectProviderThumbprint++instance AWSRequest UpdateOpenIDConnectProviderThumbprint where+    type Sv UpdateOpenIDConnectProviderThumbprint = IAM+    type Rs UpdateOpenIDConnectProviderThumbprint = UpdateOpenIDConnectProviderThumbprintResponse++    request  = post "UpdateOpenIDConnectProviderThumbprint"+    response = nullResponse UpdateOpenIDConnectProviderThumbprintResponse
+ gen/Network/AWS/IAM/UpdateSAMLProvider.hs view
@@ -0,0 +1,126 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateSAMLProvider+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Updates the metadata document for an existing SAML provider.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html>+module Network.AWS.IAM.UpdateSAMLProvider+    (+    -- * Request+      UpdateSAMLProvider+    -- ** Request constructor+    , updateSAMLProvider+    -- ** Request lenses+    , usamlpSAMLMetadataDocument+    , usamlpSAMLProviderArn++    -- * Response+    , UpdateSAMLProviderResponse+    -- ** Response constructor+    , updateSAMLProviderResponse+    -- ** Response lenses+    , usamlprSAMLProviderArn+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateSAMLProvider = UpdateSAMLProvider+    { _usamlpSAMLMetadataDocument :: Text+    , _usamlpSAMLProviderArn      :: Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateSAMLProvider' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'usamlpSAMLMetadataDocument' @::@ 'Text'+--+-- * 'usamlpSAMLProviderArn' @::@ 'Text'+--+updateSAMLProvider :: Text -- ^ 'usamlpSAMLMetadataDocument'+                   -> Text -- ^ 'usamlpSAMLProviderArn'+                   -> UpdateSAMLProvider+updateSAMLProvider p1 p2 = UpdateSAMLProvider+    { _usamlpSAMLMetadataDocument = p1+    , _usamlpSAMLProviderArn      = p2+    }++-- | An XML document generated by an identity provider (IdP) that supports+-- SAML 2.0. The document includes the issuer's name, expiration+-- information, and keys that can be used to validate the SAML+-- authentication response (assertions) that are received from the IdP. You+-- must generate the metadata document using the identity management+-- software that is used as your organization's IdP.+usamlpSAMLMetadataDocument :: Lens' UpdateSAMLProvider Text+usamlpSAMLMetadataDocument =+    lens _usamlpSAMLMetadataDocument+        (\s a -> s { _usamlpSAMLMetadataDocument = a })++-- | The Amazon Resource Name (ARN) of the SAML provider to update.+usamlpSAMLProviderArn :: Lens' UpdateSAMLProvider Text+usamlpSAMLProviderArn =+    lens _usamlpSAMLProviderArn (\s a -> s { _usamlpSAMLProviderArn = a })++newtype UpdateSAMLProviderResponse = UpdateSAMLProviderResponse+    { _usamlprSAMLProviderArn :: Maybe Text+    } deriving (Eq, Ord, Show, Monoid)++-- | 'UpdateSAMLProviderResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'usamlprSAMLProviderArn' @::@ 'Maybe' 'Text'+--+updateSAMLProviderResponse :: UpdateSAMLProviderResponse+updateSAMLProviderResponse = UpdateSAMLProviderResponse+    { _usamlprSAMLProviderArn = Nothing+    }++-- | The Amazon Resource Name (ARN) of the SAML provider that was updated.+usamlprSAMLProviderArn :: Lens' UpdateSAMLProviderResponse (Maybe Text)+usamlprSAMLProviderArn =+    lens _usamlprSAMLProviderArn (\s a -> s { _usamlprSAMLProviderArn = a })++instance ToPath UpdateSAMLProvider where+    toPath = const "/"++instance ToQuery UpdateSAMLProvider where+    toQuery UpdateSAMLProvider{..} = mconcat+        [ "SAMLMetadataDocument" =? _usamlpSAMLMetadataDocument+        , "SAMLProviderArn"      =? _usamlpSAMLProviderArn+        ]++instance ToHeaders UpdateSAMLProvider++instance AWSRequest UpdateSAMLProvider where+    type Sv UpdateSAMLProvider = IAM+    type Rs UpdateSAMLProvider = UpdateSAMLProviderResponse++    request  = post "UpdateSAMLProvider"+    response = xmlResponse++instance FromXML UpdateSAMLProviderResponse where+    parseXML = withElement "UpdateSAMLProviderResult" $ \x -> UpdateSAMLProviderResponse+        <$> x .@? "SAMLProviderArn"
+ gen/Network/AWS/IAM/UpdateServerCertificate.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateServerCertificate+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Updates the name and/or the path of the specified server certificate. You+-- should understand the implications of changing a server certificate's path+-- or name. For more information, see Managing Server Certificates in the+-- Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html>+module Network.AWS.IAM.UpdateServerCertificate+    (+    -- * Request+      UpdateServerCertificate+    -- ** Request constructor+    , updateServerCertificate+    -- ** Request lenses+    , usc1NewPath+    , usc1NewServerCertificateName+    , usc1ServerCertificateName++    -- * Response+    , UpdateServerCertificateResponse+    -- ** Response constructor+    , updateServerCertificateResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateServerCertificate = UpdateServerCertificate+    { _usc1NewPath                  :: Maybe Text+    , _usc1NewServerCertificateName :: Maybe Text+    , _usc1ServerCertificateName    :: Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateServerCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'usc1NewPath' @::@ 'Maybe' 'Text'+--+-- * 'usc1NewServerCertificateName' @::@ 'Maybe' 'Text'+--+-- * 'usc1ServerCertificateName' @::@ 'Text'+--+updateServerCertificate :: Text -- ^ 'usc1ServerCertificateName'+                        -> UpdateServerCertificate+updateServerCertificate p1 = UpdateServerCertificate+    { _usc1ServerCertificateName    = p1+    , _usc1NewPath                  = Nothing+    , _usc1NewServerCertificateName = Nothing+    }++-- | The new path for the server certificate. Include this only if you are+-- updating the server certificate's path.+usc1NewPath :: Lens' UpdateServerCertificate (Maybe Text)+usc1NewPath = lens _usc1NewPath (\s a -> s { _usc1NewPath = a })++-- | The new name for the server certificate. Include this only if you are+-- updating the server certificate's name.+usc1NewServerCertificateName :: Lens' UpdateServerCertificate (Maybe Text)+usc1NewServerCertificateName =+    lens _usc1NewServerCertificateName+        (\s a -> s { _usc1NewServerCertificateName = a })++-- | The name of the server certificate that you want to update.+usc1ServerCertificateName :: Lens' UpdateServerCertificate Text+usc1ServerCertificateName =+    lens _usc1ServerCertificateName+        (\s a -> s { _usc1ServerCertificateName = a })++data UpdateServerCertificateResponse = UpdateServerCertificateResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateServerCertificateResponse' constructor.+updateServerCertificateResponse :: UpdateServerCertificateResponse+updateServerCertificateResponse = UpdateServerCertificateResponse++instance ToPath UpdateServerCertificate where+    toPath = const "/"++instance ToQuery UpdateServerCertificate where+    toQuery UpdateServerCertificate{..} = mconcat+        [ "NewPath"                  =? _usc1NewPath+        , "NewServerCertificateName" =? _usc1NewServerCertificateName+        , "ServerCertificateName"    =? _usc1ServerCertificateName+        ]++instance ToHeaders UpdateServerCertificate++instance AWSRequest UpdateServerCertificate where+    type Sv UpdateServerCertificate = IAM+    type Rs UpdateServerCertificate = UpdateServerCertificateResponse++    request  = post "UpdateServerCertificate"+    response = nullResponse UpdateServerCertificateResponse
+ gen/Network/AWS/IAM/UpdateSigningCertificate.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateSigningCertificate+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Changes the status of the specified signing certificate from active to+-- disabled, or vice versa. This action can be used to disable a user's+-- signing certificate as part of a certificate rotation work flow. If the+-- UserName field is not specified, the UserName is determined implicitly+-- based on the AWS access key ID used to sign the request. Because this+-- action works for access keys under the AWS account, you can use this action+-- to manage root credentials even if the AWS account has no associated users.+-- For information about rotating certificates, see Managing Keys and+-- Certificates in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSigningCertificate.html>+module Network.AWS.IAM.UpdateSigningCertificate+    (+    -- * Request+      UpdateSigningCertificate+    -- ** Request constructor+    , updateSigningCertificate+    -- ** Request lenses+    , uscCertificateId+    , uscStatus+    , uscUserName++    -- * Response+    , UpdateSigningCertificateResponse+    -- ** Response constructor+    , updateSigningCertificateResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateSigningCertificate = UpdateSigningCertificate+    { _uscCertificateId :: Text+    , _uscStatus        :: Text+    , _uscUserName      :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateSigningCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uscCertificateId' @::@ 'Text'+--+-- * 'uscStatus' @::@ 'Text'+--+-- * 'uscUserName' @::@ 'Maybe' 'Text'+--+updateSigningCertificate :: Text -- ^ 'uscCertificateId'+                         -> Text -- ^ 'uscStatus'+                         -> UpdateSigningCertificate+updateSigningCertificate p1 p2 = UpdateSigningCertificate+    { _uscCertificateId = p1+    , _uscStatus        = p2+    , _uscUserName      = Nothing+    }++-- | The ID of the signing certificate you want to update.+uscCertificateId :: Lens' UpdateSigningCertificate Text+uscCertificateId = lens _uscCertificateId (\s a -> s { _uscCertificateId = a })++-- | The status you want to assign to the certificate. Active means the+-- certificate can be used for API calls to AWS, while Inactive means the+-- certificate cannot be used.+uscStatus :: Lens' UpdateSigningCertificate Text+uscStatus = lens _uscStatus (\s a -> s { _uscStatus = a })++-- | The name of the user the signing certificate belongs to.+uscUserName :: Lens' UpdateSigningCertificate (Maybe Text)+uscUserName = lens _uscUserName (\s a -> s { _uscUserName = a })++data UpdateSigningCertificateResponse = UpdateSigningCertificateResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateSigningCertificateResponse' constructor.+updateSigningCertificateResponse :: UpdateSigningCertificateResponse+updateSigningCertificateResponse = UpdateSigningCertificateResponse++instance ToPath UpdateSigningCertificate where+    toPath = const "/"++instance ToQuery UpdateSigningCertificate where+    toQuery UpdateSigningCertificate{..} = mconcat+        [ "CertificateId" =? _uscCertificateId+        , "Status"        =? _uscStatus+        , "UserName"      =? _uscUserName+        ]++instance ToHeaders UpdateSigningCertificate++instance AWSRequest UpdateSigningCertificate where+    type Sv UpdateSigningCertificate = IAM+    type Rs UpdateSigningCertificate = UpdateSigningCertificateResponse++    request  = post "UpdateSigningCertificate"+    response = nullResponse UpdateSigningCertificateResponse
+ gen/Network/AWS/IAM/UpdateUser.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UpdateUser+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Updates the name and/or the path of the specified user. You should+-- understand the implications of changing a user's path or name. For more+-- information, see Renaming Users and Groups in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html>+module Network.AWS.IAM.UpdateUser+    (+    -- * Request+      UpdateUser+    -- ** Request constructor+    , updateUser+    -- ** Request lenses+    , uuNewPath+    , uuNewUserName+    , uuUserName++    -- * Response+    , UpdateUserResponse+    -- ** Response constructor+    , updateUserResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UpdateUser = UpdateUser+    { _uuNewPath     :: Maybe Text+    , _uuNewUserName :: Maybe Text+    , _uuUserName    :: Text+    } deriving (Eq, Ord, Show)++-- | 'UpdateUser' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uuNewPath' @::@ 'Maybe' 'Text'+--+-- * 'uuNewUserName' @::@ 'Maybe' 'Text'+--+-- * 'uuUserName' @::@ 'Text'+--+updateUser :: Text -- ^ 'uuUserName'+           -> UpdateUser+updateUser p1 = UpdateUser+    { _uuUserName    = p1+    , _uuNewPath     = Nothing+    , _uuNewUserName = Nothing+    }++-- | New path for the user. Include this parameter only if you're changing the+-- user's path.+uuNewPath :: Lens' UpdateUser (Maybe Text)+uuNewPath = lens _uuNewPath (\s a -> s { _uuNewPath = a })++-- | New name for the user. Include this parameter only if you're changing the+-- user's name.+uuNewUserName :: Lens' UpdateUser (Maybe Text)+uuNewUserName = lens _uuNewUserName (\s a -> s { _uuNewUserName = a })++-- | Name of the user to update. If you're changing the name of the user, this+-- is the original user name.+uuUserName :: Lens' UpdateUser Text+uuUserName = lens _uuUserName (\s a -> s { _uuUserName = a })++data UpdateUserResponse = UpdateUserResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'UpdateUserResponse' constructor.+updateUserResponse :: UpdateUserResponse+updateUserResponse = UpdateUserResponse++instance ToPath UpdateUser where+    toPath = const "/"++instance ToQuery UpdateUser where+    toQuery UpdateUser{..} = mconcat+        [ "NewPath"     =? _uuNewPath+        , "NewUserName" =? _uuNewUserName+        , "UserName"    =? _uuUserName+        ]++instance ToHeaders UpdateUser++instance AWSRequest UpdateUser where+    type Sv UpdateUser = IAM+    type Rs UpdateUser = UpdateUserResponse++    request  = post "UpdateUser"+    response = nullResponse UpdateUserResponse
+ gen/Network/AWS/IAM/UploadServerCertificate.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UploadServerCertificate+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Uploads a server certificate entity for the AWS account. The server+-- certificate entity includes a public key certificate, a private key, and an+-- optional certificate chain, which should all be PEM-encoded. For+-- information about the number of server certificates you can upload, see+-- Limitations on IAM Entities in the Using IAM guide.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html>+module Network.AWS.IAM.UploadServerCertificate+    (+    -- * Request+      UploadServerCertificate+    -- ** Request constructor+    , uploadServerCertificate+    -- ** Request lenses+    , uscCertificateBody+    , uscCertificateChain+    , uscPath+    , uscPrivateKey+    , uscServerCertificateName++    -- * Response+    , UploadServerCertificateResponse+    -- ** Response constructor+    , uploadServerCertificateResponse+    -- ** Response lenses+    , uscrServerCertificateMetadata+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UploadServerCertificate = UploadServerCertificate+    { _uscCertificateBody       :: Text+    , _uscCertificateChain      :: Maybe Text+    , _uscPath                  :: Maybe Text+    , _uscPrivateKey            :: Sensitive Text+    , _uscServerCertificateName :: Text+    } deriving (Eq, Ord, Show)++-- | 'UploadServerCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uscCertificateBody' @::@ 'Text'+--+-- * 'uscCertificateChain' @::@ 'Maybe' 'Text'+--+-- * 'uscPath' @::@ 'Maybe' 'Text'+--+-- * 'uscPrivateKey' @::@ 'Text'+--+-- * 'uscServerCertificateName' @::@ 'Text'+--+uploadServerCertificate :: Text -- ^ 'uscServerCertificateName'+                        -> Text -- ^ 'uscCertificateBody'+                        -> Text -- ^ 'uscPrivateKey'+                        -> UploadServerCertificate+uploadServerCertificate p1 p2 p3 = UploadServerCertificate+    { _uscServerCertificateName = p1+    , _uscCertificateBody       = p2+    , _uscPrivateKey            = withIso _Sensitive (const id) p3+    , _uscPath                  = Nothing+    , _uscCertificateChain      = Nothing+    }++-- | The contents of the public key certificate in PEM-encoded format.+uscCertificateBody :: Lens' UploadServerCertificate Text+uscCertificateBody =+    lens _uscCertificateBody (\s a -> s { _uscCertificateBody = a })++-- | The contents of the certificate chain. This is typically a concatenation+-- of the PEM-encoded public key certificates of the chain.+uscCertificateChain :: Lens' UploadServerCertificate (Maybe Text)+uscCertificateChain =+    lens _uscCertificateChain (\s a -> s { _uscCertificateChain = a })++-- | The path for the server certificate. For more information about paths,+-- see IAM Identifiers in the Using IAM guide. This parameter is optional.+-- If it is not included, it defaults to a slash (/).+uscPath :: Lens' UploadServerCertificate (Maybe Text)+uscPath = lens _uscPath (\s a -> s { _uscPath = a })++-- | The contents of the private key in PEM-encoded format.+uscPrivateKey :: Lens' UploadServerCertificate Text+uscPrivateKey = lens _uscPrivateKey (\s a -> s { _uscPrivateKey = a }) . _Sensitive++-- | The name for the server certificate. Do not include the path in this+-- value.+uscServerCertificateName :: Lens' UploadServerCertificate Text+uscServerCertificateName =+    lens _uscServerCertificateName+        (\s a -> s { _uscServerCertificateName = a })++newtype UploadServerCertificateResponse = UploadServerCertificateResponse+    { _uscrServerCertificateMetadata :: Maybe ServerCertificateMetadata+    } deriving (Eq, Show)++-- | 'UploadServerCertificateResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uscrServerCertificateMetadata' @::@ 'Maybe' 'ServerCertificateMetadata'+--+uploadServerCertificateResponse :: UploadServerCertificateResponse+uploadServerCertificateResponse = UploadServerCertificateResponse+    { _uscrServerCertificateMetadata = Nothing+    }++-- | The meta information of the uploaded server certificate without its+-- certificate body, certificate chain, and private key.+uscrServerCertificateMetadata :: Lens' UploadServerCertificateResponse (Maybe ServerCertificateMetadata)+uscrServerCertificateMetadata =+    lens _uscrServerCertificateMetadata+        (\s a -> s { _uscrServerCertificateMetadata = a })++instance ToPath UploadServerCertificate where+    toPath = const "/"++instance ToQuery UploadServerCertificate where+    toQuery UploadServerCertificate{..} = mconcat+        [ "CertificateBody"       =? _uscCertificateBody+        , "CertificateChain"      =? _uscCertificateChain+        , "Path"                  =? _uscPath+        , "PrivateKey"            =? _uscPrivateKey+        , "ServerCertificateName" =? _uscServerCertificateName+        ]++instance ToHeaders UploadServerCertificate++instance AWSRequest UploadServerCertificate where+    type Sv UploadServerCertificate = IAM+    type Rs UploadServerCertificate = UploadServerCertificateResponse++    request  = post "UploadServerCertificate"+    response = xmlResponse++instance FromXML UploadServerCertificateResponse where+    parseXML = withElement "UploadServerCertificateResult" $ \x -> UploadServerCertificateResponse+        <$> x .@? "ServerCertificateMetadata"
+ gen/Network/AWS/IAM/UploadSigningCertificate.hs view
@@ -0,0 +1,125 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.IAM.UploadSigningCertificate+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Uploads an X.509 signing certificate and associates it with the specified+-- user. Some AWS services use X.509 signing certificates to validate requests+-- that are signed with a corresponding private key. When you upload the+-- certificate, its default status is Active. If the UserName field is not+-- specified, the user name is determined implicitly based on the AWS access+-- key ID used to sign the request. Because this action works for access keys+-- under the AWS account, you can use this action to manage root credentials+-- even if the AWS account has no associated users.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadSigningCertificate.html>+module Network.AWS.IAM.UploadSigningCertificate+    (+    -- * Request+      UploadSigningCertificate+    -- ** Request constructor+    , uploadSigningCertificate+    -- ** Request lenses+    , usc1CertificateBody+    , usc1UserName++    -- * Response+    , UploadSigningCertificateResponse+    -- ** Response constructor+    , uploadSigningCertificateResponse+    -- ** Response lenses+    , uscrCertificate+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.IAM.Types+import qualified GHC.Exts++data UploadSigningCertificate = UploadSigningCertificate+    { _usc1CertificateBody :: Text+    , _usc1UserName        :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'UploadSigningCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'usc1CertificateBody' @::@ 'Text'+--+-- * 'usc1UserName' @::@ 'Maybe' 'Text'+--+uploadSigningCertificate :: Text -- ^ 'usc1CertificateBody'+                         -> UploadSigningCertificate+uploadSigningCertificate p1 = UploadSigningCertificate+    { _usc1CertificateBody = p1+    , _usc1UserName        = Nothing+    }++-- | The contents of the signing certificate.+usc1CertificateBody :: Lens' UploadSigningCertificate Text+usc1CertificateBody =+    lens _usc1CertificateBody (\s a -> s { _usc1CertificateBody = a })++-- | The name of the user the signing certificate is for.+usc1UserName :: Lens' UploadSigningCertificate (Maybe Text)+usc1UserName = lens _usc1UserName (\s a -> s { _usc1UserName = a })++newtype UploadSigningCertificateResponse = UploadSigningCertificateResponse+    { _uscrCertificate :: SigningCertificate+    } deriving (Eq, Show)++-- | 'UploadSigningCertificateResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uscrCertificate' @::@ 'SigningCertificate'+--+uploadSigningCertificateResponse :: SigningCertificate -- ^ 'uscrCertificate'+                                 -> UploadSigningCertificateResponse+uploadSigningCertificateResponse p1 = UploadSigningCertificateResponse+    { _uscrCertificate = p1+    }++-- | Information about the certificate.+uscrCertificate :: Lens' UploadSigningCertificateResponse SigningCertificate+uscrCertificate = lens _uscrCertificate (\s a -> s { _uscrCertificate = a })++instance ToPath UploadSigningCertificate where+    toPath = const "/"++instance ToQuery UploadSigningCertificate where+    toQuery UploadSigningCertificate{..} = mconcat+        [ "CertificateBody" =? _usc1CertificateBody+        , "UserName"        =? _usc1UserName+        ]++instance ToHeaders UploadSigningCertificate++instance AWSRequest UploadSigningCertificate where+    type Sv UploadSigningCertificate = IAM+    type Rs UploadSigningCertificate = UploadSigningCertificateResponse++    request  = post "UploadSigningCertificate"+    response = xmlResponse++instance FromXML UploadSigningCertificateResponse where+    parseXML = withElement "UploadSigningCertificateResult" $ \x -> UploadSigningCertificateResponse+        <$> x .@  "Certificate"