diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+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.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,48 @@
+# Amazon API Gateway SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`1.3.5`
+
+
+## Description
+
+Amazon API Gateway
+
+Amazon API Gateway helps developers deliver robust, secure and scalable
+mobile and web application backends. Amazon API Gateway allows
+developers to securely connect mobile and web applications to APIs that
+run on AWS Lambda, Amazon EC2, or other publicly addressable web
+services that are hosted outside of AWS.
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-apigateway)
+and the [AWS API Reference](http://docs.aws.amazon.com/apigateway/api-reference/).
+
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
+
+Use of lenses is required for constructing and manipulating types.
+This is due to the amount of nesting of AWS types and transparency regarding
+de/serialisation into more palatable Haskell values.
+The provided lenses should be compatible with any of the major lens libraries
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
+
+## 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-apigateway` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+
+Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.
+Source files subject to this contain an additional licensing clause in their header.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import           Distribution.Simple
+main = defaultMain
diff --git a/amazonka-apigateway.cabal b/amazonka-apigateway.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-apigateway.cabal
@@ -0,0 +1,155 @@
+name:                  amazonka-apigateway
+version:               1.3.5
+synopsis:              Amazon API Gateway SDK.
+homepage:              https://github.com/brendanhay/amazonka
+bug-reports:           https://github.com/brendanhay/amazonka/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2013-2015 Brendan Hay
+category:              Network, AWS, Cloud, Distributed Computing
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md fixture/*.yaml fixture/*.proto
+description:
+    Amazon API Gateway
+
+    Amazon API Gateway helps developers deliver robust, secure and scalable
+    mobile and web application backends. Amazon API Gateway allows
+    developers to securely connect mobile and web applications to APIs that
+    run on AWS Lambda, Amazon EC2, or other publicly addressable web
+    services that are hosted outside of AWS.
+    .
+    The types from this library are intended to be used with
+    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
+    mechanisms for specifying AuthN/AuthZ information and sending requests.
+    .
+    Use of lenses is required for constructing and manipulating types.
+    This is due to the amount of nesting of AWS types and transparency regarding
+    de/serialisation into more palatable Haskell values.
+    The provided lenses should be compatible with any of the major lens libraries
+    such as <http://hackage.haskell.org/package/lens lens> or
+    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+    .
+    See "Network.AWS.APIGateway" and the <http://docs.aws.amazon.com/apigateway/api-reference/ AWS API Reference>
+    to get started.
+
+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.APIGateway
+        , Network.AWS.APIGateway.CreateAPIKey
+        , Network.AWS.APIGateway.CreateBasePathMapping
+        , Network.AWS.APIGateway.CreateDeployment
+        , Network.AWS.APIGateway.CreateDomainName
+        , Network.AWS.APIGateway.CreateModel
+        , Network.AWS.APIGateway.CreateResource
+        , Network.AWS.APIGateway.CreateRestAPI
+        , Network.AWS.APIGateway.CreateStage
+        , Network.AWS.APIGateway.DeleteAPIKey
+        , Network.AWS.APIGateway.DeleteBasePathMapping
+        , Network.AWS.APIGateway.DeleteClientCertificate
+        , Network.AWS.APIGateway.DeleteDeployment
+        , Network.AWS.APIGateway.DeleteDomainName
+        , Network.AWS.APIGateway.DeleteIntegration
+        , Network.AWS.APIGateway.DeleteIntegrationResponse
+        , Network.AWS.APIGateway.DeleteMethod
+        , Network.AWS.APIGateway.DeleteMethodResponse
+        , Network.AWS.APIGateway.DeleteModel
+        , Network.AWS.APIGateway.DeleteResource
+        , Network.AWS.APIGateway.DeleteRestAPI
+        , Network.AWS.APIGateway.DeleteStage
+        , Network.AWS.APIGateway.FlushStageCache
+        , Network.AWS.APIGateway.GenerateClientCertificate
+        , Network.AWS.APIGateway.GetAPIKey
+        , Network.AWS.APIGateway.GetAPIKeys
+        , Network.AWS.APIGateway.GetAccount
+        , Network.AWS.APIGateway.GetBasePathMapping
+        , Network.AWS.APIGateway.GetBasePathMappings
+        , Network.AWS.APIGateway.GetClientCertificate
+        , Network.AWS.APIGateway.GetClientCertificates
+        , Network.AWS.APIGateway.GetDeployment
+        , Network.AWS.APIGateway.GetDeployments
+        , Network.AWS.APIGateway.GetDomainName
+        , Network.AWS.APIGateway.GetDomainNames
+        , Network.AWS.APIGateway.GetIntegration
+        , Network.AWS.APIGateway.GetIntegrationResponse
+        , Network.AWS.APIGateway.GetMethod
+        , Network.AWS.APIGateway.GetMethodResponse
+        , Network.AWS.APIGateway.GetModel
+        , Network.AWS.APIGateway.GetModelTemplate
+        , Network.AWS.APIGateway.GetModels
+        , Network.AWS.APIGateway.GetResource
+        , Network.AWS.APIGateway.GetResources
+        , Network.AWS.APIGateway.GetRestAPI
+        , Network.AWS.APIGateway.GetRestAPIs
+        , Network.AWS.APIGateway.GetSDK
+        , Network.AWS.APIGateway.GetStage
+        , Network.AWS.APIGateway.GetStages
+        , Network.AWS.APIGateway.PutIntegration
+        , Network.AWS.APIGateway.PutIntegrationResponse
+        , Network.AWS.APIGateway.PutMethod
+        , Network.AWS.APIGateway.PutMethodResponse
+        , Network.AWS.APIGateway.TestInvokeMethod
+        , Network.AWS.APIGateway.Types
+        , Network.AWS.APIGateway.UpdateAPIKey
+        , Network.AWS.APIGateway.UpdateAccount
+        , Network.AWS.APIGateway.UpdateBasePathMapping
+        , Network.AWS.APIGateway.UpdateClientCertificate
+        , Network.AWS.APIGateway.UpdateDeployment
+        , Network.AWS.APIGateway.UpdateDomainName
+        , Network.AWS.APIGateway.UpdateIntegration
+        , Network.AWS.APIGateway.UpdateIntegrationResponse
+        , Network.AWS.APIGateway.UpdateMethod
+        , Network.AWS.APIGateway.UpdateMethodResponse
+        , Network.AWS.APIGateway.UpdateModel
+        , Network.AWS.APIGateway.UpdateResource
+        , Network.AWS.APIGateway.UpdateRestAPI
+        , Network.AWS.APIGateway.UpdateStage
+        , Network.AWS.APIGateway.Waiters
+
+    other-modules:
+          Network.AWS.APIGateway.Types.Product
+        , Network.AWS.APIGateway.Types.Sum
+
+    build-depends:
+          amazonka-core == 1.3.5.*
+        , base          >= 4.7     && < 5
+
+test-suite amazonka-apigateway-test
+    type:              exitcode-stdio-1.0
+    default-language:  Haskell2010
+    hs-source-dirs:    test
+    main-is:           Main.hs
+
+    ghc-options:       -Wall -threaded
+
+    -- This section is encoded by the template and any modules added by
+    -- hand outside these namespaces will not correctly be added to the
+    -- distribution package.
+    other-modules:
+          Test.AWS.APIGateway
+        , Test.AWS.Gen.APIGateway
+        , Test.AWS.APIGateway.Internal
+
+    build-depends:
+          amazonka-core == 1.3.5.*
+        , amazonka-test == 1.3.5.*
+        , amazonka-apigateway == 1.3.5.*
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/fixture/CreateAPIKey.yaml b/fixture/CreateAPIKey.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAPIKey.yaml
diff --git a/fixture/CreateAPIKeyResponse.proto b/fixture/CreateAPIKeyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAPIKeyResponse.proto
diff --git a/fixture/CreateBasePathMapping.yaml b/fixture/CreateBasePathMapping.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBasePathMapping.yaml
diff --git a/fixture/CreateBasePathMappingResponse.proto b/fixture/CreateBasePathMappingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateBasePathMappingResponse.proto
diff --git a/fixture/CreateDeployment.yaml b/fixture/CreateDeployment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDeployment.yaml
diff --git a/fixture/CreateDeploymentResponse.proto b/fixture/CreateDeploymentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDeploymentResponse.proto
diff --git a/fixture/CreateDomainName.yaml b/fixture/CreateDomainName.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDomainName.yaml
diff --git a/fixture/CreateDomainNameResponse.proto b/fixture/CreateDomainNameResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateDomainNameResponse.proto
diff --git a/fixture/CreateModel.yaml b/fixture/CreateModel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModel.yaml
diff --git a/fixture/CreateModelResponse.proto b/fixture/CreateModelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateModelResponse.proto
diff --git a/fixture/CreateResource.yaml b/fixture/CreateResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResource.yaml
diff --git a/fixture/CreateResourceResponse.proto b/fixture/CreateResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResourceResponse.proto
diff --git a/fixture/CreateRestAPI.yaml b/fixture/CreateRestAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRestAPI.yaml
diff --git a/fixture/CreateRestAPIResponse.proto b/fixture/CreateRestAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateRestAPIResponse.proto
diff --git a/fixture/CreateStage.yaml b/fixture/CreateStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStage.yaml
diff --git a/fixture/CreateStageResponse.proto b/fixture/CreateStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateStageResponse.proto
diff --git a/fixture/DeleteAPIKey.yaml b/fixture/DeleteAPIKey.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAPIKey.yaml
diff --git a/fixture/DeleteAPIKeyResponse.proto b/fixture/DeleteAPIKeyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAPIKeyResponse.proto
diff --git a/fixture/DeleteBasePathMapping.yaml b/fixture/DeleteBasePathMapping.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBasePathMapping.yaml
diff --git a/fixture/DeleteBasePathMappingResponse.proto b/fixture/DeleteBasePathMappingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteBasePathMappingResponse.proto
diff --git a/fixture/DeleteClientCertificate.yaml b/fixture/DeleteClientCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteClientCertificate.yaml
diff --git a/fixture/DeleteClientCertificateResponse.proto b/fixture/DeleteClientCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteClientCertificateResponse.proto
diff --git a/fixture/DeleteDeployment.yaml b/fixture/DeleteDeployment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDeployment.yaml
diff --git a/fixture/DeleteDeploymentResponse.proto b/fixture/DeleteDeploymentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDeploymentResponse.proto
diff --git a/fixture/DeleteDomainName.yaml b/fixture/DeleteDomainName.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDomainName.yaml
diff --git a/fixture/DeleteDomainNameResponse.proto b/fixture/DeleteDomainNameResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDomainNameResponse.proto
diff --git a/fixture/DeleteIntegration.yaml b/fixture/DeleteIntegration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIntegration.yaml
diff --git a/fixture/DeleteIntegrationResponse.proto b/fixture/DeleteIntegrationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIntegrationResponse.proto
diff --git a/fixture/DeleteIntegrationResponse.yaml b/fixture/DeleteIntegrationResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIntegrationResponse.yaml
diff --git a/fixture/DeleteIntegrationResponseResponse.proto b/fixture/DeleteIntegrationResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteIntegrationResponseResponse.proto
diff --git a/fixture/DeleteMethod.yaml b/fixture/DeleteMethod.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMethod.yaml
diff --git a/fixture/DeleteMethodResponse.proto b/fixture/DeleteMethodResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMethodResponse.proto
diff --git a/fixture/DeleteMethodResponse.yaml b/fixture/DeleteMethodResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMethodResponse.yaml
diff --git a/fixture/DeleteMethodResponseResponse.proto b/fixture/DeleteMethodResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteMethodResponseResponse.proto
diff --git a/fixture/DeleteModel.yaml b/fixture/DeleteModel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModel.yaml
diff --git a/fixture/DeleteModelResponse.proto b/fixture/DeleteModelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteModelResponse.proto
diff --git a/fixture/DeleteResource.yaml b/fixture/DeleteResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResource.yaml
diff --git a/fixture/DeleteResourceResponse.proto b/fixture/DeleteResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourceResponse.proto
diff --git a/fixture/DeleteRestAPI.yaml b/fixture/DeleteRestAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRestAPI.yaml
diff --git a/fixture/DeleteRestAPIResponse.proto b/fixture/DeleteRestAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRestAPIResponse.proto
diff --git a/fixture/DeleteStage.yaml b/fixture/DeleteStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteStage.yaml
diff --git a/fixture/DeleteStageResponse.proto b/fixture/DeleteStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteStageResponse.proto
diff --git a/fixture/FlushStageCache.yaml b/fixture/FlushStageCache.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/FlushStageCache.yaml
diff --git a/fixture/FlushStageCacheResponse.proto b/fixture/FlushStageCacheResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/FlushStageCacheResponse.proto
diff --git a/fixture/GenerateClientCertificate.yaml b/fixture/GenerateClientCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateClientCertificate.yaml
diff --git a/fixture/GenerateClientCertificateResponse.proto b/fixture/GenerateClientCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GenerateClientCertificateResponse.proto
diff --git a/fixture/GetAPIKey.yaml b/fixture/GetAPIKey.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAPIKey.yaml
diff --git a/fixture/GetAPIKeyResponse.proto b/fixture/GetAPIKeyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAPIKeyResponse.proto
diff --git a/fixture/GetAPIKeys.yaml b/fixture/GetAPIKeys.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAPIKeys.yaml
diff --git a/fixture/GetAPIKeysResponse.proto b/fixture/GetAPIKeysResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAPIKeysResponse.proto
diff --git a/fixture/GetAccount.yaml b/fixture/GetAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAccount.yaml
diff --git a/fixture/GetAccountResponse.proto b/fixture/GetAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAccountResponse.proto
diff --git a/fixture/GetBasePathMapping.yaml b/fixture/GetBasePathMapping.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBasePathMapping.yaml
diff --git a/fixture/GetBasePathMappingResponse.proto b/fixture/GetBasePathMappingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBasePathMappingResponse.proto
diff --git a/fixture/GetBasePathMappings.yaml b/fixture/GetBasePathMappings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetBasePathMappings.yaml
diff --git a/fixture/GetBasePathMappingsResponse.proto b/fixture/GetBasePathMappingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetBasePathMappingsResponse.proto
diff --git a/fixture/GetClientCertificate.yaml b/fixture/GetClientCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetClientCertificate.yaml
diff --git a/fixture/GetClientCertificateResponse.proto b/fixture/GetClientCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetClientCertificateResponse.proto
diff --git a/fixture/GetClientCertificates.yaml b/fixture/GetClientCertificates.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetClientCertificates.yaml
diff --git a/fixture/GetClientCertificatesResponse.proto b/fixture/GetClientCertificatesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetClientCertificatesResponse.proto
diff --git a/fixture/GetDeployment.yaml b/fixture/GetDeployment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeployment.yaml
diff --git a/fixture/GetDeploymentResponse.proto b/fixture/GetDeploymentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeploymentResponse.proto
diff --git a/fixture/GetDeployments.yaml b/fixture/GetDeployments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeployments.yaml
diff --git a/fixture/GetDeploymentsResponse.proto b/fixture/GetDeploymentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeploymentsResponse.proto
diff --git a/fixture/GetDomainName.yaml b/fixture/GetDomainName.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDomainName.yaml
diff --git a/fixture/GetDomainNameResponse.proto b/fixture/GetDomainNameResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDomainNameResponse.proto
diff --git a/fixture/GetDomainNames.yaml b/fixture/GetDomainNames.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDomainNames.yaml
diff --git a/fixture/GetDomainNamesResponse.proto b/fixture/GetDomainNamesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDomainNamesResponse.proto
diff --git a/fixture/GetIntegration.yaml b/fixture/GetIntegration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetIntegration.yaml
diff --git a/fixture/GetIntegrationResponse.proto b/fixture/GetIntegrationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetIntegrationResponse.proto
diff --git a/fixture/GetIntegrationResponse.yaml b/fixture/GetIntegrationResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetIntegrationResponse.yaml
diff --git a/fixture/GetIntegrationResponseResponse.proto b/fixture/GetIntegrationResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetIntegrationResponseResponse.proto
diff --git a/fixture/GetMethod.yaml b/fixture/GetMethod.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMethod.yaml
diff --git a/fixture/GetMethodResponse.proto b/fixture/GetMethodResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMethodResponse.proto
diff --git a/fixture/GetMethodResponse.yaml b/fixture/GetMethodResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMethodResponse.yaml
diff --git a/fixture/GetMethodResponseResponse.proto b/fixture/GetMethodResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMethodResponseResponse.proto
diff --git a/fixture/GetModel.yaml b/fixture/GetModel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetModel.yaml
diff --git a/fixture/GetModelResponse.proto b/fixture/GetModelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetModelResponse.proto
diff --git a/fixture/GetModelTemplate.yaml b/fixture/GetModelTemplate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetModelTemplate.yaml
diff --git a/fixture/GetModelTemplateResponse.proto b/fixture/GetModelTemplateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetModelTemplateResponse.proto
diff --git a/fixture/GetModels.yaml b/fixture/GetModels.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetModels.yaml
diff --git a/fixture/GetModelsResponse.proto b/fixture/GetModelsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetModelsResponse.proto
diff --git a/fixture/GetResource.yaml b/fixture/GetResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResource.yaml
diff --git a/fixture/GetResourceResponse.proto b/fixture/GetResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourceResponse.proto
diff --git a/fixture/GetResources.yaml b/fixture/GetResources.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResources.yaml
diff --git a/fixture/GetResourcesResponse.proto b/fixture/GetResourcesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcesResponse.proto
diff --git a/fixture/GetRestAPI.yaml b/fixture/GetRestAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRestAPI.yaml
diff --git a/fixture/GetRestAPIResponse.proto b/fixture/GetRestAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRestAPIResponse.proto
diff --git a/fixture/GetRestAPIs.yaml b/fixture/GetRestAPIs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRestAPIs.yaml
diff --git a/fixture/GetRestAPIsResponse.proto b/fixture/GetRestAPIsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRestAPIsResponse.proto
diff --git a/fixture/GetSDK.yaml b/fixture/GetSDK.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetSDK.yaml
diff --git a/fixture/GetSDKResponse.proto b/fixture/GetSDKResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetSDKResponse.proto
diff --git a/fixture/GetStage.yaml b/fixture/GetStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetStage.yaml
diff --git a/fixture/GetStageResponse.proto b/fixture/GetStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetStageResponse.proto
diff --git a/fixture/GetStages.yaml b/fixture/GetStages.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetStages.yaml
diff --git a/fixture/GetStagesResponse.proto b/fixture/GetStagesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetStagesResponse.proto
diff --git a/fixture/PutIntegration.yaml b/fixture/PutIntegration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutIntegration.yaml
diff --git a/fixture/PutIntegrationResponse.proto b/fixture/PutIntegrationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutIntegrationResponse.proto
diff --git a/fixture/PutIntegrationResponse.yaml b/fixture/PutIntegrationResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutIntegrationResponse.yaml
diff --git a/fixture/PutIntegrationResponseResponse.proto b/fixture/PutIntegrationResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutIntegrationResponseResponse.proto
diff --git a/fixture/PutMethod.yaml b/fixture/PutMethod.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutMethod.yaml
diff --git a/fixture/PutMethodResponse.proto b/fixture/PutMethodResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutMethodResponse.proto
diff --git a/fixture/PutMethodResponse.yaml b/fixture/PutMethodResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutMethodResponse.yaml
diff --git a/fixture/PutMethodResponseResponse.proto b/fixture/PutMethodResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutMethodResponseResponse.proto
diff --git a/fixture/TestInvokeMethod.yaml b/fixture/TestInvokeMethod.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TestInvokeMethod.yaml
diff --git a/fixture/TestInvokeMethodResponse.proto b/fixture/TestInvokeMethodResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TestInvokeMethodResponse.proto
diff --git a/fixture/UpdateAPIKey.yaml b/fixture/UpdateAPIKey.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAPIKey.yaml
diff --git a/fixture/UpdateAPIKeyResponse.proto b/fixture/UpdateAPIKeyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAPIKeyResponse.proto
diff --git a/fixture/UpdateAccount.yaml b/fixture/UpdateAccount.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccount.yaml
diff --git a/fixture/UpdateAccountResponse.proto b/fixture/UpdateAccountResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAccountResponse.proto
diff --git a/fixture/UpdateBasePathMapping.yaml b/fixture/UpdateBasePathMapping.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBasePathMapping.yaml
diff --git a/fixture/UpdateBasePathMappingResponse.proto b/fixture/UpdateBasePathMappingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateBasePathMappingResponse.proto
diff --git a/fixture/UpdateClientCertificate.yaml b/fixture/UpdateClientCertificate.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateClientCertificate.yaml
diff --git a/fixture/UpdateClientCertificateResponse.proto b/fixture/UpdateClientCertificateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateClientCertificateResponse.proto
diff --git a/fixture/UpdateDeployment.yaml b/fixture/UpdateDeployment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDeployment.yaml
diff --git a/fixture/UpdateDeploymentResponse.proto b/fixture/UpdateDeploymentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDeploymentResponse.proto
diff --git a/fixture/UpdateDomainName.yaml b/fixture/UpdateDomainName.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDomainName.yaml
diff --git a/fixture/UpdateDomainNameResponse.proto b/fixture/UpdateDomainNameResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDomainNameResponse.proto
diff --git a/fixture/UpdateIntegration.yaml b/fixture/UpdateIntegration.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIntegration.yaml
diff --git a/fixture/UpdateIntegrationResponse.proto b/fixture/UpdateIntegrationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIntegrationResponse.proto
diff --git a/fixture/UpdateIntegrationResponse.yaml b/fixture/UpdateIntegrationResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIntegrationResponse.yaml
diff --git a/fixture/UpdateIntegrationResponseResponse.proto b/fixture/UpdateIntegrationResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateIntegrationResponseResponse.proto
diff --git a/fixture/UpdateMethod.yaml b/fixture/UpdateMethod.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMethod.yaml
diff --git a/fixture/UpdateMethodResponse.proto b/fixture/UpdateMethodResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMethodResponse.proto
diff --git a/fixture/UpdateMethodResponse.yaml b/fixture/UpdateMethodResponse.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMethodResponse.yaml
diff --git a/fixture/UpdateMethodResponseResponse.proto b/fixture/UpdateMethodResponseResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMethodResponseResponse.proto
diff --git a/fixture/UpdateModel.yaml b/fixture/UpdateModel.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateModel.yaml
diff --git a/fixture/UpdateModelResponse.proto b/fixture/UpdateModelResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateModelResponse.proto
diff --git a/fixture/UpdateResource.yaml b/fixture/UpdateResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateResource.yaml
diff --git a/fixture/UpdateResourceResponse.proto b/fixture/UpdateResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateResourceResponse.proto
diff --git a/fixture/UpdateRestAPI.yaml b/fixture/UpdateRestAPI.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRestAPI.yaml
diff --git a/fixture/UpdateRestAPIResponse.proto b/fixture/UpdateRestAPIResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateRestAPIResponse.proto
diff --git a/fixture/UpdateStage.yaml b/fixture/UpdateStage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateStage.yaml
diff --git a/fixture/UpdateStageResponse.proto b/fixture/UpdateStageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateStageResponse.proto
diff --git a/gen/Network/AWS/APIGateway.hs b/gen/Network/AWS/APIGateway.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway.hs
@@ -0,0 +1,538 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Amazon API Gateway
+--
+-- Amazon API Gateway helps developers deliver robust, secure and scalable
+-- mobile and web application backends. Amazon API Gateway allows
+-- developers to securely connect mobile and web applications to APIs that
+-- run on AWS Lambda, Amazon EC2, or other publicly addressable web
+-- services that are hosted outside of AWS.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/ AWS API Reference>
+module Network.AWS.APIGateway
+    (
+    -- * Service Configuration
+      aPIGateway
+
+    -- * Errors
+    -- $errors
+
+    -- ** ConflictException
+    , _ConflictException
+
+    -- ** NotFoundException
+    , _NotFoundException
+
+    -- ** TooManyRequestsException
+    , _TooManyRequestsException
+
+    -- ** ServiceUnavailableException
+    , _ServiceUnavailableException
+
+    -- ** UnauthorizedException
+    , _UnauthorizedException
+
+    -- ** BadRequestException
+    , _BadRequestException
+
+    -- ** LimitExceededException
+    , _LimitExceededException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** GetResource
+    , module Network.AWS.APIGateway.GetResource
+
+    -- ** GetDeployments
+    , module Network.AWS.APIGateway.GetDeployments
+
+    -- ** GetDeployment
+    , module Network.AWS.APIGateway.GetDeployment
+
+    -- ** GetDomainNames
+    , module Network.AWS.APIGateway.GetDomainNames
+
+    -- ** GetClientCertificate
+    , module Network.AWS.APIGateway.GetClientCertificate
+
+    -- ** GetMethodResponse
+    , module Network.AWS.APIGateway.GetMethodResponse
+
+    -- ** GetModels
+    , module Network.AWS.APIGateway.GetModels
+
+    -- ** GetBasePathMapping
+    , module Network.AWS.APIGateway.GetBasePathMapping
+
+    -- ** PutMethodResponse
+    , module Network.AWS.APIGateway.PutMethodResponse
+
+    -- ** DeleteMethodResponse
+    , module Network.AWS.APIGateway.DeleteMethodResponse
+
+    -- ** UpdateMethodResponse
+    , module Network.AWS.APIGateway.UpdateMethodResponse
+
+    -- ** DeleteStage
+    , module Network.AWS.APIGateway.DeleteStage
+
+    -- ** UpdateStage
+    , module Network.AWS.APIGateway.UpdateStage
+
+    -- ** GetRestAPIs
+    , module Network.AWS.APIGateway.GetRestAPIs
+
+    -- ** CreateDeployment
+    , module Network.AWS.APIGateway.CreateDeployment
+
+    -- ** CreateBasePathMapping
+    , module Network.AWS.APIGateway.CreateBasePathMapping
+
+    -- ** GetIntegration
+    , module Network.AWS.APIGateway.GetIntegration
+
+    -- ** UpdateAccount
+    , module Network.AWS.APIGateway.UpdateAccount
+
+    -- ** DeleteDeployment
+    , module Network.AWS.APIGateway.DeleteDeployment
+
+    -- ** UpdateDeployment
+    , module Network.AWS.APIGateway.UpdateDeployment
+
+    -- ** DeleteResource
+    , module Network.AWS.APIGateway.DeleteResource
+
+    -- ** UpdateResource
+    , module Network.AWS.APIGateway.UpdateResource
+
+    -- ** CreateModel
+    , module Network.AWS.APIGateway.CreateModel
+
+    -- ** GetIntegrationResponse
+    , module Network.AWS.APIGateway.GetIntegrationResponse
+
+    -- ** CreateDomainName
+    , module Network.AWS.APIGateway.CreateDomainName
+
+    -- ** DeleteModel
+    , module Network.AWS.APIGateway.DeleteModel
+
+    -- ** UpdateModel
+    , module Network.AWS.APIGateway.UpdateModel
+
+    -- ** DeleteAPIKey
+    , module Network.AWS.APIGateway.DeleteAPIKey
+
+    -- ** UpdateAPIKey
+    , module Network.AWS.APIGateway.UpdateAPIKey
+
+    -- ** GetRestAPI
+    , module Network.AWS.APIGateway.GetRestAPI
+
+    -- ** GetStages
+    , module Network.AWS.APIGateway.GetStages
+
+    -- ** GetMethod
+    , module Network.AWS.APIGateway.GetMethod
+
+    -- ** GetModel
+    , module Network.AWS.APIGateway.GetModel
+
+    -- ** UpdateRestAPI
+    , module Network.AWS.APIGateway.UpdateRestAPI
+
+    -- ** DeleteRestAPI
+    , module Network.AWS.APIGateway.DeleteRestAPI
+
+    -- ** TestInvokeMethod
+    , module Network.AWS.APIGateway.TestInvokeMethod
+
+    -- ** GetDomainName
+    , module Network.AWS.APIGateway.GetDomainName
+
+    -- ** PutIntegrationResponse
+    , module Network.AWS.APIGateway.PutIntegrationResponse
+
+    -- ** FlushStageCache
+    , module Network.AWS.APIGateway.FlushStageCache
+
+    -- ** CreateRestAPI
+    , module Network.AWS.APIGateway.CreateRestAPI
+
+    -- ** DeleteIntegrationResponse
+    , module Network.AWS.APIGateway.DeleteIntegrationResponse
+
+    -- ** UpdateIntegrationResponse
+    , module Network.AWS.APIGateway.UpdateIntegrationResponse
+
+    -- ** DeleteIntegration
+    , module Network.AWS.APIGateway.DeleteIntegration
+
+    -- ** UpdateIntegration
+    , module Network.AWS.APIGateway.UpdateIntegration
+
+    -- ** GenerateClientCertificate
+    , module Network.AWS.APIGateway.GenerateClientCertificate
+
+    -- ** GetResources
+    , module Network.AWS.APIGateway.GetResources
+
+    -- ** GetAccount
+    , module Network.AWS.APIGateway.GetAccount
+
+    -- ** PutIntegration
+    , module Network.AWS.APIGateway.PutIntegration
+
+    -- ** GetStage
+    , module Network.AWS.APIGateway.GetStage
+
+    -- ** GetSDK
+    , module Network.AWS.APIGateway.GetSDK
+
+    -- ** GetAPIKeys
+    , module Network.AWS.APIGateway.GetAPIKeys
+
+    -- ** DeleteBasePathMapping
+    , module Network.AWS.APIGateway.DeleteBasePathMapping
+
+    -- ** UpdateBasePathMapping
+    , module Network.AWS.APIGateway.UpdateBasePathMapping
+
+    -- ** DeleteClientCertificate
+    , module Network.AWS.APIGateway.DeleteClientCertificate
+
+    -- ** UpdateClientCertificate
+    , module Network.AWS.APIGateway.UpdateClientCertificate
+
+    -- ** CreateStage
+    , module Network.AWS.APIGateway.CreateStage
+
+    -- ** CreateAPIKey
+    , module Network.AWS.APIGateway.CreateAPIKey
+
+    -- ** PutMethod
+    , module Network.AWS.APIGateway.PutMethod
+
+    -- ** UpdateDomainName
+    , module Network.AWS.APIGateway.UpdateDomainName
+
+    -- ** DeleteDomainName
+    , module Network.AWS.APIGateway.DeleteDomainName
+
+    -- ** CreateResource
+    , module Network.AWS.APIGateway.CreateResource
+
+    -- ** DeleteMethod
+    , module Network.AWS.APIGateway.DeleteMethod
+
+    -- ** UpdateMethod
+    , module Network.AWS.APIGateway.UpdateMethod
+
+    -- ** GetClientCertificates
+    , module Network.AWS.APIGateway.GetClientCertificates
+
+    -- ** GetModelTemplate
+    , module Network.AWS.APIGateway.GetModelTemplate
+
+    -- ** GetBasePathMappings
+    , module Network.AWS.APIGateway.GetBasePathMappings
+
+    -- ** GetAPIKey
+    , module Network.AWS.APIGateway.GetAPIKey
+
+    -- * Types
+
+    -- ** CacheClusterSize
+    , CacheClusterSize (..)
+
+    -- ** CacheClusterStatus
+    , CacheClusterStatus (..)
+
+    -- ** IntegrationType
+    , IntegrationType (..)
+
+    -- ** Op
+    , Op (..)
+
+    -- ** APIKey
+    , APIKey
+    , apiKey
+    , akEnabled
+    , akCreatedDate
+    , akName
+    , akId
+    , akStageKeys
+    , akLastUpdatedDate
+    , akDescription
+
+    -- ** Account
+    , Account
+    , account
+    , aCloudwatchRoleARN
+    , aThrottleSettings
+
+    -- ** BasePathMapping
+    , BasePathMapping
+    , basePathMapping
+    , bpmStage
+    , bpmBasePath
+    , bpmRestAPIId
+
+    -- ** ClientCertificate
+    , ClientCertificate
+    , clientCertificate
+    , ccPemEncodedCertificate
+    , ccClientCertificateId
+    , ccCreatedDate
+    , ccExpirationDate
+    , ccDescription
+
+    -- ** Deployment
+    , Deployment
+    , deployment
+    , dApiSummary
+    , dCreatedDate
+    , dId
+    , dDescription
+
+    -- ** DomainName
+    , DomainName
+    , domainName
+    , dnCertificateName
+    , dnDomainName
+    , dnCertificateUploadDate
+    , dnDistributionDomainName
+
+    -- ** Integration
+    , Integration
+    , integration
+    , iHttpMethod
+    , iRequestTemplates
+    , iCredentials
+    , iRequestParameters
+    , iUri
+    , iIntegrationResponses
+    , iCacheNamespace
+    , iType
+    , iCacheKeyParameters
+
+    -- ** IntegrationResponse
+    , IntegrationResponse
+    , integrationResponse
+    , iResponseTemplates
+    , iSelectionPattern
+    , iStatusCode
+    , iResponseParameters
+
+    -- ** Method
+    , Method
+    , method
+    , mMethodResponses
+    , mHttpMethod
+    , mRequestModels
+    , mRequestParameters
+    , mAuthorizationType
+    , mApiKeyRequired
+    , mMethodIntegration
+
+    -- ** MethodResponse
+    , MethodResponse
+    , methodResponse
+    , mResponseModels
+    , mStatusCode
+    , mResponseParameters
+
+    -- ** MethodSetting
+    , MethodSetting
+    , methodSetting
+    , msCacheTtlInSeconds
+    , msDataTraceEnabled
+    , msThrottlingBurstLimit
+    , msCacheDataEncrypted
+    , msLoggingLevel
+    , msCachingEnabled
+    , msMetricsEnabled
+    , msThrottlingRateLimit
+
+    -- ** MethodSnapshot
+    , MethodSnapshot
+    , methodSnapshot
+    , msAuthorizationType
+    , msApiKeyRequired
+
+    -- ** Model
+    , Model
+    , model
+    , mSchema
+    , mName
+    , mId
+    , mDescription
+    , mContentType
+
+    -- ** PatchOperation
+    , PatchOperation
+    , patchOperation
+    , poOp
+    , poPath
+    , poValue
+    , poFrom
+
+    -- ** Resource
+    , Resource
+    , resource
+    , rPathPart
+    , rPath
+    , rId
+    , rResourceMethods
+    , rParentId
+
+    -- ** RestAPI
+    , RestAPI
+    , restAPI
+    , raCreatedDate
+    , raName
+    , raId
+    , raDescription
+
+    -- ** Stage
+    , Stage
+    , stage
+    , sDeploymentId
+    , sClientCertificateId
+    , sCreatedDate
+    , sCacheClusterStatus
+    , sMethodSettings
+    , sLastUpdatedDate
+    , sCacheClusterSize
+    , sCacheClusterEnabled
+    , sStageName
+    , sDescription
+
+    -- ** StageKey
+    , StageKey
+    , stageKey
+    , skRestAPIId
+    , skStageName
+
+    -- ** ThrottleSettings
+    , ThrottleSettings
+    , throttleSettings
+    , tsBurstLimit
+    , tsRateLimit
+    ) where
+
+import           Network.AWS.APIGateway.CreateAPIKey
+import           Network.AWS.APIGateway.CreateBasePathMapping
+import           Network.AWS.APIGateway.CreateDeployment
+import           Network.AWS.APIGateway.CreateDomainName
+import           Network.AWS.APIGateway.CreateModel
+import           Network.AWS.APIGateway.CreateResource
+import           Network.AWS.APIGateway.CreateRestAPI
+import           Network.AWS.APIGateway.CreateStage
+import           Network.AWS.APIGateway.DeleteAPIKey
+import           Network.AWS.APIGateway.DeleteBasePathMapping
+import           Network.AWS.APIGateway.DeleteClientCertificate
+import           Network.AWS.APIGateway.DeleteDeployment
+import           Network.AWS.APIGateway.DeleteDomainName
+import           Network.AWS.APIGateway.DeleteIntegration
+import           Network.AWS.APIGateway.DeleteIntegrationResponse
+import           Network.AWS.APIGateway.DeleteMethod
+import           Network.AWS.APIGateway.DeleteMethodResponse
+import           Network.AWS.APIGateway.DeleteModel
+import           Network.AWS.APIGateway.DeleteResource
+import           Network.AWS.APIGateway.DeleteRestAPI
+import           Network.AWS.APIGateway.DeleteStage
+import           Network.AWS.APIGateway.FlushStageCache
+import           Network.AWS.APIGateway.GenerateClientCertificate
+import           Network.AWS.APIGateway.GetAccount
+import           Network.AWS.APIGateway.GetAPIKey
+import           Network.AWS.APIGateway.GetAPIKeys
+import           Network.AWS.APIGateway.GetBasePathMapping
+import           Network.AWS.APIGateway.GetBasePathMappings
+import           Network.AWS.APIGateway.GetClientCertificate
+import           Network.AWS.APIGateway.GetClientCertificates
+import           Network.AWS.APIGateway.GetDeployment
+import           Network.AWS.APIGateway.GetDeployments
+import           Network.AWS.APIGateway.GetDomainName
+import           Network.AWS.APIGateway.GetDomainNames
+import           Network.AWS.APIGateway.GetIntegration
+import           Network.AWS.APIGateway.GetIntegrationResponse
+import           Network.AWS.APIGateway.GetMethod
+import           Network.AWS.APIGateway.GetMethodResponse
+import           Network.AWS.APIGateway.GetModel
+import           Network.AWS.APIGateway.GetModels
+import           Network.AWS.APIGateway.GetModelTemplate
+import           Network.AWS.APIGateway.GetResource
+import           Network.AWS.APIGateway.GetResources
+import           Network.AWS.APIGateway.GetRestAPI
+import           Network.AWS.APIGateway.GetRestAPIs
+import           Network.AWS.APIGateway.GetSDK
+import           Network.AWS.APIGateway.GetStage
+import           Network.AWS.APIGateway.GetStages
+import           Network.AWS.APIGateway.PutIntegration
+import           Network.AWS.APIGateway.PutIntegrationResponse
+import           Network.AWS.APIGateway.PutMethod
+import           Network.AWS.APIGateway.PutMethodResponse
+import           Network.AWS.APIGateway.TestInvokeMethod
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.UpdateAccount
+import           Network.AWS.APIGateway.UpdateAPIKey
+import           Network.AWS.APIGateway.UpdateBasePathMapping
+import           Network.AWS.APIGateway.UpdateClientCertificate
+import           Network.AWS.APIGateway.UpdateDeployment
+import           Network.AWS.APIGateway.UpdateDomainName
+import           Network.AWS.APIGateway.UpdateIntegration
+import           Network.AWS.APIGateway.UpdateIntegrationResponse
+import           Network.AWS.APIGateway.UpdateMethod
+import           Network.AWS.APIGateway.UpdateMethodResponse
+import           Network.AWS.APIGateway.UpdateModel
+import           Network.AWS.APIGateway.UpdateResource
+import           Network.AWS.APIGateway.UpdateRestAPI
+import           Network.AWS.APIGateway.UpdateStage
+import           Network.AWS.APIGateway.Waiters
+
+{- $errors
+Error matchers are designed for use with the functions provided by
+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+This allows catching (and rethrowing) service specific errors returned
+by 'APIGateway'.
+-}
+
+{- $operations
+Some AWS operations return results that are incomplete and require subsequent
+requests in order to obtain the entire result set. The process of sending
+subsequent requests to continue where a previous request left off is called
+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+1000 objects at a time, and you must send subsequent requests with the
+appropriate Marker in order to retrieve the next page of results.
+
+Operations that have an 'AWSPager' instance can transparently perform subsequent
+requests, correctly setting Markers and other request facets to iterate through
+the entire result set of a truncated API operation. Operations which support
+this have an additional note in the documentation.
+
+Many operations have the ability to filter results on the server side. See the
+individual operation parameters for details.
+-}
+
+{- $waiters
+Waiters poll by repeatedly sending a request until some remote success condition
+configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+determines how many attempts should be made, in addition to delay and retry strategies.
+-}
diff --git a/gen/Network/AWS/APIGateway/CreateAPIKey.hs b/gen/Network/AWS/APIGateway/CreateAPIKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateAPIKey.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateAPIKey
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateAPIKey.html AWS API Reference> for CreateAPIKey.
+module Network.AWS.APIGateway.CreateAPIKey
+    (
+    -- * Creating a Request
+      createAPIKey
+    , CreateAPIKey
+    -- * Request Lenses
+    , cakEnabled
+    , cakName
+    , cakStageKeys
+    , cakDescription
+
+    -- * Destructuring the Response
+    , apiKey
+    , APIKey
+    -- * Response Lenses
+    , akEnabled
+    , akCreatedDate
+    , akName
+    , akId
+    , akStageKeys
+    , akLastUpdatedDate
+    , akDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'createAPIKey' smart constructor.
+data CreateAPIKey = CreateAPIKey'
+    { _cakEnabled     :: !(Maybe Bool)
+    , _cakName        :: !(Maybe Text)
+    , _cakStageKeys   :: !(Maybe [StageKey])
+    , _cakDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateAPIKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cakEnabled'
+--
+-- * 'cakName'
+--
+-- * 'cakStageKeys'
+--
+-- * 'cakDescription'
+createAPIKey
+    :: CreateAPIKey
+createAPIKey =
+    CreateAPIKey'
+    { _cakEnabled = Nothing
+    , _cakName = Nothing
+    , _cakStageKeys = Nothing
+    , _cakDescription = Nothing
+    }
+
+-- | Specifies whether the ApiKey can be used by callers.
+cakEnabled :: Lens' CreateAPIKey (Maybe Bool)
+cakEnabled = lens _cakEnabled (\ s a -> s{_cakEnabled = a});
+
+-- | The name of the ApiKey.
+cakName :: Lens' CreateAPIKey (Maybe Text)
+cakName = lens _cakName (\ s a -> s{_cakName = a});
+
+-- | Specifies whether the ApiKey can be used by callers.
+cakStageKeys :: Lens' CreateAPIKey [StageKey]
+cakStageKeys = lens _cakStageKeys (\ s a -> s{_cakStageKeys = a}) . _Default . _Coerce;
+
+-- | The description of the ApiKey.
+cakDescription :: Lens' CreateAPIKey (Maybe Text)
+cakDescription = lens _cakDescription (\ s a -> s{_cakDescription = a});
+
+instance AWSRequest CreateAPIKey where
+        type Rs CreateAPIKey = APIKey
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateAPIKey where
+        toHeaders = const mempty
+
+instance ToJSON CreateAPIKey where
+        toJSON CreateAPIKey'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _cakEnabled,
+                  ("name" .=) <$> _cakName,
+                  ("stageKeys" .=) <$> _cakStageKeys,
+                  ("description" .=) <$> _cakDescription])
+
+instance ToPath CreateAPIKey where
+        toPath = const "/apikeys"
+
+instance ToQuery CreateAPIKey where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/CreateBasePathMapping.hs b/gen/Network/AWS/APIGateway/CreateBasePathMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateBasePathMapping.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateBasePathMapping
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new BasePathMapping resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateBasePathMapping.html AWS API Reference> for CreateBasePathMapping.
+module Network.AWS.APIGateway.CreateBasePathMapping
+    (
+    -- * Creating a Request
+      createBasePathMapping
+    , CreateBasePathMapping
+    -- * Request Lenses
+    , cbpmStage
+    , cbpmBasePath
+    , cbpmDomainName
+    , cbpmRestAPIId
+
+    -- * Destructuring the Response
+    , basePathMapping
+    , BasePathMapping
+    -- * Response Lenses
+    , bpmStage
+    , bpmBasePath
+    , bpmRestAPIId
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to create a new BasePathMapping resource.
+--
+-- /See:/ 'createBasePathMapping' smart constructor.
+data CreateBasePathMapping = CreateBasePathMapping'
+    { _cbpmStage      :: !(Maybe Text)
+    , _cbpmBasePath   :: !(Maybe Text)
+    , _cbpmDomainName :: !Text
+    , _cbpmRestAPIId  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateBasePathMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cbpmStage'
+--
+-- * 'cbpmBasePath'
+--
+-- * 'cbpmDomainName'
+--
+-- * 'cbpmRestAPIId'
+createBasePathMapping
+    :: Text -- ^ 'cbpmDomainName'
+    -> Text -- ^ 'cbpmRestAPIId'
+    -> CreateBasePathMapping
+createBasePathMapping pDomainName_ pRestAPIId_ =
+    CreateBasePathMapping'
+    { _cbpmStage = Nothing
+    , _cbpmBasePath = Nothing
+    , _cbpmDomainName = pDomainName_
+    , _cbpmRestAPIId = pRestAPIId_
+    }
+
+-- | The name of the API\'s stage that you want to use for this mapping.
+-- Leave this blank if you do not want callers to explicitly specify the
+-- stage name after any base path name.
+cbpmStage :: Lens' CreateBasePathMapping (Maybe Text)
+cbpmStage = lens _cbpmStage (\ s a -> s{_cbpmStage = a});
+
+-- | The base path name that callers of the API must provide as part of the
+-- URL after the domain name. This value must be unique for all of the
+-- mappings across a single API. Leave this blank if you do not want
+-- callers to specify a base path name after the domain name.
+cbpmBasePath :: Lens' CreateBasePathMapping (Maybe Text)
+cbpmBasePath = lens _cbpmBasePath (\ s a -> s{_cbpmBasePath = a});
+
+-- | The domain name of the BasePathMapping resource to create.
+cbpmDomainName :: Lens' CreateBasePathMapping Text
+cbpmDomainName = lens _cbpmDomainName (\ s a -> s{_cbpmDomainName = a});
+
+-- | The name of the API that you want to apply this mapping to.
+cbpmRestAPIId :: Lens' CreateBasePathMapping Text
+cbpmRestAPIId = lens _cbpmRestAPIId (\ s a -> s{_cbpmRestAPIId = a});
+
+instance AWSRequest CreateBasePathMapping where
+        type Rs CreateBasePathMapping = BasePathMapping
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateBasePathMapping where
+        toHeaders = const mempty
+
+instance ToJSON CreateBasePathMapping where
+        toJSON CreateBasePathMapping'{..}
+          = object
+              (catMaybes
+                 [("stage" .=) <$> _cbpmStage,
+                  ("basePath" .=) <$> _cbpmBasePath,
+                  Just ("restApiId" .= _cbpmRestAPIId)])
+
+instance ToPath CreateBasePathMapping where
+        toPath CreateBasePathMapping'{..}
+          = mconcat
+              ["/domainnames/", toBS _cbpmDomainName,
+               "/basepathmappings"]
+
+instance ToQuery CreateBasePathMapping where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/CreateDeployment.hs b/gen/Network/AWS/APIGateway/CreateDeployment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateDeployment.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateDeployment
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a Deployment resource, which makes a specified RestApi callable
+-- over the internet.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateDeployment.html AWS API Reference> for CreateDeployment.
+module Network.AWS.APIGateway.CreateDeployment
+    (
+    -- * Creating a Request
+      createDeployment
+    , CreateDeployment
+    -- * Request Lenses
+    , cdStageDescription
+    , cdCacheClusterSize
+    , cdCacheClusterEnabled
+    , cdDescription
+    , cdRestAPIId
+    , cdStageName
+
+    -- * Destructuring the Response
+    , deployment
+    , Deployment
+    -- * Response Lenses
+    , dApiSummary
+    , dCreatedDate
+    , dId
+    , dDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to create a Deployment resource.
+--
+-- /See:/ 'createDeployment' smart constructor.
+data CreateDeployment = CreateDeployment'
+    { _cdStageDescription    :: !(Maybe Text)
+    , _cdCacheClusterSize    :: !(Maybe CacheClusterSize)
+    , _cdCacheClusterEnabled :: !(Maybe Bool)
+    , _cdDescription         :: !(Maybe Text)
+    , _cdRestAPIId           :: !Text
+    , _cdStageName           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDeployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdStageDescription'
+--
+-- * 'cdCacheClusterSize'
+--
+-- * 'cdCacheClusterEnabled'
+--
+-- * 'cdDescription'
+--
+-- * 'cdRestAPIId'
+--
+-- * 'cdStageName'
+createDeployment
+    :: Text -- ^ 'cdRestAPIId'
+    -> Text -- ^ 'cdStageName'
+    -> CreateDeployment
+createDeployment pRestAPIId_ pStageName_ =
+    CreateDeployment'
+    { _cdStageDescription = Nothing
+    , _cdCacheClusterSize = Nothing
+    , _cdCacheClusterEnabled = Nothing
+    , _cdDescription = Nothing
+    , _cdRestAPIId = pRestAPIId_
+    , _cdStageName = pStageName_
+    }
+
+-- | The description of the Stage resource for the Deployment resource to
+-- create.
+cdStageDescription :: Lens' CreateDeployment (Maybe Text)
+cdStageDescription = lens _cdStageDescription (\ s a -> s{_cdStageDescription = a});
+
+-- | Specifies the cache cluster size for the Stage resource specified in the
+-- input, if a cache cluster is enabled.
+cdCacheClusterSize :: Lens' CreateDeployment (Maybe CacheClusterSize)
+cdCacheClusterSize = lens _cdCacheClusterSize (\ s a -> s{_cdCacheClusterSize = a});
+
+-- | Enables a cache cluster for the Stage resource specified in the input.
+cdCacheClusterEnabled :: Lens' CreateDeployment (Maybe Bool)
+cdCacheClusterEnabled = lens _cdCacheClusterEnabled (\ s a -> s{_cdCacheClusterEnabled = a});
+
+-- | The description for the Deployment resource to create.
+cdDescription :: Lens' CreateDeployment (Maybe Text)
+cdDescription = lens _cdDescription (\ s a -> s{_cdDescription = a});
+
+-- | The RestApi resource identifier for the Deployment resource to create.
+cdRestAPIId :: Lens' CreateDeployment Text
+cdRestAPIId = lens _cdRestAPIId (\ s a -> s{_cdRestAPIId = a});
+
+-- | The name of the Stage resource for the Deployment resource to create.
+cdStageName :: Lens' CreateDeployment Text
+cdStageName = lens _cdStageName (\ s a -> s{_cdStageName = a});
+
+instance AWSRequest CreateDeployment where
+        type Rs CreateDeployment = Deployment
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateDeployment where
+        toHeaders = const mempty
+
+instance ToJSON CreateDeployment where
+        toJSON CreateDeployment'{..}
+          = object
+              (catMaybes
+                 [("stageDescription" .=) <$> _cdStageDescription,
+                  ("cacheClusterSize" .=) <$> _cdCacheClusterSize,
+                  ("cacheClusterEnabled" .=) <$>
+                    _cdCacheClusterEnabled,
+                  ("description" .=) <$> _cdDescription,
+                  Just ("stageName" .= _cdStageName)])
+
+instance ToPath CreateDeployment where
+        toPath CreateDeployment'{..}
+          = mconcat
+              ["/restapis/", toBS _cdRestAPIId, "/deployments"]
+
+instance ToQuery CreateDeployment where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/CreateDomainName.hs b/gen/Network/AWS/APIGateway/CreateDomainName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateDomainName.hs
@@ -0,0 +1,142 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateDomainName
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new domain name.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateDomainName.html AWS API Reference> for CreateDomainName.
+module Network.AWS.APIGateway.CreateDomainName
+    (
+    -- * Creating a Request
+      createDomainName
+    , CreateDomainName
+    -- * Request Lenses
+    , cdnDomainName
+    , cdnCertificateName
+    , cdnCertificateBody
+    , cdnCertificatePrivateKey
+    , cdnCertificateChain
+
+    -- * Destructuring the Response
+    , domainName
+    , DomainName
+    -- * Response Lenses
+    , dnCertificateName
+    , dnDomainName
+    , dnCertificateUploadDate
+    , dnDistributionDomainName
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to create a new domain name.
+--
+-- /See:/ 'createDomainName' smart constructor.
+data CreateDomainName = CreateDomainName'
+    { _cdnDomainName            :: !Text
+    , _cdnCertificateName       :: !Text
+    , _cdnCertificateBody       :: !Text
+    , _cdnCertificatePrivateKey :: !Text
+    , _cdnCertificateChain      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateDomainName' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdnDomainName'
+--
+-- * 'cdnCertificateName'
+--
+-- * 'cdnCertificateBody'
+--
+-- * 'cdnCertificatePrivateKey'
+--
+-- * 'cdnCertificateChain'
+createDomainName
+    :: Text -- ^ 'cdnDomainName'
+    -> Text -- ^ 'cdnCertificateName'
+    -> Text -- ^ 'cdnCertificateBody'
+    -> Text -- ^ 'cdnCertificatePrivateKey'
+    -> Text -- ^ 'cdnCertificateChain'
+    -> CreateDomainName
+createDomainName pDomainName_ pCertificateName_ pCertificateBody_ pCertificatePrivateKey_ pCertificateChain_ =
+    CreateDomainName'
+    { _cdnDomainName = pDomainName_
+    , _cdnCertificateName = pCertificateName_
+    , _cdnCertificateBody = pCertificateBody_
+    , _cdnCertificatePrivateKey = pCertificatePrivateKey_
+    , _cdnCertificateChain = pCertificateChain_
+    }
+
+-- | The name of the DomainName resource.
+cdnDomainName :: Lens' CreateDomainName Text
+cdnDomainName = lens _cdnDomainName (\ s a -> s{_cdnDomainName = a});
+
+-- | The name of the certificate.
+cdnCertificateName :: Lens' CreateDomainName Text
+cdnCertificateName = lens _cdnCertificateName (\ s a -> s{_cdnCertificateName = a});
+
+-- | The body of the server certificate provided by your certificate
+-- authority.
+cdnCertificateBody :: Lens' CreateDomainName Text
+cdnCertificateBody = lens _cdnCertificateBody (\ s a -> s{_cdnCertificateBody = a});
+
+-- | Your certificate\'s private key.
+cdnCertificatePrivateKey :: Lens' CreateDomainName Text
+cdnCertificatePrivateKey = lens _cdnCertificatePrivateKey (\ s a -> s{_cdnCertificatePrivateKey = a});
+
+-- | The intermediate certificates and optionally the root certificate, one
+-- after the other without any blank lines. If you include the root
+-- certificate, your certificate chain must start with intermediate
+-- certificates and end with the root certificate. Use the intermediate
+-- certificates that were provided by your certificate authority. Do not
+-- include any intermediaries that are not in the chain of trust path.
+cdnCertificateChain :: Lens' CreateDomainName Text
+cdnCertificateChain = lens _cdnCertificateChain (\ s a -> s{_cdnCertificateChain = a});
+
+instance AWSRequest CreateDomainName where
+        type Rs CreateDomainName = DomainName
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateDomainName where
+        toHeaders = const mempty
+
+instance ToJSON CreateDomainName where
+        toJSON CreateDomainName'{..}
+          = object
+              (catMaybes
+                 [Just ("domainName" .= _cdnDomainName),
+                  Just ("certificateName" .= _cdnCertificateName),
+                  Just ("certificateBody" .= _cdnCertificateBody),
+                  Just
+                    ("certificatePrivateKey" .=
+                       _cdnCertificatePrivateKey),
+                  Just ("certificateChain" .= _cdnCertificateChain)])
+
+instance ToPath CreateDomainName where
+        toPath = const "/domainnames"
+
+instance ToQuery CreateDomainName where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/CreateModel.hs b/gen/Network/AWS/APIGateway/CreateModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateModel.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateModel
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a new Model resource to an existing RestApi resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateModel.html AWS API Reference> for CreateModel.
+module Network.AWS.APIGateway.CreateModel
+    (
+    -- * Creating a Request
+      createModel
+    , CreateModel
+    -- * Request Lenses
+    , cmSchema
+    , cmDescription
+    , cmRestAPIId
+    , cmName
+    , cmContentType
+
+    -- * Destructuring the Response
+    , model
+    , Model
+    -- * Response Lenses
+    , mSchema
+    , mName
+    , mId
+    , mDescription
+    , mContentType
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to add a new Model to an existing RestApi resource.
+--
+-- /See:/ 'createModel' smart constructor.
+data CreateModel = CreateModel'
+    { _cmSchema      :: !(Maybe Text)
+    , _cmDescription :: !(Maybe Text)
+    , _cmRestAPIId   :: !Text
+    , _cmName        :: !Text
+    , _cmContentType :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateModel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmSchema'
+--
+-- * 'cmDescription'
+--
+-- * 'cmRestAPIId'
+--
+-- * 'cmName'
+--
+-- * 'cmContentType'
+createModel
+    :: Text -- ^ 'cmRestAPIId'
+    -> Text -- ^ 'cmName'
+    -> Text -- ^ 'cmContentType'
+    -> CreateModel
+createModel pRestAPIId_ pName_ pContentType_ =
+    CreateModel'
+    { _cmSchema = Nothing
+    , _cmDescription = Nothing
+    , _cmRestAPIId = pRestAPIId_
+    , _cmName = pName_
+    , _cmContentType = pContentType_
+    }
+
+-- | The schema for the model. For 'application\/json' models, this should be
+-- <http://json-schema.org/documentation.html JSON-schema draft v4> model.
+cmSchema :: Lens' CreateModel (Maybe Text)
+cmSchema = lens _cmSchema (\ s a -> s{_cmSchema = a});
+
+-- | The description of the model.
+cmDescription :: Lens' CreateModel (Maybe Text)
+cmDescription = lens _cmDescription (\ s a -> s{_cmDescription = a});
+
+-- | The RestApi identifier under which the Model will be created.
+cmRestAPIId :: Lens' CreateModel Text
+cmRestAPIId = lens _cmRestAPIId (\ s a -> s{_cmRestAPIId = a});
+
+-- | The name of the model.
+cmName :: Lens' CreateModel Text
+cmName = lens _cmName (\ s a -> s{_cmName = a});
+
+-- | The content-type for the model.
+cmContentType :: Lens' CreateModel Text
+cmContentType = lens _cmContentType (\ s a -> s{_cmContentType = a});
+
+instance AWSRequest CreateModel where
+        type Rs CreateModel = Model
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateModel where
+        toHeaders = const mempty
+
+instance ToJSON CreateModel where
+        toJSON CreateModel'{..}
+          = object
+              (catMaybes
+                 [("schema" .=) <$> _cmSchema,
+                  ("description" .=) <$> _cmDescription,
+                  Just ("name" .= _cmName),
+                  Just ("contentType" .= _cmContentType)])
+
+instance ToPath CreateModel where
+        toPath CreateModel'{..}
+          = mconcat
+              ["/restapis/", toBS _cmRestAPIId, "/models"]
+
+instance ToQuery CreateModel where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/CreateResource.hs b/gen/Network/AWS/APIGateway/CreateResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateResource.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateResource
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a Resource resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateResource.html AWS API Reference> for CreateResource.
+module Network.AWS.APIGateway.CreateResource
+    (
+    -- * Creating a Request
+      createResource
+    , CreateResource
+    -- * Request Lenses
+    , crRestAPIId
+    , crParentId
+    , crPathPart
+
+    -- * Destructuring the Response
+    , resource
+    , Resource
+    -- * Response Lenses
+    , rPathPart
+    , rPath
+    , rId
+    , rResourceMethods
+    , rParentId
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to create a Resource resource.
+--
+-- /See:/ 'createResource' smart constructor.
+data CreateResource = CreateResource'
+    { _crRestAPIId :: !Text
+    , _crParentId  :: !Text
+    , _crPathPart  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crRestAPIId'
+--
+-- * 'crParentId'
+--
+-- * 'crPathPart'
+createResource
+    :: Text -- ^ 'crRestAPIId'
+    -> Text -- ^ 'crParentId'
+    -> Text -- ^ 'crPathPart'
+    -> CreateResource
+createResource pRestAPIId_ pParentId_ pPathPart_ =
+    CreateResource'
+    { _crRestAPIId = pRestAPIId_
+    , _crParentId = pParentId_
+    , _crPathPart = pPathPart_
+    }
+
+-- | The identifier of the RestApi for the resource.
+crRestAPIId :: Lens' CreateResource Text
+crRestAPIId = lens _crRestAPIId (\ s a -> s{_crRestAPIId = a});
+
+-- | The parent resource\'s identifier.
+crParentId :: Lens' CreateResource Text
+crParentId = lens _crParentId (\ s a -> s{_crParentId = a});
+
+-- | The last path segment for this resource.
+crPathPart :: Lens' CreateResource Text
+crPathPart = lens _crPathPart (\ s a -> s{_crPathPart = a});
+
+instance AWSRequest CreateResource where
+        type Rs CreateResource = Resource
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateResource where
+        toHeaders = const mempty
+
+instance ToJSON CreateResource where
+        toJSON CreateResource'{..}
+          = object
+              (catMaybes [Just ("pathPart" .= _crPathPart)])
+
+instance ToPath CreateResource where
+        toPath CreateResource'{..}
+          = mconcat
+              ["/restapis/", toBS _crRestAPIId, "/resources/",
+               toBS _crParentId]
+
+instance ToQuery CreateResource where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/CreateRestAPI.hs b/gen/Network/AWS/APIGateway/CreateRestAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateRestAPI.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateRestAPI
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new RestApi resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateRestAPI.html AWS API Reference> for CreateRestAPI.
+module Network.AWS.APIGateway.CreateRestAPI
+    (
+    -- * Creating a Request
+      createRestAPI
+    , CreateRestAPI
+    -- * Request Lenses
+    , craCloneFrom
+    , craDescription
+    , craName
+
+    -- * Destructuring the Response
+    , restAPI
+    , RestAPI
+    -- * Response Lenses
+    , raCreatedDate
+    , raName
+    , raId
+    , raDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to add a new RestApi resource to your collection.
+--
+-- /See:/ 'createRestAPI' smart constructor.
+data CreateRestAPI = CreateRestAPI'
+    { _craCloneFrom   :: !(Maybe Text)
+    , _craDescription :: !(Maybe Text)
+    , _craName        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateRestAPI' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'craCloneFrom'
+--
+-- * 'craDescription'
+--
+-- * 'craName'
+createRestAPI
+    :: Text -- ^ 'craName'
+    -> CreateRestAPI
+createRestAPI pName_ =
+    CreateRestAPI'
+    { _craCloneFrom = Nothing
+    , _craDescription = Nothing
+    , _craName = pName_
+    }
+
+-- | The name of the RestApi that you want to clone from.
+craCloneFrom :: Lens' CreateRestAPI (Maybe Text)
+craCloneFrom = lens _craCloneFrom (\ s a -> s{_craCloneFrom = a});
+
+-- | The description of the RestApi.
+craDescription :: Lens' CreateRestAPI (Maybe Text)
+craDescription = lens _craDescription (\ s a -> s{_craDescription = a});
+
+-- | The name of the RestApi.
+craName :: Lens' CreateRestAPI Text
+craName = lens _craName (\ s a -> s{_craName = a});
+
+instance AWSRequest CreateRestAPI where
+        type Rs CreateRestAPI = RestAPI
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateRestAPI where
+        toHeaders = const mempty
+
+instance ToJSON CreateRestAPI where
+        toJSON CreateRestAPI'{..}
+          = object
+              (catMaybes
+                 [("cloneFrom" .=) <$> _craCloneFrom,
+                  ("description" .=) <$> _craDescription,
+                  Just ("name" .= _craName)])
+
+instance ToPath CreateRestAPI where
+        toPath = const "/restapis"
+
+instance ToQuery CreateRestAPI where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/CreateStage.hs b/gen/Network/AWS/APIGateway/CreateStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/CreateStage.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.CreateStage
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a Stage resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/CreateStage.html AWS API Reference> for CreateStage.
+module Network.AWS.APIGateway.CreateStage
+    (
+    -- * Creating a Request
+      createStage
+    , CreateStage
+    -- * Request Lenses
+    , csCacheClusterSize
+    , csCacheClusterEnabled
+    , csDescription
+    , csRestAPIId
+    , csStageName
+    , csDeploymentId
+
+    -- * Destructuring the Response
+    , stage
+    , Stage
+    -- * Response Lenses
+    , sDeploymentId
+    , sClientCertificateId
+    , sCreatedDate
+    , sCacheClusterStatus
+    , sMethodSettings
+    , sLastUpdatedDate
+    , sCacheClusterSize
+    , sCacheClusterEnabled
+    , sStageName
+    , sDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to create a Stage resource.
+--
+-- /See:/ 'createStage' smart constructor.
+data CreateStage = CreateStage'
+    { _csCacheClusterSize    :: !(Maybe CacheClusterSize)
+    , _csCacheClusterEnabled :: !(Maybe Bool)
+    , _csDescription         :: !(Maybe Text)
+    , _csRestAPIId           :: !Text
+    , _csStageName           :: !Text
+    , _csDeploymentId        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateStage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csCacheClusterSize'
+--
+-- * 'csCacheClusterEnabled'
+--
+-- * 'csDescription'
+--
+-- * 'csRestAPIId'
+--
+-- * 'csStageName'
+--
+-- * 'csDeploymentId'
+createStage
+    :: Text -- ^ 'csRestAPIId'
+    -> Text -- ^ 'csStageName'
+    -> Text -- ^ 'csDeploymentId'
+    -> CreateStage
+createStage pRestAPIId_ pStageName_ pDeploymentId_ =
+    CreateStage'
+    { _csCacheClusterSize = Nothing
+    , _csCacheClusterEnabled = Nothing
+    , _csDescription = Nothing
+    , _csRestAPIId = pRestAPIId_
+    , _csStageName = pStageName_
+    , _csDeploymentId = pDeploymentId_
+    }
+
+-- | The stage\'s cache cluster size.
+csCacheClusterSize :: Lens' CreateStage (Maybe CacheClusterSize)
+csCacheClusterSize = lens _csCacheClusterSize (\ s a -> s{_csCacheClusterSize = a});
+
+-- | Whether cache clustering is enabled for the stage.
+csCacheClusterEnabled :: Lens' CreateStage (Maybe Bool)
+csCacheClusterEnabled = lens _csCacheClusterEnabled (\ s a -> s{_csCacheClusterEnabled = a});
+
+-- | The description of the Stage resource.
+csDescription :: Lens' CreateStage (Maybe Text)
+csDescription = lens _csDescription (\ s a -> s{_csDescription = a});
+
+-- | The identifier of the RestApi resource for the Stage resource to create.
+csRestAPIId :: Lens' CreateStage Text
+csRestAPIId = lens _csRestAPIId (\ s a -> s{_csRestAPIId = a});
+
+-- | The name for the Stage resource.
+csStageName :: Lens' CreateStage Text
+csStageName = lens _csStageName (\ s a -> s{_csStageName = a});
+
+-- | The identifier of the Deployment resource for the Stage resource.
+csDeploymentId :: Lens' CreateStage Text
+csDeploymentId = lens _csDeploymentId (\ s a -> s{_csDeploymentId = a});
+
+instance AWSRequest CreateStage where
+        type Rs CreateStage = Stage
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateStage where
+        toHeaders = const mempty
+
+instance ToJSON CreateStage where
+        toJSON CreateStage'{..}
+          = object
+              (catMaybes
+                 [("cacheClusterSize" .=) <$> _csCacheClusterSize,
+                  ("cacheClusterEnabled" .=) <$>
+                    _csCacheClusterEnabled,
+                  ("description" .=) <$> _csDescription,
+                  Just ("stageName" .= _csStageName),
+                  Just ("deploymentId" .= _csDeploymentId)])
+
+instance ToPath CreateStage where
+        toPath CreateStage'{..}
+          = mconcat
+              ["/restapis/", toBS _csRestAPIId, "/stages"]
+
+instance ToQuery CreateStage where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/DeleteAPIKey.hs b/gen/Network/AWS/APIGateway/DeleteAPIKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteAPIKey.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteAPIKey
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the ApiKey resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteAPIKey.html AWS API Reference> for DeleteAPIKey.
+module Network.AWS.APIGateway.DeleteAPIKey
+    (
+    -- * Creating a Request
+      deleteAPIKey
+    , DeleteAPIKey
+    -- * Request Lenses
+    , dakApiKey
+
+    -- * Destructuring the Response
+    , deleteAPIKeyResponse
+    , DeleteAPIKeyResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to delete the ApiKey resource.
+--
+-- /See:/ 'deleteAPIKey' smart constructor.
+newtype DeleteAPIKey = DeleteAPIKey'
+    { _dakApiKey :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteAPIKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dakApiKey'
+deleteAPIKey
+    :: Text -- ^ 'dakApiKey'
+    -> DeleteAPIKey
+deleteAPIKey pApiKey_ =
+    DeleteAPIKey'
+    { _dakApiKey = pApiKey_
+    }
+
+-- | The identifier of the ApiKey resource to be deleted.
+dakApiKey :: Lens' DeleteAPIKey Text
+dakApiKey = lens _dakApiKey (\ s a -> s{_dakApiKey = a});
+
+instance AWSRequest DeleteAPIKey where
+        type Rs DeleteAPIKey = DeleteAPIKeyResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteAPIKeyResponse'
+
+instance ToHeaders DeleteAPIKey where
+        toHeaders = const mempty
+
+instance ToPath DeleteAPIKey where
+        toPath DeleteAPIKey'{..}
+          = mconcat ["/apikeys/", toBS _dakApiKey]
+
+instance ToQuery DeleteAPIKey where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteAPIKeyResponse' smart constructor.
+data DeleteAPIKeyResponse =
+    DeleteAPIKeyResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteAPIKeyResponse' with the minimum fields required to make a request.
+--
+deleteAPIKeyResponse
+    :: DeleteAPIKeyResponse
+deleteAPIKeyResponse = DeleteAPIKeyResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteBasePathMapping.hs b/gen/Network/AWS/APIGateway/DeleteBasePathMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteBasePathMapping.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteBasePathMapping
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the BasePathMapping resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteBasePathMapping.html AWS API Reference> for DeleteBasePathMapping.
+module Network.AWS.APIGateway.DeleteBasePathMapping
+    (
+    -- * Creating a Request
+      deleteBasePathMapping
+    , DeleteBasePathMapping
+    -- * Request Lenses
+    , dbpmDomainName
+    , dbpmBasePath
+
+    -- * Destructuring the Response
+    , deleteBasePathMappingResponse
+    , DeleteBasePathMappingResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to delete the BasePathMapping resource.
+--
+-- /See:/ 'deleteBasePathMapping' smart constructor.
+data DeleteBasePathMapping = DeleteBasePathMapping'
+    { _dbpmDomainName :: !Text
+    , _dbpmBasePath   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteBasePathMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dbpmDomainName'
+--
+-- * 'dbpmBasePath'
+deleteBasePathMapping
+    :: Text -- ^ 'dbpmDomainName'
+    -> Text -- ^ 'dbpmBasePath'
+    -> DeleteBasePathMapping
+deleteBasePathMapping pDomainName_ pBasePath_ =
+    DeleteBasePathMapping'
+    { _dbpmDomainName = pDomainName_
+    , _dbpmBasePath = pBasePath_
+    }
+
+-- | The domain name of the BasePathMapping resource to delete.
+dbpmDomainName :: Lens' DeleteBasePathMapping Text
+dbpmDomainName = lens _dbpmDomainName (\ s a -> s{_dbpmDomainName = a});
+
+-- | The base path name of the BasePathMapping resource to delete.
+dbpmBasePath :: Lens' DeleteBasePathMapping Text
+dbpmBasePath = lens _dbpmBasePath (\ s a -> s{_dbpmBasePath = a});
+
+instance AWSRequest DeleteBasePathMapping where
+        type Rs DeleteBasePathMapping =
+             DeleteBasePathMappingResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteBasePathMappingResponse'
+
+instance ToHeaders DeleteBasePathMapping where
+        toHeaders = const mempty
+
+instance ToPath DeleteBasePathMapping where
+        toPath DeleteBasePathMapping'{..}
+          = mconcat
+              ["/domainnames/", toBS _dbpmDomainName,
+               "/basepathmappings/", toBS _dbpmBasePath]
+
+instance ToQuery DeleteBasePathMapping where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteBasePathMappingResponse' smart constructor.
+data DeleteBasePathMappingResponse =
+    DeleteBasePathMappingResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteBasePathMappingResponse' with the minimum fields required to make a request.
+--
+deleteBasePathMappingResponse
+    :: DeleteBasePathMappingResponse
+deleteBasePathMappingResponse = DeleteBasePathMappingResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteClientCertificate.hs b/gen/Network/AWS/APIGateway/DeleteClientCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteClientCertificate.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteClientCertificate
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteClientCertificate.html AWS API Reference> for DeleteClientCertificate.
+module Network.AWS.APIGateway.DeleteClientCertificate
+    (
+    -- * Creating a Request
+      deleteClientCertificate
+    , DeleteClientCertificate
+    -- * Request Lenses
+    , dccClientCertificateId
+
+    -- * Destructuring the Response
+    , deleteClientCertificateResponse
+    , DeleteClientCertificateResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deleteClientCertificate' smart constructor.
+newtype DeleteClientCertificate = DeleteClientCertificate'
+    { _dccClientCertificateId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteClientCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dccClientCertificateId'
+deleteClientCertificate
+    :: Text -- ^ 'dccClientCertificateId'
+    -> DeleteClientCertificate
+deleteClientCertificate pClientCertificateId_ =
+    DeleteClientCertificate'
+    { _dccClientCertificateId = pClientCertificateId_
+    }
+
+-- | Undocumented member.
+dccClientCertificateId :: Lens' DeleteClientCertificate Text
+dccClientCertificateId = lens _dccClientCertificateId (\ s a -> s{_dccClientCertificateId = a});
+
+instance AWSRequest DeleteClientCertificate where
+        type Rs DeleteClientCertificate =
+             DeleteClientCertificateResponse
+        request = delete aPIGateway
+        response
+          = receiveNull DeleteClientCertificateResponse'
+
+instance ToHeaders DeleteClientCertificate where
+        toHeaders = const mempty
+
+instance ToPath DeleteClientCertificate where
+        toPath DeleteClientCertificate'{..}
+          = mconcat
+              ["/clientcertificates/",
+               toBS _dccClientCertificateId]
+
+instance ToQuery DeleteClientCertificate where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteClientCertificateResponse' smart constructor.
+data DeleteClientCertificateResponse =
+    DeleteClientCertificateResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteClientCertificateResponse' with the minimum fields required to make a request.
+--
+deleteClientCertificateResponse
+    :: DeleteClientCertificateResponse
+deleteClientCertificateResponse = DeleteClientCertificateResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteDeployment.hs b/gen/Network/AWS/APIGateway/DeleteDeployment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteDeployment.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteDeployment
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a Deployment resource. Deleting a deployment will only succeed
+-- if there are no Stage resources associated with it.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteDeployment.html AWS API Reference> for DeleteDeployment.
+module Network.AWS.APIGateway.DeleteDeployment
+    (
+    -- * Creating a Request
+      deleteDeployment
+    , DeleteDeployment
+    -- * Request Lenses
+    , ddRestAPIId
+    , ddDeploymentId
+
+    -- * Destructuring the Response
+    , deleteDeploymentResponse
+    , DeleteDeploymentResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to delete a Deployment resource.
+--
+-- /See:/ 'deleteDeployment' smart constructor.
+data DeleteDeployment = DeleteDeployment'
+    { _ddRestAPIId    :: !Text
+    , _ddDeploymentId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDeployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddRestAPIId'
+--
+-- * 'ddDeploymentId'
+deleteDeployment
+    :: Text -- ^ 'ddRestAPIId'
+    -> Text -- ^ 'ddDeploymentId'
+    -> DeleteDeployment
+deleteDeployment pRestAPIId_ pDeploymentId_ =
+    DeleteDeployment'
+    { _ddRestAPIId = pRestAPIId_
+    , _ddDeploymentId = pDeploymentId_
+    }
+
+-- | The identifier of the RestApi resource for the Deployment resource to
+-- delete.
+ddRestAPIId :: Lens' DeleteDeployment Text
+ddRestAPIId = lens _ddRestAPIId (\ s a -> s{_ddRestAPIId = a});
+
+-- | The identifier of the Deployment resource to delete.
+ddDeploymentId :: Lens' DeleteDeployment Text
+ddDeploymentId = lens _ddDeploymentId (\ s a -> s{_ddDeploymentId = a});
+
+instance AWSRequest DeleteDeployment where
+        type Rs DeleteDeployment = DeleteDeploymentResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteDeploymentResponse'
+
+instance ToHeaders DeleteDeployment where
+        toHeaders = const mempty
+
+instance ToPath DeleteDeployment where
+        toPath DeleteDeployment'{..}
+          = mconcat
+              ["/restapis/", toBS _ddRestAPIId, "/deployments/",
+               toBS _ddDeploymentId]
+
+instance ToQuery DeleteDeployment where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteDeploymentResponse' smart constructor.
+data DeleteDeploymentResponse =
+    DeleteDeploymentResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDeploymentResponse' with the minimum fields required to make a request.
+--
+deleteDeploymentResponse
+    :: DeleteDeploymentResponse
+deleteDeploymentResponse = DeleteDeploymentResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteDomainName.hs b/gen/Network/AWS/APIGateway/DeleteDomainName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteDomainName.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteDomainName
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the DomainName resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteDomainName.html AWS API Reference> for DeleteDomainName.
+module Network.AWS.APIGateway.DeleteDomainName
+    (
+    -- * Creating a Request
+      deleteDomainName
+    , DeleteDomainName
+    -- * Request Lenses
+    , ddnDomainName
+
+    -- * Destructuring the Response
+    , deleteDomainNameResponse
+    , DeleteDomainNameResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to delete the DomainName resource.
+--
+-- /See:/ 'deleteDomainName' smart constructor.
+newtype DeleteDomainName = DeleteDomainName'
+    { _ddnDomainName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDomainName' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddnDomainName'
+deleteDomainName
+    :: Text -- ^ 'ddnDomainName'
+    -> DeleteDomainName
+deleteDomainName pDomainName_ =
+    DeleteDomainName'
+    { _ddnDomainName = pDomainName_
+    }
+
+-- | The name of the DomainName resource to be deleted.
+ddnDomainName :: Lens' DeleteDomainName Text
+ddnDomainName = lens _ddnDomainName (\ s a -> s{_ddnDomainName = a});
+
+instance AWSRequest DeleteDomainName where
+        type Rs DeleteDomainName = DeleteDomainNameResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteDomainNameResponse'
+
+instance ToHeaders DeleteDomainName where
+        toHeaders = const mempty
+
+instance ToPath DeleteDomainName where
+        toPath DeleteDomainName'{..}
+          = mconcat ["/domainnames/", toBS _ddnDomainName]
+
+instance ToQuery DeleteDomainName where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteDomainNameResponse' smart constructor.
+data DeleteDomainNameResponse =
+    DeleteDomainNameResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDomainNameResponse' with the minimum fields required to make a request.
+--
+deleteDomainNameResponse
+    :: DeleteDomainNameResponse
+deleteDomainNameResponse = DeleteDomainNameResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteIntegration.hs b/gen/Network/AWS/APIGateway/DeleteIntegration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteIntegration.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteIntegration
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a delete integration.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteIntegration.html AWS API Reference> for DeleteIntegration.
+module Network.AWS.APIGateway.DeleteIntegration
+    (
+    -- * Creating a Request
+      deleteIntegration
+    , DeleteIntegration
+    -- * Request Lenses
+    , delRestAPIId
+    , delResourceId
+    , delHttpMethod
+
+    -- * Destructuring the Response
+    , deleteIntegrationResponse'
+    , DeleteIntegrationResponse'
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a delete integration request.
+--
+-- /See:/ 'deleteIntegration' smart constructor.
+data DeleteIntegration = DeleteIntegration'
+    { _delRestAPIId  :: !Text
+    , _delResourceId :: !Text
+    , _delHttpMethod :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIntegration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delRestAPIId'
+--
+-- * 'delResourceId'
+--
+-- * 'delHttpMethod'
+deleteIntegration
+    :: Text -- ^ 'delRestAPIId'
+    -> Text -- ^ 'delResourceId'
+    -> Text -- ^ 'delHttpMethod'
+    -> DeleteIntegration
+deleteIntegration pRestAPIId_ pResourceId_ pHttpMethod_ =
+    DeleteIntegration'
+    { _delRestAPIId = pRestAPIId_
+    , _delResourceId = pResourceId_
+    , _delHttpMethod = pHttpMethod_
+    }
+
+-- | Specifies a delete integration request\'s API identifier.
+delRestAPIId :: Lens' DeleteIntegration Text
+delRestAPIId = lens _delRestAPIId (\ s a -> s{_delRestAPIId = a});
+
+-- | Specifies a delete integration request\'s resource identifier.
+delResourceId :: Lens' DeleteIntegration Text
+delResourceId = lens _delResourceId (\ s a -> s{_delResourceId = a});
+
+-- | Specifies a delete integration request\'s HTTP method.
+delHttpMethod :: Lens' DeleteIntegration Text
+delHttpMethod = lens _delHttpMethod (\ s a -> s{_delHttpMethod = a});
+
+instance AWSRequest DeleteIntegration where
+        type Rs DeleteIntegration =
+             DeleteIntegrationResponse'
+        request = delete aPIGateway
+        response = receiveNull DeleteIntegrationResponse''
+
+instance ToHeaders DeleteIntegration where
+        toHeaders = const mempty
+
+instance ToPath DeleteIntegration where
+        toPath DeleteIntegration'{..}
+          = mconcat
+              ["/restapis/", toBS _delRestAPIId, "/resources/",
+               toBS _delResourceId, "/methods/",
+               toBS _delHttpMethod, "/integration"]
+
+instance ToQuery DeleteIntegration where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteIntegrationResponse'' smart constructor.
+data DeleteIntegrationResponse' =
+    DeleteIntegrationResponse''
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIntegrationResponse'' with the minimum fields required to make a request.
+--
+deleteIntegrationResponse'
+    :: DeleteIntegrationResponse'
+deleteIntegrationResponse' = DeleteIntegrationResponse''
diff --git a/gen/Network/AWS/APIGateway/DeleteIntegrationResponse.hs b/gen/Network/AWS/APIGateway/DeleteIntegrationResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteIntegrationResponse.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteIntegrationResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a delete integration response.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteIntegrationResponse.html AWS API Reference> for DeleteIntegrationResponse.
+module Network.AWS.APIGateway.DeleteIntegrationResponse
+    (
+    -- * Creating a Request
+      deleteIntegrationResponse
+    , DeleteIntegrationResponse
+    -- * Request Lenses
+    , diRestAPIId
+    , diResourceId
+    , diHttpMethod
+    , diStatusCode
+
+    -- * Destructuring the Response
+    , deleteIntegrationResponseResponse
+    , DeleteIntegrationResponseResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a delete integration response request.
+--
+-- /See:/ 'deleteIntegrationResponse' smart constructor.
+data DeleteIntegrationResponse = DeleteIntegrationResponse'
+    { _diRestAPIId  :: !Text
+    , _diResourceId :: !Text
+    , _diHttpMethod :: !Text
+    , _diStatusCode :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIntegrationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diRestAPIId'
+--
+-- * 'diResourceId'
+--
+-- * 'diHttpMethod'
+--
+-- * 'diStatusCode'
+deleteIntegrationResponse
+    :: Text -- ^ 'diRestAPIId'
+    -> Text -- ^ 'diResourceId'
+    -> Text -- ^ 'diHttpMethod'
+    -> Text -- ^ 'diStatusCode'
+    -> DeleteIntegrationResponse
+deleteIntegrationResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    DeleteIntegrationResponse'
+    { _diRestAPIId = pRestAPIId_
+    , _diResourceId = pResourceId_
+    , _diHttpMethod = pHttpMethod_
+    , _diStatusCode = pStatusCode_
+    }
+
+-- | Specifies a delete integration response request\'s API identifier.
+diRestAPIId :: Lens' DeleteIntegrationResponse Text
+diRestAPIId = lens _diRestAPIId (\ s a -> s{_diRestAPIId = a});
+
+-- | Specifies a delete integration response request\'s resource identifier.
+diResourceId :: Lens' DeleteIntegrationResponse Text
+diResourceId = lens _diResourceId (\ s a -> s{_diResourceId = a});
+
+-- | Specifies a delete integration response request\'s HTTP method.
+diHttpMethod :: Lens' DeleteIntegrationResponse Text
+diHttpMethod = lens _diHttpMethod (\ s a -> s{_diHttpMethod = a});
+
+-- | Specifies a delete integration response request\'s status code.
+diStatusCode :: Lens' DeleteIntegrationResponse Text
+diStatusCode = lens _diStatusCode (\ s a -> s{_diStatusCode = a});
+
+instance AWSRequest DeleteIntegrationResponse where
+        type Rs DeleteIntegrationResponse =
+             DeleteIntegrationResponseResponse
+        request = delete aPIGateway
+        response
+          = receiveNull DeleteIntegrationResponseResponse'
+
+instance ToHeaders DeleteIntegrationResponse where
+        toHeaders = const mempty
+
+instance ToPath DeleteIntegrationResponse where
+        toPath DeleteIntegrationResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _diRestAPIId, "/resources/",
+               toBS _diResourceId, "/methods/", toBS _diHttpMethod,
+               "/integration/responses/", toBS _diStatusCode]
+
+instance ToQuery DeleteIntegrationResponse where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteIntegrationResponseResponse' smart constructor.
+data DeleteIntegrationResponseResponse =
+    DeleteIntegrationResponseResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteIntegrationResponseResponse' with the minimum fields required to make a request.
+--
+deleteIntegrationResponseResponse
+    :: DeleteIntegrationResponseResponse
+deleteIntegrationResponseResponse = DeleteIntegrationResponseResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteMethod.hs b/gen/Network/AWS/APIGateway/DeleteMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteMethod.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteMethod
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing Method resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteMethod.html AWS API Reference> for DeleteMethod.
+module Network.AWS.APIGateway.DeleteMethod
+    (
+    -- * Creating a Request
+      deleteMethod
+    , DeleteMethod
+    -- * Request Lenses
+    , dmmRestAPIId
+    , dmmResourceId
+    , dmmHttpMethod
+
+    -- * Destructuring the Response
+    , deleteMethodResponse'
+    , DeleteMethodResponse'
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to delete an existing Method resource.
+--
+-- /See:/ 'deleteMethod' smart constructor.
+data DeleteMethod = DeleteMethod'
+    { _dmmRestAPIId  :: !Text
+    , _dmmResourceId :: !Text
+    , _dmmHttpMethod :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteMethod' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmmRestAPIId'
+--
+-- * 'dmmResourceId'
+--
+-- * 'dmmHttpMethod'
+deleteMethod
+    :: Text -- ^ 'dmmRestAPIId'
+    -> Text -- ^ 'dmmResourceId'
+    -> Text -- ^ 'dmmHttpMethod'
+    -> DeleteMethod
+deleteMethod pRestAPIId_ pResourceId_ pHttpMethod_ =
+    DeleteMethod'
+    { _dmmRestAPIId = pRestAPIId_
+    , _dmmResourceId = pResourceId_
+    , _dmmHttpMethod = pHttpMethod_
+    }
+
+-- | The RestApi identifier for the Method resource.
+dmmRestAPIId :: Lens' DeleteMethod Text
+dmmRestAPIId = lens _dmmRestAPIId (\ s a -> s{_dmmRestAPIId = a});
+
+-- | The Resource identifier for the Method resource.
+dmmResourceId :: Lens' DeleteMethod Text
+dmmResourceId = lens _dmmResourceId (\ s a -> s{_dmmResourceId = a});
+
+-- | The HTTP verb that identifies the Method resource.
+dmmHttpMethod :: Lens' DeleteMethod Text
+dmmHttpMethod = lens _dmmHttpMethod (\ s a -> s{_dmmHttpMethod = a});
+
+instance AWSRequest DeleteMethod where
+        type Rs DeleteMethod = DeleteMethodResponse'
+        request = delete aPIGateway
+        response = receiveNull DeleteMethodResponse''
+
+instance ToHeaders DeleteMethod where
+        toHeaders = const mempty
+
+instance ToPath DeleteMethod where
+        toPath DeleteMethod'{..}
+          = mconcat
+              ["/restapis/", toBS _dmmRestAPIId, "/resources/",
+               toBS _dmmResourceId, "/methods/",
+               toBS _dmmHttpMethod]
+
+instance ToQuery DeleteMethod where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteMethodResponse'' smart constructor.
+data DeleteMethodResponse' =
+    DeleteMethodResponse''
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteMethodResponse'' with the minimum fields required to make a request.
+--
+deleteMethodResponse'
+    :: DeleteMethodResponse'
+deleteMethodResponse' = DeleteMethodResponse''
diff --git a/gen/Network/AWS/APIGateway/DeleteMethodResponse.hs b/gen/Network/AWS/APIGateway/DeleteMethodResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteMethodResponse.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteMethodResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing MethodResponse resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteMethodResponse.html AWS API Reference> for DeleteMethodResponse.
+module Network.AWS.APIGateway.DeleteMethodResponse
+    (
+    -- * Creating a Request
+      deleteMethodResponse
+    , DeleteMethodResponse
+    -- * Request Lenses
+    , dmRestAPIId
+    , dmResourceId
+    , dmHttpMethod
+    , dmStatusCode
+
+    -- * Destructuring the Response
+    , deleteMethodResponseResponse
+    , DeleteMethodResponseResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to delete an existing MethodResponse resource.
+--
+-- /See:/ 'deleteMethodResponse' smart constructor.
+data DeleteMethodResponse = DeleteMethodResponse'
+    { _dmRestAPIId  :: !Text
+    , _dmResourceId :: !Text
+    , _dmHttpMethod :: !Text
+    , _dmStatusCode :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteMethodResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmRestAPIId'
+--
+-- * 'dmResourceId'
+--
+-- * 'dmHttpMethod'
+--
+-- * 'dmStatusCode'
+deleteMethodResponse
+    :: Text -- ^ 'dmRestAPIId'
+    -> Text -- ^ 'dmResourceId'
+    -> Text -- ^ 'dmHttpMethod'
+    -> Text -- ^ 'dmStatusCode'
+    -> DeleteMethodResponse
+deleteMethodResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    DeleteMethodResponse'
+    { _dmRestAPIId = pRestAPIId_
+    , _dmResourceId = pResourceId_
+    , _dmHttpMethod = pHttpMethod_
+    , _dmStatusCode = pStatusCode_
+    }
+
+-- | The RestApi identifier for the MethodResponse resource.
+dmRestAPIId :: Lens' DeleteMethodResponse Text
+dmRestAPIId = lens _dmRestAPIId (\ s a -> s{_dmRestAPIId = a});
+
+-- | The Resource identifier for the MethodResponse resource.
+dmResourceId :: Lens' DeleteMethodResponse Text
+dmResourceId = lens _dmResourceId (\ s a -> s{_dmResourceId = a});
+
+-- | The HTTP verb identifier for the parent Method resource.
+dmHttpMethod :: Lens' DeleteMethodResponse Text
+dmHttpMethod = lens _dmHttpMethod (\ s a -> s{_dmHttpMethod = a});
+
+-- | The status code identifier for the MethodResponse resource.
+dmStatusCode :: Lens' DeleteMethodResponse Text
+dmStatusCode = lens _dmStatusCode (\ s a -> s{_dmStatusCode = a});
+
+instance AWSRequest DeleteMethodResponse where
+        type Rs DeleteMethodResponse =
+             DeleteMethodResponseResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteMethodResponseResponse'
+
+instance ToHeaders DeleteMethodResponse where
+        toHeaders = const mempty
+
+instance ToPath DeleteMethodResponse where
+        toPath DeleteMethodResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _dmRestAPIId, "/resources/",
+               toBS _dmResourceId, "/methods/", toBS _dmHttpMethod,
+               "/responses/", toBS _dmStatusCode]
+
+instance ToQuery DeleteMethodResponse where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteMethodResponseResponse' smart constructor.
+data DeleteMethodResponseResponse =
+    DeleteMethodResponseResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteMethodResponseResponse' with the minimum fields required to make a request.
+--
+deleteMethodResponseResponse
+    :: DeleteMethodResponseResponse
+deleteMethodResponseResponse = DeleteMethodResponseResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteModel.hs b/gen/Network/AWS/APIGateway/DeleteModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteModel.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteModel
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a model.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteModel.html AWS API Reference> for DeleteModel.
+module Network.AWS.APIGateway.DeleteModel
+    (
+    -- * Creating a Request
+      deleteModel
+    , DeleteModel
+    -- * Request Lenses
+    , dRestAPIId
+    , dModelName
+
+    -- * Destructuring the Response
+    , deleteModelResponse
+    , DeleteModelResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to delete an existing model in an existing RestApi resource.
+--
+-- /See:/ 'deleteModel' smart constructor.
+data DeleteModel = DeleteModel'
+    { _dRestAPIId :: !Text
+    , _dModelName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteModel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dRestAPIId'
+--
+-- * 'dModelName'
+deleteModel
+    :: Text -- ^ 'dRestAPIId'
+    -> Text -- ^ 'dModelName'
+    -> DeleteModel
+deleteModel pRestAPIId_ pModelName_ =
+    DeleteModel'
+    { _dRestAPIId = pRestAPIId_
+    , _dModelName = pModelName_
+    }
+
+-- | The RestApi under which the model will be deleted.
+dRestAPIId :: Lens' DeleteModel Text
+dRestAPIId = lens _dRestAPIId (\ s a -> s{_dRestAPIId = a});
+
+-- | The name of the model to delete.
+dModelName :: Lens' DeleteModel Text
+dModelName = lens _dModelName (\ s a -> s{_dModelName = a});
+
+instance AWSRequest DeleteModel where
+        type Rs DeleteModel = DeleteModelResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteModelResponse'
+
+instance ToHeaders DeleteModel where
+        toHeaders = const mempty
+
+instance ToPath DeleteModel where
+        toPath DeleteModel'{..}
+          = mconcat
+              ["/restapis/", toBS _dRestAPIId, "/models/",
+               toBS _dModelName]
+
+instance ToQuery DeleteModel where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteModelResponse' smart constructor.
+data DeleteModelResponse =
+    DeleteModelResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteModelResponse' with the minimum fields required to make a request.
+--
+deleteModelResponse
+    :: DeleteModelResponse
+deleteModelResponse = DeleteModelResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteResource.hs b/gen/Network/AWS/APIGateway/DeleteResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteResource.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteResource
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a Resource resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteResource.html AWS API Reference> for DeleteResource.
+module Network.AWS.APIGateway.DeleteResource
+    (
+    -- * Creating a Request
+      deleteResource
+    , DeleteResource
+    -- * Request Lenses
+    , drRestAPIId
+    , drResourceId
+
+    -- * Destructuring the Response
+    , deleteResourceResponse
+    , DeleteResourceResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to delete a Resource.
+--
+-- /See:/ 'deleteResource' smart constructor.
+data DeleteResource = DeleteResource'
+    { _drRestAPIId  :: !Text
+    , _drResourceId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drRestAPIId'
+--
+-- * 'drResourceId'
+deleteResource
+    :: Text -- ^ 'drRestAPIId'
+    -> Text -- ^ 'drResourceId'
+    -> DeleteResource
+deleteResource pRestAPIId_ pResourceId_ =
+    DeleteResource'
+    { _drRestAPIId = pRestAPIId_
+    , _drResourceId = pResourceId_
+    }
+
+-- | The RestApi identifier for the Resource resource.
+drRestAPIId :: Lens' DeleteResource Text
+drRestAPIId = lens _drRestAPIId (\ s a -> s{_drRestAPIId = a});
+
+-- | The identifier of the Resource resource.
+drResourceId :: Lens' DeleteResource Text
+drResourceId = lens _drResourceId (\ s a -> s{_drResourceId = a});
+
+instance AWSRequest DeleteResource where
+        type Rs DeleteResource = DeleteResourceResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteResourceResponse'
+
+instance ToHeaders DeleteResource where
+        toHeaders = const mempty
+
+instance ToPath DeleteResource where
+        toPath DeleteResource'{..}
+          = mconcat
+              ["/restapis/", toBS _drRestAPIId, "/resources/",
+               toBS _drResourceId]
+
+instance ToQuery DeleteResource where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteResourceResponse' smart constructor.
+data DeleteResourceResponse =
+    DeleteResourceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteResourceResponse' with the minimum fields required to make a request.
+--
+deleteResourceResponse
+    :: DeleteResourceResponse
+deleteResourceResponse = DeleteResourceResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteRestAPI.hs b/gen/Network/AWS/APIGateway/DeleteRestAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteRestAPI.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteRestAPI
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified API.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteRestAPI.html AWS API Reference> for DeleteRestAPI.
+module Network.AWS.APIGateway.DeleteRestAPI
+    (
+    -- * Creating a Request
+      deleteRestAPI
+    , DeleteRestAPI
+    -- * Request Lenses
+    , draRestAPIId
+
+    -- * Destructuring the Response
+    , deleteRestAPIResponse
+    , DeleteRestAPIResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to delete the specified API from your collection.
+--
+-- /See:/ 'deleteRestAPI' smart constructor.
+newtype DeleteRestAPI = DeleteRestAPI'
+    { _draRestAPIId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteRestAPI' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'draRestAPIId'
+deleteRestAPI
+    :: Text -- ^ 'draRestAPIId'
+    -> DeleteRestAPI
+deleteRestAPI pRestAPIId_ =
+    DeleteRestAPI'
+    { _draRestAPIId = pRestAPIId_
+    }
+
+-- | The ID of the RestApi you want to delete.
+draRestAPIId :: Lens' DeleteRestAPI Text
+draRestAPIId = lens _draRestAPIId (\ s a -> s{_draRestAPIId = a});
+
+instance AWSRequest DeleteRestAPI where
+        type Rs DeleteRestAPI = DeleteRestAPIResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteRestAPIResponse'
+
+instance ToHeaders DeleteRestAPI where
+        toHeaders = const mempty
+
+instance ToPath DeleteRestAPI where
+        toPath DeleteRestAPI'{..}
+          = mconcat ["/restapis/", toBS _draRestAPIId]
+
+instance ToQuery DeleteRestAPI where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteRestAPIResponse' smart constructor.
+data DeleteRestAPIResponse =
+    DeleteRestAPIResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteRestAPIResponse' with the minimum fields required to make a request.
+--
+deleteRestAPIResponse
+    :: DeleteRestAPIResponse
+deleteRestAPIResponse = DeleteRestAPIResponse'
diff --git a/gen/Network/AWS/APIGateway/DeleteStage.hs b/gen/Network/AWS/APIGateway/DeleteStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/DeleteStage.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.DeleteStage
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a Stage resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/DeleteStage.html AWS API Reference> for DeleteStage.
+module Network.AWS.APIGateway.DeleteStage
+    (
+    -- * Creating a Request
+      deleteStage
+    , DeleteStage
+    -- * Request Lenses
+    , dsRestAPIId
+    , dsStageName
+
+    -- * Destructuring the Response
+    , deleteStageResponse
+    , DeleteStageResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to delete a Stage resource.
+--
+-- /See:/ 'deleteStage' smart constructor.
+data DeleteStage = DeleteStage'
+    { _dsRestAPIId :: !Text
+    , _dsStageName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteStage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsRestAPIId'
+--
+-- * 'dsStageName'
+deleteStage
+    :: Text -- ^ 'dsRestAPIId'
+    -> Text -- ^ 'dsStageName'
+    -> DeleteStage
+deleteStage pRestAPIId_ pStageName_ =
+    DeleteStage'
+    { _dsRestAPIId = pRestAPIId_
+    , _dsStageName = pStageName_
+    }
+
+-- | The identifier of the RestApi resource for the Stage resource to delete.
+dsRestAPIId :: Lens' DeleteStage Text
+dsRestAPIId = lens _dsRestAPIId (\ s a -> s{_dsRestAPIId = a});
+
+-- | The name of the Stage resource to delete.
+dsStageName :: Lens' DeleteStage Text
+dsStageName = lens _dsStageName (\ s a -> s{_dsStageName = a});
+
+instance AWSRequest DeleteStage where
+        type Rs DeleteStage = DeleteStageResponse
+        request = delete aPIGateway
+        response = receiveNull DeleteStageResponse'
+
+instance ToHeaders DeleteStage where
+        toHeaders = const mempty
+
+instance ToPath DeleteStage where
+        toPath DeleteStage'{..}
+          = mconcat
+              ["/restapis/", toBS _dsRestAPIId, "/stages/",
+               toBS _dsStageName]
+
+instance ToQuery DeleteStage where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteStageResponse' smart constructor.
+data DeleteStageResponse =
+    DeleteStageResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteStageResponse' with the minimum fields required to make a request.
+--
+deleteStageResponse
+    :: DeleteStageResponse
+deleteStageResponse = DeleteStageResponse'
diff --git a/gen/Network/AWS/APIGateway/FlushStageCache.hs b/gen/Network/AWS/APIGateway/FlushStageCache.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/FlushStageCache.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.FlushStageCache
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Flushes a stage\'s cache.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/FlushStageCache.html AWS API Reference> for FlushStageCache.
+module Network.AWS.APIGateway.FlushStageCache
+    (
+    -- * Creating a Request
+      flushStageCache
+    , FlushStageCache
+    -- * Request Lenses
+    , fscRestAPIId
+    , fscStageName
+
+    -- * Destructuring the Response
+    , flushStageCacheResponse
+    , FlushStageCacheResponse
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to flush a stage\'s cache.
+--
+-- /See:/ 'flushStageCache' smart constructor.
+data FlushStageCache = FlushStageCache'
+    { _fscRestAPIId :: !Text
+    , _fscStageName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FlushStageCache' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fscRestAPIId'
+--
+-- * 'fscStageName'
+flushStageCache
+    :: Text -- ^ 'fscRestAPIId'
+    -> Text -- ^ 'fscStageName'
+    -> FlushStageCache
+flushStageCache pRestAPIId_ pStageName_ =
+    FlushStageCache'
+    { _fscRestAPIId = pRestAPIId_
+    , _fscStageName = pStageName_
+    }
+
+-- | The API identifier of the stage to flush its cache.
+fscRestAPIId :: Lens' FlushStageCache Text
+fscRestAPIId = lens _fscRestAPIId (\ s a -> s{_fscRestAPIId = a});
+
+-- | The name of the stage to flush its cache.
+fscStageName :: Lens' FlushStageCache Text
+fscStageName = lens _fscStageName (\ s a -> s{_fscStageName = a});
+
+instance AWSRequest FlushStageCache where
+        type Rs FlushStageCache = FlushStageCacheResponse
+        request = delete aPIGateway
+        response = receiveNull FlushStageCacheResponse'
+
+instance ToHeaders FlushStageCache where
+        toHeaders = const mempty
+
+instance ToPath FlushStageCache where
+        toPath FlushStageCache'{..}
+          = mconcat
+              ["/restapis/", toBS _fscRestAPIId, "/stages/",
+               toBS _fscStageName, "/cache/data"]
+
+instance ToQuery FlushStageCache where
+        toQuery = const mempty
+
+-- | /See:/ 'flushStageCacheResponse' smart constructor.
+data FlushStageCacheResponse =
+    FlushStageCacheResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FlushStageCacheResponse' with the minimum fields required to make a request.
+--
+flushStageCacheResponse
+    :: FlushStageCacheResponse
+flushStageCacheResponse = FlushStageCacheResponse'
diff --git a/gen/Network/AWS/APIGateway/GenerateClientCertificate.hs b/gen/Network/AWS/APIGateway/GenerateClientCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GenerateClientCertificate.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GenerateClientCertificate
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GenerateClientCertificate.html AWS API Reference> for GenerateClientCertificate.
+module Network.AWS.APIGateway.GenerateClientCertificate
+    (
+    -- * Creating a Request
+      generateClientCertificate
+    , GenerateClientCertificate
+    -- * Request Lenses
+    , gccDescription
+
+    -- * Destructuring the Response
+    , clientCertificate
+    , ClientCertificate
+    -- * Response Lenses
+    , ccPemEncodedCertificate
+    , ccClientCertificateId
+    , ccCreatedDate
+    , ccExpirationDate
+    , ccDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'generateClientCertificate' smart constructor.
+newtype GenerateClientCertificate = GenerateClientCertificate'
+    { _gccDescription :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GenerateClientCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gccDescription'
+generateClientCertificate
+    :: GenerateClientCertificate
+generateClientCertificate =
+    GenerateClientCertificate'
+    { _gccDescription = Nothing
+    }
+
+-- | Undocumented member.
+gccDescription :: Lens' GenerateClientCertificate (Maybe Text)
+gccDescription = lens _gccDescription (\ s a -> s{_gccDescription = a});
+
+instance AWSRequest GenerateClientCertificate where
+        type Rs GenerateClientCertificate = ClientCertificate
+        request = postJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GenerateClientCertificate where
+        toHeaders = const mempty
+
+instance ToJSON GenerateClientCertificate where
+        toJSON GenerateClientCertificate'{..}
+          = object
+              (catMaybes [("description" .=) <$> _gccDescription])
+
+instance ToPath GenerateClientCertificate where
+        toPath = const "/clientcertificates"
+
+instance ToQuery GenerateClientCertificate where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetAPIKey.hs b/gen/Network/AWS/APIGateway/GetAPIKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetAPIKey.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetAPIKey
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the current ApiKey resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetAPIKey.html AWS API Reference> for GetAPIKey.
+module Network.AWS.APIGateway.GetAPIKey
+    (
+    -- * Creating a Request
+      getAPIKey
+    , GetAPIKey
+    -- * Request Lenses
+    , gakApiKey
+
+    -- * Destructuring the Response
+    , apiKey
+    , APIKey
+    -- * Response Lenses
+    , akEnabled
+    , akCreatedDate
+    , akName
+    , akId
+    , akStageKeys
+    , akLastUpdatedDate
+    , akDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to get information about the current ApiKey resource.
+--
+-- /See:/ 'getAPIKey' smart constructor.
+newtype GetAPIKey = GetAPIKey'
+    { _gakApiKey :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetAPIKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gakApiKey'
+getAPIKey
+    :: Text -- ^ 'gakApiKey'
+    -> GetAPIKey
+getAPIKey pApiKey_ =
+    GetAPIKey'
+    { _gakApiKey = pApiKey_
+    }
+
+-- | The identifier of the ApiKey resource.
+gakApiKey :: Lens' GetAPIKey Text
+gakApiKey = lens _gakApiKey (\ s a -> s{_gakApiKey = a});
+
+instance AWSRequest GetAPIKey where
+        type Rs GetAPIKey = APIKey
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetAPIKey where
+        toHeaders = const mempty
+
+instance ToPath GetAPIKey where
+        toPath GetAPIKey'{..}
+          = mconcat ["/apikeys/", toBS _gakApiKey]
+
+instance ToQuery GetAPIKey where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetAPIKeys.hs b/gen/Network/AWS/APIGateway/GetAPIKeys.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetAPIKeys.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetAPIKeys
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the current ApiKeys resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetAPIKeys.html AWS API Reference> for GetAPIKeys.
+module Network.AWS.APIGateway.GetAPIKeys
+    (
+    -- * Creating a Request
+      getAPIKeys
+    , GetAPIKeys
+    -- * Request Lenses
+    , gakLimit
+    , gakPosition
+
+    -- * Destructuring the Response
+    , getAPIKeysResponse
+    , GetAPIKeysResponse
+    -- * Response Lenses
+    , gakrsItems
+    , gakrsPosition
+    , gakrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to get information about the current ApiKeys resource.
+--
+-- /See:/ 'getAPIKeys' smart constructor.
+data GetAPIKeys = GetAPIKeys'
+    { _gakLimit    :: !(Maybe Int)
+    , _gakPosition :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetAPIKeys' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gakLimit'
+--
+-- * 'gakPosition'
+getAPIKeys
+    :: GetAPIKeys
+getAPIKeys =
+    GetAPIKeys'
+    { _gakLimit = Nothing
+    , _gakPosition = Nothing
+    }
+
+-- | The maximum number of ApiKeys to get information about.
+gakLimit :: Lens' GetAPIKeys (Maybe Int)
+gakLimit = lens _gakLimit (\ s a -> s{_gakLimit = a});
+
+-- | The position of the current ApiKeys resource to get information about.
+gakPosition :: Lens' GetAPIKeys (Maybe Text)
+gakPosition = lens _gakPosition (\ s a -> s{_gakPosition = a});
+
+instance AWSRequest GetAPIKeys where
+        type Rs GetAPIKeys = GetAPIKeysResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetAPIKeysResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetAPIKeys where
+        toHeaders = const mempty
+
+instance ToPath GetAPIKeys where
+        toPath = const "/apikeys"
+
+instance ToQuery GetAPIKeys where
+        toQuery GetAPIKeys'{..}
+          = mconcat
+              ["limit" =: _gakLimit, "position" =: _gakPosition]
+
+-- | Represents a collection of ApiKey resources.
+--
+-- /See:/ 'getAPIKeysResponse' smart constructor.
+data GetAPIKeysResponse = GetAPIKeysResponse'
+    { _gakrsItems          :: !(Maybe [APIKey])
+    , _gakrsPosition       :: !(Maybe Text)
+    , _gakrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetAPIKeysResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gakrsItems'
+--
+-- * 'gakrsPosition'
+--
+-- * 'gakrsResponseStatus'
+getAPIKeysResponse
+    :: Int -- ^ 'gakrsResponseStatus'
+    -> GetAPIKeysResponse
+getAPIKeysResponse pResponseStatus_ =
+    GetAPIKeysResponse'
+    { _gakrsItems = Nothing
+    , _gakrsPosition = Nothing
+    , _gakrsResponseStatus = pResponseStatus_
+    }
+
+-- | The current page of any ApiKey resources in the collection of ApiKey
+-- resources.
+gakrsItems :: Lens' GetAPIKeysResponse [APIKey]
+gakrsItems = lens _gakrsItems (\ s a -> s{_gakrsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+gakrsPosition :: Lens' GetAPIKeysResponse (Maybe Text)
+gakrsPosition = lens _gakrsPosition (\ s a -> s{_gakrsPosition = a});
+
+-- | The response status code.
+gakrsResponseStatus :: Lens' GetAPIKeysResponse Int
+gakrsResponseStatus = lens _gakrsResponseStatus (\ s a -> s{_gakrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetAccount.hs b/gen/Network/AWS/APIGateway/GetAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetAccount.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetAccount
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about the current Account resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetAccount.html AWS API Reference> for GetAccount.
+module Network.AWS.APIGateway.GetAccount
+    (
+    -- * Creating a Request
+      getAccount
+    , GetAccount
+
+    -- * Destructuring the Response
+    , account
+    , Account
+    -- * Response Lenses
+    , aCloudwatchRoleARN
+    , aThrottleSettings
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to get information about the current Account
+-- resource.
+--
+-- /See:/ 'getAccount' smart constructor.
+data GetAccount =
+    GetAccount'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetAccount' with the minimum fields required to make a request.
+--
+getAccount
+    :: GetAccount
+getAccount = GetAccount'
+
+instance AWSRequest GetAccount where
+        type Rs GetAccount = Account
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetAccount where
+        toHeaders = const mempty
+
+instance ToPath GetAccount where
+        toPath = const "/account"
+
+instance ToQuery GetAccount where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetBasePathMapping.hs b/gen/Network/AWS/APIGateway/GetBasePathMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetBasePathMapping.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetBasePathMapping
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describe a BasePathMapping resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetBasePathMapping.html AWS API Reference> for GetBasePathMapping.
+module Network.AWS.APIGateway.GetBasePathMapping
+    (
+    -- * Creating a Request
+      getBasePathMapping
+    , GetBasePathMapping
+    -- * Request Lenses
+    , gbpmDomainName
+    , gbpmBasePath
+
+    -- * Destructuring the Response
+    , basePathMapping
+    , BasePathMapping
+    -- * Response Lenses
+    , bpmStage
+    , bpmBasePath
+    , bpmRestAPIId
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to describe a BasePathMapping resource.
+--
+-- /See:/ 'getBasePathMapping' smart constructor.
+data GetBasePathMapping = GetBasePathMapping'
+    { _gbpmDomainName :: !Text
+    , _gbpmBasePath   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetBasePathMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gbpmDomainName'
+--
+-- * 'gbpmBasePath'
+getBasePathMapping
+    :: Text -- ^ 'gbpmDomainName'
+    -> Text -- ^ 'gbpmBasePath'
+    -> GetBasePathMapping
+getBasePathMapping pDomainName_ pBasePath_ =
+    GetBasePathMapping'
+    { _gbpmDomainName = pDomainName_
+    , _gbpmBasePath = pBasePath_
+    }
+
+-- | The domain name of the BasePathMapping resource to be described.
+gbpmDomainName :: Lens' GetBasePathMapping Text
+gbpmDomainName = lens _gbpmDomainName (\ s a -> s{_gbpmDomainName = a});
+
+-- | The base path name that callers of the API must provide as part of the
+-- URL after the domain name. This value must be unique for all of the
+-- mappings across a single API. Leave this blank if you do not want
+-- callers to specify any base path name after the domain name.
+gbpmBasePath :: Lens' GetBasePathMapping Text
+gbpmBasePath = lens _gbpmBasePath (\ s a -> s{_gbpmBasePath = a});
+
+instance AWSRequest GetBasePathMapping where
+        type Rs GetBasePathMapping = BasePathMapping
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetBasePathMapping where
+        toHeaders = const mempty
+
+instance ToPath GetBasePathMapping where
+        toPath GetBasePathMapping'{..}
+          = mconcat
+              ["/domainnames/", toBS _gbpmDomainName,
+               "/basepathmappings/", toBS _gbpmBasePath]
+
+instance ToQuery GetBasePathMapping where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetBasePathMappings.hs b/gen/Network/AWS/APIGateway/GetBasePathMappings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetBasePathMappings.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetBasePathMappings
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a collection of BasePathMapping resources.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetBasePathMappings.html AWS API Reference> for GetBasePathMappings.
+module Network.AWS.APIGateway.GetBasePathMappings
+    (
+    -- * Creating a Request
+      getBasePathMappings
+    , GetBasePathMappings
+    -- * Request Lenses
+    , gLimit
+    , gPosition
+    , gDomainName
+
+    -- * Destructuring the Response
+    , getBasePathMappingsResponse
+    , GetBasePathMappingsResponse
+    -- * Response Lenses
+    , gbpmrsItems
+    , gbpmrsPosition
+    , gbpmrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to get information about a collection of BasePathMapping
+-- resources.
+--
+-- /See:/ 'getBasePathMappings' smart constructor.
+data GetBasePathMappings = GetBasePathMappings'
+    { _gLimit      :: !(Maybe Int)
+    , _gPosition   :: !(Maybe Text)
+    , _gDomainName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetBasePathMappings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gLimit'
+--
+-- * 'gPosition'
+--
+-- * 'gDomainName'
+getBasePathMappings
+    :: Text -- ^ 'gDomainName'
+    -> GetBasePathMappings
+getBasePathMappings pDomainName_ =
+    GetBasePathMappings'
+    { _gLimit = Nothing
+    , _gPosition = Nothing
+    , _gDomainName = pDomainName_
+    }
+
+-- | The maximum number of BasePathMapping resources in the collection to get
+-- information about. The default limit is 25. It should be an integer
+-- between 1 - 500.
+gLimit :: Lens' GetBasePathMappings (Maybe Int)
+gLimit = lens _gLimit (\ s a -> s{_gLimit = a});
+
+-- | The position of the current BasePathMapping resource in the collection
+-- to get information about.
+gPosition :: Lens' GetBasePathMappings (Maybe Text)
+gPosition = lens _gPosition (\ s a -> s{_gPosition = a});
+
+-- | The domain name of a BasePathMapping resource.
+gDomainName :: Lens' GetBasePathMappings Text
+gDomainName = lens _gDomainName (\ s a -> s{_gDomainName = a});
+
+instance AWSRequest GetBasePathMappings where
+        type Rs GetBasePathMappings =
+             GetBasePathMappingsResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetBasePathMappingsResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetBasePathMappings where
+        toHeaders = const mempty
+
+instance ToPath GetBasePathMappings where
+        toPath GetBasePathMappings'{..}
+          = mconcat
+              ["/domainnames/", toBS _gDomainName,
+               "/basepathmappings"]
+
+instance ToQuery GetBasePathMappings where
+        toQuery GetBasePathMappings'{..}
+          = mconcat
+              ["limit" =: _gLimit, "position" =: _gPosition]
+
+-- | Represents a collection of BasePathMapping resources.
+--
+-- /See:/ 'getBasePathMappingsResponse' smart constructor.
+data GetBasePathMappingsResponse = GetBasePathMappingsResponse'
+    { _gbpmrsItems          :: !(Maybe [BasePathMapping])
+    , _gbpmrsPosition       :: !(Maybe Text)
+    , _gbpmrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetBasePathMappingsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gbpmrsItems'
+--
+-- * 'gbpmrsPosition'
+--
+-- * 'gbpmrsResponseStatus'
+getBasePathMappingsResponse
+    :: Int -- ^ 'gbpmrsResponseStatus'
+    -> GetBasePathMappingsResponse
+getBasePathMappingsResponse pResponseStatus_ =
+    GetBasePathMappingsResponse'
+    { _gbpmrsItems = Nothing
+    , _gbpmrsPosition = Nothing
+    , _gbpmrsResponseStatus = pResponseStatus_
+    }
+
+-- | The current page of any BasePathMapping resources in the collection of
+-- base path mapping resources.
+gbpmrsItems :: Lens' GetBasePathMappingsResponse [BasePathMapping]
+gbpmrsItems = lens _gbpmrsItems (\ s a -> s{_gbpmrsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+gbpmrsPosition :: Lens' GetBasePathMappingsResponse (Maybe Text)
+gbpmrsPosition = lens _gbpmrsPosition (\ s a -> s{_gbpmrsPosition = a});
+
+-- | The response status code.
+gbpmrsResponseStatus :: Lens' GetBasePathMappingsResponse Int
+gbpmrsResponseStatus = lens _gbpmrsResponseStatus (\ s a -> s{_gbpmrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetClientCertificate.hs b/gen/Network/AWS/APIGateway/GetClientCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetClientCertificate.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetClientCertificate
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetClientCertificate.html AWS API Reference> for GetClientCertificate.
+module Network.AWS.APIGateway.GetClientCertificate
+    (
+    -- * Creating a Request
+      getClientCertificate
+    , GetClientCertificate
+    -- * Request Lenses
+    , gccClientCertificateId
+
+    -- * Destructuring the Response
+    , clientCertificate
+    , ClientCertificate
+    -- * Response Lenses
+    , ccPemEncodedCertificate
+    , ccClientCertificateId
+    , ccCreatedDate
+    , ccExpirationDate
+    , ccDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'getClientCertificate' smart constructor.
+newtype GetClientCertificate = GetClientCertificate'
+    { _gccClientCertificateId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetClientCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gccClientCertificateId'
+getClientCertificate
+    :: Text -- ^ 'gccClientCertificateId'
+    -> GetClientCertificate
+getClientCertificate pClientCertificateId_ =
+    GetClientCertificate'
+    { _gccClientCertificateId = pClientCertificateId_
+    }
+
+-- | Undocumented member.
+gccClientCertificateId :: Lens' GetClientCertificate Text
+gccClientCertificateId = lens _gccClientCertificateId (\ s a -> s{_gccClientCertificateId = a});
+
+instance AWSRequest GetClientCertificate where
+        type Rs GetClientCertificate = ClientCertificate
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetClientCertificate where
+        toHeaders = const mempty
+
+instance ToPath GetClientCertificate where
+        toPath GetClientCertificate'{..}
+          = mconcat
+              ["/clientcertificates/",
+               toBS _gccClientCertificateId]
+
+instance ToQuery GetClientCertificate where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetClientCertificates.hs b/gen/Network/AWS/APIGateway/GetClientCertificates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetClientCertificates.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetClientCertificates
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetClientCertificates.html AWS API Reference> for GetClientCertificates.
+module Network.AWS.APIGateway.GetClientCertificates
+    (
+    -- * Creating a Request
+      getClientCertificates
+    , GetClientCertificates
+    -- * Request Lenses
+    , gccLimit
+    , gccPosition
+
+    -- * Destructuring the Response
+    , getClientCertificatesResponse
+    , GetClientCertificatesResponse
+    -- * Response Lenses
+    , gccrsItems
+    , gccrsPosition
+    , gccrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'getClientCertificates' smart constructor.
+data GetClientCertificates = GetClientCertificates'
+    { _gccLimit    :: !(Maybe Int)
+    , _gccPosition :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetClientCertificates' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gccLimit'
+--
+-- * 'gccPosition'
+getClientCertificates
+    :: GetClientCertificates
+getClientCertificates =
+    GetClientCertificates'
+    { _gccLimit = Nothing
+    , _gccPosition = Nothing
+    }
+
+-- | Undocumented member.
+gccLimit :: Lens' GetClientCertificates (Maybe Int)
+gccLimit = lens _gccLimit (\ s a -> s{_gccLimit = a});
+
+-- | Undocumented member.
+gccPosition :: Lens' GetClientCertificates (Maybe Text)
+gccPosition = lens _gccPosition (\ s a -> s{_gccPosition = a});
+
+instance AWSRequest GetClientCertificates where
+        type Rs GetClientCertificates =
+             GetClientCertificatesResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetClientCertificatesResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetClientCertificates where
+        toHeaders = const mempty
+
+instance ToPath GetClientCertificates where
+        toPath = const "/clientcertificates"
+
+instance ToQuery GetClientCertificates where
+        toQuery GetClientCertificates'{..}
+          = mconcat
+              ["limit" =: _gccLimit, "position" =: _gccPosition]
+
+-- | /See:/ 'getClientCertificatesResponse' smart constructor.
+data GetClientCertificatesResponse = GetClientCertificatesResponse'
+    { _gccrsItems          :: !(Maybe [ClientCertificate])
+    , _gccrsPosition       :: !(Maybe Text)
+    , _gccrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetClientCertificatesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gccrsItems'
+--
+-- * 'gccrsPosition'
+--
+-- * 'gccrsResponseStatus'
+getClientCertificatesResponse
+    :: Int -- ^ 'gccrsResponseStatus'
+    -> GetClientCertificatesResponse
+getClientCertificatesResponse pResponseStatus_ =
+    GetClientCertificatesResponse'
+    { _gccrsItems = Nothing
+    , _gccrsPosition = Nothing
+    , _gccrsResponseStatus = pResponseStatus_
+    }
+
+-- | Undocumented member.
+gccrsItems :: Lens' GetClientCertificatesResponse [ClientCertificate]
+gccrsItems = lens _gccrsItems (\ s a -> s{_gccrsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+gccrsPosition :: Lens' GetClientCertificatesResponse (Maybe Text)
+gccrsPosition = lens _gccrsPosition (\ s a -> s{_gccrsPosition = a});
+
+-- | The response status code.
+gccrsResponseStatus :: Lens' GetClientCertificatesResponse Int
+gccrsResponseStatus = lens _gccrsResponseStatus (\ s a -> s{_gccrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetDeployment.hs b/gen/Network/AWS/APIGateway/GetDeployment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetDeployment.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetDeployment
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about a Deployment resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetDeployment.html AWS API Reference> for GetDeployment.
+module Network.AWS.APIGateway.GetDeployment
+    (
+    -- * Creating a Request
+      getDeployment
+    , GetDeployment
+    -- * Request Lenses
+    , gRestAPIId
+    , gDeploymentId
+
+    -- * Destructuring the Response
+    , deployment
+    , Deployment
+    -- * Response Lenses
+    , dApiSummary
+    , dCreatedDate
+    , dId
+    , dDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to get information about a Deployment
+-- resource.
+--
+-- /See:/ 'getDeployment' smart constructor.
+data GetDeployment = GetDeployment'
+    { _gRestAPIId    :: !Text
+    , _gDeploymentId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetDeployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gRestAPIId'
+--
+-- * 'gDeploymentId'
+getDeployment
+    :: Text -- ^ 'gRestAPIId'
+    -> Text -- ^ 'gDeploymentId'
+    -> GetDeployment
+getDeployment pRestAPIId_ pDeploymentId_ =
+    GetDeployment'
+    { _gRestAPIId = pRestAPIId_
+    , _gDeploymentId = pDeploymentId_
+    }
+
+-- | The identifier of the RestApi resource for the Deployment resource to
+-- get information about.
+gRestAPIId :: Lens' GetDeployment Text
+gRestAPIId = lens _gRestAPIId (\ s a -> s{_gRestAPIId = a});
+
+-- | The identifier of the Deployment resource to get information about.
+gDeploymentId :: Lens' GetDeployment Text
+gDeploymentId = lens _gDeploymentId (\ s a -> s{_gDeploymentId = a});
+
+instance AWSRequest GetDeployment where
+        type Rs GetDeployment = Deployment
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetDeployment where
+        toHeaders = const mempty
+
+instance ToPath GetDeployment where
+        toPath GetDeployment'{..}
+          = mconcat
+              ["/restapis/", toBS _gRestAPIId, "/deployments/",
+               toBS _gDeploymentId]
+
+instance ToQuery GetDeployment where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetDeployments.hs b/gen/Network/AWS/APIGateway/GetDeployments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetDeployments.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetDeployments
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about a Deployments collection.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetDeployments.html AWS API Reference> for GetDeployments.
+module Network.AWS.APIGateway.GetDeployments
+    (
+    -- * Creating a Request
+      getDeployments
+    , GetDeployments
+    -- * Request Lenses
+    , gdLimit
+    , gdPosition
+    , gdRestAPIId
+
+    -- * Destructuring the Response
+    , getDeploymentsResponse
+    , GetDeploymentsResponse
+    -- * Response Lenses
+    , gdrsItems
+    , gdrsPosition
+    , gdrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to get information about a Deployments
+-- collection.
+--
+-- /See:/ 'getDeployments' smart constructor.
+data GetDeployments = GetDeployments'
+    { _gdLimit     :: !(Maybe Int)
+    , _gdPosition  :: !(Maybe Text)
+    , _gdRestAPIId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetDeployments' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdLimit'
+--
+-- * 'gdPosition'
+--
+-- * 'gdRestAPIId'
+getDeployments
+    :: Text -- ^ 'gdRestAPIId'
+    -> GetDeployments
+getDeployments pRestAPIId_ =
+    GetDeployments'
+    { _gdLimit = Nothing
+    , _gdPosition = Nothing
+    , _gdRestAPIId = pRestAPIId_
+    }
+
+-- | The maximum number of Deployment resources in the collection to get
+-- information about. The default limit is 25. It should be an integer
+-- between 1 - 500.
+gdLimit :: Lens' GetDeployments (Maybe Int)
+gdLimit = lens _gdLimit (\ s a -> s{_gdLimit = a});
+
+-- | The position of the current Deployment resource in the collection to get
+-- information about.
+gdPosition :: Lens' GetDeployments (Maybe Text)
+gdPosition = lens _gdPosition (\ s a -> s{_gdPosition = a});
+
+-- | The identifier of the RestApi resource for the collection of Deployment
+-- resources to get information about.
+gdRestAPIId :: Lens' GetDeployments Text
+gdRestAPIId = lens _gdRestAPIId (\ s a -> s{_gdRestAPIId = a});
+
+instance AWSRequest GetDeployments where
+        type Rs GetDeployments = GetDeploymentsResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetDeploymentsResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetDeployments where
+        toHeaders = const mempty
+
+instance ToPath GetDeployments where
+        toPath GetDeployments'{..}
+          = mconcat
+              ["/restapis/", toBS _gdRestAPIId, "/deployments"]
+
+instance ToQuery GetDeployments where
+        toQuery GetDeployments'{..}
+          = mconcat
+              ["limit" =: _gdLimit, "position" =: _gdPosition]
+
+-- | Represents a collection resource that contains zero or more references
+-- to your existing deployments, and links that guide you on ways to
+-- interact with your collection. The collection offers a paginated view of
+-- the contained deployments.
+--
+-- /See:/ 'getDeploymentsResponse' smart constructor.
+data GetDeploymentsResponse = GetDeploymentsResponse'
+    { _gdrsItems          :: !(Maybe [Deployment])
+    , _gdrsPosition       :: !(Maybe Text)
+    , _gdrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetDeploymentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdrsItems'
+--
+-- * 'gdrsPosition'
+--
+-- * 'gdrsResponseStatus'
+getDeploymentsResponse
+    :: Int -- ^ 'gdrsResponseStatus'
+    -> GetDeploymentsResponse
+getDeploymentsResponse pResponseStatus_ =
+    GetDeploymentsResponse'
+    { _gdrsItems = Nothing
+    , _gdrsPosition = Nothing
+    , _gdrsResponseStatus = pResponseStatus_
+    }
+
+-- | The current page of any Deployment resources in the collection of
+-- deployment resources.
+gdrsItems :: Lens' GetDeploymentsResponse [Deployment]
+gdrsItems = lens _gdrsItems (\ s a -> s{_gdrsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+gdrsPosition :: Lens' GetDeploymentsResponse (Maybe Text)
+gdrsPosition = lens _gdrsPosition (\ s a -> s{_gdrsPosition = a});
+
+-- | The response status code.
+gdrsResponseStatus :: Lens' GetDeploymentsResponse Int
+gdrsResponseStatus = lens _gdrsResponseStatus (\ s a -> s{_gdrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetDomainName.hs b/gen/Network/AWS/APIGateway/GetDomainName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetDomainName.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetDomainName
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a domain name that is contained in a simpler, more intuitive
+-- URL that can be called.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetDomainName.html AWS API Reference> for GetDomainName.
+module Network.AWS.APIGateway.GetDomainName
+    (
+    -- * Creating a Request
+      getDomainName
+    , GetDomainName
+    -- * Request Lenses
+    , gdnDomainName
+
+    -- * Destructuring the Response
+    , domainName
+    , DomainName
+    -- * Response Lenses
+    , dnCertificateName
+    , dnDomainName
+    , dnCertificateUploadDate
+    , dnDistributionDomainName
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to get the name of a DomainName resource.
+--
+-- /See:/ 'getDomainName' smart constructor.
+newtype GetDomainName = GetDomainName'
+    { _gdnDomainName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetDomainName' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdnDomainName'
+getDomainName
+    :: Text -- ^ 'gdnDomainName'
+    -> GetDomainName
+getDomainName pDomainName_ =
+    GetDomainName'
+    { _gdnDomainName = pDomainName_
+    }
+
+-- | The name of the DomainName resource.
+gdnDomainName :: Lens' GetDomainName Text
+gdnDomainName = lens _gdnDomainName (\ s a -> s{_gdnDomainName = a});
+
+instance AWSRequest GetDomainName where
+        type Rs GetDomainName = DomainName
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetDomainName where
+        toHeaders = const mempty
+
+instance ToPath GetDomainName where
+        toPath GetDomainName'{..}
+          = mconcat ["/domainnames/", toBS _gdnDomainName]
+
+instance ToQuery GetDomainName where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetDomainNames.hs b/gen/Network/AWS/APIGateway/GetDomainNames.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetDomainNames.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetDomainNames
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a collection of DomainName resources.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetDomainNames.html AWS API Reference> for GetDomainNames.
+module Network.AWS.APIGateway.GetDomainNames
+    (
+    -- * Creating a Request
+      getDomainNames
+    , GetDomainNames
+    -- * Request Lenses
+    , gdnLimit
+    , gdnPosition
+
+    -- * Destructuring the Response
+    , getDomainNamesResponse
+    , GetDomainNamesResponse
+    -- * Response Lenses
+    , gdnrsItems
+    , gdnrsPosition
+    , gdnrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to describe a collection of DomainName resources.
+--
+-- /See:/ 'getDomainNames' smart constructor.
+data GetDomainNames = GetDomainNames'
+    { _gdnLimit    :: !(Maybe Int)
+    , _gdnPosition :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetDomainNames' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdnLimit'
+--
+-- * 'gdnPosition'
+getDomainNames
+    :: GetDomainNames
+getDomainNames =
+    GetDomainNames'
+    { _gdnLimit = Nothing
+    , _gdnPosition = Nothing
+    }
+
+-- | The maximum number of DomainName resources in the collection to get
+-- information about. The default limit is 25. It should be an integer
+-- between 1 - 500.
+gdnLimit :: Lens' GetDomainNames (Maybe Int)
+gdnLimit = lens _gdnLimit (\ s a -> s{_gdnLimit = a});
+
+-- | The position of the current domain names to get information about.
+gdnPosition :: Lens' GetDomainNames (Maybe Text)
+gdnPosition = lens _gdnPosition (\ s a -> s{_gdnPosition = a});
+
+instance AWSRequest GetDomainNames where
+        type Rs GetDomainNames = GetDomainNamesResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetDomainNamesResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetDomainNames where
+        toHeaders = const mempty
+
+instance ToPath GetDomainNames where
+        toPath = const "/domainnames"
+
+instance ToQuery GetDomainNames where
+        toQuery GetDomainNames'{..}
+          = mconcat
+              ["limit" =: _gdnLimit, "position" =: _gdnPosition]
+
+-- | Represents a collection of DomainName resources.
+--
+-- /See:/ 'getDomainNamesResponse' smart constructor.
+data GetDomainNamesResponse = GetDomainNamesResponse'
+    { _gdnrsItems          :: !(Maybe [DomainName])
+    , _gdnrsPosition       :: !(Maybe Text)
+    , _gdnrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetDomainNamesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdnrsItems'
+--
+-- * 'gdnrsPosition'
+--
+-- * 'gdnrsResponseStatus'
+getDomainNamesResponse
+    :: Int -- ^ 'gdnrsResponseStatus'
+    -> GetDomainNamesResponse
+getDomainNamesResponse pResponseStatus_ =
+    GetDomainNamesResponse'
+    { _gdnrsItems = Nothing
+    , _gdnrsPosition = Nothing
+    , _gdnrsResponseStatus = pResponseStatus_
+    }
+
+-- | The current page of any DomainName resources in the collection of
+-- DomainName resources.
+gdnrsItems :: Lens' GetDomainNamesResponse [DomainName]
+gdnrsItems = lens _gdnrsItems (\ s a -> s{_gdnrsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+gdnrsPosition :: Lens' GetDomainNamesResponse (Maybe Text)
+gdnrsPosition = lens _gdnrsPosition (\ s a -> s{_gdnrsPosition = a});
+
+-- | The response status code.
+gdnrsResponseStatus :: Lens' GetDomainNamesResponse Int
+gdnrsResponseStatus = lens _gdnrsResponseStatus (\ s a -> s{_gdnrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetIntegration.hs b/gen/Network/AWS/APIGateway/GetIntegration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetIntegration.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetIntegration
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a get integration.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetIntegration.html AWS API Reference> for GetIntegration.
+module Network.AWS.APIGateway.GetIntegration
+    (
+    -- * Creating a Request
+      getIntegration
+    , GetIntegration
+    -- * Request Lenses
+    , giRestAPIId
+    , giResourceId
+    , giHttpMethod
+
+    -- * Destructuring the Response
+    , integration
+    , Integration
+    -- * Response Lenses
+    , iHttpMethod
+    , iRequestTemplates
+    , iCredentials
+    , iRequestParameters
+    , iUri
+    , iIntegrationResponses
+    , iCacheNamespace
+    , iType
+    , iCacheKeyParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a get integration request.
+--
+-- /See:/ 'getIntegration' smart constructor.
+data GetIntegration = GetIntegration'
+    { _giRestAPIId  :: !Text
+    , _giResourceId :: !Text
+    , _giHttpMethod :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIntegration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'giRestAPIId'
+--
+-- * 'giResourceId'
+--
+-- * 'giHttpMethod'
+getIntegration
+    :: Text -- ^ 'giRestAPIId'
+    -> Text -- ^ 'giResourceId'
+    -> Text -- ^ 'giHttpMethod'
+    -> GetIntegration
+getIntegration pRestAPIId_ pResourceId_ pHttpMethod_ =
+    GetIntegration'
+    { _giRestAPIId = pRestAPIId_
+    , _giResourceId = pResourceId_
+    , _giHttpMethod = pHttpMethod_
+    }
+
+-- | Specifies a get integration request\'s API identifier.
+giRestAPIId :: Lens' GetIntegration Text
+giRestAPIId = lens _giRestAPIId (\ s a -> s{_giRestAPIId = a});
+
+-- | Specifies a get integration request\'s resource identifier
+giResourceId :: Lens' GetIntegration Text
+giResourceId = lens _giResourceId (\ s a -> s{_giResourceId = a});
+
+-- | Specifies a get integration request\'s HTTP method.
+giHttpMethod :: Lens' GetIntegration Text
+giHttpMethod = lens _giHttpMethod (\ s a -> s{_giHttpMethod = a});
+
+instance AWSRequest GetIntegration where
+        type Rs GetIntegration = Integration
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetIntegration where
+        toHeaders = const mempty
+
+instance ToPath GetIntegration where
+        toPath GetIntegration'{..}
+          = mconcat
+              ["/restapis/", toBS _giRestAPIId, "/resources/",
+               toBS _giResourceId, "/methods/", toBS _giHttpMethod,
+               "/integration"]
+
+instance ToQuery GetIntegration where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetIntegrationResponse.hs b/gen/Network/AWS/APIGateway/GetIntegrationResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetIntegrationResponse.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetIntegrationResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a get integration response.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetIntegrationResponse.html AWS API Reference> for GetIntegrationResponse.
+module Network.AWS.APIGateway.GetIntegrationResponse
+    (
+    -- * Creating a Request
+      getIntegrationResponse
+    , GetIntegrationResponse
+    -- * Request Lenses
+    , getRestAPIId
+    , getResourceId
+    , getHttpMethod
+    , getStatusCode
+
+    -- * Destructuring the Response
+    , integrationResponse
+    , IntegrationResponse
+    -- * Response Lenses
+    , iResponseTemplates
+    , iSelectionPattern
+    , iStatusCode
+    , iResponseParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a get integration response request.
+--
+-- /See:/ 'getIntegrationResponse' smart constructor.
+data GetIntegrationResponse = GetIntegrationResponse'
+    { _getRestAPIId  :: !Text
+    , _getResourceId :: !Text
+    , _getHttpMethod :: !Text
+    , _getStatusCode :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIntegrationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'getRestAPIId'
+--
+-- * 'getResourceId'
+--
+-- * 'getHttpMethod'
+--
+-- * 'getStatusCode'
+getIntegrationResponse
+    :: Text -- ^ 'getRestAPIId'
+    -> Text -- ^ 'getResourceId'
+    -> Text -- ^ 'getHttpMethod'
+    -> Text -- ^ 'getStatusCode'
+    -> GetIntegrationResponse
+getIntegrationResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    GetIntegrationResponse'
+    { _getRestAPIId = pRestAPIId_
+    , _getResourceId = pResourceId_
+    , _getHttpMethod = pHttpMethod_
+    , _getStatusCode = pStatusCode_
+    }
+
+-- | Specifies a get integration response request\'s API identifier.
+getRestAPIId :: Lens' GetIntegrationResponse Text
+getRestAPIId = lens _getRestAPIId (\ s a -> s{_getRestAPIId = a});
+
+-- | Specifies a get integration response request\'s resource identifier.
+getResourceId :: Lens' GetIntegrationResponse Text
+getResourceId = lens _getResourceId (\ s a -> s{_getResourceId = a});
+
+-- | Specifies a get integration response request\'s HTTP method.
+getHttpMethod :: Lens' GetIntegrationResponse Text
+getHttpMethod = lens _getHttpMethod (\ s a -> s{_getHttpMethod = a});
+
+-- | Specifies a get integration response request\'s status code.
+getStatusCode :: Lens' GetIntegrationResponse Text
+getStatusCode = lens _getStatusCode (\ s a -> s{_getStatusCode = a});
+
+instance AWSRequest GetIntegrationResponse where
+        type Rs GetIntegrationResponse = IntegrationResponse
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetIntegrationResponse where
+        toHeaders = const mempty
+
+instance ToPath GetIntegrationResponse where
+        toPath GetIntegrationResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _getRestAPIId, "/resources/",
+               toBS _getResourceId, "/methods/",
+               toBS _getHttpMethod, "/integration/responses/",
+               toBS _getStatusCode]
+
+instance ToQuery GetIntegrationResponse where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetMethod.hs b/gen/Network/AWS/APIGateway/GetMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetMethod.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetMethod
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describe an existing Method resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetMethod.html AWS API Reference> for GetMethod.
+module Network.AWS.APIGateway.GetMethod
+    (
+    -- * Creating a Request
+      getMethod
+    , GetMethod
+    -- * Request Lenses
+    , gmmRestAPIId
+    , gmmResourceId
+    , gmmHttpMethod
+
+    -- * Destructuring the Response
+    , method
+    , Method
+    -- * Response Lenses
+    , mMethodResponses
+    , mHttpMethod
+    , mRequestModels
+    , mRequestParameters
+    , mAuthorizationType
+    , mApiKeyRequired
+    , mMethodIntegration
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to describe an existing Method resource.
+--
+-- /See:/ 'getMethod' smart constructor.
+data GetMethod = GetMethod'
+    { _gmmRestAPIId  :: !Text
+    , _gmmResourceId :: !Text
+    , _gmmHttpMethod :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetMethod' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmmRestAPIId'
+--
+-- * 'gmmResourceId'
+--
+-- * 'gmmHttpMethod'
+getMethod
+    :: Text -- ^ 'gmmRestAPIId'
+    -> Text -- ^ 'gmmResourceId'
+    -> Text -- ^ 'gmmHttpMethod'
+    -> GetMethod
+getMethod pRestAPIId_ pResourceId_ pHttpMethod_ =
+    GetMethod'
+    { _gmmRestAPIId = pRestAPIId_
+    , _gmmResourceId = pResourceId_
+    , _gmmHttpMethod = pHttpMethod_
+    }
+
+-- | The RestApi identifier for the Method resource.
+gmmRestAPIId :: Lens' GetMethod Text
+gmmRestAPIId = lens _gmmRestAPIId (\ s a -> s{_gmmRestAPIId = a});
+
+-- | The Resource identifier for the Method resource.
+gmmResourceId :: Lens' GetMethod Text
+gmmResourceId = lens _gmmResourceId (\ s a -> s{_gmmResourceId = a});
+
+-- | Specifies the put method request\'s HTTP method type.
+gmmHttpMethod :: Lens' GetMethod Text
+gmmHttpMethod = lens _gmmHttpMethod (\ s a -> s{_gmmHttpMethod = a});
+
+instance AWSRequest GetMethod where
+        type Rs GetMethod = Method
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetMethod where
+        toHeaders = const mempty
+
+instance ToPath GetMethod where
+        toPath GetMethod'{..}
+          = mconcat
+              ["/restapis/", toBS _gmmRestAPIId, "/resources/",
+               toBS _gmmResourceId, "/methods/",
+               toBS _gmmHttpMethod]
+
+instance ToQuery GetMethod where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetMethodResponse.hs b/gen/Network/AWS/APIGateway/GetMethodResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetMethodResponse.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetMethodResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes a MethodResponse resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetMethodResponse.html AWS API Reference> for GetMethodResponse.
+module Network.AWS.APIGateway.GetMethodResponse
+    (
+    -- * Creating a Request
+      getMethodResponse
+    , GetMethodResponse
+    -- * Request Lenses
+    , gmRestAPIId
+    , gmResourceId
+    , gmHttpMethod
+    , gmStatusCode
+
+    -- * Destructuring the Response
+    , methodResponse
+    , MethodResponse
+    -- * Response Lenses
+    , mResponseModels
+    , mStatusCode
+    , mResponseParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to describe a MethodResponse resource.
+--
+-- /See:/ 'getMethodResponse' smart constructor.
+data GetMethodResponse = GetMethodResponse'
+    { _gmRestAPIId  :: !Text
+    , _gmResourceId :: !Text
+    , _gmHttpMethod :: !Text
+    , _gmStatusCode :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetMethodResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmRestAPIId'
+--
+-- * 'gmResourceId'
+--
+-- * 'gmHttpMethod'
+--
+-- * 'gmStatusCode'
+getMethodResponse
+    :: Text -- ^ 'gmRestAPIId'
+    -> Text -- ^ 'gmResourceId'
+    -> Text -- ^ 'gmHttpMethod'
+    -> Text -- ^ 'gmStatusCode'
+    -> GetMethodResponse
+getMethodResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    GetMethodResponse'
+    { _gmRestAPIId = pRestAPIId_
+    , _gmResourceId = pResourceId_
+    , _gmHttpMethod = pHttpMethod_
+    , _gmStatusCode = pStatusCode_
+    }
+
+-- | The RestApi identifier for the MethodResponse resource.
+gmRestAPIId :: Lens' GetMethodResponse Text
+gmRestAPIId = lens _gmRestAPIId (\ s a -> s{_gmRestAPIId = a});
+
+-- | The Resource identifier for the MethodResponse resource.
+gmResourceId :: Lens' GetMethodResponse Text
+gmResourceId = lens _gmResourceId (\ s a -> s{_gmResourceId = a});
+
+-- | The HTTP verb identifier for the parent Method resource.
+gmHttpMethod :: Lens' GetMethodResponse Text
+gmHttpMethod = lens _gmHttpMethod (\ s a -> s{_gmHttpMethod = a});
+
+-- | The status code identifier for the MethodResponse resource.
+gmStatusCode :: Lens' GetMethodResponse Text
+gmStatusCode = lens _gmStatusCode (\ s a -> s{_gmStatusCode = a});
+
+instance AWSRequest GetMethodResponse where
+        type Rs GetMethodResponse = MethodResponse
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetMethodResponse where
+        toHeaders = const mempty
+
+instance ToPath GetMethodResponse where
+        toPath GetMethodResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _gmRestAPIId, "/resources/",
+               toBS _gmResourceId, "/methods/", toBS _gmHttpMethod,
+               "/responses/", toBS _gmStatusCode]
+
+instance ToQuery GetMethodResponse where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetModel.hs b/gen/Network/AWS/APIGateway/GetModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetModel.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetModel
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes an existing model defined for a RestApi resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetModel.html AWS API Reference> for GetModel.
+module Network.AWS.APIGateway.GetModel
+    (
+    -- * Creating a Request
+      getModel
+    , GetModel
+    -- * Request Lenses
+    , ggFlatten
+    , ggRestAPIId
+    , ggModelName
+
+    -- * Destructuring the Response
+    , model
+    , Model
+    -- * Response Lenses
+    , mSchema
+    , mName
+    , mId
+    , mDescription
+    , mContentType
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to list information about a model in an existing RestApi
+-- resource.
+--
+-- /See:/ 'getModel' smart constructor.
+data GetModel = GetModel'
+    { _ggFlatten   :: !(Maybe Bool)
+    , _ggRestAPIId :: !Text
+    , _ggModelName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetModel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ggFlatten'
+--
+-- * 'ggRestAPIId'
+--
+-- * 'ggModelName'
+getModel
+    :: Text -- ^ 'ggRestAPIId'
+    -> Text -- ^ 'ggModelName'
+    -> GetModel
+getModel pRestAPIId_ pModelName_ =
+    GetModel'
+    { _ggFlatten = Nothing
+    , _ggRestAPIId = pRestAPIId_
+    , _ggModelName = pModelName_
+    }
+
+-- | Resolves all external model references and returns a flattened model
+-- schema.
+ggFlatten :: Lens' GetModel (Maybe Bool)
+ggFlatten = lens _ggFlatten (\ s a -> s{_ggFlatten = a});
+
+-- | The RestApi identifier under which the Model exists.
+ggRestAPIId :: Lens' GetModel Text
+ggRestAPIId = lens _ggRestAPIId (\ s a -> s{_ggRestAPIId = a});
+
+-- | The name of the model as an identifier.
+ggModelName :: Lens' GetModel Text
+ggModelName = lens _ggModelName (\ s a -> s{_ggModelName = a});
+
+instance AWSRequest GetModel where
+        type Rs GetModel = Model
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetModel where
+        toHeaders = const mempty
+
+instance ToPath GetModel where
+        toPath GetModel'{..}
+          = mconcat
+              ["/restapis/", toBS _ggRestAPIId, "/models/",
+               toBS _ggModelName]
+
+instance ToQuery GetModel where
+        toQuery GetModel'{..}
+          = mconcat ["flatten" =: _ggFlatten]
diff --git a/gen/Network/AWS/APIGateway/GetModelTemplate.hs b/gen/Network/AWS/APIGateway/GetModelTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetModelTemplate.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetModelTemplate
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Generates a sample mapping template that can be used to transform a
+-- payload into the structure of a model.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetModelTemplate.html AWS API Reference> for GetModelTemplate.
+module Network.AWS.APIGateway.GetModelTemplate
+    (
+    -- * Creating a Request
+      getModelTemplate
+    , GetModelTemplate
+    -- * Request Lenses
+    , gmtRestAPIId
+    , gmtModelName
+
+    -- * Destructuring the Response
+    , getModelTemplateResponse
+    , GetModelTemplateResponse
+    -- * Response Lenses
+    , gmtrsValue
+    , gmtrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to generate a sample mapping template used to transform the
+-- payload.
+--
+-- /See:/ 'getModelTemplate' smart constructor.
+data GetModelTemplate = GetModelTemplate'
+    { _gmtRestAPIId :: !Text
+    , _gmtModelName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetModelTemplate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmtRestAPIId'
+--
+-- * 'gmtModelName'
+getModelTemplate
+    :: Text -- ^ 'gmtRestAPIId'
+    -> Text -- ^ 'gmtModelName'
+    -> GetModelTemplate
+getModelTemplate pRestAPIId_ pModelName_ =
+    GetModelTemplate'
+    { _gmtRestAPIId = pRestAPIId_
+    , _gmtModelName = pModelName_
+    }
+
+-- | The ID of the RestApi under which the model exists.
+gmtRestAPIId :: Lens' GetModelTemplate Text
+gmtRestAPIId = lens _gmtRestAPIId (\ s a -> s{_gmtRestAPIId = a});
+
+-- | The name of the model for which to generate a template.
+gmtModelName :: Lens' GetModelTemplate Text
+gmtModelName = lens _gmtModelName (\ s a -> s{_gmtModelName = a});
+
+instance AWSRequest GetModelTemplate where
+        type Rs GetModelTemplate = GetModelTemplateResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetModelTemplateResponse' <$>
+                   (x .?> "value") <*> (pure (fromEnum s)))
+
+instance ToHeaders GetModelTemplate where
+        toHeaders = const mempty
+
+instance ToPath GetModelTemplate where
+        toPath GetModelTemplate'{..}
+          = mconcat
+              ["/restapis/", toBS _gmtRestAPIId, "/models/",
+               toBS _gmtModelName, "/default_template"]
+
+instance ToQuery GetModelTemplate where
+        toQuery = const mempty
+
+-- | Represents a mapping template used to transform a payload.
+--
+-- /See:/ 'getModelTemplateResponse' smart constructor.
+data GetModelTemplateResponse = GetModelTemplateResponse'
+    { _gmtrsValue          :: !(Maybe Text)
+    , _gmtrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetModelTemplateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmtrsValue'
+--
+-- * 'gmtrsResponseStatus'
+getModelTemplateResponse
+    :: Int -- ^ 'gmtrsResponseStatus'
+    -> GetModelTemplateResponse
+getModelTemplateResponse pResponseStatus_ =
+    GetModelTemplateResponse'
+    { _gmtrsValue = Nothing
+    , _gmtrsResponseStatus = pResponseStatus_
+    }
+
+-- | The Apache
+-- <http://velocity.apache.org/engine/devel/vtl-reference-guide.html Velocity Template Language (VTL)>
+-- template content used for the template resource.
+gmtrsValue :: Lens' GetModelTemplateResponse (Maybe Text)
+gmtrsValue = lens _gmtrsValue (\ s a -> s{_gmtrsValue = a});
+
+-- | The response status code.
+gmtrsResponseStatus :: Lens' GetModelTemplateResponse Int
+gmtrsResponseStatus = lens _gmtrsResponseStatus (\ s a -> s{_gmtrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetModels.hs b/gen/Network/AWS/APIGateway/GetModels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetModels.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetModels
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes existing Models defined for a RestApi resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetModels.html AWS API Reference> for GetModels.
+module Network.AWS.APIGateway.GetModels
+    (
+    -- * Creating a Request
+      getModels
+    , GetModels
+    -- * Request Lenses
+    , gmsLimit
+    , gmsPosition
+    , gmsRestAPIId
+
+    -- * Destructuring the Response
+    , getModelsResponse
+    , GetModelsResponse
+    -- * Response Lenses
+    , gmrsItems
+    , gmrsPosition
+    , gmrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to list existing Models defined for a RestApi resource.
+--
+-- /See:/ 'getModels' smart constructor.
+data GetModels = GetModels'
+    { _gmsLimit     :: !(Maybe Int)
+    , _gmsPosition  :: !(Maybe Text)
+    , _gmsRestAPIId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetModels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmsLimit'
+--
+-- * 'gmsPosition'
+--
+-- * 'gmsRestAPIId'
+getModels
+    :: Text -- ^ 'gmsRestAPIId'
+    -> GetModels
+getModels pRestAPIId_ =
+    GetModels'
+    { _gmsLimit = Nothing
+    , _gmsPosition = Nothing
+    , _gmsRestAPIId = pRestAPIId_
+    }
+
+-- | The maximum number of models in the collection to get information about.
+-- The default limit is 25. It should be an integer between 1 - 500.
+gmsLimit :: Lens' GetModels (Maybe Int)
+gmsLimit = lens _gmsLimit (\ s a -> s{_gmsLimit = a});
+
+-- | The position of the next set of results in the Models resource to get
+-- information about.
+gmsPosition :: Lens' GetModels (Maybe Text)
+gmsPosition = lens _gmsPosition (\ s a -> s{_gmsPosition = a});
+
+-- | The RestApi identifier.
+gmsRestAPIId :: Lens' GetModels Text
+gmsRestAPIId = lens _gmsRestAPIId (\ s a -> s{_gmsRestAPIId = a});
+
+instance AWSRequest GetModels where
+        type Rs GetModels = GetModelsResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetModelsResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetModels where
+        toHeaders = const mempty
+
+instance ToPath GetModels where
+        toPath GetModels'{..}
+          = mconcat
+              ["/restapis/", toBS _gmsRestAPIId, "/models"]
+
+instance ToQuery GetModels where
+        toQuery GetModels'{..}
+          = mconcat
+              ["limit" =: _gmsLimit, "position" =: _gmsPosition]
+
+-- | Represents a collection of Model resources.
+--
+-- /See:/ 'getModelsResponse' smart constructor.
+data GetModelsResponse = GetModelsResponse'
+    { _gmrsItems          :: !(Maybe [Model])
+    , _gmrsPosition       :: !(Maybe Text)
+    , _gmrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetModelsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmrsItems'
+--
+-- * 'gmrsPosition'
+--
+-- * 'gmrsResponseStatus'
+getModelsResponse
+    :: Int -- ^ 'gmrsResponseStatus'
+    -> GetModelsResponse
+getModelsResponse pResponseStatus_ =
+    GetModelsResponse'
+    { _gmrsItems = Nothing
+    , _gmrsPosition = Nothing
+    , _gmrsResponseStatus = pResponseStatus_
+    }
+
+-- | Gets the current Model resource in the collection.
+gmrsItems :: Lens' GetModelsResponse [Model]
+gmrsItems = lens _gmrsItems (\ s a -> s{_gmrsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+gmrsPosition :: Lens' GetModelsResponse (Maybe Text)
+gmrsPosition = lens _gmrsPosition (\ s a -> s{_gmrsPosition = a});
+
+-- | The response status code.
+gmrsResponseStatus :: Lens' GetModelsResponse Int
+gmrsResponseStatus = lens _gmrsResponseStatus (\ s a -> s{_gmrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetResource.hs b/gen/Network/AWS/APIGateway/GetResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetResource.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetResource
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists information about a resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetResource.html AWS API Reference> for GetResource.
+module Network.AWS.APIGateway.GetResource
+    (
+    -- * Creating a Request
+      getResource
+    , GetResource
+    -- * Request Lenses
+    , grRestAPIId
+    , grResourceId
+
+    -- * Destructuring the Response
+    , resource
+    , Resource
+    -- * Response Lenses
+    , rPathPart
+    , rPath
+    , rId
+    , rResourceMethods
+    , rParentId
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to list information about a resource.
+--
+-- /See:/ 'getResource' smart constructor.
+data GetResource = GetResource'
+    { _grRestAPIId  :: !Text
+    , _grResourceId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grRestAPIId'
+--
+-- * 'grResourceId'
+getResource
+    :: Text -- ^ 'grRestAPIId'
+    -> Text -- ^ 'grResourceId'
+    -> GetResource
+getResource pRestAPIId_ pResourceId_ =
+    GetResource'
+    { _grRestAPIId = pRestAPIId_
+    , _grResourceId = pResourceId_
+    }
+
+-- | The RestApi identifier for the resource.
+grRestAPIId :: Lens' GetResource Text
+grRestAPIId = lens _grRestAPIId (\ s a -> s{_grRestAPIId = a});
+
+-- | The identifier for the Resource resource.
+grResourceId :: Lens' GetResource Text
+grResourceId = lens _grResourceId (\ s a -> s{_grResourceId = a});
+
+instance AWSRequest GetResource where
+        type Rs GetResource = Resource
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetResource where
+        toHeaders = const mempty
+
+instance ToPath GetResource where
+        toPath GetResource'{..}
+          = mconcat
+              ["/restapis/", toBS _grRestAPIId, "/resources/",
+               toBS _grResourceId]
+
+instance ToQuery GetResource where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetResources.hs b/gen/Network/AWS/APIGateway/GetResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetResources.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetResources
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists information about a collection of Resource resources.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetResources.html AWS API Reference> for GetResources.
+module Network.AWS.APIGateway.GetResources
+    (
+    -- * Creating a Request
+      getResources
+    , GetResources
+    -- * Request Lenses
+    , grsLimit
+    , grsPosition
+    , grsRestAPIId
+
+    -- * Destructuring the Response
+    , getResourcesResponse
+    , GetResourcesResponse
+    -- * Response Lenses
+    , grrsItems
+    , grrsPosition
+    , grrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to list information about a collection of resources.
+--
+-- /See:/ 'getResources' smart constructor.
+data GetResources = GetResources'
+    { _grsLimit     :: !(Maybe Int)
+    , _grsPosition  :: !(Maybe Text)
+    , _grsRestAPIId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetResources' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grsLimit'
+--
+-- * 'grsPosition'
+--
+-- * 'grsRestAPIId'
+getResources
+    :: Text -- ^ 'grsRestAPIId'
+    -> GetResources
+getResources pRestAPIId_ =
+    GetResources'
+    { _grsLimit = Nothing
+    , _grsPosition = Nothing
+    , _grsRestAPIId = pRestAPIId_
+    }
+
+-- | The maximum number of Resource resources in the collection to get
+-- information about. The default limit is 25. It should be an integer
+-- between 1 - 500.
+grsLimit :: Lens' GetResources (Maybe Int)
+grsLimit = lens _grsLimit (\ s a -> s{_grsLimit = a});
+
+-- | The position of the next set of results in the current Resources
+-- resource to get information about.
+grsPosition :: Lens' GetResources (Maybe Text)
+grsPosition = lens _grsPosition (\ s a -> s{_grsPosition = a});
+
+-- | The RestApi identifier for the Resource.
+grsRestAPIId :: Lens' GetResources Text
+grsRestAPIId = lens _grsRestAPIId (\ s a -> s{_grsRestAPIId = a});
+
+instance AWSRequest GetResources where
+        type Rs GetResources = GetResourcesResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetResourcesResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetResources where
+        toHeaders = const mempty
+
+instance ToPath GetResources where
+        toPath GetResources'{..}
+          = mconcat
+              ["/restapis/", toBS _grsRestAPIId, "/resources"]
+
+instance ToQuery GetResources where
+        toQuery GetResources'{..}
+          = mconcat
+              ["limit" =: _grsLimit, "position" =: _grsPosition]
+
+-- | Represents a collection of Resource resources.
+--
+-- /See:/ 'getResourcesResponse' smart constructor.
+data GetResourcesResponse = GetResourcesResponse'
+    { _grrsItems          :: !(Maybe [Resource])
+    , _grrsPosition       :: !(Maybe Text)
+    , _grrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetResourcesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grrsItems'
+--
+-- * 'grrsPosition'
+--
+-- * 'grrsResponseStatus'
+getResourcesResponse
+    :: Int -- ^ 'grrsResponseStatus'
+    -> GetResourcesResponse
+getResourcesResponse pResponseStatus_ =
+    GetResourcesResponse'
+    { _grrsItems = Nothing
+    , _grrsPosition = Nothing
+    , _grrsResponseStatus = pResponseStatus_
+    }
+
+-- | Gets the current Resource resource in the collection.
+grrsItems :: Lens' GetResourcesResponse [Resource]
+grrsItems = lens _grrsItems (\ s a -> s{_grrsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+grrsPosition :: Lens' GetResourcesResponse (Maybe Text)
+grrsPosition = lens _grrsPosition (\ s a -> s{_grrsPosition = a});
+
+-- | The response status code.
+grrsResponseStatus :: Lens' GetResourcesResponse Int
+grrsResponseStatus = lens _grrsResponseStatus (\ s a -> s{_grrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetRestAPI.hs b/gen/Network/AWS/APIGateway/GetRestAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetRestAPI.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetRestAPI
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the RestApi resource in the collection.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetRestAPI.html AWS API Reference> for GetRestAPI.
+module Network.AWS.APIGateway.GetRestAPI
+    (
+    -- * Creating a Request
+      getRestAPI
+    , GetRestAPI
+    -- * Request Lenses
+    , graRestAPIId
+
+    -- * Destructuring the Response
+    , restAPI
+    , RestAPI
+    -- * Response Lenses
+    , raCreatedDate
+    , raName
+    , raId
+    , raDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to list an existing RestApi defined for your collection.
+--
+-- /See:/ 'getRestAPI' smart constructor.
+newtype GetRestAPI = GetRestAPI'
+    { _graRestAPIId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetRestAPI' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'graRestAPIId'
+getRestAPI
+    :: Text -- ^ 'graRestAPIId'
+    -> GetRestAPI
+getRestAPI pRestAPIId_ =
+    GetRestAPI'
+    { _graRestAPIId = pRestAPIId_
+    }
+
+-- | The identifier of the RestApi resource.
+graRestAPIId :: Lens' GetRestAPI Text
+graRestAPIId = lens _graRestAPIId (\ s a -> s{_graRestAPIId = a});
+
+instance AWSRequest GetRestAPI where
+        type Rs GetRestAPI = RestAPI
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetRestAPI where
+        toHeaders = const mempty
+
+instance ToPath GetRestAPI where
+        toPath GetRestAPI'{..}
+          = mconcat ["/restapis/", toBS _graRestAPIId]
+
+instance ToQuery GetRestAPI where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetRestAPIs.hs b/gen/Network/AWS/APIGateway/GetRestAPIs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetRestAPIs.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetRestAPIs
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the RestApis resources for your collection.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetRestAPIs.html AWS API Reference> for GetRestAPIs.
+module Network.AWS.APIGateway.GetRestAPIs
+    (
+    -- * Creating a Request
+      getRestAPIs
+    , GetRestAPIs
+    -- * Request Lenses
+    , graLimit
+    , graPosition
+
+    -- * Destructuring the Response
+    , getRestAPIsResponse
+    , GetRestAPIsResponse
+    -- * Response Lenses
+    , grarsItems
+    , grarsPosition
+    , grarsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to list existing RestApis defined for your collection.
+--
+-- /See:/ 'getRestAPIs' smart constructor.
+data GetRestAPIs = GetRestAPIs'
+    { _graLimit    :: !(Maybe Int)
+    , _graPosition :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetRestAPIs' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'graLimit'
+--
+-- * 'graPosition'
+getRestAPIs
+    :: GetRestAPIs
+getRestAPIs =
+    GetRestAPIs'
+    { _graLimit = Nothing
+    , _graPosition = Nothing
+    }
+
+-- | The maximum number of RestApi resources in the collection to get
+-- information about. The default limit is 25. It should be an integer
+-- between 1 - 500.
+graLimit :: Lens' GetRestAPIs (Maybe Int)
+graLimit = lens _graLimit (\ s a -> s{_graLimit = a});
+
+-- | The position of the current RestApis resource in the collection to get
+-- information about.
+graPosition :: Lens' GetRestAPIs (Maybe Text)
+graPosition = lens _graPosition (\ s a -> s{_graPosition = a});
+
+instance AWSRequest GetRestAPIs where
+        type Rs GetRestAPIs = GetRestAPIsResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetRestAPIsResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (x .?> "position") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetRestAPIs where
+        toHeaders = const mempty
+
+instance ToPath GetRestAPIs where
+        toPath = const "/restapis"
+
+instance ToQuery GetRestAPIs where
+        toQuery GetRestAPIs'{..}
+          = mconcat
+              ["limit" =: _graLimit, "position" =: _graPosition]
+
+-- | Contains references to your APIs and links that guide you in ways to
+-- interact with your collection. A collection offers a paginated view of
+-- your APIs.
+--
+-- /See:/ 'getRestAPIsResponse' smart constructor.
+data GetRestAPIsResponse = GetRestAPIsResponse'
+    { _grarsItems          :: !(Maybe [RestAPI])
+    , _grarsPosition       :: !(Maybe Text)
+    , _grarsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetRestAPIsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grarsItems'
+--
+-- * 'grarsPosition'
+--
+-- * 'grarsResponseStatus'
+getRestAPIsResponse
+    :: Int -- ^ 'grarsResponseStatus'
+    -> GetRestAPIsResponse
+getRestAPIsResponse pResponseStatus_ =
+    GetRestAPIsResponse'
+    { _grarsItems = Nothing
+    , _grarsPosition = Nothing
+    , _grarsResponseStatus = pResponseStatus_
+    }
+
+-- | An array of links to the current page of RestApi resources.
+grarsItems :: Lens' GetRestAPIsResponse [RestAPI]
+grarsItems = lens _grarsItems (\ s a -> s{_grarsItems = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+grarsPosition :: Lens' GetRestAPIsResponse (Maybe Text)
+grarsPosition = lens _grarsPosition (\ s a -> s{_grarsPosition = a});
+
+-- | The response status code.
+grarsResponseStatus :: Lens' GetRestAPIsResponse Int
+grarsResponseStatus = lens _grarsResponseStatus (\ s a -> s{_grarsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetSDK.hs b/gen/Network/AWS/APIGateway/GetSDK.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetSDK.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetSDK
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetSDK.html AWS API Reference> for GetSDK.
+module Network.AWS.APIGateway.GetSDK
+    (
+    -- * Creating a Request
+      getSDK
+    , GetSDK
+    -- * Request Lenses
+    , gsdkParameters
+    , gsdkRestAPIId
+    , gsdkStageName
+    , gsdkSdkType
+
+    -- * Destructuring the Response
+    , getSDKResponse
+    , GetSDKResponse
+    -- * Response Lenses
+    , gsdkrsBody
+    , gsdkrsContentDisposition
+    , gsdkrsContentType
+    , gsdkrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'getSDK' smart constructor.
+data GetSDK = GetSDK'
+    { _gsdkParameters :: !(Maybe (Map Text Text))
+    , _gsdkRestAPIId  :: !Text
+    , _gsdkStageName  :: !Text
+    , _gsdkSdkType    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetSDK' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gsdkParameters'
+--
+-- * 'gsdkRestAPIId'
+--
+-- * 'gsdkStageName'
+--
+-- * 'gsdkSdkType'
+getSDK
+    :: Text -- ^ 'gsdkRestAPIId'
+    -> Text -- ^ 'gsdkStageName'
+    -> Text -- ^ 'gsdkSdkType'
+    -> GetSDK
+getSDK pRestAPIId_ pStageName_ pSdkType_ =
+    GetSDK'
+    { _gsdkParameters = Nothing
+    , _gsdkRestAPIId = pRestAPIId_
+    , _gsdkStageName = pStageName_
+    , _gsdkSdkType = pSdkType_
+    }
+
+-- | Undocumented member.
+gsdkParameters :: Lens' GetSDK (HashMap Text Text)
+gsdkParameters = lens _gsdkParameters (\ s a -> s{_gsdkParameters = a}) . _Default . _Map;
+
+-- | Undocumented member.
+gsdkRestAPIId :: Lens' GetSDK Text
+gsdkRestAPIId = lens _gsdkRestAPIId (\ s a -> s{_gsdkRestAPIId = a});
+
+-- | Undocumented member.
+gsdkStageName :: Lens' GetSDK Text
+gsdkStageName = lens _gsdkStageName (\ s a -> s{_gsdkStageName = a});
+
+-- | Undocumented member.
+gsdkSdkType :: Lens' GetSDK Text
+gsdkSdkType = lens _gsdkSdkType (\ s a -> s{_gsdkSdkType = a});
+
+instance AWSRequest GetSDK where
+        type Rs GetSDK = GetSDKResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetSDKResponse' <$>
+                   (pure (Just x)) <*> (h .#? "Content-Disposition") <*>
+                     (h .#? "Content-Type")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders GetSDK where
+        toHeaders = const mempty
+
+instance ToPath GetSDK where
+        toPath GetSDK'{..}
+          = mconcat
+              ["/restapis/", toBS _gsdkRestAPIId, "/stages/",
+               toBS _gsdkStageName, "/sdks/", toBS _gsdkSdkType]
+
+instance ToQuery GetSDK where
+        toQuery GetSDK'{..}
+          = mconcat
+              ["parameters" =:
+                 toQuery
+                   (toQueryMap "entry" "key" "value" <$>
+                      _gsdkParameters)]
+
+-- | /See:/ 'getSDKResponse' smart constructor.
+data GetSDKResponse = GetSDKResponse'
+    { _gsdkrsBody               :: !(Maybe (HashMap Text Value))
+    , _gsdkrsContentDisposition :: !(Maybe Text)
+    , _gsdkrsContentType        :: !(Maybe Text)
+    , _gsdkrsResponseStatus     :: !Int
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetSDKResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gsdkrsBody'
+--
+-- * 'gsdkrsContentDisposition'
+--
+-- * 'gsdkrsContentType'
+--
+-- * 'gsdkrsResponseStatus'
+getSDKResponse
+    :: Int -- ^ 'gsdkrsResponseStatus'
+    -> GetSDKResponse
+getSDKResponse pResponseStatus_ =
+    GetSDKResponse'
+    { _gsdkrsBody = Nothing
+    , _gsdkrsContentDisposition = Nothing
+    , _gsdkrsContentType = Nothing
+    , _gsdkrsResponseStatus = pResponseStatus_
+    }
+
+-- | Undocumented member.
+gsdkrsBody :: Lens' GetSDKResponse (Maybe (HashMap Text Value))
+gsdkrsBody = lens _gsdkrsBody (\ s a -> s{_gsdkrsBody = a});
+
+-- | Undocumented member.
+gsdkrsContentDisposition :: Lens' GetSDKResponse (Maybe Text)
+gsdkrsContentDisposition = lens _gsdkrsContentDisposition (\ s a -> s{_gsdkrsContentDisposition = a});
+
+-- | Undocumented member.
+gsdkrsContentType :: Lens' GetSDKResponse (Maybe Text)
+gsdkrsContentType = lens _gsdkrsContentType (\ s a -> s{_gsdkrsContentType = a});
+
+-- | The response status code.
+gsdkrsResponseStatus :: Lens' GetSDKResponse Int
+gsdkrsResponseStatus = lens _gsdkrsResponseStatus (\ s a -> s{_gsdkrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/GetStage.hs b/gen/Network/AWS/APIGateway/GetStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetStage.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetStage
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about a Stage resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetStage.html AWS API Reference> for GetStage.
+module Network.AWS.APIGateway.GetStage
+    (
+    -- * Creating a Request
+      getStage
+    , GetStage
+    -- * Request Lenses
+    , gssRestAPIId
+    , gssStageName
+
+    -- * Destructuring the Response
+    , stage
+    , Stage
+    -- * Response Lenses
+    , sDeploymentId
+    , sClientCertificateId
+    , sCreatedDate
+    , sCacheClusterStatus
+    , sMethodSettings
+    , sLastUpdatedDate
+    , sCacheClusterSize
+    , sCacheClusterEnabled
+    , sStageName
+    , sDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to get information about a Stage resource.
+--
+-- /See:/ 'getStage' smart constructor.
+data GetStage = GetStage'
+    { _gssRestAPIId :: !Text
+    , _gssStageName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetStage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gssRestAPIId'
+--
+-- * 'gssStageName'
+getStage
+    :: Text -- ^ 'gssRestAPIId'
+    -> Text -- ^ 'gssStageName'
+    -> GetStage
+getStage pRestAPIId_ pStageName_ =
+    GetStage'
+    { _gssRestAPIId = pRestAPIId_
+    , _gssStageName = pStageName_
+    }
+
+-- | The identifier of the RestApi resource for the Stage resource to get
+-- information about.
+gssRestAPIId :: Lens' GetStage Text
+gssRestAPIId = lens _gssRestAPIId (\ s a -> s{_gssRestAPIId = a});
+
+-- | The name of the Stage resource to get information about.
+gssStageName :: Lens' GetStage Text
+gssStageName = lens _gssStageName (\ s a -> s{_gssStageName = a});
+
+instance AWSRequest GetStage where
+        type Rs GetStage = Stage
+        request = get aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetStage where
+        toHeaders = const mempty
+
+instance ToPath GetStage where
+        toPath GetStage'{..}
+          = mconcat
+              ["/restapis/", toBS _gssRestAPIId, "/stages/",
+               toBS _gssStageName]
+
+instance ToQuery GetStage where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/GetStages.hs b/gen/Network/AWS/APIGateway/GetStages.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/GetStages.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.GetStages
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about one or more Stage resources.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/GetStages.html AWS API Reference> for GetStages.
+module Network.AWS.APIGateway.GetStages
+    (
+    -- * Creating a Request
+      getStages
+    , GetStages
+    -- * Request Lenses
+    , gsDeploymentId
+    , gsRestAPIId
+
+    -- * Destructuring the Response
+    , getStagesResponse
+    , GetStagesResponse
+    -- * Response Lenses
+    , gsrsItem
+    , gsrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to get information about one or more Stage
+-- resources.
+--
+-- /See:/ 'getStages' smart constructor.
+data GetStages = GetStages'
+    { _gsDeploymentId :: !(Maybe Text)
+    , _gsRestAPIId    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetStages' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gsDeploymentId'
+--
+-- * 'gsRestAPIId'
+getStages
+    :: Text -- ^ 'gsRestAPIId'
+    -> GetStages
+getStages pRestAPIId_ =
+    GetStages'
+    { _gsDeploymentId = Nothing
+    , _gsRestAPIId = pRestAPIId_
+    }
+
+-- | The stages\' deployment identifiers.
+gsDeploymentId :: Lens' GetStages (Maybe Text)
+gsDeploymentId = lens _gsDeploymentId (\ s a -> s{_gsDeploymentId = a});
+
+-- | The stages\' API identifiers.
+gsRestAPIId :: Lens' GetStages Text
+gsRestAPIId = lens _gsRestAPIId (\ s a -> s{_gsRestAPIId = a});
+
+instance AWSRequest GetStages where
+        type Rs GetStages = GetStagesResponse
+        request = get aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetStagesResponse' <$>
+                   (x .?> "item" .!@ mempty) <*> (pure (fromEnum s)))
+
+instance ToHeaders GetStages where
+        toHeaders = const mempty
+
+instance ToPath GetStages where
+        toPath GetStages'{..}
+          = mconcat
+              ["/restapis/", toBS _gsRestAPIId, "/stages"]
+
+instance ToQuery GetStages where
+        toQuery GetStages'{..}
+          = mconcat ["deploymentId" =: _gsDeploymentId]
+
+-- | A list of Stage resource that are associated with the ApiKey resource.
+--
+-- /See:/ 'getStagesResponse' smart constructor.
+data GetStagesResponse = GetStagesResponse'
+    { _gsrsItem           :: !(Maybe [Stage])
+    , _gsrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetStagesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gsrsItem'
+--
+-- * 'gsrsResponseStatus'
+getStagesResponse
+    :: Int -- ^ 'gsrsResponseStatus'
+    -> GetStagesResponse
+getStagesResponse pResponseStatus_ =
+    GetStagesResponse'
+    { _gsrsItem = Nothing
+    , _gsrsResponseStatus = pResponseStatus_
+    }
+
+-- | An individual Stage resource.
+gsrsItem :: Lens' GetStagesResponse [Stage]
+gsrsItem = lens _gsrsItem (\ s a -> s{_gsrsItem = a}) . _Default . _Coerce;
+
+-- | The response status code.
+gsrsResponseStatus :: Lens' GetStagesResponse Int
+gsrsResponseStatus = lens _gsrsResponseStatus (\ s a -> s{_gsrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/PutIntegration.hs b/gen/Network/AWS/APIGateway/PutIntegration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/PutIntegration.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.PutIntegration
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a put integration.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/PutIntegration.html AWS API Reference> for PutIntegration.
+module Network.AWS.APIGateway.PutIntegration
+    (
+    -- * Creating a Request
+      putIntegration
+    , PutIntegration
+    -- * Request Lenses
+    , pRequestTemplates
+    , pCredentials
+    , pRequestParameters
+    , pUri
+    , pCacheNamespace
+    , pCacheKeyParameters
+    , pRestAPIId
+    , pResourceId
+    , pHttpMethod
+    , pType
+
+    -- * Destructuring the Response
+    , integration
+    , Integration
+    -- * Response Lenses
+    , iHttpMethod
+    , iRequestTemplates
+    , iCredentials
+    , iRequestParameters
+    , iUri
+    , iIntegrationResponses
+    , iCacheNamespace
+    , iType
+    , iCacheKeyParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a put integration request.
+--
+-- /See:/ 'putIntegration' smart constructor.
+data PutIntegration = PutIntegration'
+    { _pRequestTemplates   :: !(Maybe (Map Text Text))
+    , _pCredentials        :: !(Maybe Text)
+    , _pRequestParameters  :: !(Maybe (Map Text Text))
+    , _pUri                :: !(Maybe Text)
+    , _pCacheNamespace     :: !(Maybe Text)
+    , _pCacheKeyParameters :: !(Maybe [Text])
+    , _pRestAPIId          :: !Text
+    , _pResourceId         :: !Text
+    , _pHttpMethod         :: !Text
+    , _pType               :: !IntegrationType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutIntegration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pRequestTemplates'
+--
+-- * 'pCredentials'
+--
+-- * 'pRequestParameters'
+--
+-- * 'pUri'
+--
+-- * 'pCacheNamespace'
+--
+-- * 'pCacheKeyParameters'
+--
+-- * 'pRestAPIId'
+--
+-- * 'pResourceId'
+--
+-- * 'pHttpMethod'
+--
+-- * 'pType'
+putIntegration
+    :: Text -- ^ 'pRestAPIId'
+    -> Text -- ^ 'pResourceId'
+    -> Text -- ^ 'pHttpMethod'
+    -> IntegrationType -- ^ 'pType'
+    -> PutIntegration
+putIntegration pRestAPIId_ pResourceId_ pHttpMethod_ pType_ =
+    PutIntegration'
+    { _pRequestTemplates = Nothing
+    , _pCredentials = Nothing
+    , _pRequestParameters = Nothing
+    , _pUri = Nothing
+    , _pCacheNamespace = Nothing
+    , _pCacheKeyParameters = Nothing
+    , _pRestAPIId = pRestAPIId_
+    , _pResourceId = pResourceId_
+    , _pHttpMethod = pHttpMethod_
+    , _pType = pType_
+    }
+
+-- | Specifies the templates used to transform the method request body.
+-- Request templates are represented as a key\/value map, with a
+-- content-type as the key and a template as the value.
+pRequestTemplates :: Lens' PutIntegration (HashMap Text Text)
+pRequestTemplates = lens _pRequestTemplates (\ s a -> s{_pRequestTemplates = a}) . _Default . _Map;
+
+-- | Specifies whether credentials are required for a put integration.
+pCredentials :: Lens' PutIntegration (Maybe Text)
+pCredentials = lens _pCredentials (\ s a -> s{_pCredentials = a});
+
+-- | Represents request parameters that are sent with the backend request.
+-- Request parameters are represented as a key\/value map, with a
+-- destination as the key and a source as the value. A source must match an
+-- existing method request parameter, or a static value. Static values must
+-- be enclosed with single quotes, and be pre-encoded based on their
+-- destination in the request. The destination must match the pattern
+-- 'integration.request.{location}.{name}', where 'location' is either
+-- querystring, path, or header. 'name' must be a valid, unique parameter
+-- name.
+pRequestParameters :: Lens' PutIntegration (HashMap Text Text)
+pRequestParameters = lens _pRequestParameters (\ s a -> s{_pRequestParameters = a}) . _Default . _Map;
+
+-- | Specifies a put integration input\'s Uniform Resource Identifier (URI).
+pUri :: Lens' PutIntegration (Maybe Text)
+pUri = lens _pUri (\ s a -> s{_pUri = a});
+
+-- | Specifies a put integration input\'s cache namespace.
+pCacheNamespace :: Lens' PutIntegration (Maybe Text)
+pCacheNamespace = lens _pCacheNamespace (\ s a -> s{_pCacheNamespace = a});
+
+-- | Specifies a put integration input\'s cache key parameters.
+pCacheKeyParameters :: Lens' PutIntegration [Text]
+pCacheKeyParameters = lens _pCacheKeyParameters (\ s a -> s{_pCacheKeyParameters = a}) . _Default . _Coerce;
+
+-- | Specifies a put integration request\'s API identifier.
+pRestAPIId :: Lens' PutIntegration Text
+pRestAPIId = lens _pRestAPIId (\ s a -> s{_pRestAPIId = a});
+
+-- | Specifies a put integration request\'s resource ID.
+pResourceId :: Lens' PutIntegration Text
+pResourceId = lens _pResourceId (\ s a -> s{_pResourceId = a});
+
+-- | Specifies a put integration HTTP method.
+pHttpMethod :: Lens' PutIntegration Text
+pHttpMethod = lens _pHttpMethod (\ s a -> s{_pHttpMethod = a});
+
+-- | Specifies a put integration input\'s type.
+pType :: Lens' PutIntegration IntegrationType
+pType = lens _pType (\ s a -> s{_pType = a});
+
+instance AWSRequest PutIntegration where
+        type Rs PutIntegration = Integration
+        request = putJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders PutIntegration where
+        toHeaders = const mempty
+
+instance ToJSON PutIntegration where
+        toJSON PutIntegration'{..}
+          = object
+              (catMaybes
+                 [("requestTemplates" .=) <$> _pRequestTemplates,
+                  ("credentials" .=) <$> _pCredentials,
+                  ("requestParameters" .=) <$> _pRequestParameters,
+                  ("uri" .=) <$> _pUri,
+                  ("cacheNamespace" .=) <$> _pCacheNamespace,
+                  ("cacheKeyParameters" .=) <$> _pCacheKeyParameters,
+                  Just ("httpMethod" .= _pHttpMethod),
+                  Just ("type" .= _pType)])
+
+instance ToPath PutIntegration where
+        toPath PutIntegration'{..}
+          = mconcat
+              ["/restapis/", toBS _pRestAPIId, "/resources/",
+               toBS _pResourceId, "/methods/", toBS _pHttpMethod,
+               "/integration"]
+
+instance ToQuery PutIntegration where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/PutIntegrationResponse.hs b/gen/Network/AWS/APIGateway/PutIntegrationResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/PutIntegrationResponse.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.PutIntegrationResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents a put integration.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/PutIntegrationResponse.html AWS API Reference> for PutIntegrationResponse.
+module Network.AWS.APIGateway.PutIntegrationResponse
+    (
+    -- * Creating a Request
+      putIntegrationResponse
+    , PutIntegrationResponse
+    -- * Request Lenses
+    , piResponseTemplates
+    , piSelectionPattern
+    , piResponseParameters
+    , piRestAPIId
+    , piResourceId
+    , piHttpMethod
+    , piStatusCode
+
+    -- * Destructuring the Response
+    , integrationResponse
+    , IntegrationResponse
+    -- * Response Lenses
+    , iResponseTemplates
+    , iSelectionPattern
+    , iStatusCode
+    , iResponseParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a put integration response request.
+--
+-- /See:/ 'putIntegrationResponse' smart constructor.
+data PutIntegrationResponse = PutIntegrationResponse'
+    { _piResponseTemplates  :: !(Maybe (Map Text Text))
+    , _piSelectionPattern   :: !(Maybe Text)
+    , _piResponseParameters :: !(Maybe (Map Text Text))
+    , _piRestAPIId          :: !Text
+    , _piResourceId         :: !Text
+    , _piHttpMethod         :: !Text
+    , _piStatusCode         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutIntegrationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piResponseTemplates'
+--
+-- * 'piSelectionPattern'
+--
+-- * 'piResponseParameters'
+--
+-- * 'piRestAPIId'
+--
+-- * 'piResourceId'
+--
+-- * 'piHttpMethod'
+--
+-- * 'piStatusCode'
+putIntegrationResponse
+    :: Text -- ^ 'piRestAPIId'
+    -> Text -- ^ 'piResourceId'
+    -> Text -- ^ 'piHttpMethod'
+    -> Text -- ^ 'piStatusCode'
+    -> PutIntegrationResponse
+putIntegrationResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    PutIntegrationResponse'
+    { _piResponseTemplates = Nothing
+    , _piSelectionPattern = Nothing
+    , _piResponseParameters = Nothing
+    , _piRestAPIId = pRestAPIId_
+    , _piResourceId = pResourceId_
+    , _piHttpMethod = pHttpMethod_
+    , _piStatusCode = pStatusCode_
+    }
+
+-- | Specifies a put integration response\'s templates.
+piResponseTemplates :: Lens' PutIntegrationResponse (HashMap Text Text)
+piResponseTemplates = lens _piResponseTemplates (\ s a -> s{_piResponseTemplates = a}) . _Default . _Map;
+
+-- | Specifies the selection pattern of a put integration response.
+piSelectionPattern :: Lens' PutIntegrationResponse (Maybe Text)
+piSelectionPattern = lens _piSelectionPattern (\ s a -> s{_piSelectionPattern = a});
+
+-- | Represents response parameters that can be read from the backend
+-- response. Response parameters are represented as a key\/value map, with
+-- a destination as the key and a source as the value. A destination must
+-- match an existing response parameter in the Method. The source can be a
+-- header from the backend response, or a static value. Static values are
+-- specified using enclosing single quotes, and backend response headers
+-- can be read using the pattern 'integration.response.header.{name}'.
+piResponseParameters :: Lens' PutIntegrationResponse (HashMap Text Text)
+piResponseParameters = lens _piResponseParameters (\ s a -> s{_piResponseParameters = a}) . _Default . _Map;
+
+-- | Specifies a put integration response request\'s API identifier.
+piRestAPIId :: Lens' PutIntegrationResponse Text
+piRestAPIId = lens _piRestAPIId (\ s a -> s{_piRestAPIId = a});
+
+-- | Specifies a put integration response request\'s resource identifier.
+piResourceId :: Lens' PutIntegrationResponse Text
+piResourceId = lens _piResourceId (\ s a -> s{_piResourceId = a});
+
+-- | Specifies a put integration response request\'s HTTP method.
+piHttpMethod :: Lens' PutIntegrationResponse Text
+piHttpMethod = lens _piHttpMethod (\ s a -> s{_piHttpMethod = a});
+
+-- | Specifies the status code that is used to map the integration response
+-- to an existing MethodResponse.
+piStatusCode :: Lens' PutIntegrationResponse Text
+piStatusCode = lens _piStatusCode (\ s a -> s{_piStatusCode = a});
+
+instance AWSRequest PutIntegrationResponse where
+        type Rs PutIntegrationResponse = IntegrationResponse
+        request = putJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders PutIntegrationResponse where
+        toHeaders = const mempty
+
+instance ToJSON PutIntegrationResponse where
+        toJSON PutIntegrationResponse'{..}
+          = object
+              (catMaybes
+                 [("responseTemplates" .=) <$> _piResponseTemplates,
+                  ("selectionPattern" .=) <$> _piSelectionPattern,
+                  ("responseParameters" .=) <$> _piResponseParameters])
+
+instance ToPath PutIntegrationResponse where
+        toPath PutIntegrationResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _piRestAPIId, "/resources/",
+               toBS _piResourceId, "/methods/", toBS _piHttpMethod,
+               "/integration/responses/", toBS _piStatusCode]
+
+instance ToQuery PutIntegrationResponse where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/PutMethod.hs b/gen/Network/AWS/APIGateway/PutMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/PutMethod.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.PutMethod
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Add a method to an existing Resource resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/PutMethod.html AWS API Reference> for PutMethod.
+module Network.AWS.APIGateway.PutMethod
+    (
+    -- * Creating a Request
+      putMethod
+    , PutMethod
+    -- * Request Lenses
+    , putRequestModels
+    , putRequestParameters
+    , putApiKeyRequired
+    , putRestAPIId
+    , putResourceId
+    , putHttpMethod
+    , putAuthorizationType
+
+    -- * Destructuring the Response
+    , method
+    , Method
+    -- * Response Lenses
+    , mMethodResponses
+    , mHttpMethod
+    , mRequestModels
+    , mRequestParameters
+    , mAuthorizationType
+    , mApiKeyRequired
+    , mMethodIntegration
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to add a method to an existing Resource resource.
+--
+-- /See:/ 'putMethod' smart constructor.
+data PutMethod = PutMethod'
+    { _putRequestModels     :: !(Maybe (Map Text Text))
+    , _putRequestParameters :: !(Maybe (Map Text Bool))
+    , _putApiKeyRequired    :: !(Maybe Bool)
+    , _putRestAPIId         :: !Text
+    , _putResourceId        :: !Text
+    , _putHttpMethod        :: !Text
+    , _putAuthorizationType :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutMethod' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'putRequestModels'
+--
+-- * 'putRequestParameters'
+--
+-- * 'putApiKeyRequired'
+--
+-- * 'putRestAPIId'
+--
+-- * 'putResourceId'
+--
+-- * 'putHttpMethod'
+--
+-- * 'putAuthorizationType'
+putMethod
+    :: Text -- ^ 'putRestAPIId'
+    -> Text -- ^ 'putResourceId'
+    -> Text -- ^ 'putHttpMethod'
+    -> Text -- ^ 'putAuthorizationType'
+    -> PutMethod
+putMethod pRestAPIId_ pResourceId_ pHttpMethod_ pAuthorizationType_ =
+    PutMethod'
+    { _putRequestModels = Nothing
+    , _putRequestParameters = Nothing
+    , _putApiKeyRequired = Nothing
+    , _putRestAPIId = pRestAPIId_
+    , _putResourceId = pResourceId_
+    , _putHttpMethod = pHttpMethod_
+    , _putAuthorizationType = pAuthorizationType_
+    }
+
+-- | Specifies the Model resources used for the request\'s content type.
+-- Request models are represented as a key\/value map, with a content type
+-- as the key and a Model name as the value.
+putRequestModels :: Lens' PutMethod (HashMap Text Text)
+putRequestModels = lens _putRequestModels (\ s a -> s{_putRequestModels = a}) . _Default . _Map;
+
+-- | Represents requests parameters that are sent with the backend request.
+-- Request parameters are represented as a key\/value map, with a
+-- destination as the key and a source as the value. A source must match an
+-- existing method request parameter, or a static value. Static values must
+-- be enclosed with single quotes, and be pre-encoded based on their
+-- destination in the request. The destination must match the pattern
+-- 'integration.request.{location}.{name}', where 'location' is either
+-- querystring, path, or header. 'name' must be a valid, unique parameter
+-- name.
+putRequestParameters :: Lens' PutMethod (HashMap Text Bool)
+putRequestParameters = lens _putRequestParameters (\ s a -> s{_putRequestParameters = a}) . _Default . _Map;
+
+-- | Specifies whether the method required a valid ApiKey.
+putApiKeyRequired :: Lens' PutMethod (Maybe Bool)
+putApiKeyRequired = lens _putApiKeyRequired (\ s a -> s{_putApiKeyRequired = a});
+
+-- | The RestApi identifier for the new Method resource.
+putRestAPIId :: Lens' PutMethod Text
+putRestAPIId = lens _putRestAPIId (\ s a -> s{_putRestAPIId = a});
+
+-- | The Resource identifier for the new Method resource.
+putResourceId :: Lens' PutMethod Text
+putResourceId = lens _putResourceId (\ s a -> s{_putResourceId = a});
+
+-- | Specifies the put method request\'s HTTP method type.
+putHttpMethod :: Lens' PutMethod Text
+putHttpMethod = lens _putHttpMethod (\ s a -> s{_putHttpMethod = a});
+
+-- | Specifies the type of authorization used for the method.
+putAuthorizationType :: Lens' PutMethod Text
+putAuthorizationType = lens _putAuthorizationType (\ s a -> s{_putAuthorizationType = a});
+
+instance AWSRequest PutMethod where
+        type Rs PutMethod = Method
+        request = putJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders PutMethod where
+        toHeaders = const mempty
+
+instance ToJSON PutMethod where
+        toJSON PutMethod'{..}
+          = object
+              (catMaybes
+                 [("requestModels" .=) <$> _putRequestModels,
+                  ("requestParameters" .=) <$> _putRequestParameters,
+                  ("apiKeyRequired" .=) <$> _putApiKeyRequired,
+                  Just ("authorizationType" .= _putAuthorizationType)])
+
+instance ToPath PutMethod where
+        toPath PutMethod'{..}
+          = mconcat
+              ["/restapis/", toBS _putRestAPIId, "/resources/",
+               toBS _putResourceId, "/methods/",
+               toBS _putHttpMethod]
+
+instance ToQuery PutMethod where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/PutMethodResponse.hs b/gen/Network/AWS/APIGateway/PutMethodResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/PutMethodResponse.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.PutMethodResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a MethodResponse to an existing Method resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/PutMethodResponse.html AWS API Reference> for PutMethodResponse.
+module Network.AWS.APIGateway.PutMethodResponse
+    (
+    -- * Creating a Request
+      putMethodResponse
+    , PutMethodResponse
+    -- * Request Lenses
+    , pmResponseModels
+    , pmResponseParameters
+    , pmRestAPIId
+    , pmResourceId
+    , pmHttpMethod
+    , pmStatusCode
+
+    -- * Destructuring the Response
+    , methodResponse
+    , MethodResponse
+    -- * Response Lenses
+    , mResponseModels
+    , mStatusCode
+    , mResponseParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to add a MethodResponse to an existing Method resource.
+--
+-- /See:/ 'putMethodResponse' smart constructor.
+data PutMethodResponse = PutMethodResponse'
+    { _pmResponseModels     :: !(Maybe (Map Text Text))
+    , _pmResponseParameters :: !(Maybe (Map Text Bool))
+    , _pmRestAPIId          :: !Text
+    , _pmResourceId         :: !Text
+    , _pmHttpMethod         :: !Text
+    , _pmStatusCode         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutMethodResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmResponseModels'
+--
+-- * 'pmResponseParameters'
+--
+-- * 'pmRestAPIId'
+--
+-- * 'pmResourceId'
+--
+-- * 'pmHttpMethod'
+--
+-- * 'pmStatusCode'
+putMethodResponse
+    :: Text -- ^ 'pmRestAPIId'
+    -> Text -- ^ 'pmResourceId'
+    -> Text -- ^ 'pmHttpMethod'
+    -> Text -- ^ 'pmStatusCode'
+    -> PutMethodResponse
+putMethodResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    PutMethodResponse'
+    { _pmResponseModels = Nothing
+    , _pmResponseParameters = Nothing
+    , _pmRestAPIId = pRestAPIId_
+    , _pmResourceId = pResourceId_
+    , _pmHttpMethod = pHttpMethod_
+    , _pmStatusCode = pStatusCode_
+    }
+
+-- | Specifies the Model resources used for the response\'s content type.
+-- Response models are represented as a key\/value map, with a content type
+-- as the key and a Model name as the value.
+pmResponseModels :: Lens' PutMethodResponse (HashMap Text Text)
+pmResponseModels = lens _pmResponseModels (\ s a -> s{_pmResponseModels = a}) . _Default . _Map;
+
+-- | Represents response parameters that can be sent back to the caller by
+-- Amazon API Gateway. Response parameters are represented as a key\/value
+-- map, with a destination as the key and a Boolean flag as the value. The
+-- Boolean flag is used to specify whether the parameter is required. A
+-- destination must match the pattern 'method.response.header.{name}',
+-- where 'name' is a valid, unique header name. Destinations specified here
+-- are available to the integration for mapping from integration response
+-- parameters.
+pmResponseParameters :: Lens' PutMethodResponse (HashMap Text Bool)
+pmResponseParameters = lens _pmResponseParameters (\ s a -> s{_pmResponseParameters = a}) . _Default . _Map;
+
+-- | The RestApi identifier for the Method resource.
+pmRestAPIId :: Lens' PutMethodResponse Text
+pmRestAPIId = lens _pmRestAPIId (\ s a -> s{_pmRestAPIId = a});
+
+-- | The Resource identifier for the Method resource.
+pmResourceId :: Lens' PutMethodResponse Text
+pmResourceId = lens _pmResourceId (\ s a -> s{_pmResourceId = a});
+
+-- | The HTTP verb that identifies the Method resource.
+pmHttpMethod :: Lens' PutMethodResponse Text
+pmHttpMethod = lens _pmHttpMethod (\ s a -> s{_pmHttpMethod = a});
+
+-- | The method response\'s status code.
+pmStatusCode :: Lens' PutMethodResponse Text
+pmStatusCode = lens _pmStatusCode (\ s a -> s{_pmStatusCode = a});
+
+instance AWSRequest PutMethodResponse where
+        type Rs PutMethodResponse = MethodResponse
+        request = putJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders PutMethodResponse where
+        toHeaders = const mempty
+
+instance ToJSON PutMethodResponse where
+        toJSON PutMethodResponse'{..}
+          = object
+              (catMaybes
+                 [("responseModels" .=) <$> _pmResponseModels,
+                  ("responseParameters" .=) <$> _pmResponseParameters])
+
+instance ToPath PutMethodResponse where
+        toPath PutMethodResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _pmRestAPIId, "/resources/",
+               toBS _pmResourceId, "/methods/", toBS _pmHttpMethod,
+               "/responses/", toBS _pmStatusCode]
+
+instance ToQuery PutMethodResponse where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/TestInvokeMethod.hs b/gen/Network/AWS/APIGateway/TestInvokeMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/TestInvokeMethod.hs
@@ -0,0 +1,226 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.TestInvokeMethod
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/TestInvokeMethod.html AWS API Reference> for TestInvokeMethod.
+module Network.AWS.APIGateway.TestInvokeMethod
+    (
+    -- * Creating a Request
+      testInvokeMethod
+    , TestInvokeMethod
+    -- * Request Lenses
+    , timPathWithQueryString
+    , timBody
+    , timClientCertificateId
+    , timHeaders
+    , timRestAPIId
+    , timResourceId
+    , timHttpMethod
+
+    -- * Destructuring the Response
+    , testInvokeMethodResponse
+    , TestInvokeMethodResponse
+    -- * Response Lenses
+    , timrsLog
+    , timrsStatus
+    , timrsBody
+    , timrsLatency
+    , timrsHeaders
+    , timrsResponseStatus
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'testInvokeMethod' smart constructor.
+data TestInvokeMethod = TestInvokeMethod'
+    { _timPathWithQueryString :: !(Maybe Text)
+    , _timBody                :: !(Maybe Text)
+    , _timClientCertificateId :: !(Maybe Text)
+    , _timHeaders             :: !(Maybe (Map Text Text))
+    , _timRestAPIId           :: !Text
+    , _timResourceId          :: !Text
+    , _timHttpMethod          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestInvokeMethod' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'timPathWithQueryString'
+--
+-- * 'timBody'
+--
+-- * 'timClientCertificateId'
+--
+-- * 'timHeaders'
+--
+-- * 'timRestAPIId'
+--
+-- * 'timResourceId'
+--
+-- * 'timHttpMethod'
+testInvokeMethod
+    :: Text -- ^ 'timRestAPIId'
+    -> Text -- ^ 'timResourceId'
+    -> Text -- ^ 'timHttpMethod'
+    -> TestInvokeMethod
+testInvokeMethod pRestAPIId_ pResourceId_ pHttpMethod_ =
+    TestInvokeMethod'
+    { _timPathWithQueryString = Nothing
+    , _timBody = Nothing
+    , _timClientCertificateId = Nothing
+    , _timHeaders = Nothing
+    , _timRestAPIId = pRestAPIId_
+    , _timResourceId = pResourceId_
+    , _timHttpMethod = pHttpMethod_
+    }
+
+-- | Undocumented member.
+timPathWithQueryString :: Lens' TestInvokeMethod (Maybe Text)
+timPathWithQueryString = lens _timPathWithQueryString (\ s a -> s{_timPathWithQueryString = a});
+
+-- | Undocumented member.
+timBody :: Lens' TestInvokeMethod (Maybe Text)
+timBody = lens _timBody (\ s a -> s{_timBody = a});
+
+-- | Undocumented member.
+timClientCertificateId :: Lens' TestInvokeMethod (Maybe Text)
+timClientCertificateId = lens _timClientCertificateId (\ s a -> s{_timClientCertificateId = a});
+
+-- | Undocumented member.
+timHeaders :: Lens' TestInvokeMethod (HashMap Text Text)
+timHeaders = lens _timHeaders (\ s a -> s{_timHeaders = a}) . _Default . _Map;
+
+-- | Undocumented member.
+timRestAPIId :: Lens' TestInvokeMethod Text
+timRestAPIId = lens _timRestAPIId (\ s a -> s{_timRestAPIId = a});
+
+-- | Undocumented member.
+timResourceId :: Lens' TestInvokeMethod Text
+timResourceId = lens _timResourceId (\ s a -> s{_timResourceId = a});
+
+-- | Undocumented member.
+timHttpMethod :: Lens' TestInvokeMethod Text
+timHttpMethod = lens _timHttpMethod (\ s a -> s{_timHttpMethod = a});
+
+instance AWSRequest TestInvokeMethod where
+        type Rs TestInvokeMethod = TestInvokeMethodResponse
+        request = postJSON aPIGateway
+        response
+          = receiveJSON
+              (\ s h x ->
+                 TestInvokeMethodResponse' <$>
+                   (x .?> "log") <*> (x .?> "status") <*> (x .?> "body")
+                     <*> (x .?> "latency")
+                     <*> (x .?> "headers" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders TestInvokeMethod where
+        toHeaders = const mempty
+
+instance ToJSON TestInvokeMethod where
+        toJSON TestInvokeMethod'{..}
+          = object
+              (catMaybes
+                 [("pathWithQueryString" .=) <$>
+                    _timPathWithQueryString,
+                  ("body" .=) <$> _timBody,
+                  ("clientCertificateId" .=) <$>
+                    _timClientCertificateId,
+                  ("headers" .=) <$> _timHeaders])
+
+instance ToPath TestInvokeMethod where
+        toPath TestInvokeMethod'{..}
+          = mconcat
+              ["/restapis/", toBS _timRestAPIId, "/resources/",
+               toBS _timResourceId, "/methods/",
+               toBS _timHttpMethod]
+
+instance ToQuery TestInvokeMethod where
+        toQuery = const mempty
+
+-- | Represents the response of the test invoke request in HTTP method.
+--
+-- /See:/ 'testInvokeMethodResponse' smart constructor.
+data TestInvokeMethodResponse = TestInvokeMethodResponse'
+    { _timrsLog            :: !(Maybe Text)
+    , _timrsStatus         :: !(Maybe Int)
+    , _timrsBody           :: !(Maybe Text)
+    , _timrsLatency        :: !(Maybe Integer)
+    , _timrsHeaders        :: !(Maybe (Map Text Text))
+    , _timrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestInvokeMethodResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'timrsLog'
+--
+-- * 'timrsStatus'
+--
+-- * 'timrsBody'
+--
+-- * 'timrsLatency'
+--
+-- * 'timrsHeaders'
+--
+-- * 'timrsResponseStatus'
+testInvokeMethodResponse
+    :: Int -- ^ 'timrsResponseStatus'
+    -> TestInvokeMethodResponse
+testInvokeMethodResponse pResponseStatus_ =
+    TestInvokeMethodResponse'
+    { _timrsLog = Nothing
+    , _timrsStatus = Nothing
+    , _timrsBody = Nothing
+    , _timrsLatency = Nothing
+    , _timrsHeaders = Nothing
+    , _timrsResponseStatus = pResponseStatus_
+    }
+
+-- | The Amazon API Gateway execution log for the test invoke request.
+timrsLog :: Lens' TestInvokeMethodResponse (Maybe Text)
+timrsLog = lens _timrsLog (\ s a -> s{_timrsLog = a});
+
+-- | The HTTP status code.
+timrsStatus :: Lens' TestInvokeMethodResponse (Maybe Int)
+timrsStatus = lens _timrsStatus (\ s a -> s{_timrsStatus = a});
+
+-- | The body of HTTP response.
+timrsBody :: Lens' TestInvokeMethodResponse (Maybe Text)
+timrsBody = lens _timrsBody (\ s a -> s{_timrsBody = a});
+
+-- | The execution latency of the test invoke request.
+timrsLatency :: Lens' TestInvokeMethodResponse (Maybe Integer)
+timrsLatency = lens _timrsLatency (\ s a -> s{_timrsLatency = a});
+
+-- | The headers of HTTP response.
+timrsHeaders :: Lens' TestInvokeMethodResponse (HashMap Text Text)
+timrsHeaders = lens _timrsHeaders (\ s a -> s{_timrsHeaders = a}) . _Default . _Map;
+
+-- | The response status code.
+timrsResponseStatus :: Lens' TestInvokeMethodResponse Int
+timrsResponseStatus = lens _timrsResponseStatus (\ s a -> s{_timrsResponseStatus = a});
diff --git a/gen/Network/AWS/APIGateway/Types.hs b/gen/Network/AWS/APIGateway/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/Types.hs
@@ -0,0 +1,275 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.Types
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.APIGateway.Types
+    (
+    -- * Service Configuration
+      aPIGateway
+
+    -- * Errors
+    , _ConflictException
+    , _NotFoundException
+    , _TooManyRequestsException
+    , _ServiceUnavailableException
+    , _UnauthorizedException
+    , _BadRequestException
+    , _LimitExceededException
+
+    -- * CacheClusterSize
+    , CacheClusterSize (..)
+
+    -- * CacheClusterStatus
+    , CacheClusterStatus (..)
+
+    -- * IntegrationType
+    , IntegrationType (..)
+
+    -- * Op
+    , Op (..)
+
+    -- * APIKey
+    , APIKey
+    , apiKey
+    , akEnabled
+    , akCreatedDate
+    , akName
+    , akId
+    , akStageKeys
+    , akLastUpdatedDate
+    , akDescription
+
+    -- * Account
+    , Account
+    , account
+    , aCloudwatchRoleARN
+    , aThrottleSettings
+
+    -- * BasePathMapping
+    , BasePathMapping
+    , basePathMapping
+    , bpmStage
+    , bpmBasePath
+    , bpmRestAPIId
+
+    -- * ClientCertificate
+    , ClientCertificate
+    , clientCertificate
+    , ccPemEncodedCertificate
+    , ccClientCertificateId
+    , ccCreatedDate
+    , ccExpirationDate
+    , ccDescription
+
+    -- * Deployment
+    , Deployment
+    , deployment
+    , dApiSummary
+    , dCreatedDate
+    , dId
+    , dDescription
+
+    -- * DomainName
+    , DomainName
+    , domainName
+    , dnCertificateName
+    , dnDomainName
+    , dnCertificateUploadDate
+    , dnDistributionDomainName
+
+    -- * Integration
+    , Integration
+    , integration
+    , iHttpMethod
+    , iRequestTemplates
+    , iCredentials
+    , iRequestParameters
+    , iUri
+    , iIntegrationResponses
+    , iCacheNamespace
+    , iType
+    , iCacheKeyParameters
+
+    -- * IntegrationResponse
+    , IntegrationResponse
+    , integrationResponse
+    , iResponseTemplates
+    , iSelectionPattern
+    , iStatusCode
+    , iResponseParameters
+
+    -- * Method
+    , Method
+    , method
+    , mMethodResponses
+    , mHttpMethod
+    , mRequestModels
+    , mRequestParameters
+    , mAuthorizationType
+    , mApiKeyRequired
+    , mMethodIntegration
+
+    -- * MethodResponse
+    , MethodResponse
+    , methodResponse
+    , mResponseModels
+    , mStatusCode
+    , mResponseParameters
+
+    -- * MethodSetting
+    , MethodSetting
+    , methodSetting
+    , msCacheTtlInSeconds
+    , msDataTraceEnabled
+    , msThrottlingBurstLimit
+    , msCacheDataEncrypted
+    , msLoggingLevel
+    , msCachingEnabled
+    , msMetricsEnabled
+    , msThrottlingRateLimit
+
+    -- * MethodSnapshot
+    , MethodSnapshot
+    , methodSnapshot
+    , msAuthorizationType
+    , msApiKeyRequired
+
+    -- * Model
+    , Model
+    , model
+    , mSchema
+    , mName
+    , mId
+    , mDescription
+    , mContentType
+
+    -- * PatchOperation
+    , PatchOperation
+    , patchOperation
+    , poOp
+    , poPath
+    , poValue
+    , poFrom
+
+    -- * Resource
+    , Resource
+    , resource
+    , rPathPart
+    , rPath
+    , rId
+    , rResourceMethods
+    , rParentId
+
+    -- * RestAPI
+    , RestAPI
+    , restAPI
+    , raCreatedDate
+    , raName
+    , raId
+    , raDescription
+
+    -- * Stage
+    , Stage
+    , stage
+    , sDeploymentId
+    , sClientCertificateId
+    , sCreatedDate
+    , sCacheClusterStatus
+    , sMethodSettings
+    , sLastUpdatedDate
+    , sCacheClusterSize
+    , sCacheClusterEnabled
+    , sStageName
+    , sDescription
+
+    -- * StageKey
+    , StageKey
+    , stageKey
+    , skRestAPIId
+    , skStageName
+
+    -- * ThrottleSettings
+    , ThrottleSettings
+    , throttleSettings
+    , tsBurstLimit
+    , tsRateLimit
+    ) where
+
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.APIGateway.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+
+-- | API version '2015-07-09' of the Amazon API Gateway SDK configuration.
+aPIGateway :: Service
+aPIGateway =
+    Service
+    { _svcAbbrev = "APIGateway"
+    , _svcSigner = v4
+    , _svcPrefix = "apigateway"
+    , _svcVersion = "2015-07-09"
+    , _svcEndpoint = defaultEndpoint aPIGateway
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseJSONError
+    , _svcRetry = retry
+    }
+  where
+    retry =
+        Exponential
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
+    check e
+      | has (hasCode "ThrottlingException" . hasStatus 400) e =
+          Just "throttling_exception"
+      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 503) e = Just "service_unavailable"
+      | has (hasStatus 500) e = Just "general_server_error"
+      | has (hasStatus 509) e = Just "limit_exceeded"
+      | otherwise = Nothing
+
+-- | Prism for ConflictException' errors.
+_ConflictException :: AsError a => Getting (First ServiceError) a ServiceError
+_ConflictException =
+    _ServiceError . hasStatus 409 . hasCode "ConflictException"
+
+-- | Prism for NotFoundException' errors.
+_NotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_NotFoundException =
+    _ServiceError . hasStatus 404 . hasCode "NotFoundException"
+
+-- | Prism for TooManyRequestsException' errors.
+_TooManyRequestsException :: AsError a => Getting (First ServiceError) a ServiceError
+_TooManyRequestsException =
+    _ServiceError . hasStatus 429 . hasCode "TooManyRequestsException"
+
+-- | Prism for ServiceUnavailableException' errors.
+_ServiceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError
+_ServiceUnavailableException =
+    _ServiceError . hasStatus 503 . hasCode "ServiceUnavailableException"
+
+-- | Prism for UnauthorizedException' errors.
+_UnauthorizedException :: AsError a => Getting (First ServiceError) a ServiceError
+_UnauthorizedException =
+    _ServiceError . hasStatus 401 . hasCode "UnauthorizedException"
+
+-- | Prism for BadRequestException' errors.
+_BadRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+_BadRequestException =
+    _ServiceError . hasStatus 400 . hasCode "BadRequestException"
+
+-- | Prism for LimitExceededException' errors.
+_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_LimitExceededException =
+    _ServiceError . hasStatus 429 . hasCode "LimitExceededException"
diff --git a/gen/Network/AWS/APIGateway/Types/Product.hs b/gen/Network/AWS/APIGateway/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/Types/Product.hs
@@ -0,0 +1,1336 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.Types.Product
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.APIGateway.Types.Product where
+
+import           Network.AWS.APIGateway.Types.Sum
+import           Network.AWS.Prelude
+
+-- | A resource that can be distributed to callers for executing Method
+-- resources that require an API key. API keys can be mapped to any Stage
+-- on any RestApi, which indicates that the callers with the API key can
+-- make requests to that stage.
+--
+-- /See:/ 'apiKey' smart constructor.
+data APIKey = APIKey'
+    { _akEnabled         :: !(Maybe Bool)
+    , _akCreatedDate     :: !(Maybe POSIX)
+    , _akName            :: !(Maybe Text)
+    , _akId              :: !(Maybe Text)
+    , _akStageKeys       :: !(Maybe [Text])
+    , _akLastUpdatedDate :: !(Maybe POSIX)
+    , _akDescription     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'APIKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'akEnabled'
+--
+-- * 'akCreatedDate'
+--
+-- * 'akName'
+--
+-- * 'akId'
+--
+-- * 'akStageKeys'
+--
+-- * 'akLastUpdatedDate'
+--
+-- * 'akDescription'
+apiKey
+    :: APIKey
+apiKey =
+    APIKey'
+    { _akEnabled = Nothing
+    , _akCreatedDate = Nothing
+    , _akName = Nothing
+    , _akId = Nothing
+    , _akStageKeys = Nothing
+    , _akLastUpdatedDate = Nothing
+    , _akDescription = Nothing
+    }
+
+-- | Specifies whether the API Key can be used by callers.
+akEnabled :: Lens' APIKey (Maybe Bool)
+akEnabled = lens _akEnabled (\ s a -> s{_akEnabled = a});
+
+-- | The date when the API Key was created, in
+-- <http://www.iso.org/iso/home/standards/iso8601.htm ISO 8601 format>.
+akCreatedDate :: Lens' APIKey (Maybe UTCTime)
+akCreatedDate = lens _akCreatedDate (\ s a -> s{_akCreatedDate = a}) . mapping _Time;
+
+-- | The name of the API Key.
+akName :: Lens' APIKey (Maybe Text)
+akName = lens _akName (\ s a -> s{_akName = a});
+
+-- | The identifier of the API Key.
+akId :: Lens' APIKey (Maybe Text)
+akId = lens _akId (\ s a -> s{_akId = a});
+
+-- | A list of Stage resources that are associated with the ApiKey resource.
+akStageKeys :: Lens' APIKey [Text]
+akStageKeys = lens _akStageKeys (\ s a -> s{_akStageKeys = a}) . _Default . _Coerce;
+
+-- | When the API Key was last updated, in ISO 8601 format.
+akLastUpdatedDate :: Lens' APIKey (Maybe UTCTime)
+akLastUpdatedDate = lens _akLastUpdatedDate (\ s a -> s{_akLastUpdatedDate = a}) . mapping _Time;
+
+-- | The description of the API Key.
+akDescription :: Lens' APIKey (Maybe Text)
+akDescription = lens _akDescription (\ s a -> s{_akDescription = a});
+
+instance FromJSON APIKey where
+        parseJSON
+          = withObject "APIKey"
+              (\ x ->
+                 APIKey' <$>
+                   (x .:? "enabled") <*> (x .:? "createdDate") <*>
+                     (x .:? "name")
+                     <*> (x .:? "id")
+                     <*> (x .:? "stageKeys" .!= mempty)
+                     <*> (x .:? "lastUpdatedDate")
+                     <*> (x .:? "description"))
+
+-- | Represents an AWS account that is associated with Amazon API Gateway.
+--
+-- /See:/ 'account' smart constructor.
+data Account = Account'
+    { _aCloudwatchRoleARN :: !(Maybe Text)
+    , _aThrottleSettings  :: !(Maybe ThrottleSettings)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Account' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aCloudwatchRoleARN'
+--
+-- * 'aThrottleSettings'
+account
+    :: Account
+account =
+    Account'
+    { _aCloudwatchRoleARN = Nothing
+    , _aThrottleSettings = Nothing
+    }
+
+-- | Specifies the Amazon resource name (ARN) of an Amazon CloudWatch role
+-- for the current Account resource.
+aCloudwatchRoleARN :: Lens' Account (Maybe Text)
+aCloudwatchRoleARN = lens _aCloudwatchRoleARN (\ s a -> s{_aCloudwatchRoleARN = a});
+
+-- | Specifies the application programming interface (API) throttle settings
+-- for the current Account resource.
+aThrottleSettings :: Lens' Account (Maybe ThrottleSettings)
+aThrottleSettings = lens _aThrottleSettings (\ s a -> s{_aThrottleSettings = a});
+
+instance FromJSON Account where
+        parseJSON
+          = withObject "Account"
+              (\ x ->
+                 Account' <$>
+                   (x .:? "cloudwatchRoleArn") <*>
+                     (x .:? "throttleSettings"))
+
+-- | Represents the base path that callers of the API that must provide as
+-- part of the URL after the domain name.
+--
+-- /See:/ 'basePathMapping' smart constructor.
+data BasePathMapping = BasePathMapping'
+    { _bpmStage     :: !(Maybe Text)
+    , _bpmBasePath  :: !(Maybe Text)
+    , _bpmRestAPIId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BasePathMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bpmStage'
+--
+-- * 'bpmBasePath'
+--
+-- * 'bpmRestAPIId'
+basePathMapping
+    :: BasePathMapping
+basePathMapping =
+    BasePathMapping'
+    { _bpmStage = Nothing
+    , _bpmBasePath = Nothing
+    , _bpmRestAPIId = Nothing
+    }
+
+-- | The name of the API\'s stage.
+bpmStage :: Lens' BasePathMapping (Maybe Text)
+bpmStage = lens _bpmStage (\ s a -> s{_bpmStage = a});
+
+-- | The base path name that callers of the API must provide as part of the
+-- URL after the domain name.
+bpmBasePath :: Lens' BasePathMapping (Maybe Text)
+bpmBasePath = lens _bpmBasePath (\ s a -> s{_bpmBasePath = a});
+
+-- | The name of the API.
+bpmRestAPIId :: Lens' BasePathMapping (Maybe Text)
+bpmRestAPIId = lens _bpmRestAPIId (\ s a -> s{_bpmRestAPIId = a});
+
+instance FromJSON BasePathMapping where
+        parseJSON
+          = withObject "BasePathMapping"
+              (\ x ->
+                 BasePathMapping' <$>
+                   (x .:? "stage") <*> (x .:? "basePath") <*>
+                     (x .:? "restApiId"))
+
+-- | /See:/ 'clientCertificate' smart constructor.
+data ClientCertificate = ClientCertificate'
+    { _ccPemEncodedCertificate :: !(Maybe Text)
+    , _ccClientCertificateId   :: !(Maybe Text)
+    , _ccCreatedDate           :: !(Maybe POSIX)
+    , _ccExpirationDate        :: !(Maybe POSIX)
+    , _ccDescription           :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ClientCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccPemEncodedCertificate'
+--
+-- * 'ccClientCertificateId'
+--
+-- * 'ccCreatedDate'
+--
+-- * 'ccExpirationDate'
+--
+-- * 'ccDescription'
+clientCertificate
+    :: ClientCertificate
+clientCertificate =
+    ClientCertificate'
+    { _ccPemEncodedCertificate = Nothing
+    , _ccClientCertificateId = Nothing
+    , _ccCreatedDate = Nothing
+    , _ccExpirationDate = Nothing
+    , _ccDescription = Nothing
+    }
+
+-- | Undocumented member.
+ccPemEncodedCertificate :: Lens' ClientCertificate (Maybe Text)
+ccPemEncodedCertificate = lens _ccPemEncodedCertificate (\ s a -> s{_ccPemEncodedCertificate = a});
+
+-- | Undocumented member.
+ccClientCertificateId :: Lens' ClientCertificate (Maybe Text)
+ccClientCertificateId = lens _ccClientCertificateId (\ s a -> s{_ccClientCertificateId = a});
+
+-- | Undocumented member.
+ccCreatedDate :: Lens' ClientCertificate (Maybe UTCTime)
+ccCreatedDate = lens _ccCreatedDate (\ s a -> s{_ccCreatedDate = a}) . mapping _Time;
+
+-- | Undocumented member.
+ccExpirationDate :: Lens' ClientCertificate (Maybe UTCTime)
+ccExpirationDate = lens _ccExpirationDate (\ s a -> s{_ccExpirationDate = a}) . mapping _Time;
+
+-- | Undocumented member.
+ccDescription :: Lens' ClientCertificate (Maybe Text)
+ccDescription = lens _ccDescription (\ s a -> s{_ccDescription = a});
+
+instance FromJSON ClientCertificate where
+        parseJSON
+          = withObject "ClientCertificate"
+              (\ x ->
+                 ClientCertificate' <$>
+                   (x .:? "pemEncodedCertificate") <*>
+                     (x .:? "clientCertificateId")
+                     <*> (x .:? "createdDate")
+                     <*> (x .:? "expirationDate")
+                     <*> (x .:? "description"))
+
+-- | An immutable representation of a RestApi resource that can be called by
+-- users using Stages. A deployment must be associated with a Stage for it
+-- to be callable over the Internet.
+--
+-- /See:/ 'deployment' smart constructor.
+data Deployment = Deployment'
+    { _dApiSummary  :: !(Maybe (Map Text (Map Text MethodSnapshot)))
+    , _dCreatedDate :: !(Maybe POSIX)
+    , _dId          :: !(Maybe Text)
+    , _dDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Deployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dApiSummary'
+--
+-- * 'dCreatedDate'
+--
+-- * 'dId'
+--
+-- * 'dDescription'
+deployment
+    :: Deployment
+deployment =
+    Deployment'
+    { _dApiSummary = Nothing
+    , _dCreatedDate = Nothing
+    , _dId = Nothing
+    , _dDescription = Nothing
+    }
+
+-- | Gets a summary of the RestApi at the date and time that the deployment
+-- resource was created.
+dApiSummary :: Lens' Deployment (HashMap Text (HashMap Text MethodSnapshot))
+dApiSummary = lens _dApiSummary (\ s a -> s{_dApiSummary = a}) . _Default . _Map;
+
+-- | The date and time that the deployment resource was created.
+dCreatedDate :: Lens' Deployment (Maybe UTCTime)
+dCreatedDate = lens _dCreatedDate (\ s a -> s{_dCreatedDate = a}) . mapping _Time;
+
+-- | The identifier for the deployment resource.
+dId :: Lens' Deployment (Maybe Text)
+dId = lens _dId (\ s a -> s{_dId = a});
+
+-- | The description for the deployment resource.
+dDescription :: Lens' Deployment (Maybe Text)
+dDescription = lens _dDescription (\ s a -> s{_dDescription = a});
+
+instance FromJSON Deployment where
+        parseJSON
+          = withObject "Deployment"
+              (\ x ->
+                 Deployment' <$>
+                   (x .:? "apiSummary" .!= mempty) <*>
+                     (x .:? "createdDate")
+                     <*> (x .:? "id")
+                     <*> (x .:? "description"))
+
+-- | Represents a domain name that is contained in a simpler, more intuitive
+-- URL that can be called.
+--
+-- /See:/ 'domainName' smart constructor.
+data DomainName = DomainName'
+    { _dnCertificateName        :: !(Maybe Text)
+    , _dnDomainName             :: !(Maybe Text)
+    , _dnCertificateUploadDate  :: !(Maybe POSIX)
+    , _dnDistributionDomainName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DomainName' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dnCertificateName'
+--
+-- * 'dnDomainName'
+--
+-- * 'dnCertificateUploadDate'
+--
+-- * 'dnDistributionDomainName'
+domainName
+    :: DomainName
+domainName =
+    DomainName'
+    { _dnCertificateName = Nothing
+    , _dnDomainName = Nothing
+    , _dnCertificateUploadDate = Nothing
+    , _dnDistributionDomainName = Nothing
+    }
+
+-- | The name of the certificate.
+dnCertificateName :: Lens' DomainName (Maybe Text)
+dnCertificateName = lens _dnCertificateName (\ s a -> s{_dnCertificateName = a});
+
+-- | The name of the DomainName resource.
+dnDomainName :: Lens' DomainName (Maybe Text)
+dnDomainName = lens _dnDomainName (\ s a -> s{_dnDomainName = a});
+
+-- | The date when the certificate was uploaded, in
+-- <http://www.iso.org/iso/home/standards/iso8601.htm ISO 8601 format>.
+dnCertificateUploadDate :: Lens' DomainName (Maybe UTCTime)
+dnCertificateUploadDate = lens _dnCertificateUploadDate (\ s a -> s{_dnCertificateUploadDate = a}) . mapping _Time;
+
+-- | The domain name of the Amazon CloudFront distribution. For more
+-- information, see the
+-- <http://aws.amazon.com/documentation/cloudfront/ Amazon CloudFront documentation>.
+dnDistributionDomainName :: Lens' DomainName (Maybe Text)
+dnDistributionDomainName = lens _dnDistributionDomainName (\ s a -> s{_dnDistributionDomainName = a});
+
+instance FromJSON DomainName where
+        parseJSON
+          = withObject "DomainName"
+              (\ x ->
+                 DomainName' <$>
+                   (x .:? "certificateName") <*> (x .:? "domainName")
+                     <*> (x .:? "certificateUploadDate")
+                     <*> (x .:? "distributionDomainName"))
+
+-- | Represents a HTTP, AWS, or Mock integration.
+--
+-- /See:/ 'integration' smart constructor.
+data Integration = Integration'
+    { _iHttpMethod           :: !(Maybe Text)
+    , _iRequestTemplates     :: !(Maybe (Map Text Text))
+    , _iCredentials          :: !(Maybe Text)
+    , _iRequestParameters    :: !(Maybe (Map Text Text))
+    , _iUri                  :: !(Maybe Text)
+    , _iIntegrationResponses :: !(Maybe (Map Text IntegrationResponse))
+    , _iCacheNamespace       :: !(Maybe Text)
+    , _iType                 :: !(Maybe IntegrationType)
+    , _iCacheKeyParameters   :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Integration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iHttpMethod'
+--
+-- * 'iRequestTemplates'
+--
+-- * 'iCredentials'
+--
+-- * 'iRequestParameters'
+--
+-- * 'iUri'
+--
+-- * 'iIntegrationResponses'
+--
+-- * 'iCacheNamespace'
+--
+-- * 'iType'
+--
+-- * 'iCacheKeyParameters'
+integration
+    :: Integration
+integration =
+    Integration'
+    { _iHttpMethod = Nothing
+    , _iRequestTemplates = Nothing
+    , _iCredentials = Nothing
+    , _iRequestParameters = Nothing
+    , _iUri = Nothing
+    , _iIntegrationResponses = Nothing
+    , _iCacheNamespace = Nothing
+    , _iType = Nothing
+    , _iCacheKeyParameters = Nothing
+    }
+
+-- | Specifies the integration\'s HTTP method type.
+iHttpMethod :: Lens' Integration (Maybe Text)
+iHttpMethod = lens _iHttpMethod (\ s a -> s{_iHttpMethod = a});
+
+-- | Specifies the integration\'s request templates.
+iRequestTemplates :: Lens' Integration (HashMap Text Text)
+iRequestTemplates = lens _iRequestTemplates (\ s a -> s{_iRequestTemplates = a}) . _Default . _Map;
+
+-- | Specifies the credentials required for the integration, if any. For AWS
+-- integrations, three options are available. To specify an IAM Role for
+-- Amazon API Gateway to assume, use the role\'s Amazon Resource Name
+-- (ARN). To require that the caller\'s identity be passed through from the
+-- request, specify the string 'arn:aws:iam::\\*:user\/\\*'. To use
+-- resource-based permissions on supported AWS services, specify null.
+iCredentials :: Lens' Integration (Maybe Text)
+iCredentials = lens _iCredentials (\ s a -> s{_iCredentials = a});
+
+-- | Represents requests parameters that are sent with the backend request.
+-- Request parameters are represented as a key\/value map, with a
+-- destination as the key and a source as the value. A source must match an
+-- existing method request parameter, or a static value. Static values must
+-- be enclosed with single quotes, and be pre-encoded based on their
+-- destination in the request. The destination must match the pattern
+-- 'integration.request.{location}.{name}', where 'location' is either
+-- querystring, path, or header. 'name' must be a valid, unique parameter
+-- name.
+iRequestParameters :: Lens' Integration (HashMap Text Text)
+iRequestParameters = lens _iRequestParameters (\ s a -> s{_iRequestParameters = a}) . _Default . _Map;
+
+-- | Specifies the integration\'s Uniform Resource Identifier (URI). For HTTP
+-- integrations, the URI must be a fully formed, encoded HTTP(S) URL
+-- according to the
+-- <https://www.ietf.org/rfc/rfc3986.txt RFC-3986 specification>. For AWS
+-- integrations, the URI should be of the form
+-- 'arn:aws:apigateway:{region}:{service}:{path|action}\/{service_api}'.
+-- 'Region' and 'service' are used to determine the right endpoint. For AWS
+-- services that use the 'Action=' query string parameter, 'service_api'
+-- should be a valid action for the desired service. For RESTful AWS
+-- service APIs, 'path' is used to indicate that the remaining substring in
+-- the URI should be treated as the path to the resource, including the
+-- initial '\/'.
+iUri :: Lens' Integration (Maybe Text)
+iUri = lens _iUri (\ s a -> s{_iUri = a});
+
+-- | Specifies the integration\'s responses.
+iIntegrationResponses :: Lens' Integration (HashMap Text IntegrationResponse)
+iIntegrationResponses = lens _iIntegrationResponses (\ s a -> s{_iIntegrationResponses = a}) . _Default . _Map;
+
+-- | Specifies the integration\'s cache namespace.
+iCacheNamespace :: Lens' Integration (Maybe Text)
+iCacheNamespace = lens _iCacheNamespace (\ s a -> s{_iCacheNamespace = a});
+
+-- | Specifies the integration\'s type.
+iType :: Lens' Integration (Maybe IntegrationType)
+iType = lens _iType (\ s a -> s{_iType = a});
+
+-- | Specifies the integration\'s cache key parameters.
+iCacheKeyParameters :: Lens' Integration [Text]
+iCacheKeyParameters = lens _iCacheKeyParameters (\ s a -> s{_iCacheKeyParameters = a}) . _Default . _Coerce;
+
+instance FromJSON Integration where
+        parseJSON
+          = withObject "Integration"
+              (\ x ->
+                 Integration' <$>
+                   (x .:? "httpMethod") <*>
+                     (x .:? "requestTemplates" .!= mempty)
+                     <*> (x .:? "credentials")
+                     <*> (x .:? "requestParameters" .!= mempty)
+                     <*> (x .:? "uri")
+                     <*> (x .:? "integrationResponses" .!= mempty)
+                     <*> (x .:? "cacheNamespace")
+                     <*> (x .:? "type")
+                     <*> (x .:? "cacheKeyParameters" .!= mempty))
+
+-- | Represents an integration response. The status code must map to an
+-- existing MethodResponse, and parameters and templates can be used to
+-- transform the backend response.
+--
+-- /See:/ 'integrationResponse' smart constructor.
+data IntegrationResponse = IntegrationResponse'
+    { _iResponseTemplates  :: !(Maybe (Map Text Text))
+    , _iSelectionPattern   :: !(Maybe Text)
+    , _iStatusCode         :: !(Maybe Text)
+    , _iResponseParameters :: !(Maybe (Map Text Text))
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IntegrationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iResponseTemplates'
+--
+-- * 'iSelectionPattern'
+--
+-- * 'iStatusCode'
+--
+-- * 'iResponseParameters'
+integrationResponse
+    :: IntegrationResponse
+integrationResponse =
+    IntegrationResponse'
+    { _iResponseTemplates = Nothing
+    , _iSelectionPattern = Nothing
+    , _iStatusCode = Nothing
+    , _iResponseParameters = Nothing
+    }
+
+-- | Specifies the templates used to transform the integration response body.
+-- Response templates are represented as a key\/value map, with a
+-- content-type as the key and a template as the value.
+iResponseTemplates :: Lens' IntegrationResponse (HashMap Text Text)
+iResponseTemplates = lens _iResponseTemplates (\ s a -> s{_iResponseTemplates = a}) . _Default . _Map;
+
+-- | Specifies the regular expression (regex) pattern used to choose an
+-- integration response based on the response from the backend. If the
+-- backend is an AWS Lambda function, the AWS Lambda function error header
+-- is matched. For all other HTTP and AWS backends, the HTTP status code is
+-- matched.
+iSelectionPattern :: Lens' IntegrationResponse (Maybe Text)
+iSelectionPattern = lens _iSelectionPattern (\ s a -> s{_iSelectionPattern = a});
+
+-- | Specifies the status code that is used to map the integration response
+-- to an existing MethodResponse.
+iStatusCode :: Lens' IntegrationResponse (Maybe Text)
+iStatusCode = lens _iStatusCode (\ s a -> s{_iStatusCode = a});
+
+-- | Represents response parameters that can be read from the backend
+-- response. Response parameters are represented as a key\/value map, with
+-- a destination as the key and a source as the value. A destination must
+-- match an existing response parameter in the Method. The source can be a
+-- header from the backend response, or a static value. Static values are
+-- specified using enclosing single quotes, and backend response headers
+-- can be read using the pattern 'integration.response.header.{name}'.
+iResponseParameters :: Lens' IntegrationResponse (HashMap Text Text)
+iResponseParameters = lens _iResponseParameters (\ s a -> s{_iResponseParameters = a}) . _Default . _Map;
+
+instance FromJSON IntegrationResponse where
+        parseJSON
+          = withObject "IntegrationResponse"
+              (\ x ->
+                 IntegrationResponse' <$>
+                   (x .:? "responseTemplates" .!= mempty) <*>
+                     (x .:? "selectionPattern")
+                     <*> (x .:? "statusCode")
+                     <*> (x .:? "responseParameters" .!= mempty))
+
+-- | Represents a method.
+--
+-- /See:/ 'method' smart constructor.
+data Method = Method'
+    { _mMethodResponses   :: !(Maybe (Map Text MethodResponse))
+    , _mHttpMethod        :: !(Maybe Text)
+    , _mRequestModels     :: !(Maybe (Map Text Text))
+    , _mRequestParameters :: !(Maybe (Map Text Bool))
+    , _mAuthorizationType :: !(Maybe Text)
+    , _mApiKeyRequired    :: !(Maybe Bool)
+    , _mMethodIntegration :: !(Maybe Integration)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Method' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mMethodResponses'
+--
+-- * 'mHttpMethod'
+--
+-- * 'mRequestModels'
+--
+-- * 'mRequestParameters'
+--
+-- * 'mAuthorizationType'
+--
+-- * 'mApiKeyRequired'
+--
+-- * 'mMethodIntegration'
+method
+    :: Method
+method =
+    Method'
+    { _mMethodResponses = Nothing
+    , _mHttpMethod = Nothing
+    , _mRequestModels = Nothing
+    , _mRequestParameters = Nothing
+    , _mAuthorizationType = Nothing
+    , _mApiKeyRequired = Nothing
+    , _mMethodIntegration = Nothing
+    }
+
+-- | Represents available responses that can be sent to the caller. Method
+-- responses are represented as a key\/value map, with an HTTP status code
+-- as the key and a MethodResponse as the value. The status codes are
+-- available for the Integration responses to map to.
+mMethodResponses :: Lens' Method (HashMap Text MethodResponse)
+mMethodResponses = lens _mMethodResponses (\ s a -> s{_mMethodResponses = a}) . _Default . _Map;
+
+-- | The HTTP method.
+mHttpMethod :: Lens' Method (Maybe Text)
+mHttpMethod = lens _mHttpMethod (\ s a -> s{_mHttpMethod = a});
+
+-- | Specifies the Model resources used for the request\'s content type.
+-- Request models are represented as a key\/value map, with a content type
+-- as the key and a Model name as the value.
+mRequestModels :: Lens' Method (HashMap Text Text)
+mRequestModels = lens _mRequestModels (\ s a -> s{_mRequestModels = a}) . _Default . _Map;
+
+-- | Represents request parameters that can be accepted by Amazon API
+-- Gateway. Request parameters are represented as a key\/value map, with a
+-- source as the key and a Boolean flag as the value. The Boolean flag is
+-- used to specify whether the parameter is required. A source must match
+-- the pattern 'method.request.{location}.{name}', where 'location' is
+-- either querystring, path, or header. 'name' is a valid, unique parameter
+-- name. Sources specified here are available to the integration for
+-- mapping to integration request parameters or templates.
+mRequestParameters :: Lens' Method (HashMap Text Bool)
+mRequestParameters = lens _mRequestParameters (\ s a -> s{_mRequestParameters = a}) . _Default . _Map;
+
+-- | The method\'s authorization type.
+mAuthorizationType :: Lens' Method (Maybe Text)
+mAuthorizationType = lens _mAuthorizationType (\ s a -> s{_mAuthorizationType = a});
+
+-- | Specifies whether the method requires a valid ApiKey.
+mApiKeyRequired :: Lens' Method (Maybe Bool)
+mApiKeyRequired = lens _mApiKeyRequired (\ s a -> s{_mApiKeyRequired = a});
+
+-- | The method\'s integration.
+mMethodIntegration :: Lens' Method (Maybe Integration)
+mMethodIntegration = lens _mMethodIntegration (\ s a -> s{_mMethodIntegration = a});
+
+instance FromJSON Method where
+        parseJSON
+          = withObject "Method"
+              (\ x ->
+                 Method' <$>
+                   (x .:? "methodResponses" .!= mempty) <*>
+                     (x .:? "httpMethod")
+                     <*> (x .:? "requestModels" .!= mempty)
+                     <*> (x .:? "requestParameters" .!= mempty)
+                     <*> (x .:? "authorizationType")
+                     <*> (x .:? "apiKeyRequired")
+                     <*> (x .:? "methodIntegration"))
+
+-- | Represents a method response. Amazon API Gateway sends back the status
+-- code to the caller as the HTTP status code. Parameters and models can be
+-- used to transform the response from the method\'s integration.
+--
+-- /See:/ 'methodResponse' smart constructor.
+data MethodResponse = MethodResponse'
+    { _mResponseModels     :: !(Maybe (Map Text Text))
+    , _mStatusCode         :: !(Maybe Text)
+    , _mResponseParameters :: !(Maybe (Map Text Bool))
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MethodResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mResponseModels'
+--
+-- * 'mStatusCode'
+--
+-- * 'mResponseParameters'
+methodResponse
+    :: MethodResponse
+methodResponse =
+    MethodResponse'
+    { _mResponseModels = Nothing
+    , _mStatusCode = Nothing
+    , _mResponseParameters = Nothing
+    }
+
+-- | Specifies the Model resources used for the response\'s content-type.
+-- Response models are represented as a key\/value map, with a content-type
+-- as the key and a Model name as the value.
+mResponseModels :: Lens' MethodResponse (HashMap Text Text)
+mResponseModels = lens _mResponseModels (\ s a -> s{_mResponseModels = a}) . _Default . _Map;
+
+-- | The method response\'s status code.
+mStatusCode :: Lens' MethodResponse (Maybe Text)
+mStatusCode = lens _mStatusCode (\ s a -> s{_mStatusCode = a});
+
+-- | Represents response parameters that can be sent back to the caller by
+-- Amazon API Gateway. Response parameters are represented as a key\/value
+-- map, with a destination as the key and a boolean flag as the value,
+-- which is used to specify whether the parameter is required. A
+-- destination must match the pattern 'method.response.header.{name}',
+-- where 'name' is a valid, unique header name. Destinations specified here
+-- are available to the integration for mapping from integration response
+-- parameters.
+mResponseParameters :: Lens' MethodResponse (HashMap Text Bool)
+mResponseParameters = lens _mResponseParameters (\ s a -> s{_mResponseParameters = a}) . _Default . _Map;
+
+instance FromJSON MethodResponse where
+        parseJSON
+          = withObject "MethodResponse"
+              (\ x ->
+                 MethodResponse' <$>
+                   (x .:? "responseModels" .!= mempty) <*>
+                     (x .:? "statusCode")
+                     <*> (x .:? "responseParameters" .!= mempty))
+
+-- | Specifies the method setting properties.
+--
+-- /See:/ 'methodSetting' smart constructor.
+data MethodSetting = MethodSetting'
+    { _msCacheTtlInSeconds    :: !(Maybe Int)
+    , _msDataTraceEnabled     :: !(Maybe Bool)
+    , _msThrottlingBurstLimit :: !(Maybe Int)
+    , _msCacheDataEncrypted   :: !(Maybe Bool)
+    , _msLoggingLevel         :: !(Maybe Text)
+    , _msCachingEnabled       :: !(Maybe Bool)
+    , _msMetricsEnabled       :: !(Maybe Bool)
+    , _msThrottlingRateLimit  :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MethodSetting' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'msCacheTtlInSeconds'
+--
+-- * 'msDataTraceEnabled'
+--
+-- * 'msThrottlingBurstLimit'
+--
+-- * 'msCacheDataEncrypted'
+--
+-- * 'msLoggingLevel'
+--
+-- * 'msCachingEnabled'
+--
+-- * 'msMetricsEnabled'
+--
+-- * 'msThrottlingRateLimit'
+methodSetting
+    :: MethodSetting
+methodSetting =
+    MethodSetting'
+    { _msCacheTtlInSeconds = Nothing
+    , _msDataTraceEnabled = Nothing
+    , _msThrottlingBurstLimit = Nothing
+    , _msCacheDataEncrypted = Nothing
+    , _msLoggingLevel = Nothing
+    , _msCachingEnabled = Nothing
+    , _msMetricsEnabled = Nothing
+    , _msThrottlingRateLimit = Nothing
+    }
+
+-- | Specifies the time to live (TTL) in seconds, for cached responses. The
+-- higher a the TTL, the longer the response will be cached. The PATCH path
+-- for this setting is '\/{method_setting_key}\/caching\/ttlInSeconds', and
+-- the value is an integer.
+msCacheTtlInSeconds :: Lens' MethodSetting (Maybe Int)
+msCacheTtlInSeconds = lens _msCacheTtlInSeconds (\ s a -> s{_msCacheTtlInSeconds = a});
+
+-- | Specifies the whether data trace logging is enabled for this method,
+-- which effects the log entries pushed to Amazon CloudWatch Logs. The
+-- PATCH path for this setting is
+-- '\/{method_setting_key}\/logging\/dataTrace', and the value is a
+-- Boolean.
+msDataTraceEnabled :: Lens' MethodSetting (Maybe Bool)
+msDataTraceEnabled = lens _msDataTraceEnabled (\ s a -> s{_msDataTraceEnabled = a});
+
+-- | Specifies the throttling burst limit. The PATCH path for this setting is
+-- '\/{method_setting_key}\/throttling\/burstLimit', and the value is an
+-- integer.
+msThrottlingBurstLimit :: Lens' MethodSetting (Maybe Int)
+msThrottlingBurstLimit = lens _msThrottlingBurstLimit (\ s a -> s{_msThrottlingBurstLimit = a});
+
+-- | Specifies whether the cached responses are encrypted. The PATCH path for
+-- this setting is '\/{method_setting_key}\/caching\/dataEncrypted', and
+-- the value is a Boolean.
+msCacheDataEncrypted :: Lens' MethodSetting (Maybe Bool)
+msCacheDataEncrypted = lens _msCacheDataEncrypted (\ s a -> s{_msCacheDataEncrypted = a});
+
+-- | Specifies the logging level for this method, which effects the log
+-- entries pushed to Amazon CloudWatch Logs. The PATCH path for this
+-- setting is '\/{method_setting_key}\/logging\/loglevel', and the
+-- available levels are 'OFF', 'ERROR', and 'INFO'.
+msLoggingLevel :: Lens' MethodSetting (Maybe Text)
+msLoggingLevel = lens _msLoggingLevel (\ s a -> s{_msLoggingLevel = a});
+
+-- | Specifies whether responses should be cached and returned for requests.
+-- A cache cluster must be enabled on the stage for responses to be cached.
+-- The PATCH path for this setting is
+-- '\/{method_setting_key}\/caching\/enabled', and the value is a Boolean.
+msCachingEnabled :: Lens' MethodSetting (Maybe Bool)
+msCachingEnabled = lens _msCachingEnabled (\ s a -> s{_msCachingEnabled = a});
+
+-- | Specifies whether Amazon CloudWatch metrics are enabled for this method.
+-- The PATCH path for this setting is
+-- '\/{method_setting_key}\/metrics\/enabled', and the value is a Boolean.
+msMetricsEnabled :: Lens' MethodSetting (Maybe Bool)
+msMetricsEnabled = lens _msMetricsEnabled (\ s a -> s{_msMetricsEnabled = a});
+
+-- | Specifies the throttling rate limit. The PATCH path for this setting is
+-- '\/{method_setting_key}\/throttling\/rateLimit', and the value is a
+-- double.
+msThrottlingRateLimit :: Lens' MethodSetting (Maybe Double)
+msThrottlingRateLimit = lens _msThrottlingRateLimit (\ s a -> s{_msThrottlingRateLimit = a});
+
+instance FromJSON MethodSetting where
+        parseJSON
+          = withObject "MethodSetting"
+              (\ x ->
+                 MethodSetting' <$>
+                   (x .:? "cacheTtlInSeconds") <*>
+                     (x .:? "dataTraceEnabled")
+                     <*> (x .:? "throttlingBurstLimit")
+                     <*> (x .:? "cacheDataEncrypted")
+                     <*> (x .:? "loggingLevel")
+                     <*> (x .:? "cachingEnabled")
+                     <*> (x .:? "metricsEnabled")
+                     <*> (x .:? "throttlingRateLimit"))
+
+-- | Represents a summary of a Method resource, given a particular date and
+-- time.
+--
+-- /See:/ 'methodSnapshot' smart constructor.
+data MethodSnapshot = MethodSnapshot'
+    { _msAuthorizationType :: !(Maybe Text)
+    , _msApiKeyRequired    :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MethodSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'msAuthorizationType'
+--
+-- * 'msApiKeyRequired'
+methodSnapshot
+    :: MethodSnapshot
+methodSnapshot =
+    MethodSnapshot'
+    { _msAuthorizationType = Nothing
+    , _msApiKeyRequired = Nothing
+    }
+
+-- | Specifies the type of authorization used for the method.
+msAuthorizationType :: Lens' MethodSnapshot (Maybe Text)
+msAuthorizationType = lens _msAuthorizationType (\ s a -> s{_msAuthorizationType = a});
+
+-- | Specifies whether the method requires a valid ApiKey.
+msApiKeyRequired :: Lens' MethodSnapshot (Maybe Bool)
+msApiKeyRequired = lens _msApiKeyRequired (\ s a -> s{_msApiKeyRequired = a});
+
+instance FromJSON MethodSnapshot where
+        parseJSON
+          = withObject "MethodSnapshot"
+              (\ x ->
+                 MethodSnapshot' <$>
+                   (x .:? "authorizationType") <*>
+                     (x .:? "apiKeyRequired"))
+
+-- | Represents the structure of a request or response payload for a method.
+--
+-- /See:/ 'model' smart constructor.
+data Model = Model'
+    { _mSchema      :: !(Maybe Text)
+    , _mName        :: !(Maybe Text)
+    , _mId          :: !(Maybe Text)
+    , _mDescription :: !(Maybe Text)
+    , _mContentType :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Model' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mSchema'
+--
+-- * 'mName'
+--
+-- * 'mId'
+--
+-- * 'mDescription'
+--
+-- * 'mContentType'
+model
+    :: Model
+model =
+    Model'
+    { _mSchema = Nothing
+    , _mName = Nothing
+    , _mId = Nothing
+    , _mDescription = Nothing
+    , _mContentType = Nothing
+    }
+
+-- | The schema for the model. For 'application\/json' models, this should be
+-- <http://json-schema.org/documentation.html JSON-schema draft v4> model.
+mSchema :: Lens' Model (Maybe Text)
+mSchema = lens _mSchema (\ s a -> s{_mSchema = a});
+
+-- | The name of the model.
+mName :: Lens' Model (Maybe Text)
+mName = lens _mName (\ s a -> s{_mName = a});
+
+-- | The identifier for the model resource.
+mId :: Lens' Model (Maybe Text)
+mId = lens _mId (\ s a -> s{_mId = a});
+
+-- | The description of the model.
+mDescription :: Lens' Model (Maybe Text)
+mDescription = lens _mDescription (\ s a -> s{_mDescription = a});
+
+-- | The content-type for the model.
+mContentType :: Lens' Model (Maybe Text)
+mContentType = lens _mContentType (\ s a -> s{_mContentType = a});
+
+instance FromJSON Model where
+        parseJSON
+          = withObject "Model"
+              (\ x ->
+                 Model' <$>
+                   (x .:? "schema") <*> (x .:? "name") <*> (x .:? "id")
+                     <*> (x .:? "description")
+                     <*> (x .:? "contentType"))
+
+-- | A single patch operation to apply to the specified resource. Please
+-- refer to http:\/\/tools.ietf.org\/html\/rfc6902#section-4 for an
+-- explanation of how each operation is used.
+--
+-- /See:/ 'patchOperation' smart constructor.
+data PatchOperation = PatchOperation'
+    { _poOp    :: !(Maybe Op)
+    , _poPath  :: !(Maybe Text)
+    , _poValue :: !(Maybe Text)
+    , _poFrom  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PatchOperation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'poOp'
+--
+-- * 'poPath'
+--
+-- * 'poValue'
+--
+-- * 'poFrom'
+patchOperation
+    :: PatchOperation
+patchOperation =
+    PatchOperation'
+    { _poOp = Nothing
+    , _poPath = Nothing
+    , _poValue = Nothing
+    , _poFrom = Nothing
+    }
+
+-- | A patch operation whose value indicates the operation to perform. Its
+-- value MUST be one of \"add\", \"remove\", \"replace\", \"move\",
+-- \"copy\", or \"test\"; other values are errors.
+poOp :: Lens' PatchOperation (Maybe Op)
+poOp = lens _poOp (\ s a -> s{_poOp = a});
+
+-- | Operation objects MUST have exactly one \"path\" member. That member\'s
+-- value is a string containing a \`JSON-Pointer\` value that references a
+-- location within the target document (the \"target location\") where the
+-- operation is performed.
+poPath :: Lens' PatchOperation (Maybe Text)
+poPath = lens _poPath (\ s a -> s{_poPath = a});
+
+-- | The actual value content.
+poValue :: Lens' PatchOperation (Maybe Text)
+poValue = lens _poValue (\ s a -> s{_poValue = a});
+
+-- | The \"move\" and \"copy\" operation object MUST contain a \"from\"
+-- member, which is a string containing a 'JSON Pointer' value that
+-- references the location in the target document to move the value from.
+poFrom :: Lens' PatchOperation (Maybe Text)
+poFrom = lens _poFrom (\ s a -> s{_poFrom = a});
+
+instance ToJSON PatchOperation where
+        toJSON PatchOperation'{..}
+          = object
+              (catMaybes
+                 [("op" .=) <$> _poOp, ("path" .=) <$> _poPath,
+                  ("value" .=) <$> _poValue, ("from" .=) <$> _poFrom])
+
+-- | Represents a resource.
+--
+-- /See:/ 'resource' smart constructor.
+data Resource = Resource'
+    { _rPathPart        :: !(Maybe Text)
+    , _rPath            :: !(Maybe Text)
+    , _rId              :: !(Maybe Text)
+    , _rResourceMethods :: !(Maybe (Map Text Method))
+    , _rParentId        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Resource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rPathPart'
+--
+-- * 'rPath'
+--
+-- * 'rId'
+--
+-- * 'rResourceMethods'
+--
+-- * 'rParentId'
+resource
+    :: Resource
+resource =
+    Resource'
+    { _rPathPart = Nothing
+    , _rPath = Nothing
+    , _rId = Nothing
+    , _rResourceMethods = Nothing
+    , _rParentId = Nothing
+    }
+
+-- | The last path segment for this resource.
+rPathPart :: Lens' Resource (Maybe Text)
+rPathPart = lens _rPathPart (\ s a -> s{_rPathPart = a});
+
+-- | The full path for this resource.
+rPath :: Lens' Resource (Maybe Text)
+rPath = lens _rPath (\ s a -> s{_rPath = a});
+
+-- | The resource\'s identifier.
+rId :: Lens' Resource (Maybe Text)
+rId = lens _rId (\ s a -> s{_rId = a});
+
+-- | Map of methods for this resource, which is included only if requested
+-- using the __embed__ option.
+rResourceMethods :: Lens' Resource (HashMap Text Method)
+rResourceMethods = lens _rResourceMethods (\ s a -> s{_rResourceMethods = a}) . _Default . _Map;
+
+-- | The parent resource\'s identifier.
+rParentId :: Lens' Resource (Maybe Text)
+rParentId = lens _rParentId (\ s a -> s{_rParentId = a});
+
+instance FromJSON Resource where
+        parseJSON
+          = withObject "Resource"
+              (\ x ->
+                 Resource' <$>
+                   (x .:? "pathPart") <*> (x .:? "path") <*>
+                     (x .:? "id")
+                     <*> (x .:? "resourceMethods" .!= mempty)
+                     <*> (x .:? "parentId"))
+
+-- | Represents a REST API.
+--
+-- /See:/ 'restAPI' smart constructor.
+data RestAPI = RestAPI'
+    { _raCreatedDate :: !(Maybe POSIX)
+    , _raName        :: !(Maybe Text)
+    , _raId          :: !(Maybe Text)
+    , _raDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RestAPI' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raCreatedDate'
+--
+-- * 'raName'
+--
+-- * 'raId'
+--
+-- * 'raDescription'
+restAPI
+    :: RestAPI
+restAPI =
+    RestAPI'
+    { _raCreatedDate = Nothing
+    , _raName = Nothing
+    , _raId = Nothing
+    , _raDescription = Nothing
+    }
+
+-- | The date when the API was created, in
+-- <http://www.iso.org/iso/home/standards/iso8601.htm ISO 8601 format>.
+raCreatedDate :: Lens' RestAPI (Maybe UTCTime)
+raCreatedDate = lens _raCreatedDate (\ s a -> s{_raCreatedDate = a}) . mapping _Time;
+
+-- | The API\'s name.
+raName :: Lens' RestAPI (Maybe Text)
+raName = lens _raName (\ s a -> s{_raName = a});
+
+-- | The API\'s identifier. This identifier is unique across all of your APIs
+-- in Amazon API Gateway.
+raId :: Lens' RestAPI (Maybe Text)
+raId = lens _raId (\ s a -> s{_raId = a});
+
+-- | The API\'s description.
+raDescription :: Lens' RestAPI (Maybe Text)
+raDescription = lens _raDescription (\ s a -> s{_raDescription = a});
+
+instance FromJSON RestAPI where
+        parseJSON
+          = withObject "RestAPI"
+              (\ x ->
+                 RestAPI' <$>
+                   (x .:? "createdDate") <*> (x .:? "name") <*>
+                     (x .:? "id")
+                     <*> (x .:? "description"))
+
+-- | Represents a unique identifier for a version of a deployed RestApi that
+-- is callable by users.
+--
+-- /See:/ 'stage' smart constructor.
+data Stage = Stage'
+    { _sDeploymentId        :: !(Maybe Text)
+    , _sClientCertificateId :: !(Maybe Text)
+    , _sCreatedDate         :: !(Maybe POSIX)
+    , _sCacheClusterStatus  :: !(Maybe CacheClusterStatus)
+    , _sMethodSettings      :: !(Maybe (Map Text MethodSetting))
+    , _sLastUpdatedDate     :: !(Maybe POSIX)
+    , _sCacheClusterSize    :: !(Maybe CacheClusterSize)
+    , _sCacheClusterEnabled :: !(Maybe Bool)
+    , _sStageName           :: !(Maybe Text)
+    , _sDescription         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Stage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sDeploymentId'
+--
+-- * 'sClientCertificateId'
+--
+-- * 'sCreatedDate'
+--
+-- * 'sCacheClusterStatus'
+--
+-- * 'sMethodSettings'
+--
+-- * 'sLastUpdatedDate'
+--
+-- * 'sCacheClusterSize'
+--
+-- * 'sCacheClusterEnabled'
+--
+-- * 'sStageName'
+--
+-- * 'sDescription'
+stage
+    :: Stage
+stage =
+    Stage'
+    { _sDeploymentId = Nothing
+    , _sClientCertificateId = Nothing
+    , _sCreatedDate = Nothing
+    , _sCacheClusterStatus = Nothing
+    , _sMethodSettings = Nothing
+    , _sLastUpdatedDate = Nothing
+    , _sCacheClusterSize = Nothing
+    , _sCacheClusterEnabled = Nothing
+    , _sStageName = Nothing
+    , _sDescription = Nothing
+    }
+
+-- | The identifier of the Deployment that the stage points to.
+sDeploymentId :: Lens' Stage (Maybe Text)
+sDeploymentId = lens _sDeploymentId (\ s a -> s{_sDeploymentId = a});
+
+-- | Undocumented member.
+sClientCertificateId :: Lens' Stage (Maybe Text)
+sClientCertificateId = lens _sClientCertificateId (\ s a -> s{_sClientCertificateId = a});
+
+-- | The date and time that the stage was created, in
+-- <http://www.iso.org/iso/home/standards/iso8601.htm ISO 8601 format>.
+sCreatedDate :: Lens' Stage (Maybe UTCTime)
+sCreatedDate = lens _sCreatedDate (\ s a -> s{_sCreatedDate = a}) . mapping _Time;
+
+-- | The status of the cache cluster for the stage, if enabled.
+sCacheClusterStatus :: Lens' Stage (Maybe CacheClusterStatus)
+sCacheClusterStatus = lens _sCacheClusterStatus (\ s a -> s{_sCacheClusterStatus = a});
+
+-- | A map that defines the method settings for a Stage resource. Keys are
+-- defined as '{resource_path}\/{http_method}' for an individual method
+-- override, or '\\*\/\\*' for the settings applied to all methods in the
+-- stage.
+sMethodSettings :: Lens' Stage (HashMap Text MethodSetting)
+sMethodSettings = lens _sMethodSettings (\ s a -> s{_sMethodSettings = a}) . _Default . _Map;
+
+-- | The date and time that information about the stage was last updated, in
+-- <http://www.iso.org/iso/home/standards/iso8601.htm ISO 8601 format>.
+sLastUpdatedDate :: Lens' Stage (Maybe UTCTime)
+sLastUpdatedDate = lens _sLastUpdatedDate (\ s a -> s{_sLastUpdatedDate = a}) . mapping _Time;
+
+-- | The size of the cache cluster for the stage, if enabled.
+sCacheClusterSize :: Lens' Stage (Maybe CacheClusterSize)
+sCacheClusterSize = lens _sCacheClusterSize (\ s a -> s{_sCacheClusterSize = a});
+
+-- | Specifies whether a cache cluster is enabled for the stage.
+sCacheClusterEnabled :: Lens' Stage (Maybe Bool)
+sCacheClusterEnabled = lens _sCacheClusterEnabled (\ s a -> s{_sCacheClusterEnabled = a});
+
+-- | The name of the stage is the first path segment in the Uniform Resource
+-- Identifier (URI) of a call to Amazon API Gateway.
+sStageName :: Lens' Stage (Maybe Text)
+sStageName = lens _sStageName (\ s a -> s{_sStageName = a});
+
+-- | The stage\'s description.
+sDescription :: Lens' Stage (Maybe Text)
+sDescription = lens _sDescription (\ s a -> s{_sDescription = a});
+
+instance FromJSON Stage where
+        parseJSON
+          = withObject "Stage"
+              (\ x ->
+                 Stage' <$>
+                   (x .:? "deploymentId") <*>
+                     (x .:? "clientCertificateId")
+                     <*> (x .:? "createdDate")
+                     <*> (x .:? "cacheClusterStatus")
+                     <*> (x .:? "methodSettings" .!= mempty)
+                     <*> (x .:? "lastUpdatedDate")
+                     <*> (x .:? "cacheClusterSize")
+                     <*> (x .:? "cacheClusterEnabled")
+                     <*> (x .:? "stageName")
+                     <*> (x .:? "description"))
+
+-- | A reference to a unique stage identified in the format
+-- '{restApiId}\/{stage}'.
+--
+-- /See:/ 'stageKey' smart constructor.
+data StageKey = StageKey'
+    { _skRestAPIId :: !(Maybe Text)
+    , _skStageName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StageKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'skRestAPIId'
+--
+-- * 'skStageName'
+stageKey
+    :: StageKey
+stageKey =
+    StageKey'
+    { _skRestAPIId = Nothing
+    , _skStageName = Nothing
+    }
+
+-- | A list of Stage resources that are associated with the ApiKey resource.
+skRestAPIId :: Lens' StageKey (Maybe Text)
+skRestAPIId = lens _skRestAPIId (\ s a -> s{_skRestAPIId = a});
+
+-- | The stage name in the RestApi that the stage key references.
+skStageName :: Lens' StageKey (Maybe Text)
+skStageName = lens _skStageName (\ s a -> s{_skStageName = a});
+
+instance ToJSON StageKey where
+        toJSON StageKey'{..}
+          = object
+              (catMaybes
+                 [("restApiId" .=) <$> _skRestAPIId,
+                  ("stageName" .=) <$> _skStageName])
+
+-- | Returns the throttle settings.
+--
+-- /See:/ 'throttleSettings' smart constructor.
+data ThrottleSettings = ThrottleSettings'
+    { _tsBurstLimit :: !(Maybe Int)
+    , _tsRateLimit  :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ThrottleSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tsBurstLimit'
+--
+-- * 'tsRateLimit'
+throttleSettings
+    :: ThrottleSettings
+throttleSettings =
+    ThrottleSettings'
+    { _tsBurstLimit = Nothing
+    , _tsRateLimit = Nothing
+    }
+
+-- | Returns the burstLimit when __ThrottleSettings__ is called.
+tsBurstLimit :: Lens' ThrottleSettings (Maybe Int)
+tsBurstLimit = lens _tsBurstLimit (\ s a -> s{_tsBurstLimit = a});
+
+-- | Returns the rateLimit when __ThrottleSettings__ is called.
+tsRateLimit :: Lens' ThrottleSettings (Maybe Double)
+tsRateLimit = lens _tsRateLimit (\ s a -> s{_tsRateLimit = a});
+
+instance FromJSON ThrottleSettings where
+        parseJSON
+          = withObject "ThrottleSettings"
+              (\ x ->
+                 ThrottleSettings' <$>
+                   (x .:? "burstLimit") <*> (x .:? "rateLimit"))
diff --git a/gen/Network/AWS/APIGateway/Types/Sum.hs b/gen/Network/AWS/APIGateway/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/Types/Sum.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.Types.Sum
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.APIGateway.Types.Sum where
+
+import           Network.AWS.Prelude
+
+-- | Returns the size of the __CacheCluster__.
+data CacheClusterSize
+    = D0_5
+    | D118
+    | D13_5
+    | D1_6
+    | D237
+    | D28_4
+    | D58_2
+    | D6_1
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText CacheClusterSize where
+    parser = takeLowerText >>= \case
+        "0.5" -> pure D0_5
+        "118" -> pure D118
+        "13.5" -> pure D13_5
+        "1.6" -> pure D1_6
+        "237" -> pure D237
+        "28.4" -> pure D28_4
+        "58.2" -> pure D58_2
+        "6.1" -> pure D6_1
+        e -> fromTextError $ "Failure parsing CacheClusterSize from value: '" <> e
+           <> "'. Accepted values: 0.5, 118, 13.5, 1.6, 237, 28.4, 58.2, 6.1"
+
+instance ToText CacheClusterSize where
+    toText = \case
+        D0_5 -> "0.5"
+        D118 -> "118"
+        D13_5 -> "13.5"
+        D1_6 -> "1.6"
+        D237 -> "237"
+        D28_4 -> "28.4"
+        D58_2 -> "58.2"
+        D6_1 -> "6.1"
+
+instance Hashable     CacheClusterSize
+instance ToByteString CacheClusterSize
+instance ToQuery      CacheClusterSize
+instance ToHeader     CacheClusterSize
+
+instance ToJSON CacheClusterSize where
+    toJSON = toJSONText
+
+instance FromJSON CacheClusterSize where
+    parseJSON = parseJSONText "CacheClusterSize"
+
+-- | Returns the status of the __CacheCluster__.
+data CacheClusterStatus
+    = Available
+    | CreateInProgress
+    | DeleteInProgress
+    | FlushInProgress
+    | NotAvailable
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText CacheClusterStatus where
+    parser = takeLowerText >>= \case
+        "available" -> pure Available
+        "create_in_progress" -> pure CreateInProgress
+        "delete_in_progress" -> pure DeleteInProgress
+        "flush_in_progress" -> pure FlushInProgress
+        "not_available" -> pure NotAvailable
+        e -> fromTextError $ "Failure parsing CacheClusterStatus from value: '" <> e
+           <> "'. Accepted values: AVAILABLE, CREATE_IN_PROGRESS, DELETE_IN_PROGRESS, FLUSH_IN_PROGRESS, NOT_AVAILABLE"
+
+instance ToText CacheClusterStatus where
+    toText = \case
+        Available -> "AVAILABLE"
+        CreateInProgress -> "CREATE_IN_PROGRESS"
+        DeleteInProgress -> "DELETE_IN_PROGRESS"
+        FlushInProgress -> "FLUSH_IN_PROGRESS"
+        NotAvailable -> "NOT_AVAILABLE"
+
+instance Hashable     CacheClusterStatus
+instance ToByteString CacheClusterStatus
+instance ToQuery      CacheClusterStatus
+instance ToHeader     CacheClusterStatus
+
+instance FromJSON CacheClusterStatus where
+    parseJSON = parseJSONText "CacheClusterStatus"
+
+-- | The integration type. Possible values are HTTP, AWS, or Mock.
+data IntegrationType
+    = AWS
+    | HTTP
+    | Mock
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText IntegrationType where
+    parser = takeLowerText >>= \case
+        "aws" -> pure AWS
+        "http" -> pure HTTP
+        "mock" -> pure Mock
+        e -> fromTextError $ "Failure parsing IntegrationType from value: '" <> e
+           <> "'. Accepted values: AWS, HTTP, MOCK"
+
+instance ToText IntegrationType where
+    toText = \case
+        AWS -> "AWS"
+        HTTP -> "HTTP"
+        Mock -> "MOCK"
+
+instance Hashable     IntegrationType
+instance ToByteString IntegrationType
+instance ToQuery      IntegrationType
+instance ToHeader     IntegrationType
+
+instance ToJSON IntegrationType where
+    toJSON = toJSONText
+
+instance FromJSON IntegrationType where
+    parseJSON = parseJSONText "IntegrationType"
+
+data Op
+    = Add
+    | Copy
+    | Move
+    | Remove
+    | Replace
+    | Test
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText Op where
+    parser = takeLowerText >>= \case
+        "add" -> pure Add
+        "copy" -> pure Copy
+        "move" -> pure Move
+        "remove" -> pure Remove
+        "replace" -> pure Replace
+        "test" -> pure Test
+        e -> fromTextError $ "Failure parsing Op from value: '" <> e
+           <> "'. Accepted values: add, copy, move, remove, replace, test"
+
+instance ToText Op where
+    toText = \case
+        Add -> "add"
+        Copy -> "copy"
+        Move -> "move"
+        Remove -> "remove"
+        Replace -> "replace"
+        Test -> "test"
+
+instance Hashable     Op
+instance ToByteString Op
+instance ToQuery      Op
+instance ToHeader     Op
+
+instance ToJSON Op where
+    toJSON = toJSONText
diff --git a/gen/Network/AWS/APIGateway/UpdateAPIKey.hs b/gen/Network/AWS/APIGateway/UpdateAPIKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateAPIKey.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateAPIKey
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about an ApiKey resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateAPIKey.html AWS API Reference> for UpdateAPIKey.
+module Network.AWS.APIGateway.UpdateAPIKey
+    (
+    -- * Creating a Request
+      updateAPIKey
+    , UpdateAPIKey
+    -- * Request Lenses
+    , uakPatchOperations
+    , uakApiKey
+
+    -- * Destructuring the Response
+    , apiKey
+    , APIKey
+    -- * Response Lenses
+    , akEnabled
+    , akCreatedDate
+    , akName
+    , akId
+    , akStageKeys
+    , akLastUpdatedDate
+    , akDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to change information about an ApiKey resource.
+--
+-- /See:/ 'updateAPIKey' smart constructor.
+data UpdateAPIKey = UpdateAPIKey'
+    { _uakPatchOperations :: !(Maybe [PatchOperation])
+    , _uakApiKey          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAPIKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uakPatchOperations'
+--
+-- * 'uakApiKey'
+updateAPIKey
+    :: Text -- ^ 'uakApiKey'
+    -> UpdateAPIKey
+updateAPIKey pApiKey_ =
+    UpdateAPIKey'
+    { _uakPatchOperations = Nothing
+    , _uakApiKey = pApiKey_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+uakPatchOperations :: Lens' UpdateAPIKey [PatchOperation]
+uakPatchOperations = lens _uakPatchOperations (\ s a -> s{_uakPatchOperations = a}) . _Default . _Coerce;
+
+-- | The identifier of the ApiKey resource to be updated.
+uakApiKey :: Lens' UpdateAPIKey Text
+uakApiKey = lens _uakApiKey (\ s a -> s{_uakApiKey = a});
+
+instance AWSRequest UpdateAPIKey where
+        type Rs UpdateAPIKey = APIKey
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateAPIKey where
+        toHeaders = const mempty
+
+instance ToJSON UpdateAPIKey where
+        toJSON UpdateAPIKey'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _uakPatchOperations])
+
+instance ToPath UpdateAPIKey where
+        toPath UpdateAPIKey'{..}
+          = mconcat ["/apikeys/", toBS _uakApiKey]
+
+instance ToQuery UpdateAPIKey where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateAccount.hs b/gen/Network/AWS/APIGateway/UpdateAccount.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateAccount.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateAccount
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about the current Account resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateAccount.html AWS API Reference> for UpdateAccount.
+module Network.AWS.APIGateway.UpdateAccount
+    (
+    -- * Creating a Request
+      updateAccount
+    , UpdateAccount
+    -- * Request Lenses
+    , uaPatchOperations
+
+    -- * Destructuring the Response
+    , account
+    , Account
+    -- * Response Lenses
+    , aCloudwatchRoleARN
+    , aThrottleSettings
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to change information about the current
+-- Account resource.
+--
+-- /See:/ 'updateAccount' smart constructor.
+newtype UpdateAccount = UpdateAccount'
+    { _uaPatchOperations :: Maybe [PatchOperation]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uaPatchOperations'
+updateAccount
+    :: UpdateAccount
+updateAccount =
+    UpdateAccount'
+    { _uaPatchOperations = Nothing
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+uaPatchOperations :: Lens' UpdateAccount [PatchOperation]
+uaPatchOperations = lens _uaPatchOperations (\ s a -> s{_uaPatchOperations = a}) . _Default . _Coerce;
+
+instance AWSRequest UpdateAccount where
+        type Rs UpdateAccount = Account
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateAccount where
+        toHeaders = const mempty
+
+instance ToJSON UpdateAccount where
+        toJSON UpdateAccount'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _uaPatchOperations])
+
+instance ToPath UpdateAccount where
+        toPath = const "/account"
+
+instance ToQuery UpdateAccount where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateBasePathMapping.hs b/gen/Network/AWS/APIGateway/UpdateBasePathMapping.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateBasePathMapping.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateBasePathMapping
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about the BasePathMapping resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateBasePathMapping.html AWS API Reference> for UpdateBasePathMapping.
+module Network.AWS.APIGateway.UpdateBasePathMapping
+    (
+    -- * Creating a Request
+      updateBasePathMapping
+    , UpdateBasePathMapping
+    -- * Request Lenses
+    , ubpmPatchOperations
+    , ubpmDomainName
+    , ubpmBasePath
+
+    -- * Destructuring the Response
+    , basePathMapping
+    , BasePathMapping
+    -- * Response Lenses
+    , bpmStage
+    , bpmBasePath
+    , bpmRestAPIId
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to change information about the BasePathMapping resource.
+--
+-- /See:/ 'updateBasePathMapping' smart constructor.
+data UpdateBasePathMapping = UpdateBasePathMapping'
+    { _ubpmPatchOperations :: !(Maybe [PatchOperation])
+    , _ubpmDomainName      :: !Text
+    , _ubpmBasePath        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateBasePathMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ubpmPatchOperations'
+--
+-- * 'ubpmDomainName'
+--
+-- * 'ubpmBasePath'
+updateBasePathMapping
+    :: Text -- ^ 'ubpmDomainName'
+    -> Text -- ^ 'ubpmBasePath'
+    -> UpdateBasePathMapping
+updateBasePathMapping pDomainName_ pBasePath_ =
+    UpdateBasePathMapping'
+    { _ubpmPatchOperations = Nothing
+    , _ubpmDomainName = pDomainName_
+    , _ubpmBasePath = pBasePath_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+ubpmPatchOperations :: Lens' UpdateBasePathMapping [PatchOperation]
+ubpmPatchOperations = lens _ubpmPatchOperations (\ s a -> s{_ubpmPatchOperations = a}) . _Default . _Coerce;
+
+-- | The domain name of the BasePathMapping resource to change.
+ubpmDomainName :: Lens' UpdateBasePathMapping Text
+ubpmDomainName = lens _ubpmDomainName (\ s a -> s{_ubpmDomainName = a});
+
+-- | The base path of the BasePathMapping resource to change.
+ubpmBasePath :: Lens' UpdateBasePathMapping Text
+ubpmBasePath = lens _ubpmBasePath (\ s a -> s{_ubpmBasePath = a});
+
+instance AWSRequest UpdateBasePathMapping where
+        type Rs UpdateBasePathMapping = BasePathMapping
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateBasePathMapping where
+        toHeaders = const mempty
+
+instance ToJSON UpdateBasePathMapping where
+        toJSON UpdateBasePathMapping'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _ubpmPatchOperations])
+
+instance ToPath UpdateBasePathMapping where
+        toPath UpdateBasePathMapping'{..}
+          = mconcat
+              ["/domainnames/", toBS _ubpmDomainName,
+               "/basepathmappings/", toBS _ubpmBasePath]
+
+instance ToQuery UpdateBasePathMapping where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateClientCertificate.hs b/gen/Network/AWS/APIGateway/UpdateClientCertificate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateClientCertificate.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateClientCertificate
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Undocumented operation.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateClientCertificate.html AWS API Reference> for UpdateClientCertificate.
+module Network.AWS.APIGateway.UpdateClientCertificate
+    (
+    -- * Creating a Request
+      updateClientCertificate
+    , UpdateClientCertificate
+    -- * Request Lenses
+    , uccPatchOperations
+    , uccClientCertificateId
+
+    -- * Destructuring the Response
+    , clientCertificate
+    , ClientCertificate
+    -- * Response Lenses
+    , ccPemEncodedCertificate
+    , ccClientCertificateId
+    , ccCreatedDate
+    , ccExpirationDate
+    , ccDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'updateClientCertificate' smart constructor.
+data UpdateClientCertificate = UpdateClientCertificate'
+    { _uccPatchOperations     :: !(Maybe [PatchOperation])
+    , _uccClientCertificateId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateClientCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uccPatchOperations'
+--
+-- * 'uccClientCertificateId'
+updateClientCertificate
+    :: Text -- ^ 'uccClientCertificateId'
+    -> UpdateClientCertificate
+updateClientCertificate pClientCertificateId_ =
+    UpdateClientCertificate'
+    { _uccPatchOperations = Nothing
+    , _uccClientCertificateId = pClientCertificateId_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+uccPatchOperations :: Lens' UpdateClientCertificate [PatchOperation]
+uccPatchOperations = lens _uccPatchOperations (\ s a -> s{_uccPatchOperations = a}) . _Default . _Coerce;
+
+-- | Undocumented member.
+uccClientCertificateId :: Lens' UpdateClientCertificate Text
+uccClientCertificateId = lens _uccClientCertificateId (\ s a -> s{_uccClientCertificateId = a});
+
+instance AWSRequest UpdateClientCertificate where
+        type Rs UpdateClientCertificate = ClientCertificate
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateClientCertificate where
+        toHeaders = const mempty
+
+instance ToJSON UpdateClientCertificate where
+        toJSON UpdateClientCertificate'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _uccPatchOperations])
+
+instance ToPath UpdateClientCertificate where
+        toPath UpdateClientCertificate'{..}
+          = mconcat
+              ["/clientcertificates/",
+               toBS _uccClientCertificateId]
+
+instance ToQuery UpdateClientCertificate where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateDeployment.hs b/gen/Network/AWS/APIGateway/UpdateDeployment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateDeployment.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateDeployment
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about a Deployment resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateDeployment.html AWS API Reference> for UpdateDeployment.
+module Network.AWS.APIGateway.UpdateDeployment
+    (
+    -- * Creating a Request
+      updateDeployment
+    , UpdateDeployment
+    -- * Request Lenses
+    , udPatchOperations
+    , udRestAPIId
+    , udDeploymentId
+
+    -- * Destructuring the Response
+    , deployment
+    , Deployment
+    -- * Response Lenses
+    , dApiSummary
+    , dCreatedDate
+    , dId
+    , dDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to change information about a Deployment
+-- resource.
+--
+-- /See:/ 'updateDeployment' smart constructor.
+data UpdateDeployment = UpdateDeployment'
+    { _udPatchOperations :: !(Maybe [PatchOperation])
+    , _udRestAPIId       :: !Text
+    , _udDeploymentId    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateDeployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udPatchOperations'
+--
+-- * 'udRestAPIId'
+--
+-- * 'udDeploymentId'
+updateDeployment
+    :: Text -- ^ 'udRestAPIId'
+    -> Text -- ^ 'udDeploymentId'
+    -> UpdateDeployment
+updateDeployment pRestAPIId_ pDeploymentId_ =
+    UpdateDeployment'
+    { _udPatchOperations = Nothing
+    , _udRestAPIId = pRestAPIId_
+    , _udDeploymentId = pDeploymentId_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+udPatchOperations :: Lens' UpdateDeployment [PatchOperation]
+udPatchOperations = lens _udPatchOperations (\ s a -> s{_udPatchOperations = a}) . _Default . _Coerce;
+
+-- | The replacement identifier of the RestApi resource for the Deployment
+-- resource to change information about.
+udRestAPIId :: Lens' UpdateDeployment Text
+udRestAPIId = lens _udRestAPIId (\ s a -> s{_udRestAPIId = a});
+
+-- | The replacment identifier for the Deployment resource to change
+-- information about.
+udDeploymentId :: Lens' UpdateDeployment Text
+udDeploymentId = lens _udDeploymentId (\ s a -> s{_udDeploymentId = a});
+
+instance AWSRequest UpdateDeployment where
+        type Rs UpdateDeployment = Deployment
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateDeployment where
+        toHeaders = const mempty
+
+instance ToJSON UpdateDeployment where
+        toJSON UpdateDeployment'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _udPatchOperations])
+
+instance ToPath UpdateDeployment where
+        toPath UpdateDeployment'{..}
+          = mconcat
+              ["/restapis/", toBS _udRestAPIId, "/deployments/",
+               toBS _udDeploymentId]
+
+instance ToQuery UpdateDeployment where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateDomainName.hs b/gen/Network/AWS/APIGateway/UpdateDomainName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateDomainName.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateDomainName
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about the DomainName resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateDomainName.html AWS API Reference> for UpdateDomainName.
+module Network.AWS.APIGateway.UpdateDomainName
+    (
+    -- * Creating a Request
+      updateDomainName
+    , UpdateDomainName
+    -- * Request Lenses
+    , udnPatchOperations
+    , udnDomainName
+
+    -- * Destructuring the Response
+    , domainName
+    , DomainName
+    -- * Response Lenses
+    , dnCertificateName
+    , dnDomainName
+    , dnCertificateUploadDate
+    , dnDistributionDomainName
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to change information about the DomainName resource.
+--
+-- /See:/ 'updateDomainName' smart constructor.
+data UpdateDomainName = UpdateDomainName'
+    { _udnPatchOperations :: !(Maybe [PatchOperation])
+    , _udnDomainName      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateDomainName' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udnPatchOperations'
+--
+-- * 'udnDomainName'
+updateDomainName
+    :: Text -- ^ 'udnDomainName'
+    -> UpdateDomainName
+updateDomainName pDomainName_ =
+    UpdateDomainName'
+    { _udnPatchOperations = Nothing
+    , _udnDomainName = pDomainName_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+udnPatchOperations :: Lens' UpdateDomainName [PatchOperation]
+udnPatchOperations = lens _udnPatchOperations (\ s a -> s{_udnPatchOperations = a}) . _Default . _Coerce;
+
+-- | The name of the DomainName resource to be changed.
+udnDomainName :: Lens' UpdateDomainName Text
+udnDomainName = lens _udnDomainName (\ s a -> s{_udnDomainName = a});
+
+instance AWSRequest UpdateDomainName where
+        type Rs UpdateDomainName = DomainName
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateDomainName where
+        toHeaders = const mempty
+
+instance ToJSON UpdateDomainName where
+        toJSON UpdateDomainName'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _udnPatchOperations])
+
+instance ToPath UpdateDomainName where
+        toPath UpdateDomainName'{..}
+          = mconcat ["/domainnames/", toBS _udnDomainName]
+
+instance ToQuery UpdateDomainName where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateIntegration.hs b/gen/Network/AWS/APIGateway/UpdateIntegration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateIntegration.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateIntegration
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents an update integration.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateIntegration.html AWS API Reference> for UpdateIntegration.
+module Network.AWS.APIGateway.UpdateIntegration
+    (
+    -- * Creating a Request
+      updateIntegration
+    , UpdateIntegration
+    -- * Request Lenses
+    , updPatchOperations
+    , updRestAPIId
+    , updResourceId
+    , updHttpMethod
+
+    -- * Destructuring the Response
+    , integration
+    , Integration
+    -- * Response Lenses
+    , iHttpMethod
+    , iRequestTemplates
+    , iCredentials
+    , iRequestParameters
+    , iUri
+    , iIntegrationResponses
+    , iCacheNamespace
+    , iType
+    , iCacheKeyParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents an update integration request.
+--
+-- /See:/ 'updateIntegration' smart constructor.
+data UpdateIntegration = UpdateIntegration'
+    { _updPatchOperations :: !(Maybe [PatchOperation])
+    , _updRestAPIId       :: !Text
+    , _updResourceId      :: !Text
+    , _updHttpMethod      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateIntegration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'updPatchOperations'
+--
+-- * 'updRestAPIId'
+--
+-- * 'updResourceId'
+--
+-- * 'updHttpMethod'
+updateIntegration
+    :: Text -- ^ 'updRestAPIId'
+    -> Text -- ^ 'updResourceId'
+    -> Text -- ^ 'updHttpMethod'
+    -> UpdateIntegration
+updateIntegration pRestAPIId_ pResourceId_ pHttpMethod_ =
+    UpdateIntegration'
+    { _updPatchOperations = Nothing
+    , _updRestAPIId = pRestAPIId_
+    , _updResourceId = pResourceId_
+    , _updHttpMethod = pHttpMethod_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+updPatchOperations :: Lens' UpdateIntegration [PatchOperation]
+updPatchOperations = lens _updPatchOperations (\ s a -> s{_updPatchOperations = a}) . _Default . _Coerce;
+
+-- | Represents an update integration request\'s API identifier.
+updRestAPIId :: Lens' UpdateIntegration Text
+updRestAPIId = lens _updRestAPIId (\ s a -> s{_updRestAPIId = a});
+
+-- | Represents an update integration request\'s resource identifier.
+updResourceId :: Lens' UpdateIntegration Text
+updResourceId = lens _updResourceId (\ s a -> s{_updResourceId = a});
+
+-- | Represents an update integration request\'s HTTP method.
+updHttpMethod :: Lens' UpdateIntegration Text
+updHttpMethod = lens _updHttpMethod (\ s a -> s{_updHttpMethod = a});
+
+instance AWSRequest UpdateIntegration where
+        type Rs UpdateIntegration = Integration
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateIntegration where
+        toHeaders = const mempty
+
+instance ToJSON UpdateIntegration where
+        toJSON UpdateIntegration'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _updPatchOperations])
+
+instance ToPath UpdateIntegration where
+        toPath UpdateIntegration'{..}
+          = mconcat
+              ["/restapis/", toBS _updRestAPIId, "/resources/",
+               toBS _updResourceId, "/methods/",
+               toBS _updHttpMethod, "/integration"]
+
+instance ToQuery UpdateIntegration where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateIntegrationResponse.hs b/gen/Network/AWS/APIGateway/UpdateIntegrationResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateIntegrationResponse.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateIntegrationResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Represents an update integration response.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateIntegrationResponse.html AWS API Reference> for UpdateIntegrationResponse.
+module Network.AWS.APIGateway.UpdateIntegrationResponse
+    (
+    -- * Creating a Request
+      updateIntegrationResponse
+    , UpdateIntegrationResponse
+    -- * Request Lenses
+    , uiPatchOperations
+    , uiRestAPIId
+    , uiResourceId
+    , uiHttpMethod
+    , uiStatusCode
+
+    -- * Destructuring the Response
+    , integrationResponse
+    , IntegrationResponse
+    -- * Response Lenses
+    , iResponseTemplates
+    , iSelectionPattern
+    , iStatusCode
+    , iResponseParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents an update integration response request.
+--
+-- /See:/ 'updateIntegrationResponse' smart constructor.
+data UpdateIntegrationResponse = UpdateIntegrationResponse'
+    { _uiPatchOperations :: !(Maybe [PatchOperation])
+    , _uiRestAPIId       :: !Text
+    , _uiResourceId      :: !Text
+    , _uiHttpMethod      :: !Text
+    , _uiStatusCode      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateIntegrationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uiPatchOperations'
+--
+-- * 'uiRestAPIId'
+--
+-- * 'uiResourceId'
+--
+-- * 'uiHttpMethod'
+--
+-- * 'uiStatusCode'
+updateIntegrationResponse
+    :: Text -- ^ 'uiRestAPIId'
+    -> Text -- ^ 'uiResourceId'
+    -> Text -- ^ 'uiHttpMethod'
+    -> Text -- ^ 'uiStatusCode'
+    -> UpdateIntegrationResponse
+updateIntegrationResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    UpdateIntegrationResponse'
+    { _uiPatchOperations = Nothing
+    , _uiRestAPIId = pRestAPIId_
+    , _uiResourceId = pResourceId_
+    , _uiHttpMethod = pHttpMethod_
+    , _uiStatusCode = pStatusCode_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+uiPatchOperations :: Lens' UpdateIntegrationResponse [PatchOperation]
+uiPatchOperations = lens _uiPatchOperations (\ s a -> s{_uiPatchOperations = a}) . _Default . _Coerce;
+
+-- | Specifies an update integration response request\'s API identifier.
+uiRestAPIId :: Lens' UpdateIntegrationResponse Text
+uiRestAPIId = lens _uiRestAPIId (\ s a -> s{_uiRestAPIId = a});
+
+-- | Specifies an update integration response request\'s resource identifier.
+uiResourceId :: Lens' UpdateIntegrationResponse Text
+uiResourceId = lens _uiResourceId (\ s a -> s{_uiResourceId = a});
+
+-- | Specifies an update integration response request\'s HTTP method.
+uiHttpMethod :: Lens' UpdateIntegrationResponse Text
+uiHttpMethod = lens _uiHttpMethod (\ s a -> s{_uiHttpMethod = a});
+
+-- | Specifies an update integration response request\'s status code.
+uiStatusCode :: Lens' UpdateIntegrationResponse Text
+uiStatusCode = lens _uiStatusCode (\ s a -> s{_uiStatusCode = a});
+
+instance AWSRequest UpdateIntegrationResponse where
+        type Rs UpdateIntegrationResponse =
+             IntegrationResponse
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateIntegrationResponse where
+        toHeaders = const mempty
+
+instance ToJSON UpdateIntegrationResponse where
+        toJSON UpdateIntegrationResponse'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _uiPatchOperations])
+
+instance ToPath UpdateIntegrationResponse where
+        toPath UpdateIntegrationResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _uiRestAPIId, "/resources/",
+               toBS _uiResourceId, "/methods/", toBS _uiHttpMethod,
+               "/integration/responses/", toBS _uiStatusCode]
+
+instance ToQuery UpdateIntegrationResponse where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateMethod.hs b/gen/Network/AWS/APIGateway/UpdateMethod.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateMethod.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateMethod
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing Method resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateMethod.html AWS API Reference> for UpdateMethod.
+module Network.AWS.APIGateway.UpdateMethod
+    (
+    -- * Creating a Request
+      updateMethod
+    , UpdateMethod
+    -- * Request Lenses
+    , ummPatchOperations
+    , ummRestAPIId
+    , ummResourceId
+    , ummHttpMethod
+
+    -- * Destructuring the Response
+    , method
+    , Method
+    -- * Response Lenses
+    , mMethodResponses
+    , mHttpMethod
+    , mRequestModels
+    , mRequestParameters
+    , mAuthorizationType
+    , mApiKeyRequired
+    , mMethodIntegration
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to update an existing Method resource.
+--
+-- /See:/ 'updateMethod' smart constructor.
+data UpdateMethod = UpdateMethod'
+    { _ummPatchOperations :: !(Maybe [PatchOperation])
+    , _ummRestAPIId       :: !Text
+    , _ummResourceId      :: !Text
+    , _ummHttpMethod      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateMethod' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ummPatchOperations'
+--
+-- * 'ummRestAPIId'
+--
+-- * 'ummResourceId'
+--
+-- * 'ummHttpMethod'
+updateMethod
+    :: Text -- ^ 'ummRestAPIId'
+    -> Text -- ^ 'ummResourceId'
+    -> Text -- ^ 'ummHttpMethod'
+    -> UpdateMethod
+updateMethod pRestAPIId_ pResourceId_ pHttpMethod_ =
+    UpdateMethod'
+    { _ummPatchOperations = Nothing
+    , _ummRestAPIId = pRestAPIId_
+    , _ummResourceId = pResourceId_
+    , _ummHttpMethod = pHttpMethod_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+ummPatchOperations :: Lens' UpdateMethod [PatchOperation]
+ummPatchOperations = lens _ummPatchOperations (\ s a -> s{_ummPatchOperations = a}) . _Default . _Coerce;
+
+-- | The RestApi identifier for the Method resource.
+ummRestAPIId :: Lens' UpdateMethod Text
+ummRestAPIId = lens _ummRestAPIId (\ s a -> s{_ummRestAPIId = a});
+
+-- | The Resource identifier for the Method resource.
+ummResourceId :: Lens' UpdateMethod Text
+ummResourceId = lens _ummResourceId (\ s a -> s{_ummResourceId = a});
+
+-- | The HTTP verb that identifies the Method resource.
+ummHttpMethod :: Lens' UpdateMethod Text
+ummHttpMethod = lens _ummHttpMethod (\ s a -> s{_ummHttpMethod = a});
+
+instance AWSRequest UpdateMethod where
+        type Rs UpdateMethod = Method
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateMethod where
+        toHeaders = const mempty
+
+instance ToJSON UpdateMethod where
+        toJSON UpdateMethod'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _ummPatchOperations])
+
+instance ToPath UpdateMethod where
+        toPath UpdateMethod'{..}
+          = mconcat
+              ["/restapis/", toBS _ummRestAPIId, "/resources/",
+               toBS _ummResourceId, "/methods/",
+               toBS _ummHttpMethod]
+
+instance ToQuery UpdateMethod where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateMethodResponse.hs b/gen/Network/AWS/APIGateway/UpdateMethodResponse.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateMethodResponse.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateMethodResponse
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing MethodResponse resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateMethodResponse.html AWS API Reference> for UpdateMethodResponse.
+module Network.AWS.APIGateway.UpdateMethodResponse
+    (
+    -- * Creating a Request
+      updateMethodResponse
+    , UpdateMethodResponse
+    -- * Request Lenses
+    , umPatchOperations
+    , umRestAPIId
+    , umResourceId
+    , umHttpMethod
+    , umStatusCode
+
+    -- * Destructuring the Response
+    , methodResponse
+    , MethodResponse
+    -- * Response Lenses
+    , mResponseModels
+    , mStatusCode
+    , mResponseParameters
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | A request to update an existing MethodResponse resource.
+--
+-- /See:/ 'updateMethodResponse' smart constructor.
+data UpdateMethodResponse = UpdateMethodResponse'
+    { _umPatchOperations :: !(Maybe [PatchOperation])
+    , _umRestAPIId       :: !Text
+    , _umResourceId      :: !Text
+    , _umHttpMethod      :: !Text
+    , _umStatusCode      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateMethodResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umPatchOperations'
+--
+-- * 'umRestAPIId'
+--
+-- * 'umResourceId'
+--
+-- * 'umHttpMethod'
+--
+-- * 'umStatusCode'
+updateMethodResponse
+    :: Text -- ^ 'umRestAPIId'
+    -> Text -- ^ 'umResourceId'
+    -> Text -- ^ 'umHttpMethod'
+    -> Text -- ^ 'umStatusCode'
+    -> UpdateMethodResponse
+updateMethodResponse pRestAPIId_ pResourceId_ pHttpMethod_ pStatusCode_ =
+    UpdateMethodResponse'
+    { _umPatchOperations = Nothing
+    , _umRestAPIId = pRestAPIId_
+    , _umResourceId = pResourceId_
+    , _umHttpMethod = pHttpMethod_
+    , _umStatusCode = pStatusCode_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+umPatchOperations :: Lens' UpdateMethodResponse [PatchOperation]
+umPatchOperations = lens _umPatchOperations (\ s a -> s{_umPatchOperations = a}) . _Default . _Coerce;
+
+-- | The RestApi identifier for the MethodResponse resource.
+umRestAPIId :: Lens' UpdateMethodResponse Text
+umRestAPIId = lens _umRestAPIId (\ s a -> s{_umRestAPIId = a});
+
+-- | The Resource identifier for the MethodResponse resource.
+umResourceId :: Lens' UpdateMethodResponse Text
+umResourceId = lens _umResourceId (\ s a -> s{_umResourceId = a});
+
+-- | The HTTP verb identifier for the parent Method resource.
+umHttpMethod :: Lens' UpdateMethodResponse Text
+umHttpMethod = lens _umHttpMethod (\ s a -> s{_umHttpMethod = a});
+
+-- | The status code identifier for the MethodResponse resource.
+umStatusCode :: Lens' UpdateMethodResponse Text
+umStatusCode = lens _umStatusCode (\ s a -> s{_umStatusCode = a});
+
+instance AWSRequest UpdateMethodResponse where
+        type Rs UpdateMethodResponse = MethodResponse
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateMethodResponse where
+        toHeaders = const mempty
+
+instance ToJSON UpdateMethodResponse where
+        toJSON UpdateMethodResponse'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _umPatchOperations])
+
+instance ToPath UpdateMethodResponse where
+        toPath UpdateMethodResponse'{..}
+          = mconcat
+              ["/restapis/", toBS _umRestAPIId, "/resources/",
+               toBS _umResourceId, "/methods/", toBS _umHttpMethod,
+               "/responses/", toBS _umStatusCode]
+
+instance ToQuery UpdateMethodResponse where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateModel.hs b/gen/Network/AWS/APIGateway/UpdateModel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateModel.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateModel
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about a model.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateModel.html AWS API Reference> for UpdateModel.
+module Network.AWS.APIGateway.UpdateModel
+    (
+    -- * Creating a Request
+      updateModel
+    , UpdateModel
+    -- * Request Lenses
+    , uPatchOperations
+    , uRestAPIId
+    , uModelName
+
+    -- * Destructuring the Response
+    , model
+    , Model
+    -- * Response Lenses
+    , mSchema
+    , mName
+    , mId
+    , mDescription
+    , mContentType
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to update an existing model in an existing RestApi resource.
+--
+-- /See:/ 'updateModel' smart constructor.
+data UpdateModel = UpdateModel'
+    { _uPatchOperations :: !(Maybe [PatchOperation])
+    , _uRestAPIId       :: !Text
+    , _uModelName       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateModel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uPatchOperations'
+--
+-- * 'uRestAPIId'
+--
+-- * 'uModelName'
+updateModel
+    :: Text -- ^ 'uRestAPIId'
+    -> Text -- ^ 'uModelName'
+    -> UpdateModel
+updateModel pRestAPIId_ pModelName_ =
+    UpdateModel'
+    { _uPatchOperations = Nothing
+    , _uRestAPIId = pRestAPIId_
+    , _uModelName = pModelName_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+uPatchOperations :: Lens' UpdateModel [PatchOperation]
+uPatchOperations = lens _uPatchOperations (\ s a -> s{_uPatchOperations = a}) . _Default . _Coerce;
+
+-- | The RestApi identifier under which the model exists.
+uRestAPIId :: Lens' UpdateModel Text
+uRestAPIId = lens _uRestAPIId (\ s a -> s{_uRestAPIId = a});
+
+-- | The name of the model to update.
+uModelName :: Lens' UpdateModel Text
+uModelName = lens _uModelName (\ s a -> s{_uModelName = a});
+
+instance AWSRequest UpdateModel where
+        type Rs UpdateModel = Model
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateModel where
+        toHeaders = const mempty
+
+instance ToJSON UpdateModel where
+        toJSON UpdateModel'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _uPatchOperations])
+
+instance ToPath UpdateModel where
+        toPath UpdateModel'{..}
+          = mconcat
+              ["/restapis/", toBS _uRestAPIId, "/models/",
+               toBS _uModelName]
+
+instance ToQuery UpdateModel where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateResource.hs b/gen/Network/AWS/APIGateway/UpdateResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateResource.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateResource
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about a Resource resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateResource.html AWS API Reference> for UpdateResource.
+module Network.AWS.APIGateway.UpdateResource
+    (
+    -- * Creating a Request
+      updateResource
+    , UpdateResource
+    -- * Request Lenses
+    , urPatchOperations
+    , urRestAPIId
+    , urResourceId
+
+    -- * Destructuring the Response
+    , resource
+    , Resource
+    -- * Response Lenses
+    , rPathPart
+    , rPath
+    , rId
+    , rResourceMethods
+    , rParentId
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to change information about a Resource resource.
+--
+-- /See:/ 'updateResource' smart constructor.
+data UpdateResource = UpdateResource'
+    { _urPatchOperations :: !(Maybe [PatchOperation])
+    , _urRestAPIId       :: !Text
+    , _urResourceId      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urPatchOperations'
+--
+-- * 'urRestAPIId'
+--
+-- * 'urResourceId'
+updateResource
+    :: Text -- ^ 'urRestAPIId'
+    -> Text -- ^ 'urResourceId'
+    -> UpdateResource
+updateResource pRestAPIId_ pResourceId_ =
+    UpdateResource'
+    { _urPatchOperations = Nothing
+    , _urRestAPIId = pRestAPIId_
+    , _urResourceId = pResourceId_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+urPatchOperations :: Lens' UpdateResource [PatchOperation]
+urPatchOperations = lens _urPatchOperations (\ s a -> s{_urPatchOperations = a}) . _Default . _Coerce;
+
+-- | The RestApi identifier for the Resource resource.
+urRestAPIId :: Lens' UpdateResource Text
+urRestAPIId = lens _urRestAPIId (\ s a -> s{_urRestAPIId = a});
+
+-- | The identifier of the Resource resource.
+urResourceId :: Lens' UpdateResource Text
+urResourceId = lens _urResourceId (\ s a -> s{_urResourceId = a});
+
+instance AWSRequest UpdateResource where
+        type Rs UpdateResource = Resource
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateResource where
+        toHeaders = const mempty
+
+instance ToJSON UpdateResource where
+        toJSON UpdateResource'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _urPatchOperations])
+
+instance ToPath UpdateResource where
+        toPath UpdateResource'{..}
+          = mconcat
+              ["/restapis/", toBS _urRestAPIId, "/resources/",
+               toBS _urResourceId]
+
+instance ToQuery UpdateResource where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateRestAPI.hs b/gen/Network/AWS/APIGateway/UpdateRestAPI.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateRestAPI.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateRestAPI
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about the specified API.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateRestAPI.html AWS API Reference> for UpdateRestAPI.
+module Network.AWS.APIGateway.UpdateRestAPI
+    (
+    -- * Creating a Request
+      updateRestAPI
+    , UpdateRestAPI
+    -- * Request Lenses
+    , uraPatchOperations
+    , uraRestAPIId
+
+    -- * Destructuring the Response
+    , restAPI
+    , RestAPI
+    -- * Response Lenses
+    , raCreatedDate
+    , raName
+    , raId
+    , raDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Request to update an existing RestApi resource in your collection.
+--
+-- /See:/ 'updateRestAPI' smart constructor.
+data UpdateRestAPI = UpdateRestAPI'
+    { _uraPatchOperations :: !(Maybe [PatchOperation])
+    , _uraRestAPIId       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateRestAPI' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uraPatchOperations'
+--
+-- * 'uraRestAPIId'
+updateRestAPI
+    :: Text -- ^ 'uraRestAPIId'
+    -> UpdateRestAPI
+updateRestAPI pRestAPIId_ =
+    UpdateRestAPI'
+    { _uraPatchOperations = Nothing
+    , _uraRestAPIId = pRestAPIId_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+uraPatchOperations :: Lens' UpdateRestAPI [PatchOperation]
+uraPatchOperations = lens _uraPatchOperations (\ s a -> s{_uraPatchOperations = a}) . _Default . _Coerce;
+
+-- | The ID of the RestApi you want to update.
+uraRestAPIId :: Lens' UpdateRestAPI Text
+uraRestAPIId = lens _uraRestAPIId (\ s a -> s{_uraRestAPIId = a});
+
+instance AWSRequest UpdateRestAPI where
+        type Rs UpdateRestAPI = RestAPI
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateRestAPI where
+        toHeaders = const mempty
+
+instance ToJSON UpdateRestAPI where
+        toJSON UpdateRestAPI'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _uraPatchOperations])
+
+instance ToPath UpdateRestAPI where
+        toPath UpdateRestAPI'{..}
+          = mconcat ["/restapis/", toBS _uraRestAPIId]
+
+instance ToQuery UpdateRestAPI where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/UpdateStage.hs b/gen/Network/AWS/APIGateway/UpdateStage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/UpdateStage.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.UpdateStage
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes information about a Stage resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/apigateway/api-reference/resource/UpdateStage.html AWS API Reference> for UpdateStage.
+module Network.AWS.APIGateway.UpdateStage
+    (
+    -- * Creating a Request
+      updateStage
+    , UpdateStage
+    -- * Request Lenses
+    , usPatchOperations
+    , usRestAPIId
+    , usStageName
+
+    -- * Destructuring the Response
+    , stage
+    , Stage
+    -- * Response Lenses
+    , sDeploymentId
+    , sClientCertificateId
+    , sCreatedDate
+    , sCacheClusterStatus
+    , sMethodSettings
+    , sLastUpdatedDate
+    , sCacheClusterSize
+    , sCacheClusterEnabled
+    , sStageName
+    , sDescription
+    ) where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.APIGateway.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Requests Amazon API Gateway to change information about a Stage
+-- resource.
+--
+-- /See:/ 'updateStage' smart constructor.
+data UpdateStage = UpdateStage'
+    { _usPatchOperations :: !(Maybe [PatchOperation])
+    , _usRestAPIId       :: !Text
+    , _usStageName       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateStage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usPatchOperations'
+--
+-- * 'usRestAPIId'
+--
+-- * 'usStageName'
+updateStage
+    :: Text -- ^ 'usRestAPIId'
+    -> Text -- ^ 'usStageName'
+    -> UpdateStage
+updateStage pRestAPIId_ pStageName_ =
+    UpdateStage'
+    { _usPatchOperations = Nothing
+    , _usRestAPIId = pRestAPIId_
+    , _usStageName = pStageName_
+    }
+
+-- | A list of operations describing the updates to apply to the specified
+-- resource. The patches are applied in the order specified in the list.
+usPatchOperations :: Lens' UpdateStage [PatchOperation]
+usPatchOperations = lens _usPatchOperations (\ s a -> s{_usPatchOperations = a}) . _Default . _Coerce;
+
+-- | The identifier of the RestApi resource for the Stage resource to change
+-- information about.
+usRestAPIId :: Lens' UpdateStage Text
+usRestAPIId = lens _usRestAPIId (\ s a -> s{_usRestAPIId = a});
+
+-- | The name of the Stage resource to change information about.
+usStageName :: Lens' UpdateStage Text
+usStageName = lens _usStageName (\ s a -> s{_usStageName = a});
+
+instance AWSRequest UpdateStage where
+        type Rs UpdateStage = Stage
+        request = patchJSON aPIGateway
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateStage where
+        toHeaders = const mempty
+
+instance ToJSON UpdateStage where
+        toJSON UpdateStage'{..}
+          = object
+              (catMaybes
+                 [("patchOperations" .=) <$> _usPatchOperations])
+
+instance ToPath UpdateStage where
+        toPath UpdateStage'{..}
+          = mconcat
+              ["/restapis/", toBS _usRestAPIId, "/stages/",
+               toBS _usStageName]
+
+instance ToQuery UpdateStage where
+        toQuery = const mempty
diff --git a/gen/Network/AWS/APIGateway/Waiters.hs b/gen/Network/AWS/APIGateway/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/APIGateway/Waiters.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.APIGateway.Waiters
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.APIGateway.Waiters where
+
+import           Network.AWS.APIGateway.Types
+import           Network.AWS.Prelude
+import           Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Main (main) where
+
+import Test.Tasty
+import Test.AWS.APIGateway
+import Test.AWS.APIGateway.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "APIGateway"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/APIGateway.hs b/test/Test/AWS/APIGateway.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/APIGateway.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.APIGateway
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- 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 Test.AWS.APIGateway where
+
+import           Test.AWS.Prelude
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/APIGateway/Internal.hs b/test/Test/AWS/APIGateway/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/APIGateway/Internal.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.APIGateway.Internal
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- 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 Test.AWS.APIGateway.Internal where
+
+import           Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/APIGateway.hs b/test/Test/AWS/Gen/APIGateway.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/APIGateway.hs
@@ -0,0 +1,1245 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans        #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.AWS.Gen.APIGateway
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Test.AWS.Gen.APIGateway where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.APIGateway
+import Test.AWS.APIGateway.Internal
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ testGetResource $
+--             getResource
+--
+--         , testGetDeployments $
+--             getDeployments
+--
+--         , testGetDeployment $
+--             getDeployment
+--
+--         , testGetDomainNames $
+--             getDomainNames
+--
+--         , testGetClientCertificate $
+--             getClientCertificate
+--
+--         , testGetMethodResponse $
+--             getMethodResponse
+--
+--         , testGetModels $
+--             getModels
+--
+--         , testGetBasePathMapping $
+--             getBasePathMapping
+--
+--         , testPutMethodResponse $
+--             putMethodResponse
+--
+--         , testDeleteMethodResponse $
+--             deleteMethodResponse
+--
+--         , testUpdateMethodResponse $
+--             updateMethodResponse
+--
+--         , testDeleteStage $
+--             deleteStage
+--
+--         , testUpdateStage $
+--             updateStage
+--
+--         , testGetRestAPIs $
+--             getRestAPIs
+--
+--         , testCreateDeployment $
+--             createDeployment
+--
+--         , testCreateBasePathMapping $
+--             createBasePathMapping
+--
+--         , testGetIntegration $
+--             getIntegration
+--
+--         , testUpdateAccount $
+--             updateAccount
+--
+--         , testDeleteDeployment $
+--             deleteDeployment
+--
+--         , testUpdateDeployment $
+--             updateDeployment
+--
+--         , testDeleteResource $
+--             deleteResource
+--
+--         , testUpdateResource $
+--             updateResource
+--
+--         , testCreateModel $
+--             createModel
+--
+--         , testGetIntegrationResponse $
+--             getIntegrationResponse
+--
+--         , testCreateDomainName $
+--             createDomainName
+--
+--         , testDeleteModel $
+--             deleteModel
+--
+--         , testUpdateModel $
+--             updateModel
+--
+--         , testDeleteAPIKey $
+--             deleteAPIKey
+--
+--         , testUpdateAPIKey $
+--             updateAPIKey
+--
+--         , testGetRestAPI $
+--             getRestAPI
+--
+--         , testGetStages $
+--             getStages
+--
+--         , testGetMethod $
+--             getMethod
+--
+--         , testGetModel $
+--             getModel
+--
+--         , testUpdateRestAPI $
+--             updateRestAPI
+--
+--         , testDeleteRestAPI $
+--             deleteRestAPI
+--
+--         , testTestInvokeMethod $
+--             testInvokeMethod
+--
+--         , testGetDomainName $
+--             getDomainName
+--
+--         , testPutIntegrationResponse $
+--             putIntegrationResponse
+--
+--         , testFlushStageCache $
+--             flushStageCache
+--
+--         , testCreateRestAPI $
+--             createRestAPI
+--
+--         , testDeleteIntegrationResponse $
+--             deleteIntegrationResponse
+--
+--         , testUpdateIntegrationResponse $
+--             updateIntegrationResponse
+--
+--         , testDeleteIntegration $
+--             deleteIntegration
+--
+--         , testUpdateIntegration $
+--             updateIntegration
+--
+--         , testGenerateClientCertificate $
+--             generateClientCertificate
+--
+--         , testGetResources $
+--             getResources
+--
+--         , testGetAccount $
+--             getAccount
+--
+--         , testPutIntegration $
+--             putIntegration
+--
+--         , testGetStage $
+--             getStage
+--
+--         , testGetSDK $
+--             getSDK
+--
+--         , testGetAPIKeys $
+--             getAPIKeys
+--
+--         , testDeleteBasePathMapping $
+--             deleteBasePathMapping
+--
+--         , testUpdateBasePathMapping $
+--             updateBasePathMapping
+--
+--         , testDeleteClientCertificate $
+--             deleteClientCertificate
+--
+--         , testUpdateClientCertificate $
+--             updateClientCertificate
+--
+--         , testCreateStage $
+--             createStage
+--
+--         , testCreateAPIKey $
+--             createAPIKey
+--
+--         , testPutMethod $
+--             putMethod
+--
+--         , testUpdateDomainName $
+--             updateDomainName
+--
+--         , testDeleteDomainName $
+--             deleteDomainName
+--
+--         , testCreateResource $
+--             createResource
+--
+--         , testDeleteMethod $
+--             deleteMethod
+--
+--         , testUpdateMethod $
+--             updateMethod
+--
+--         , testGetClientCertificates $
+--             getClientCertificates
+--
+--         , testGetModelTemplate $
+--             getModelTemplate
+--
+--         , testGetBasePathMappings $
+--             getBasePathMappings
+--
+--         , testGetAPIKey $
+--             getAPIKey
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testGetResourceResponse $
+--             resource
+--
+--         , testGetDeploymentsResponse $
+--             getDeploymentsResponse
+--
+--         , testGetDeploymentResponse $
+--             deployment
+--
+--         , testGetDomainNamesResponse $
+--             getDomainNamesResponse
+--
+--         , testGetClientCertificateResponse $
+--             clientCertificate
+--
+--         , testGetMethodResponseResponse $
+--             methodResponse
+--
+--         , testGetModelsResponse $
+--             getModelsResponse
+--
+--         , testGetBasePathMappingResponse $
+--             basePathMapping
+--
+--         , testPutMethodResponseResponse $
+--             methodResponse
+--
+--         , testDeleteMethodResponseResponse $
+--             deleteMethodResponseResponse
+--
+--         , testUpdateMethodResponseResponse $
+--             methodResponse
+--
+--         , testDeleteStageResponse $
+--             deleteStageResponse
+--
+--         , testUpdateStageResponse $
+--             stage
+--
+--         , testGetRestAPIsResponse $
+--             getRestAPIsResponse
+--
+--         , testCreateDeploymentResponse $
+--             deployment
+--
+--         , testCreateBasePathMappingResponse $
+--             basePathMapping
+--
+--         , testGetIntegrationResponse $
+--             integration
+--
+--         , testUpdateAccountResponse $
+--             account
+--
+--         , testDeleteDeploymentResponse $
+--             deleteDeploymentResponse
+--
+--         , testUpdateDeploymentResponse $
+--             deployment
+--
+--         , testDeleteResourceResponse $
+--             deleteResourceResponse
+--
+--         , testUpdateResourceResponse $
+--             resource
+--
+--         , testCreateModelResponse $
+--             model
+--
+--         , testGetIntegrationResponseResponse $
+--             integrationResponse
+--
+--         , testCreateDomainNameResponse $
+--             domainName
+--
+--         , testDeleteModelResponse $
+--             deleteModelResponse
+--
+--         , testUpdateModelResponse $
+--             model
+--
+--         , testDeleteAPIKeyResponse $
+--             deleteAPIKeyResponse
+--
+--         , testUpdateAPIKeyResponse $
+--             apiKey
+--
+--         , testGetRestAPIResponse $
+--             restAPI
+--
+--         , testGetStagesResponse $
+--             getStagesResponse
+--
+--         , testGetMethodResponse $
+--             method
+--
+--         , testGetModelResponse $
+--             model
+--
+--         , testUpdateRestAPIResponse $
+--             restAPI
+--
+--         , testDeleteRestAPIResponse $
+--             deleteRestAPIResponse
+--
+--         , testTestInvokeMethodResponse $
+--             testInvokeMethodResponse
+--
+--         , testGetDomainNameResponse $
+--             domainName
+--
+--         , testPutIntegrationResponseResponse $
+--             integrationResponse
+--
+--         , testFlushStageCacheResponse $
+--             flushStageCacheResponse
+--
+--         , testCreateRestAPIResponse $
+--             restAPI
+--
+--         , testDeleteIntegrationResponseResponse $
+--             deleteIntegrationResponseResponse
+--
+--         , testUpdateIntegrationResponseResponse $
+--             integrationResponse
+--
+--         , testDeleteIntegrationResponse $
+--             deleteIntegrationResponse'
+--
+--         , testUpdateIntegrationResponse $
+--             integration
+--
+--         , testGenerateClientCertificateResponse $
+--             clientCertificate
+--
+--         , testGetResourcesResponse $
+--             getResourcesResponse
+--
+--         , testGetAccountResponse $
+--             account
+--
+--         , testPutIntegrationResponse $
+--             integration
+--
+--         , testGetStageResponse $
+--             stage
+--
+--         , testGetSDKResponse $
+--             getSDKResponse
+--
+--         , testGetAPIKeysResponse $
+--             getAPIKeysResponse
+--
+--         , testDeleteBasePathMappingResponse $
+--             deleteBasePathMappingResponse
+--
+--         , testUpdateBasePathMappingResponse $
+--             basePathMapping
+--
+--         , testDeleteClientCertificateResponse $
+--             deleteClientCertificateResponse
+--
+--         , testUpdateClientCertificateResponse $
+--             clientCertificate
+--
+--         , testCreateStageResponse $
+--             stage
+--
+--         , testCreateAPIKeyResponse $
+--             apiKey
+--
+--         , testPutMethodResponse $
+--             method
+--
+--         , testUpdateDomainNameResponse $
+--             domainName
+--
+--         , testDeleteDomainNameResponse $
+--             deleteDomainNameResponse
+--
+--         , testCreateResourceResponse $
+--             resource
+--
+--         , testDeleteMethodResponse $
+--             deleteMethodResponse'
+--
+--         , testUpdateMethodResponse $
+--             method
+--
+--         , testGetClientCertificatesResponse $
+--             getClientCertificatesResponse
+--
+--         , testGetModelTemplateResponse $
+--             getModelTemplateResponse
+--
+--         , testGetBasePathMappingsResponse $
+--             getBasePathMappingsResponse
+--
+--         , testGetAPIKeyResponse $
+--             apiKey
+--
+--           ]
+--     ]
+
+-- Requests
+
+testGetResource :: GetResource -> TestTree
+testGetResource = req
+    "GetResource"
+    "fixture/GetResource.yaml"
+
+testGetDeployments :: GetDeployments -> TestTree
+testGetDeployments = req
+    "GetDeployments"
+    "fixture/GetDeployments.yaml"
+
+testGetDeployment :: GetDeployment -> TestTree
+testGetDeployment = req
+    "GetDeployment"
+    "fixture/GetDeployment.yaml"
+
+testGetDomainNames :: GetDomainNames -> TestTree
+testGetDomainNames = req
+    "GetDomainNames"
+    "fixture/GetDomainNames.yaml"
+
+testGetClientCertificate :: GetClientCertificate -> TestTree
+testGetClientCertificate = req
+    "GetClientCertificate"
+    "fixture/GetClientCertificate.yaml"
+
+testGetMethodResponse :: GetMethodResponse -> TestTree
+testGetMethodResponse = req
+    "GetMethodResponse"
+    "fixture/GetMethodResponse.yaml"
+
+testGetModels :: GetModels -> TestTree
+testGetModels = req
+    "GetModels"
+    "fixture/GetModels.yaml"
+
+testGetBasePathMapping :: GetBasePathMapping -> TestTree
+testGetBasePathMapping = req
+    "GetBasePathMapping"
+    "fixture/GetBasePathMapping.yaml"
+
+testPutMethodResponse :: PutMethodResponse -> TestTree
+testPutMethodResponse = req
+    "PutMethodResponse"
+    "fixture/PutMethodResponse.yaml"
+
+testDeleteMethodResponse :: DeleteMethodResponse -> TestTree
+testDeleteMethodResponse = req
+    "DeleteMethodResponse"
+    "fixture/DeleteMethodResponse.yaml"
+
+testUpdateMethodResponse :: UpdateMethodResponse -> TestTree
+testUpdateMethodResponse = req
+    "UpdateMethodResponse"
+    "fixture/UpdateMethodResponse.yaml"
+
+testDeleteStage :: DeleteStage -> TestTree
+testDeleteStage = req
+    "DeleteStage"
+    "fixture/DeleteStage.yaml"
+
+testUpdateStage :: UpdateStage -> TestTree
+testUpdateStage = req
+    "UpdateStage"
+    "fixture/UpdateStage.yaml"
+
+testGetRestAPIs :: GetRestAPIs -> TestTree
+testGetRestAPIs = req
+    "GetRestAPIs"
+    "fixture/GetRestAPIs.yaml"
+
+testCreateDeployment :: CreateDeployment -> TestTree
+testCreateDeployment = req
+    "CreateDeployment"
+    "fixture/CreateDeployment.yaml"
+
+testCreateBasePathMapping :: CreateBasePathMapping -> TestTree
+testCreateBasePathMapping = req
+    "CreateBasePathMapping"
+    "fixture/CreateBasePathMapping.yaml"
+
+testGetIntegration :: GetIntegration -> TestTree
+testGetIntegration = req
+    "GetIntegration"
+    "fixture/GetIntegration.yaml"
+
+testUpdateAccount :: UpdateAccount -> TestTree
+testUpdateAccount = req
+    "UpdateAccount"
+    "fixture/UpdateAccount.yaml"
+
+testDeleteDeployment :: DeleteDeployment -> TestTree
+testDeleteDeployment = req
+    "DeleteDeployment"
+    "fixture/DeleteDeployment.yaml"
+
+testUpdateDeployment :: UpdateDeployment -> TestTree
+testUpdateDeployment = req
+    "UpdateDeployment"
+    "fixture/UpdateDeployment.yaml"
+
+testDeleteResource :: DeleteResource -> TestTree
+testDeleteResource = req
+    "DeleteResource"
+    "fixture/DeleteResource.yaml"
+
+testUpdateResource :: UpdateResource -> TestTree
+testUpdateResource = req
+    "UpdateResource"
+    "fixture/UpdateResource.yaml"
+
+testCreateModel :: CreateModel -> TestTree
+testCreateModel = req
+    "CreateModel"
+    "fixture/CreateModel.yaml"
+
+testGetIntegrationResponse :: GetIntegrationResponse -> TestTree
+testGetIntegrationResponse = req
+    "GetIntegrationResponse"
+    "fixture/GetIntegrationResponse.yaml"
+
+testCreateDomainName :: CreateDomainName -> TestTree
+testCreateDomainName = req
+    "CreateDomainName"
+    "fixture/CreateDomainName.yaml"
+
+testDeleteModel :: DeleteModel -> TestTree
+testDeleteModel = req
+    "DeleteModel"
+    "fixture/DeleteModel.yaml"
+
+testUpdateModel :: UpdateModel -> TestTree
+testUpdateModel = req
+    "UpdateModel"
+    "fixture/UpdateModel.yaml"
+
+testDeleteAPIKey :: DeleteAPIKey -> TestTree
+testDeleteAPIKey = req
+    "DeleteAPIKey"
+    "fixture/DeleteAPIKey.yaml"
+
+testUpdateAPIKey :: UpdateAPIKey -> TestTree
+testUpdateAPIKey = req
+    "UpdateAPIKey"
+    "fixture/UpdateAPIKey.yaml"
+
+testGetRestAPI :: GetRestAPI -> TestTree
+testGetRestAPI = req
+    "GetRestAPI"
+    "fixture/GetRestAPI.yaml"
+
+testGetStages :: GetStages -> TestTree
+testGetStages = req
+    "GetStages"
+    "fixture/GetStages.yaml"
+
+testGetMethod :: GetMethod -> TestTree
+testGetMethod = req
+    "GetMethod"
+    "fixture/GetMethod.yaml"
+
+testGetModel :: GetModel -> TestTree
+testGetModel = req
+    "GetModel"
+    "fixture/GetModel.yaml"
+
+testUpdateRestAPI :: UpdateRestAPI -> TestTree
+testUpdateRestAPI = req
+    "UpdateRestAPI"
+    "fixture/UpdateRestAPI.yaml"
+
+testDeleteRestAPI :: DeleteRestAPI -> TestTree
+testDeleteRestAPI = req
+    "DeleteRestAPI"
+    "fixture/DeleteRestAPI.yaml"
+
+testTestInvokeMethod :: TestInvokeMethod -> TestTree
+testTestInvokeMethod = req
+    "TestInvokeMethod"
+    "fixture/TestInvokeMethod.yaml"
+
+testGetDomainName :: GetDomainName -> TestTree
+testGetDomainName = req
+    "GetDomainName"
+    "fixture/GetDomainName.yaml"
+
+testPutIntegrationResponse :: PutIntegrationResponse -> TestTree
+testPutIntegrationResponse = req
+    "PutIntegrationResponse"
+    "fixture/PutIntegrationResponse.yaml"
+
+testFlushStageCache :: FlushStageCache -> TestTree
+testFlushStageCache = req
+    "FlushStageCache"
+    "fixture/FlushStageCache.yaml"
+
+testCreateRestAPI :: CreateRestAPI -> TestTree
+testCreateRestAPI = req
+    "CreateRestAPI"
+    "fixture/CreateRestAPI.yaml"
+
+testDeleteIntegrationResponse :: DeleteIntegrationResponse -> TestTree
+testDeleteIntegrationResponse = req
+    "DeleteIntegrationResponse"
+    "fixture/DeleteIntegrationResponse.yaml"
+
+testUpdateIntegrationResponse :: UpdateIntegrationResponse -> TestTree
+testUpdateIntegrationResponse = req
+    "UpdateIntegrationResponse"
+    "fixture/UpdateIntegrationResponse.yaml"
+
+testDeleteIntegration :: DeleteIntegration -> TestTree
+testDeleteIntegration = req
+    "DeleteIntegration"
+    "fixture/DeleteIntegration.yaml"
+
+testUpdateIntegration :: UpdateIntegration -> TestTree
+testUpdateIntegration = req
+    "UpdateIntegration"
+    "fixture/UpdateIntegration.yaml"
+
+testGenerateClientCertificate :: GenerateClientCertificate -> TestTree
+testGenerateClientCertificate = req
+    "GenerateClientCertificate"
+    "fixture/GenerateClientCertificate.yaml"
+
+testGetResources :: GetResources -> TestTree
+testGetResources = req
+    "GetResources"
+    "fixture/GetResources.yaml"
+
+testGetAccount :: GetAccount -> TestTree
+testGetAccount = req
+    "GetAccount"
+    "fixture/GetAccount.yaml"
+
+testPutIntegration :: PutIntegration -> TestTree
+testPutIntegration = req
+    "PutIntegration"
+    "fixture/PutIntegration.yaml"
+
+testGetStage :: GetStage -> TestTree
+testGetStage = req
+    "GetStage"
+    "fixture/GetStage.yaml"
+
+testGetSDK :: GetSDK -> TestTree
+testGetSDK = req
+    "GetSDK"
+    "fixture/GetSDK.yaml"
+
+testGetAPIKeys :: GetAPIKeys -> TestTree
+testGetAPIKeys = req
+    "GetAPIKeys"
+    "fixture/GetAPIKeys.yaml"
+
+testDeleteBasePathMapping :: DeleteBasePathMapping -> TestTree
+testDeleteBasePathMapping = req
+    "DeleteBasePathMapping"
+    "fixture/DeleteBasePathMapping.yaml"
+
+testUpdateBasePathMapping :: UpdateBasePathMapping -> TestTree
+testUpdateBasePathMapping = req
+    "UpdateBasePathMapping"
+    "fixture/UpdateBasePathMapping.yaml"
+
+testDeleteClientCertificate :: DeleteClientCertificate -> TestTree
+testDeleteClientCertificate = req
+    "DeleteClientCertificate"
+    "fixture/DeleteClientCertificate.yaml"
+
+testUpdateClientCertificate :: UpdateClientCertificate -> TestTree
+testUpdateClientCertificate = req
+    "UpdateClientCertificate"
+    "fixture/UpdateClientCertificate.yaml"
+
+testCreateStage :: CreateStage -> TestTree
+testCreateStage = req
+    "CreateStage"
+    "fixture/CreateStage.yaml"
+
+testCreateAPIKey :: CreateAPIKey -> TestTree
+testCreateAPIKey = req
+    "CreateAPIKey"
+    "fixture/CreateAPIKey.yaml"
+
+testPutMethod :: PutMethod -> TestTree
+testPutMethod = req
+    "PutMethod"
+    "fixture/PutMethod.yaml"
+
+testUpdateDomainName :: UpdateDomainName -> TestTree
+testUpdateDomainName = req
+    "UpdateDomainName"
+    "fixture/UpdateDomainName.yaml"
+
+testDeleteDomainName :: DeleteDomainName -> TestTree
+testDeleteDomainName = req
+    "DeleteDomainName"
+    "fixture/DeleteDomainName.yaml"
+
+testCreateResource :: CreateResource -> TestTree
+testCreateResource = req
+    "CreateResource"
+    "fixture/CreateResource.yaml"
+
+testDeleteMethod :: DeleteMethod -> TestTree
+testDeleteMethod = req
+    "DeleteMethod"
+    "fixture/DeleteMethod.yaml"
+
+testUpdateMethod :: UpdateMethod -> TestTree
+testUpdateMethod = req
+    "UpdateMethod"
+    "fixture/UpdateMethod.yaml"
+
+testGetClientCertificates :: GetClientCertificates -> TestTree
+testGetClientCertificates = req
+    "GetClientCertificates"
+    "fixture/GetClientCertificates.yaml"
+
+testGetModelTemplate :: GetModelTemplate -> TestTree
+testGetModelTemplate = req
+    "GetModelTemplate"
+    "fixture/GetModelTemplate.yaml"
+
+testGetBasePathMappings :: GetBasePathMappings -> TestTree
+testGetBasePathMappings = req
+    "GetBasePathMappings"
+    "fixture/GetBasePathMappings.yaml"
+
+testGetAPIKey :: GetAPIKey -> TestTree
+testGetAPIKey = req
+    "GetAPIKey"
+    "fixture/GetAPIKey.yaml"
+
+-- Responses
+
+testGetResourceResponse :: Resource -> TestTree
+testGetResourceResponse = res
+    "GetResourceResponse"
+    "fixture/GetResourceResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetResource)
+
+testGetDeploymentsResponse :: GetDeploymentsResponse -> TestTree
+testGetDeploymentsResponse = res
+    "GetDeploymentsResponse"
+    "fixture/GetDeploymentsResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetDeployments)
+
+testGetDeploymentResponse :: Deployment -> TestTree
+testGetDeploymentResponse = res
+    "GetDeploymentResponse"
+    "fixture/GetDeploymentResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetDeployment)
+
+testGetDomainNamesResponse :: GetDomainNamesResponse -> TestTree
+testGetDomainNamesResponse = res
+    "GetDomainNamesResponse"
+    "fixture/GetDomainNamesResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetDomainNames)
+
+testGetClientCertificateResponse :: ClientCertificate -> TestTree
+testGetClientCertificateResponse = res
+    "GetClientCertificateResponse"
+    "fixture/GetClientCertificateResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetClientCertificate)
+
+testGetMethodResponseResponse :: MethodResponse -> TestTree
+testGetMethodResponseResponse = res
+    "GetMethodResponseResponse"
+    "fixture/GetMethodResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetMethodResponse)
+
+testGetModelsResponse :: GetModelsResponse -> TestTree
+testGetModelsResponse = res
+    "GetModelsResponse"
+    "fixture/GetModelsResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetModels)
+
+testGetBasePathMappingResponse :: BasePathMapping -> TestTree
+testGetBasePathMappingResponse = res
+    "GetBasePathMappingResponse"
+    "fixture/GetBasePathMappingResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetBasePathMapping)
+
+testPutMethodResponseResponse :: MethodResponse -> TestTree
+testPutMethodResponseResponse = res
+    "PutMethodResponseResponse"
+    "fixture/PutMethodResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy PutMethodResponse)
+
+testDeleteMethodResponseResponse :: DeleteMethodResponseResponse -> TestTree
+testDeleteMethodResponseResponse = res
+    "DeleteMethodResponseResponse"
+    "fixture/DeleteMethodResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteMethodResponse)
+
+testUpdateMethodResponseResponse :: MethodResponse -> TestTree
+testUpdateMethodResponseResponse = res
+    "UpdateMethodResponseResponse"
+    "fixture/UpdateMethodResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateMethodResponse)
+
+testDeleteStageResponse :: DeleteStageResponse -> TestTree
+testDeleteStageResponse = res
+    "DeleteStageResponse"
+    "fixture/DeleteStageResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteStage)
+
+testUpdateStageResponse :: Stage -> TestTree
+testUpdateStageResponse = res
+    "UpdateStageResponse"
+    "fixture/UpdateStageResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateStage)
+
+testGetRestAPIsResponse :: GetRestAPIsResponse -> TestTree
+testGetRestAPIsResponse = res
+    "GetRestAPIsResponse"
+    "fixture/GetRestAPIsResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetRestAPIs)
+
+testCreateDeploymentResponse :: Deployment -> TestTree
+testCreateDeploymentResponse = res
+    "CreateDeploymentResponse"
+    "fixture/CreateDeploymentResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateDeployment)
+
+testCreateBasePathMappingResponse :: BasePathMapping -> TestTree
+testCreateBasePathMappingResponse = res
+    "CreateBasePathMappingResponse"
+    "fixture/CreateBasePathMappingResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateBasePathMapping)
+
+testGetIntegrationResponse :: Integration -> TestTree
+testGetIntegrationResponse = res
+    "GetIntegrationResponse"
+    "fixture/GetIntegrationResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetIntegration)
+
+testUpdateAccountResponse :: Account -> TestTree
+testUpdateAccountResponse = res
+    "UpdateAccountResponse"
+    "fixture/UpdateAccountResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateAccount)
+
+testDeleteDeploymentResponse :: DeleteDeploymentResponse -> TestTree
+testDeleteDeploymentResponse = res
+    "DeleteDeploymentResponse"
+    "fixture/DeleteDeploymentResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteDeployment)
+
+testUpdateDeploymentResponse :: Deployment -> TestTree
+testUpdateDeploymentResponse = res
+    "UpdateDeploymentResponse"
+    "fixture/UpdateDeploymentResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateDeployment)
+
+testDeleteResourceResponse :: DeleteResourceResponse -> TestTree
+testDeleteResourceResponse = res
+    "DeleteResourceResponse"
+    "fixture/DeleteResourceResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteResource)
+
+testUpdateResourceResponse :: Resource -> TestTree
+testUpdateResourceResponse = res
+    "UpdateResourceResponse"
+    "fixture/UpdateResourceResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateResource)
+
+testCreateModelResponse :: Model -> TestTree
+testCreateModelResponse = res
+    "CreateModelResponse"
+    "fixture/CreateModelResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateModel)
+
+testGetIntegrationResponseResponse :: IntegrationResponse -> TestTree
+testGetIntegrationResponseResponse = res
+    "GetIntegrationResponseResponse"
+    "fixture/GetIntegrationResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetIntegrationResponse)
+
+testCreateDomainNameResponse :: DomainName -> TestTree
+testCreateDomainNameResponse = res
+    "CreateDomainNameResponse"
+    "fixture/CreateDomainNameResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateDomainName)
+
+testDeleteModelResponse :: DeleteModelResponse -> TestTree
+testDeleteModelResponse = res
+    "DeleteModelResponse"
+    "fixture/DeleteModelResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteModel)
+
+testUpdateModelResponse :: Model -> TestTree
+testUpdateModelResponse = res
+    "UpdateModelResponse"
+    "fixture/UpdateModelResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateModel)
+
+testDeleteAPIKeyResponse :: DeleteAPIKeyResponse -> TestTree
+testDeleteAPIKeyResponse = res
+    "DeleteAPIKeyResponse"
+    "fixture/DeleteAPIKeyResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteAPIKey)
+
+testUpdateAPIKeyResponse :: APIKey -> TestTree
+testUpdateAPIKeyResponse = res
+    "UpdateAPIKeyResponse"
+    "fixture/UpdateAPIKeyResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateAPIKey)
+
+testGetRestAPIResponse :: RestAPI -> TestTree
+testGetRestAPIResponse = res
+    "GetRestAPIResponse"
+    "fixture/GetRestAPIResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetRestAPI)
+
+testGetStagesResponse :: GetStagesResponse -> TestTree
+testGetStagesResponse = res
+    "GetStagesResponse"
+    "fixture/GetStagesResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetStages)
+
+testGetMethodResponse :: Method -> TestTree
+testGetMethodResponse = res
+    "GetMethodResponse"
+    "fixture/GetMethodResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetMethod)
+
+testGetModelResponse :: Model -> TestTree
+testGetModelResponse = res
+    "GetModelResponse"
+    "fixture/GetModelResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetModel)
+
+testUpdateRestAPIResponse :: RestAPI -> TestTree
+testUpdateRestAPIResponse = res
+    "UpdateRestAPIResponse"
+    "fixture/UpdateRestAPIResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateRestAPI)
+
+testDeleteRestAPIResponse :: DeleteRestAPIResponse -> TestTree
+testDeleteRestAPIResponse = res
+    "DeleteRestAPIResponse"
+    "fixture/DeleteRestAPIResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteRestAPI)
+
+testTestInvokeMethodResponse :: TestInvokeMethodResponse -> TestTree
+testTestInvokeMethodResponse = res
+    "TestInvokeMethodResponse"
+    "fixture/TestInvokeMethodResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy TestInvokeMethod)
+
+testGetDomainNameResponse :: DomainName -> TestTree
+testGetDomainNameResponse = res
+    "GetDomainNameResponse"
+    "fixture/GetDomainNameResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetDomainName)
+
+testPutIntegrationResponseResponse :: IntegrationResponse -> TestTree
+testPutIntegrationResponseResponse = res
+    "PutIntegrationResponseResponse"
+    "fixture/PutIntegrationResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy PutIntegrationResponse)
+
+testFlushStageCacheResponse :: FlushStageCacheResponse -> TestTree
+testFlushStageCacheResponse = res
+    "FlushStageCacheResponse"
+    "fixture/FlushStageCacheResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy FlushStageCache)
+
+testCreateRestAPIResponse :: RestAPI -> TestTree
+testCreateRestAPIResponse = res
+    "CreateRestAPIResponse"
+    "fixture/CreateRestAPIResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateRestAPI)
+
+testDeleteIntegrationResponseResponse :: DeleteIntegrationResponseResponse -> TestTree
+testDeleteIntegrationResponseResponse = res
+    "DeleteIntegrationResponseResponse"
+    "fixture/DeleteIntegrationResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteIntegrationResponse)
+
+testUpdateIntegrationResponseResponse :: IntegrationResponse -> TestTree
+testUpdateIntegrationResponseResponse = res
+    "UpdateIntegrationResponseResponse"
+    "fixture/UpdateIntegrationResponseResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateIntegrationResponse)
+
+testDeleteIntegrationResponse :: DeleteIntegrationResponse' -> TestTree
+testDeleteIntegrationResponse = res
+    "DeleteIntegrationResponse"
+    "fixture/DeleteIntegrationResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteIntegration)
+
+testUpdateIntegrationResponse :: Integration -> TestTree
+testUpdateIntegrationResponse = res
+    "UpdateIntegrationResponse"
+    "fixture/UpdateIntegrationResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateIntegration)
+
+testGenerateClientCertificateResponse :: ClientCertificate -> TestTree
+testGenerateClientCertificateResponse = res
+    "GenerateClientCertificateResponse"
+    "fixture/GenerateClientCertificateResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GenerateClientCertificate)
+
+testGetResourcesResponse :: GetResourcesResponse -> TestTree
+testGetResourcesResponse = res
+    "GetResourcesResponse"
+    "fixture/GetResourcesResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetResources)
+
+testGetAccountResponse :: Account -> TestTree
+testGetAccountResponse = res
+    "GetAccountResponse"
+    "fixture/GetAccountResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetAccount)
+
+testPutIntegrationResponse :: Integration -> TestTree
+testPutIntegrationResponse = res
+    "PutIntegrationResponse"
+    "fixture/PutIntegrationResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy PutIntegration)
+
+testGetStageResponse :: Stage -> TestTree
+testGetStageResponse = res
+    "GetStageResponse"
+    "fixture/GetStageResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetStage)
+
+testGetSDKResponse :: GetSDKResponse -> TestTree
+testGetSDKResponse = res
+    "GetSDKResponse"
+    "fixture/GetSDKResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetSDK)
+
+testGetAPIKeysResponse :: GetAPIKeysResponse -> TestTree
+testGetAPIKeysResponse = res
+    "GetAPIKeysResponse"
+    "fixture/GetAPIKeysResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetAPIKeys)
+
+testDeleteBasePathMappingResponse :: DeleteBasePathMappingResponse -> TestTree
+testDeleteBasePathMappingResponse = res
+    "DeleteBasePathMappingResponse"
+    "fixture/DeleteBasePathMappingResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteBasePathMapping)
+
+testUpdateBasePathMappingResponse :: BasePathMapping -> TestTree
+testUpdateBasePathMappingResponse = res
+    "UpdateBasePathMappingResponse"
+    "fixture/UpdateBasePathMappingResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateBasePathMapping)
+
+testDeleteClientCertificateResponse :: DeleteClientCertificateResponse -> TestTree
+testDeleteClientCertificateResponse = res
+    "DeleteClientCertificateResponse"
+    "fixture/DeleteClientCertificateResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteClientCertificate)
+
+testUpdateClientCertificateResponse :: ClientCertificate -> TestTree
+testUpdateClientCertificateResponse = res
+    "UpdateClientCertificateResponse"
+    "fixture/UpdateClientCertificateResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateClientCertificate)
+
+testCreateStageResponse :: Stage -> TestTree
+testCreateStageResponse = res
+    "CreateStageResponse"
+    "fixture/CreateStageResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateStage)
+
+testCreateAPIKeyResponse :: APIKey -> TestTree
+testCreateAPIKeyResponse = res
+    "CreateAPIKeyResponse"
+    "fixture/CreateAPIKeyResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateAPIKey)
+
+testPutMethodResponse :: Method -> TestTree
+testPutMethodResponse = res
+    "PutMethodResponse"
+    "fixture/PutMethodResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy PutMethod)
+
+testUpdateDomainNameResponse :: DomainName -> TestTree
+testUpdateDomainNameResponse = res
+    "UpdateDomainNameResponse"
+    "fixture/UpdateDomainNameResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateDomainName)
+
+testDeleteDomainNameResponse :: DeleteDomainNameResponse -> TestTree
+testDeleteDomainNameResponse = res
+    "DeleteDomainNameResponse"
+    "fixture/DeleteDomainNameResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteDomainName)
+
+testCreateResourceResponse :: Resource -> TestTree
+testCreateResourceResponse = res
+    "CreateResourceResponse"
+    "fixture/CreateResourceResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy CreateResource)
+
+testDeleteMethodResponse :: DeleteMethodResponse' -> TestTree
+testDeleteMethodResponse = res
+    "DeleteMethodResponse"
+    "fixture/DeleteMethodResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy DeleteMethod)
+
+testUpdateMethodResponse :: Method -> TestTree
+testUpdateMethodResponse = res
+    "UpdateMethodResponse"
+    "fixture/UpdateMethodResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy UpdateMethod)
+
+testGetClientCertificatesResponse :: GetClientCertificatesResponse -> TestTree
+testGetClientCertificatesResponse = res
+    "GetClientCertificatesResponse"
+    "fixture/GetClientCertificatesResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetClientCertificates)
+
+testGetModelTemplateResponse :: GetModelTemplateResponse -> TestTree
+testGetModelTemplateResponse = res
+    "GetModelTemplateResponse"
+    "fixture/GetModelTemplateResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetModelTemplate)
+
+testGetBasePathMappingsResponse :: GetBasePathMappingsResponse -> TestTree
+testGetBasePathMappingsResponse = res
+    "GetBasePathMappingsResponse"
+    "fixture/GetBasePathMappingsResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetBasePathMappings)
+
+testGetAPIKeyResponse :: APIKey -> TestTree
+testGetAPIKeyResponse = res
+    "GetAPIKeyResponse"
+    "fixture/GetAPIKeyResponse.proto"
+    aPIGateway
+    (Proxy :: Proxy GetAPIKey)
