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,47 @@
+# Amazon Inspector SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`1.3.3`
+
+
+## Description
+
+Amazon Inspector
+
+Amazon Inspector enables you to analyze the behavior of the applications
+you run in AWS and to identify potential security issues. For more
+information, see
+<https://docs.aws.amazon.com/inspector/latest/userguide/inspector_introduction.html Amazon Inspector User Guide>.
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-inspector)
+and the [AWS API Reference](http://docs.aws.amazon.com/inspector/latest/APIReference/Welcome.html).
+
+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-inspector` 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-inspector.cabal b/amazonka-inspector.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-inspector.cabal
@@ -0,0 +1,123 @@
+name:                  amazonka-inspector
+version:               1.3.3
+synopsis:              Amazon Inspector 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 Inspector
+
+    Amazon Inspector enables you to analyze the behavior of the applications
+    you run in AWS and to identify potential security issues. For more
+    information, see
+    <https://docs.aws.amazon.com/inspector/latest/userguide/inspector_introduction.html Amazon Inspector User Guide>.
+    .
+    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.Inspector" and the <http://docs.aws.amazon.com/inspector/latest/APIReference/Welcome.html 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.Inspector
+        , Network.AWS.Inspector.AddAttributesToFindings
+        , Network.AWS.Inspector.AttachAssessmentAndRulesPackage
+        , Network.AWS.Inspector.CreateApplication
+        , Network.AWS.Inspector.CreateAssessment
+        , Network.AWS.Inspector.CreateResourceGroup
+        , Network.AWS.Inspector.DeleteApplication
+        , Network.AWS.Inspector.DeleteAssessment
+        , Network.AWS.Inspector.DeleteRun
+        , Network.AWS.Inspector.DescribeApplication
+        , Network.AWS.Inspector.DescribeAssessment
+        , Network.AWS.Inspector.DescribeCrossAccountAccessRole
+        , Network.AWS.Inspector.DescribeFinding
+        , Network.AWS.Inspector.DescribeResourceGroup
+        , Network.AWS.Inspector.DescribeRulesPackage
+        , Network.AWS.Inspector.DescribeRun
+        , Network.AWS.Inspector.DetachAssessmentAndRulesPackage
+        , Network.AWS.Inspector.GetAssessmentTelemetry
+        , Network.AWS.Inspector.ListApplications
+        , Network.AWS.Inspector.ListAssessmentAgents
+        , Network.AWS.Inspector.ListAssessments
+        , Network.AWS.Inspector.ListAttachedAssessments
+        , Network.AWS.Inspector.ListAttachedRulesPackages
+        , Network.AWS.Inspector.ListFindings
+        , Network.AWS.Inspector.ListRulesPackages
+        , Network.AWS.Inspector.ListRuns
+        , Network.AWS.Inspector.ListTagsForResource
+        , Network.AWS.Inspector.LocalizeText
+        , Network.AWS.Inspector.PreviewAgentsForResourceGroup
+        , Network.AWS.Inspector.RegisterCrossAccountAccessRole
+        , Network.AWS.Inspector.RemoveAttributesFromFindings
+        , Network.AWS.Inspector.RunAssessment
+        , Network.AWS.Inspector.SetTagsForResource
+        , Network.AWS.Inspector.StartDataCollection
+        , Network.AWS.Inspector.StopDataCollection
+        , Network.AWS.Inspector.Types
+        , Network.AWS.Inspector.UpdateApplication
+        , Network.AWS.Inspector.UpdateAssessment
+        , Network.AWS.Inspector.Waiters
+
+    other-modules:
+          Network.AWS.Inspector.Types.Product
+        , Network.AWS.Inspector.Types.Sum
+
+    build-depends:
+          amazonka-core == 1.3.3.*
+        , base          >= 4.7     && < 5
+
+test-suite amazonka-inspector-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.Inspector
+        , Test.AWS.Gen.Inspector
+        , Test.AWS.Inspector.Internal
+
+    build-depends:
+          amazonka-core == 1.3.3.*
+        , amazonka-test == 1.3.3.*
+        , amazonka-inspector == 1.3.3.*
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/fixture/AddAttributesToFindings.yaml b/fixture/AddAttributesToFindings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AddAttributesToFindings.yaml
diff --git a/fixture/AddAttributesToFindingsResponse.proto b/fixture/AddAttributesToFindingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AddAttributesToFindingsResponse.proto
diff --git a/fixture/AttachAssessmentAndRulesPackage.yaml b/fixture/AttachAssessmentAndRulesPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/AttachAssessmentAndRulesPackage.yaml
diff --git a/fixture/AttachAssessmentAndRulesPackageResponse.proto b/fixture/AttachAssessmentAndRulesPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/AttachAssessmentAndRulesPackageResponse.proto
diff --git a/fixture/CreateApplication.yaml b/fixture/CreateApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateApplication.yaml
diff --git a/fixture/CreateApplicationResponse.proto b/fixture/CreateApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateApplicationResponse.proto
diff --git a/fixture/CreateAssessment.yaml b/fixture/CreateAssessment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAssessment.yaml
diff --git a/fixture/CreateAssessmentResponse.proto b/fixture/CreateAssessmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAssessmentResponse.proto
diff --git a/fixture/CreateResourceGroup.yaml b/fixture/CreateResourceGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResourceGroup.yaml
diff --git a/fixture/CreateResourceGroupResponse.proto b/fixture/CreateResourceGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResourceGroupResponse.proto
diff --git a/fixture/DeleteApplication.yaml b/fixture/DeleteApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApplication.yaml
diff --git a/fixture/DeleteApplicationResponse.proto b/fixture/DeleteApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteApplicationResponse.proto
diff --git a/fixture/DeleteAssessment.yaml b/fixture/DeleteAssessment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAssessment.yaml
diff --git a/fixture/DeleteAssessmentResponse.proto b/fixture/DeleteAssessmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAssessmentResponse.proto
diff --git a/fixture/DeleteRun.yaml b/fixture/DeleteRun.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRun.yaml
diff --git a/fixture/DeleteRunResponse.proto b/fixture/DeleteRunResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRunResponse.proto
diff --git a/fixture/DescribeApplication.yaml b/fixture/DescribeApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeApplication.yaml
diff --git a/fixture/DescribeApplicationResponse.proto b/fixture/DescribeApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeApplicationResponse.proto
diff --git a/fixture/DescribeAssessment.yaml b/fixture/DescribeAssessment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAssessment.yaml
diff --git a/fixture/DescribeAssessmentResponse.proto b/fixture/DescribeAssessmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAssessmentResponse.proto
diff --git a/fixture/DescribeCrossAccountAccessRole.yaml b/fixture/DescribeCrossAccountAccessRole.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCrossAccountAccessRole.yaml
diff --git a/fixture/DescribeCrossAccountAccessRoleResponse.proto b/fixture/DescribeCrossAccountAccessRoleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeCrossAccountAccessRoleResponse.proto
diff --git a/fixture/DescribeFinding.yaml b/fixture/DescribeFinding.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFinding.yaml
diff --git a/fixture/DescribeFindingResponse.proto b/fixture/DescribeFindingResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFindingResponse.proto
diff --git a/fixture/DescribeResourceGroup.yaml b/fixture/DescribeResourceGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeResourceGroup.yaml
diff --git a/fixture/DescribeResourceGroupResponse.proto b/fixture/DescribeResourceGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeResourceGroupResponse.proto
diff --git a/fixture/DescribeRulesPackage.yaml b/fixture/DescribeRulesPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRulesPackage.yaml
diff --git a/fixture/DescribeRulesPackageResponse.proto b/fixture/DescribeRulesPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRulesPackageResponse.proto
diff --git a/fixture/DescribeRun.yaml b/fixture/DescribeRun.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRun.yaml
diff --git a/fixture/DescribeRunResponse.proto b/fixture/DescribeRunResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeRunResponse.proto
diff --git a/fixture/DetachAssessmentAndRulesPackage.yaml b/fixture/DetachAssessmentAndRulesPackage.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DetachAssessmentAndRulesPackage.yaml
diff --git a/fixture/DetachAssessmentAndRulesPackageResponse.proto b/fixture/DetachAssessmentAndRulesPackageResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DetachAssessmentAndRulesPackageResponse.proto
diff --git a/fixture/GetAssessmentTelemetry.yaml b/fixture/GetAssessmentTelemetry.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAssessmentTelemetry.yaml
diff --git a/fixture/GetAssessmentTelemetryResponse.proto b/fixture/GetAssessmentTelemetryResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAssessmentTelemetryResponse.proto
diff --git a/fixture/ListApplications.yaml b/fixture/ListApplications.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplications.yaml
diff --git a/fixture/ListApplicationsResponse.proto b/fixture/ListApplicationsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListApplicationsResponse.proto
diff --git a/fixture/ListAssessmentAgents.yaml b/fixture/ListAssessmentAgents.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssessmentAgents.yaml
diff --git a/fixture/ListAssessmentAgentsResponse.proto b/fixture/ListAssessmentAgentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssessmentAgentsResponse.proto
diff --git a/fixture/ListAssessments.yaml b/fixture/ListAssessments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssessments.yaml
diff --git a/fixture/ListAssessmentsResponse.proto b/fixture/ListAssessmentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssessmentsResponse.proto
diff --git a/fixture/ListAttachedAssessments.yaml b/fixture/ListAttachedAssessments.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttachedAssessments.yaml
diff --git a/fixture/ListAttachedAssessmentsResponse.proto b/fixture/ListAttachedAssessmentsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttachedAssessmentsResponse.proto
diff --git a/fixture/ListAttachedRulesPackages.yaml b/fixture/ListAttachedRulesPackages.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttachedRulesPackages.yaml
diff --git a/fixture/ListAttachedRulesPackagesResponse.proto b/fixture/ListAttachedRulesPackagesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAttachedRulesPackagesResponse.proto
diff --git a/fixture/ListFindings.yaml b/fixture/ListFindings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFindings.yaml
diff --git a/fixture/ListFindingsResponse.proto b/fixture/ListFindingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFindingsResponse.proto
diff --git a/fixture/ListRulesPackages.yaml b/fixture/ListRulesPackages.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRulesPackages.yaml
diff --git a/fixture/ListRulesPackagesResponse.proto b/fixture/ListRulesPackagesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRulesPackagesResponse.proto
diff --git a/fixture/ListRuns.yaml b/fixture/ListRuns.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListRuns.yaml
diff --git a/fixture/ListRunsResponse.proto b/fixture/ListRunsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListRunsResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/LocalizeText.yaml b/fixture/LocalizeText.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/LocalizeText.yaml
diff --git a/fixture/LocalizeTextResponse.proto b/fixture/LocalizeTextResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/LocalizeTextResponse.proto
diff --git a/fixture/PreviewAgentsForResourceGroup.yaml b/fixture/PreviewAgentsForResourceGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PreviewAgentsForResourceGroup.yaml
diff --git a/fixture/PreviewAgentsForResourceGroupResponse.proto b/fixture/PreviewAgentsForResourceGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PreviewAgentsForResourceGroupResponse.proto
diff --git a/fixture/RegisterCrossAccountAccessRole.yaml b/fixture/RegisterCrossAccountAccessRole.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterCrossAccountAccessRole.yaml
diff --git a/fixture/RegisterCrossAccountAccessRoleResponse.proto b/fixture/RegisterCrossAccountAccessRoleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterCrossAccountAccessRoleResponse.proto
diff --git a/fixture/RemoveAttributesFromFindings.yaml b/fixture/RemoveAttributesFromFindings.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveAttributesFromFindings.yaml
diff --git a/fixture/RemoveAttributesFromFindingsResponse.proto b/fixture/RemoveAttributesFromFindingsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RemoveAttributesFromFindingsResponse.proto
diff --git a/fixture/RunAssessment.yaml b/fixture/RunAssessment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RunAssessment.yaml
diff --git a/fixture/RunAssessmentResponse.proto b/fixture/RunAssessmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RunAssessmentResponse.proto
diff --git a/fixture/SetTagsForResource.yaml b/fixture/SetTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SetTagsForResource.yaml
diff --git a/fixture/SetTagsForResourceResponse.proto b/fixture/SetTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SetTagsForResourceResponse.proto
diff --git a/fixture/StartDataCollection.yaml b/fixture/StartDataCollection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartDataCollection.yaml
diff --git a/fixture/StartDataCollectionResponse.proto b/fixture/StartDataCollectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartDataCollectionResponse.proto
diff --git a/fixture/StopDataCollection.yaml b/fixture/StopDataCollection.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopDataCollection.yaml
diff --git a/fixture/StopDataCollectionResponse.proto b/fixture/StopDataCollectionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopDataCollectionResponse.proto
diff --git a/fixture/UpdateApplication.yaml b/fixture/UpdateApplication.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateApplication.yaml
diff --git a/fixture/UpdateApplicationResponse.proto b/fixture/UpdateApplicationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateApplicationResponse.proto
diff --git a/fixture/UpdateAssessment.yaml b/fixture/UpdateAssessment.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAssessment.yaml
diff --git a/fixture/UpdateAssessmentResponse.proto b/fixture/UpdateAssessmentResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAssessmentResponse.proto
diff --git a/gen/Network/AWS/Inspector.hs b/gen/Network/AWS/Inspector.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector.hs
@@ -0,0 +1,406 @@
+{-# 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.Inspector
+-- 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 Inspector
+--
+-- Amazon Inspector enables you to analyze the behavior of the applications
+-- you run in AWS and to identify potential security issues. For more
+-- information, see
+-- <https://docs.aws.amazon.com/inspector/latest/userguide/inspector_introduction.html Amazon Inspector User Guide>.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/Welcome.html AWS API Reference>
+module Network.AWS.Inspector
+    (
+    -- * Service Configuration
+      inspector
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    , _AccessDeniedException
+
+    -- ** NoSuchEntityException
+    , _NoSuchEntityException
+
+    -- ** OperationInProgressException
+    , _OperationInProgressException
+
+    -- ** InvalidCrossAccountRoleException
+    , _InvalidCrossAccountRoleException
+
+    -- ** InvalidInputException
+    , _InvalidInputException
+
+    -- ** InternalException
+    , _InternalException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** ListFindings
+    , module Network.AWS.Inspector.ListFindings
+
+    -- ** DescribeRun
+    , module Network.AWS.Inspector.DescribeRun
+
+    -- ** DescribeApplication
+    , module Network.AWS.Inspector.DescribeApplication
+
+    -- ** RunAssessment
+    , module Network.AWS.Inspector.RunAssessment
+
+    -- ** ListTagsForResource
+    , module Network.AWS.Inspector.ListTagsForResource
+
+    -- ** SetTagsForResource
+    , module Network.AWS.Inspector.SetTagsForResource
+
+    -- ** DescribeCrossAccountAccessRole
+    , module Network.AWS.Inspector.DescribeCrossAccountAccessRole
+
+    -- ** ListAttachedAssessments
+    , module Network.AWS.Inspector.ListAttachedAssessments
+
+    -- ** DescribeFinding
+    , module Network.AWS.Inspector.DescribeFinding
+
+    -- ** DeleteRun
+    , module Network.AWS.Inspector.DeleteRun
+
+    -- ** ListRuns
+    , module Network.AWS.Inspector.ListRuns
+
+    -- ** DeleteApplication
+    , module Network.AWS.Inspector.DeleteApplication
+
+    -- ** UpdateApplication
+    , module Network.AWS.Inspector.UpdateApplication
+
+    -- ** StartDataCollection
+    , module Network.AWS.Inspector.StartDataCollection
+
+    -- ** LocalizeText
+    , module Network.AWS.Inspector.LocalizeText
+
+    -- ** RegisterCrossAccountAccessRole
+    , module Network.AWS.Inspector.RegisterCrossAccountAccessRole
+
+    -- ** CreateApplication
+    , module Network.AWS.Inspector.CreateApplication
+
+    -- ** CreateResourceGroup
+    , module Network.AWS.Inspector.CreateResourceGroup
+
+    -- ** ListAttachedRulesPackages
+    , module Network.AWS.Inspector.ListAttachedRulesPackages
+
+    -- ** DeleteAssessment
+    , module Network.AWS.Inspector.DeleteAssessment
+
+    -- ** UpdateAssessment
+    , module Network.AWS.Inspector.UpdateAssessment
+
+    -- ** GetAssessmentTelemetry
+    , module Network.AWS.Inspector.GetAssessmentTelemetry
+
+    -- ** ListAssessments
+    , module Network.AWS.Inspector.ListAssessments
+
+    -- ** DescribeRulesPackage
+    , module Network.AWS.Inspector.DescribeRulesPackage
+
+    -- ** CreateAssessment
+    , module Network.AWS.Inspector.CreateAssessment
+
+    -- ** DetachAssessmentAndRulesPackage
+    , module Network.AWS.Inspector.DetachAssessmentAndRulesPackage
+
+    -- ** DescribeResourceGroup
+    , module Network.AWS.Inspector.DescribeResourceGroup
+
+    -- ** ListApplications
+    , module Network.AWS.Inspector.ListApplications
+
+    -- ** DescribeAssessment
+    , module Network.AWS.Inspector.DescribeAssessment
+
+    -- ** AddAttributesToFindings
+    , module Network.AWS.Inspector.AddAttributesToFindings
+
+    -- ** StopDataCollection
+    , module Network.AWS.Inspector.StopDataCollection
+
+    -- ** PreviewAgentsForResourceGroup
+    , module Network.AWS.Inspector.PreviewAgentsForResourceGroup
+
+    -- ** ListAssessmentAgents
+    , module Network.AWS.Inspector.ListAssessmentAgents
+
+    -- ** ListRulesPackages
+    , module Network.AWS.Inspector.ListRulesPackages
+
+    -- ** RemoveAttributesFromFindings
+    , module Network.AWS.Inspector.RemoveAttributesFromFindings
+
+    -- ** AttachAssessmentAndRulesPackage
+    , module Network.AWS.Inspector.AttachAssessmentAndRulesPackage
+
+    -- * Types
+
+    -- ** Agent
+    , Agent
+    , agent
+    , aTelemetry
+    , aAutoScalingGroup
+    , aAgentHealthCode
+    , aAssessmentARN
+    , aAgentId
+    , aAccountId
+    , aAgentHealthDetails
+    , aAgentHealth
+
+    -- ** AgentPreview
+    , AgentPreview
+    , agentPreview
+    , apAutoScalingGroup
+    , apAgentId
+
+    -- ** AgentsFilter
+    , AgentsFilter
+    , agentsFilter
+    , afAgentHealthList
+
+    -- ** Application
+    , Application
+    , application
+    , aApplicationARN
+    , aResourceGroupARN
+    , aApplicationName
+
+    -- ** ApplicationsFilter
+    , ApplicationsFilter
+    , applicationsFilter
+    , afApplicationNamePatterns
+
+    -- ** Assessment
+    , Assessment
+    , assessment
+    , assDataCollected
+    , assApplicationARN
+    , assStartTime
+    , assAssessmentARN
+    , assUserAttributesForFindings
+    , assFailureMessage
+    , assAssessmentState
+    , assEndTime
+    , assDurationInSeconds
+    , assAssessmentName
+
+    -- ** AssessmentsFilter
+    , AssessmentsFilter
+    , assessmentsFilter
+    , afDataCollected
+    , afAssessmentStates
+    , afStartTimeRange
+    , afAssessmentNamePatterns
+    , afEndTimeRange
+    , afDurationRange
+
+    -- ** Attribute
+    , Attribute
+    , attribute
+    , aValue
+    , aKey
+
+    -- ** DurationRange
+    , DurationRange
+    , durationRange
+    , drMaximum
+    , drMinimum
+
+    -- ** Finding
+    , Finding
+    , finding
+    , fAutoScalingGroup
+    , fFinding
+    , fSeverity
+    , fUserAttributes
+    , fRuleName
+    , fAgentId
+    , fRunARN
+    , fAttributes
+    , fRulesPackageARN
+    , fFindingARN
+    , fDescription
+    , fRecommendation
+
+    -- ** FindingsFilter
+    , FindingsFilter
+    , findingsFilter
+    , ffRuleNames
+    , ffUserAttributes
+    , ffRulesPackageARNs
+    , ffAttributes
+    , ffSeverities
+
+    -- ** LocalizedText
+    , LocalizedText
+    , localizedText
+    , ltKey
+    , ltParameters
+
+    -- ** LocalizedTextKey
+    , LocalizedTextKey
+    , localizedTextKey
+    , ltkFacility
+    , ltkId
+
+    -- ** MessageTypeTelemetry
+    , MessageTypeTelemetry
+    , messageTypeTelemetry
+    , mttDataSize
+    , mttMessageType
+    , mttCount
+
+    -- ** Parameter
+    , Parameter
+    , parameter
+    , pValue
+    , pName
+
+    -- ** ResourceGroup
+    , ResourceGroup
+    , resourceGroup
+    , rgResourceGroupTags
+    , rgResourceGroupARN
+
+    -- ** RulesPackage
+    , RulesPackage
+    , rulesPackage
+    , rpVersion
+    , rpRulesPackageARN
+    , rpRulesPackageName
+    , rpDescription
+    , rpProvider
+
+    -- ** Run
+    , Run
+    , run
+    , runCreationTime
+    , runRulesPackages
+    , runAssessmentARN
+    , runRunState
+    , runRunName
+    , runCompletionTime
+    , runRunARN
+
+    -- ** RunsFilter
+    , RunsFilter
+    , runsFilter
+    , rfCreationTime
+    , rfRulesPackages
+    , rfRunStates
+    , rfRunNamePatterns
+    , rfCompletionTime
+
+    -- ** Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- ** Telemetry
+    , Telemetry
+    , telemetry
+    , tStatus
+    , tMessageTypeTelemetries
+
+    -- ** TimestampRange
+    , TimestampRange
+    , timestampRange
+    , trMaximum
+    , trMinimum
+    ) where
+
+import           Network.AWS.Inspector.AddAttributesToFindings
+import           Network.AWS.Inspector.AttachAssessmentAndRulesPackage
+import           Network.AWS.Inspector.CreateApplication
+import           Network.AWS.Inspector.CreateAssessment
+import           Network.AWS.Inspector.CreateResourceGroup
+import           Network.AWS.Inspector.DeleteApplication
+import           Network.AWS.Inspector.DeleteAssessment
+import           Network.AWS.Inspector.DeleteRun
+import           Network.AWS.Inspector.DescribeApplication
+import           Network.AWS.Inspector.DescribeAssessment
+import           Network.AWS.Inspector.DescribeCrossAccountAccessRole
+import           Network.AWS.Inspector.DescribeFinding
+import           Network.AWS.Inspector.DescribeResourceGroup
+import           Network.AWS.Inspector.DescribeRulesPackage
+import           Network.AWS.Inspector.DescribeRun
+import           Network.AWS.Inspector.DetachAssessmentAndRulesPackage
+import           Network.AWS.Inspector.GetAssessmentTelemetry
+import           Network.AWS.Inspector.ListApplications
+import           Network.AWS.Inspector.ListAssessmentAgents
+import           Network.AWS.Inspector.ListAssessments
+import           Network.AWS.Inspector.ListAttachedAssessments
+import           Network.AWS.Inspector.ListAttachedRulesPackages
+import           Network.AWS.Inspector.ListFindings
+import           Network.AWS.Inspector.ListRulesPackages
+import           Network.AWS.Inspector.ListRuns
+import           Network.AWS.Inspector.ListTagsForResource
+import           Network.AWS.Inspector.LocalizeText
+import           Network.AWS.Inspector.PreviewAgentsForResourceGroup
+import           Network.AWS.Inspector.RegisterCrossAccountAccessRole
+import           Network.AWS.Inspector.RemoveAttributesFromFindings
+import           Network.AWS.Inspector.RunAssessment
+import           Network.AWS.Inspector.SetTagsForResource
+import           Network.AWS.Inspector.StartDataCollection
+import           Network.AWS.Inspector.StopDataCollection
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.UpdateApplication
+import           Network.AWS.Inspector.UpdateAssessment
+import           Network.AWS.Inspector.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 'Inspector'.
+-}
+
+{- $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/Inspector/AddAttributesToFindings.hs b/gen/Network/AWS/Inspector/AddAttributesToFindings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/AddAttributesToFindings.hs
@@ -0,0 +1,138 @@
+{-# 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.Inspector.AddAttributesToFindings
+-- 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)
+--
+-- Assigns attributes (key and value pair) to the findings specified by the
+-- findings\' ARNs.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_AddAttributesToFindings.html AWS API Reference> for AddAttributesToFindings.
+module Network.AWS.Inspector.AddAttributesToFindings
+    (
+    -- * Creating a Request
+      addAttributesToFindings
+    , AddAttributesToFindings
+    -- * Request Lenses
+    , aatfFindingARNs
+    , aatfAttributes
+
+    -- * Destructuring the Response
+    , addAttributesToFindingsResponse
+    , AddAttributesToFindingsResponse
+    -- * Response Lenses
+    , aatfrsMessage
+    , aatfrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'addAttributesToFindings' smart constructor.
+data AddAttributesToFindings = AddAttributesToFindings'
+    { _aatfFindingARNs :: !(Maybe [Text])
+    , _aatfAttributes  :: !(Maybe [Attribute])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddAttributesToFindings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aatfFindingARNs'
+--
+-- * 'aatfAttributes'
+addAttributesToFindings
+    :: AddAttributesToFindings
+addAttributesToFindings =
+    AddAttributesToFindings'
+    { _aatfFindingARNs = Nothing
+    , _aatfAttributes = Nothing
+    }
+
+-- | The ARNs specifying the findings that you want to assign attributes to.
+aatfFindingARNs :: Lens' AddAttributesToFindings [Text]
+aatfFindingARNs = lens _aatfFindingARNs (\ s a -> s{_aatfFindingARNs = a}) . _Default . _Coerce;
+
+-- | The array of attributes that you want to assign to specified findings.
+aatfAttributes :: Lens' AddAttributesToFindings [Attribute]
+aatfAttributes = lens _aatfAttributes (\ s a -> s{_aatfAttributes = a}) . _Default . _Coerce;
+
+instance AWSRequest AddAttributesToFindings where
+        type Rs AddAttributesToFindings =
+             AddAttributesToFindingsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AddAttributesToFindingsResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders AddAttributesToFindings where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.AddAttributesToFindings" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON AddAttributesToFindings where
+        toJSON AddAttributesToFindings'{..}
+          = object
+              (catMaybes
+                 [("findingArns" .=) <$> _aatfFindingARNs,
+                  ("attributes" .=) <$> _aatfAttributes])
+
+instance ToPath AddAttributesToFindings where
+        toPath = const "/"
+
+instance ToQuery AddAttributesToFindings where
+        toQuery = const mempty
+
+-- | /See:/ 'addAttributesToFindingsResponse' smart constructor.
+data AddAttributesToFindingsResponse = AddAttributesToFindingsResponse'
+    { _aatfrsMessage        :: !(Maybe Text)
+    , _aatfrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddAttributesToFindingsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aatfrsMessage'
+--
+-- * 'aatfrsResponseStatus'
+addAttributesToFindingsResponse
+    :: Int -- ^ 'aatfrsResponseStatus'
+    -> AddAttributesToFindingsResponse
+addAttributesToFindingsResponse pResponseStatus_ =
+    AddAttributesToFindingsResponse'
+    { _aatfrsMessage = Nothing
+    , _aatfrsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+aatfrsMessage :: Lens' AddAttributesToFindingsResponse (Maybe Text)
+aatfrsMessage = lens _aatfrsMessage (\ s a -> s{_aatfrsMessage = a});
+
+-- | The response status code.
+aatfrsResponseStatus :: Lens' AddAttributesToFindingsResponse Int
+aatfrsResponseStatus = lens _aatfrsResponseStatus (\ s a -> s{_aatfrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/AttachAssessmentAndRulesPackage.hs b/gen/Network/AWS/Inspector/AttachAssessmentAndRulesPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/AttachAssessmentAndRulesPackage.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.Inspector.AttachAssessmentAndRulesPackage
+-- 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)
+--
+-- Attaches the rules package specified by the rules package ARN to the
+-- assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_AttachAssessmentAndRulesPackage.html AWS API Reference> for AttachAssessmentAndRulesPackage.
+module Network.AWS.Inspector.AttachAssessmentAndRulesPackage
+    (
+    -- * Creating a Request
+      attachAssessmentAndRulesPackage
+    , AttachAssessmentAndRulesPackage
+    -- * Request Lenses
+    , aaarpAssessmentARN
+    , aaarpRulesPackageARN
+
+    -- * Destructuring the Response
+    , attachAssessmentAndRulesPackageResponse
+    , AttachAssessmentAndRulesPackageResponse
+    -- * Response Lenses
+    , aaarprsMessage
+    , aaarprsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'attachAssessmentAndRulesPackage' smart constructor.
+data AttachAssessmentAndRulesPackage = AttachAssessmentAndRulesPackage'
+    { _aaarpAssessmentARN   :: !(Maybe Text)
+    , _aaarpRulesPackageARN :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachAssessmentAndRulesPackage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaarpAssessmentARN'
+--
+-- * 'aaarpRulesPackageARN'
+attachAssessmentAndRulesPackage
+    :: AttachAssessmentAndRulesPackage
+attachAssessmentAndRulesPackage =
+    AttachAssessmentAndRulesPackage'
+    { _aaarpAssessmentARN = Nothing
+    , _aaarpRulesPackageARN = Nothing
+    }
+
+-- | The ARN specifying the assessment to which you want to attach a rules
+-- package.
+aaarpAssessmentARN :: Lens' AttachAssessmentAndRulesPackage (Maybe Text)
+aaarpAssessmentARN = lens _aaarpAssessmentARN (\ s a -> s{_aaarpAssessmentARN = a});
+
+-- | The ARN specifying the rules package that you want to attach to the
+-- assessment.
+aaarpRulesPackageARN :: Lens' AttachAssessmentAndRulesPackage (Maybe Text)
+aaarpRulesPackageARN = lens _aaarpRulesPackageARN (\ s a -> s{_aaarpRulesPackageARN = a});
+
+instance AWSRequest AttachAssessmentAndRulesPackage
+         where
+        type Rs AttachAssessmentAndRulesPackage =
+             AttachAssessmentAndRulesPackageResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AttachAssessmentAndRulesPackageResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders AttachAssessmentAndRulesPackage
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.AttachAssessmentAndRulesPackage"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON AttachAssessmentAndRulesPackage where
+        toJSON AttachAssessmentAndRulesPackage'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _aaarpAssessmentARN,
+                  ("rulesPackageArn" .=) <$> _aaarpRulesPackageARN])
+
+instance ToPath AttachAssessmentAndRulesPackage where
+        toPath = const "/"
+
+instance ToQuery AttachAssessmentAndRulesPackage
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'attachAssessmentAndRulesPackageResponse' smart constructor.
+data AttachAssessmentAndRulesPackageResponse = AttachAssessmentAndRulesPackageResponse'
+    { _aaarprsMessage        :: !(Maybe Text)
+    , _aaarprsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachAssessmentAndRulesPackageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaarprsMessage'
+--
+-- * 'aaarprsResponseStatus'
+attachAssessmentAndRulesPackageResponse
+    :: Int -- ^ 'aaarprsResponseStatus'
+    -> AttachAssessmentAndRulesPackageResponse
+attachAssessmentAndRulesPackageResponse pResponseStatus_ =
+    AttachAssessmentAndRulesPackageResponse'
+    { _aaarprsMessage = Nothing
+    , _aaarprsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+aaarprsMessage :: Lens' AttachAssessmentAndRulesPackageResponse (Maybe Text)
+aaarprsMessage = lens _aaarprsMessage (\ s a -> s{_aaarprsMessage = a});
+
+-- | The response status code.
+aaarprsResponseStatus :: Lens' AttachAssessmentAndRulesPackageResponse Int
+aaarprsResponseStatus = lens _aaarprsResponseStatus (\ s a -> s{_aaarprsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/CreateApplication.hs b/gen/Network/AWS/Inspector/CreateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/CreateApplication.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.Inspector.CreateApplication
+-- 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 application using the resource group ARN generated by
+-- CreateResourceGroup. You can create up to 50 applications per AWS
+-- account. You can run up to 500 concurrent agents per AWS account. For
+-- more information, see
+-- <https://docs.aws.amazon.com/inspector/latest/userguide//inspector_applications.html Inspector Applications.>
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_CreateApplication.html AWS API Reference> for CreateApplication.
+module Network.AWS.Inspector.CreateApplication
+    (
+    -- * Creating a Request
+      createApplication
+    , CreateApplication
+    -- * Request Lenses
+    , caResourceGroupARN
+    , caApplicationName
+
+    -- * Destructuring the Response
+    , createApplicationResponse
+    , CreateApplicationResponse
+    -- * Response Lenses
+    , carsApplicationARN
+    , carsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'createApplication' smart constructor.
+data CreateApplication = CreateApplication'
+    { _caResourceGroupARN :: !(Maybe Text)
+    , _caApplicationName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateApplication' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'caResourceGroupARN'
+--
+-- * 'caApplicationName'
+createApplication
+    :: CreateApplication
+createApplication =
+    CreateApplication'
+    { _caResourceGroupARN = Nothing
+    , _caApplicationName = Nothing
+    }
+
+-- | The ARN specifying the resource group that is used to create the
+-- application.
+caResourceGroupARN :: Lens' CreateApplication (Maybe Text)
+caResourceGroupARN = lens _caResourceGroupARN (\ s a -> s{_caResourceGroupARN = a});
+
+-- | The user-defined name identifying the application that you want to
+-- create. The name must be unique within the AWS account.
+caApplicationName :: Lens' CreateApplication (Maybe Text)
+caApplicationName = lens _caApplicationName (\ s a -> s{_caApplicationName = a});
+
+instance AWSRequest CreateApplication where
+        type Rs CreateApplication = CreateApplicationResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateApplicationResponse' <$>
+                   (x .?> "applicationArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateApplication where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.CreateApplication" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateApplication where
+        toJSON CreateApplication'{..}
+          = object
+              (catMaybes
+                 [("resourceGroupArn" .=) <$> _caResourceGroupARN,
+                  ("applicationName" .=) <$> _caApplicationName])
+
+instance ToPath CreateApplication where
+        toPath = const "/"
+
+instance ToQuery CreateApplication where
+        toQuery = const mempty
+
+-- | /See:/ 'createApplicationResponse' smart constructor.
+data CreateApplicationResponse = CreateApplicationResponse'
+    { _carsApplicationARN :: !(Maybe Text)
+    , _carsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateApplicationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'carsApplicationARN'
+--
+-- * 'carsResponseStatus'
+createApplicationResponse
+    :: Int -- ^ 'carsResponseStatus'
+    -> CreateApplicationResponse
+createApplicationResponse pResponseStatus_ =
+    CreateApplicationResponse'
+    { _carsApplicationARN = Nothing
+    , _carsResponseStatus = pResponseStatus_
+    }
+
+-- | The ARN specifying the application that is created.
+carsApplicationARN :: Lens' CreateApplicationResponse (Maybe Text)
+carsApplicationARN = lens _carsApplicationARN (\ s a -> s{_carsApplicationARN = a});
+
+-- | The response status code.
+carsResponseStatus :: Lens' CreateApplicationResponse Int
+carsResponseStatus = lens _carsResponseStatus (\ s a -> s{_carsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/CreateAssessment.hs b/gen/Network/AWS/Inspector/CreateAssessment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/CreateAssessment.hs
@@ -0,0 +1,163 @@
+{-# 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.Inspector.CreateAssessment
+-- 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 an assessment for the application specified by the application
+-- ARN. You can create up to 500 assessments per AWS account.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_CreateAssessment.html AWS API Reference> for CreateAssessment.
+module Network.AWS.Inspector.CreateAssessment
+    (
+    -- * Creating a Request
+      createAssessment
+    , CreateAssessment
+    -- * Request Lenses
+    , caApplicationARN
+    , caUserAttributesForFindings
+    , caDurationInSeconds
+    , caAssessmentName
+
+    -- * Destructuring the Response
+    , createAssessmentResponse
+    , CreateAssessmentResponse
+    -- * Response Lenses
+    , crsAssessmentARN
+    , crsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'createAssessment' smart constructor.
+data CreateAssessment = CreateAssessment'
+    { _caApplicationARN            :: !(Maybe Text)
+    , _caUserAttributesForFindings :: !(Maybe [Attribute])
+    , _caDurationInSeconds         :: !(Maybe Int)
+    , _caAssessmentName            :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateAssessment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'caApplicationARN'
+--
+-- * 'caUserAttributesForFindings'
+--
+-- * 'caDurationInSeconds'
+--
+-- * 'caAssessmentName'
+createAssessment
+    :: CreateAssessment
+createAssessment =
+    CreateAssessment'
+    { _caApplicationARN = Nothing
+    , _caUserAttributesForFindings = Nothing
+    , _caDurationInSeconds = Nothing
+    , _caAssessmentName = Nothing
+    }
+
+-- | The ARN specifying the application for which you want to create an
+-- assessment.
+caApplicationARN :: Lens' CreateAssessment (Maybe Text)
+caApplicationARN = lens _caApplicationARN (\ s a -> s{_caApplicationARN = a});
+
+-- | The user-defined attributes that are assigned to every finding generated
+-- by running this assessment.
+caUserAttributesForFindings :: Lens' CreateAssessment [Attribute]
+caUserAttributesForFindings = lens _caUserAttributesForFindings (\ s a -> s{_caUserAttributesForFindings = a}) . _Default . _Coerce;
+
+-- | The duration of the assessment in seconds. The default value is 3600
+-- seconds (one hour). The maximum value is 86400 seconds (one day).
+caDurationInSeconds :: Lens' CreateAssessment (Maybe Int)
+caDurationInSeconds = lens _caDurationInSeconds (\ s a -> s{_caDurationInSeconds = a});
+
+-- | The user-defined name identifying the assessment that you want to
+-- create. You can create several assessments for an application. The names
+-- of the assessments corresponding to a particular application must be
+-- unique.
+caAssessmentName :: Lens' CreateAssessment (Maybe Text)
+caAssessmentName = lens _caAssessmentName (\ s a -> s{_caAssessmentName = a});
+
+instance AWSRequest CreateAssessment where
+        type Rs CreateAssessment = CreateAssessmentResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateAssessmentResponse' <$>
+                   (x .?> "assessmentArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateAssessment where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.CreateAssessment" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateAssessment where
+        toJSON CreateAssessment'{..}
+          = object
+              (catMaybes
+                 [("applicationArn" .=) <$> _caApplicationARN,
+                  ("userAttributesForFindings" .=) <$>
+                    _caUserAttributesForFindings,
+                  ("durationInSeconds" .=) <$> _caDurationInSeconds,
+                  ("assessmentName" .=) <$> _caAssessmentName])
+
+instance ToPath CreateAssessment where
+        toPath = const "/"
+
+instance ToQuery CreateAssessment where
+        toQuery = const mempty
+
+-- | /See:/ 'createAssessmentResponse' smart constructor.
+data CreateAssessmentResponse = CreateAssessmentResponse'
+    { _crsAssessmentARN  :: !(Maybe Text)
+    , _crsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateAssessmentResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsAssessmentARN'
+--
+-- * 'crsResponseStatus'
+createAssessmentResponse
+    :: Int -- ^ 'crsResponseStatus'
+    -> CreateAssessmentResponse
+createAssessmentResponse pResponseStatus_ =
+    CreateAssessmentResponse'
+    { _crsAssessmentARN = Nothing
+    , _crsResponseStatus = pResponseStatus_
+    }
+
+-- | The ARN specifying the assessment that is created.
+crsAssessmentARN :: Lens' CreateAssessmentResponse (Maybe Text)
+crsAssessmentARN = lens _crsAssessmentARN (\ s a -> s{_crsAssessmentARN = a});
+
+-- | The response status code.
+crsResponseStatus :: Lens' CreateAssessmentResponse Int
+crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/CreateResourceGroup.hs b/gen/Network/AWS/Inspector/CreateResourceGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/CreateResourceGroup.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.Inspector.CreateResourceGroup
+-- 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 group using the specified set of tags (key and value
+-- pairs) that are used to select the EC2 instances to be included in an
+-- Inspector application. The created resource group is then used to create
+-- an Inspector application.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_CreateResourceGroup.html AWS API Reference> for CreateResourceGroup.
+module Network.AWS.Inspector.CreateResourceGroup
+    (
+    -- * Creating a Request
+      createResourceGroup
+    , CreateResourceGroup
+    -- * Request Lenses
+    , crgResourceGroupTags
+
+    -- * Destructuring the Response
+    , createResourceGroupResponse
+    , CreateResourceGroupResponse
+    -- * Response Lenses
+    , crgrsResourceGroupARN
+    , crgrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'createResourceGroup' smart constructor.
+newtype CreateResourceGroup = CreateResourceGroup'
+    { _crgResourceGroupTags :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateResourceGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crgResourceGroupTags'
+createResourceGroup
+    :: CreateResourceGroup
+createResourceGroup =
+    CreateResourceGroup'
+    { _crgResourceGroupTags = Nothing
+    }
+
+-- | A collection of keys and an array of possible values in JSON format.
+--
+-- For example, [{ \"key1\" : [\"Value1\",\"Value2\"]},{\"Key2\":
+-- [\"Value3\"]}]
+crgResourceGroupTags :: Lens' CreateResourceGroup (Maybe Text)
+crgResourceGroupTags = lens _crgResourceGroupTags (\ s a -> s{_crgResourceGroupTags = a});
+
+instance AWSRequest CreateResourceGroup where
+        type Rs CreateResourceGroup =
+             CreateResourceGroupResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateResourceGroupResponse' <$>
+                   (x .?> "resourceGroupArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders CreateResourceGroup where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.CreateResourceGroup" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateResourceGroup where
+        toJSON CreateResourceGroup'{..}
+          = object
+              (catMaybes
+                 [("resourceGroupTags" .=) <$> _crgResourceGroupTags])
+
+instance ToPath CreateResourceGroup where
+        toPath = const "/"
+
+instance ToQuery CreateResourceGroup where
+        toQuery = const mempty
+
+-- | /See:/ 'createResourceGroupResponse' smart constructor.
+data CreateResourceGroupResponse = CreateResourceGroupResponse'
+    { _crgrsResourceGroupARN :: !(Maybe Text)
+    , _crgrsResponseStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateResourceGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crgrsResourceGroupARN'
+--
+-- * 'crgrsResponseStatus'
+createResourceGroupResponse
+    :: Int -- ^ 'crgrsResponseStatus'
+    -> CreateResourceGroupResponse
+createResourceGroupResponse pResponseStatus_ =
+    CreateResourceGroupResponse'
+    { _crgrsResourceGroupARN = Nothing
+    , _crgrsResponseStatus = pResponseStatus_
+    }
+
+-- | The ARN specifying the resource group that is created.
+crgrsResourceGroupARN :: Lens' CreateResourceGroupResponse (Maybe Text)
+crgrsResourceGroupARN = lens _crgrsResourceGroupARN (\ s a -> s{_crgrsResourceGroupARN = a});
+
+-- | The response status code.
+crgrsResponseStatus :: Lens' CreateResourceGroupResponse Int
+crgrsResponseStatus = lens _crgrsResponseStatus (\ s a -> s{_crgrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DeleteApplication.hs b/gen/Network/AWS/Inspector/DeleteApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DeleteApplication.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.Inspector.DeleteApplication
+-- 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 application specified by the application ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DeleteApplication.html AWS API Reference> for DeleteApplication.
+module Network.AWS.Inspector.DeleteApplication
+    (
+    -- * Creating a Request
+      deleteApplication
+    , DeleteApplication
+    -- * Request Lenses
+    , dApplicationARN
+
+    -- * Destructuring the Response
+    , deleteApplicationResponse
+    , DeleteApplicationResponse
+    -- * Response Lenses
+    , drsMessage
+    , drsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deleteApplication' smart constructor.
+newtype DeleteApplication = DeleteApplication'
+    { _dApplicationARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteApplication' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dApplicationARN'
+deleteApplication
+    :: DeleteApplication
+deleteApplication =
+    DeleteApplication'
+    { _dApplicationARN = Nothing
+    }
+
+-- | The ARN specifying the application that you want to delete.
+dApplicationARN :: Lens' DeleteApplication (Maybe Text)
+dApplicationARN = lens _dApplicationARN (\ s a -> s{_dApplicationARN = a});
+
+instance AWSRequest DeleteApplication where
+        type Rs DeleteApplication = DeleteApplicationResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteApplicationResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders DeleteApplication where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DeleteApplication" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteApplication where
+        toJSON DeleteApplication'{..}
+          = object
+              (catMaybes
+                 [("applicationArn" .=) <$> _dApplicationARN])
+
+instance ToPath DeleteApplication where
+        toPath = const "/"
+
+instance ToQuery DeleteApplication where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteApplicationResponse' smart constructor.
+data DeleteApplicationResponse = DeleteApplicationResponse'
+    { _drsMessage        :: !(Maybe Text)
+    , _drsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteApplicationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsMessage'
+--
+-- * 'drsResponseStatus'
+deleteApplicationResponse
+    :: Int -- ^ 'drsResponseStatus'
+    -> DeleteApplicationResponse
+deleteApplicationResponse pResponseStatus_ =
+    DeleteApplicationResponse'
+    { _drsMessage = Nothing
+    , _drsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+drsMessage :: Lens' DeleteApplicationResponse (Maybe Text)
+drsMessage = lens _drsMessage (\ s a -> s{_drsMessage = a});
+
+-- | The response status code.
+drsResponseStatus :: Lens' DeleteApplicationResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DeleteAssessment.hs b/gen/Network/AWS/Inspector/DeleteAssessment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DeleteAssessment.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.Inspector.DeleteAssessment
+-- 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 assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DeleteAssessment.html AWS API Reference> for DeleteAssessment.
+module Network.AWS.Inspector.DeleteAssessment
+    (
+    -- * Creating a Request
+      deleteAssessment
+    , DeleteAssessment
+    -- * Request Lenses
+    , daAssessmentARN
+
+    -- * Destructuring the Response
+    , deleteAssessmentResponse
+    , DeleteAssessmentResponse
+    -- * Response Lenses
+    , daarsMessage
+    , daarsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deleteAssessment' smart constructor.
+newtype DeleteAssessment = DeleteAssessment'
+    { _daAssessmentARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteAssessment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daAssessmentARN'
+deleteAssessment
+    :: DeleteAssessment
+deleteAssessment =
+    DeleteAssessment'
+    { _daAssessmentARN = Nothing
+    }
+
+-- | The ARN specifying the assessment that you want to delete.
+daAssessmentARN :: Lens' DeleteAssessment (Maybe Text)
+daAssessmentARN = lens _daAssessmentARN (\ s a -> s{_daAssessmentARN = a});
+
+instance AWSRequest DeleteAssessment where
+        type Rs DeleteAssessment = DeleteAssessmentResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteAssessmentResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders DeleteAssessment where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DeleteAssessment" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteAssessment where
+        toJSON DeleteAssessment'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _daAssessmentARN])
+
+instance ToPath DeleteAssessment where
+        toPath = const "/"
+
+instance ToQuery DeleteAssessment where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteAssessmentResponse' smart constructor.
+data DeleteAssessmentResponse = DeleteAssessmentResponse'
+    { _daarsMessage        :: !(Maybe Text)
+    , _daarsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteAssessmentResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daarsMessage'
+--
+-- * 'daarsResponseStatus'
+deleteAssessmentResponse
+    :: Int -- ^ 'daarsResponseStatus'
+    -> DeleteAssessmentResponse
+deleteAssessmentResponse pResponseStatus_ =
+    DeleteAssessmentResponse'
+    { _daarsMessage = Nothing
+    , _daarsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+daarsMessage :: Lens' DeleteAssessmentResponse (Maybe Text)
+daarsMessage = lens _daarsMessage (\ s a -> s{_daarsMessage = a});
+
+-- | The response status code.
+daarsResponseStatus :: Lens' DeleteAssessmentResponse Int
+daarsResponseStatus = lens _daarsResponseStatus (\ s a -> s{_daarsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DeleteRun.hs b/gen/Network/AWS/Inspector/DeleteRun.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DeleteRun.hs
@@ -0,0 +1,123 @@
+{-# 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.Inspector.DeleteRun
+-- 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 assessment run specified by the run ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DeleteRun.html AWS API Reference> for DeleteRun.
+module Network.AWS.Inspector.DeleteRun
+    (
+    -- * Creating a Request
+      deleteRun
+    , DeleteRun
+    -- * Request Lenses
+    , dRunARN
+
+    -- * Destructuring the Response
+    , deleteRunResponse
+    , DeleteRunResponse
+    -- * Response Lenses
+    , delrsMessage
+    , delrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deleteRun' smart constructor.
+newtype DeleteRun = DeleteRun'
+    { _dRunARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteRun' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dRunARN'
+deleteRun
+    :: DeleteRun
+deleteRun =
+    DeleteRun'
+    { _dRunARN = Nothing
+    }
+
+-- | The ARN specifying the assessment run that you want to delete.
+dRunARN :: Lens' DeleteRun (Maybe Text)
+dRunARN = lens _dRunARN (\ s a -> s{_dRunARN = a});
+
+instance AWSRequest DeleteRun where
+        type Rs DeleteRun = DeleteRunResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteRunResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders DeleteRun where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DeleteRun" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteRun where
+        toJSON DeleteRun'{..}
+          = object (catMaybes [("runArn" .=) <$> _dRunARN])
+
+instance ToPath DeleteRun where
+        toPath = const "/"
+
+instance ToQuery DeleteRun where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteRunResponse' smart constructor.
+data DeleteRunResponse = DeleteRunResponse'
+    { _delrsMessage        :: !(Maybe Text)
+    , _delrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteRunResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delrsMessage'
+--
+-- * 'delrsResponseStatus'
+deleteRunResponse
+    :: Int -- ^ 'delrsResponseStatus'
+    -> DeleteRunResponse
+deleteRunResponse pResponseStatus_ =
+    DeleteRunResponse'
+    { _delrsMessage = Nothing
+    , _delrsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+delrsMessage :: Lens' DeleteRunResponse (Maybe Text)
+delrsMessage = lens _delrsMessage (\ s a -> s{_delrsMessage = a});
+
+-- | The response status code.
+delrsResponseStatus :: Lens' DeleteRunResponse Int
+delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DescribeApplication.hs b/gen/Network/AWS/Inspector/DescribeApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DescribeApplication.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.Inspector.DescribeApplication
+-- 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 the application specified by the application ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DescribeApplication.html AWS API Reference> for DescribeApplication.
+module Network.AWS.Inspector.DescribeApplication
+    (
+    -- * Creating a Request
+      describeApplication
+    , DescribeApplication
+    -- * Request Lenses
+    , daApplicationARN
+
+    -- * Destructuring the Response
+    , describeApplicationResponse
+    , DescribeApplicationResponse
+    -- * Response Lenses
+    , darsApplication
+    , darsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeApplication' smart constructor.
+newtype DescribeApplication = DescribeApplication'
+    { _daApplicationARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeApplication' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daApplicationARN'
+describeApplication
+    :: DescribeApplication
+describeApplication =
+    DescribeApplication'
+    { _daApplicationARN = Nothing
+    }
+
+-- | The ARN specifying the application that you want to describe.
+daApplicationARN :: Lens' DescribeApplication (Maybe Text)
+daApplicationARN = lens _daApplicationARN (\ s a -> s{_daApplicationARN = a});
+
+instance AWSRequest DescribeApplication where
+        type Rs DescribeApplication =
+             DescribeApplicationResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeApplicationResponse' <$>
+                   (x .?> "application") <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeApplication where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DescribeApplication" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeApplication where
+        toJSON DescribeApplication'{..}
+          = object
+              (catMaybes
+                 [("applicationArn" .=) <$> _daApplicationARN])
+
+instance ToPath DescribeApplication where
+        toPath = const "/"
+
+instance ToQuery DescribeApplication where
+        toQuery = const mempty
+
+-- | /See:/ 'describeApplicationResponse' smart constructor.
+data DescribeApplicationResponse = DescribeApplicationResponse'
+    { _darsApplication    :: !(Maybe Application)
+    , _darsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeApplicationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'darsApplication'
+--
+-- * 'darsResponseStatus'
+describeApplicationResponse
+    :: Int -- ^ 'darsResponseStatus'
+    -> DescribeApplicationResponse
+describeApplicationResponse pResponseStatus_ =
+    DescribeApplicationResponse'
+    { _darsApplication = Nothing
+    , _darsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the application.
+darsApplication :: Lens' DescribeApplicationResponse (Maybe Application)
+darsApplication = lens _darsApplication (\ s a -> s{_darsApplication = a});
+
+-- | The response status code.
+darsResponseStatus :: Lens' DescribeApplicationResponse Int
+darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DescribeAssessment.hs b/gen/Network/AWS/Inspector/DescribeAssessment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DescribeAssessment.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.Inspector.DescribeAssessment
+-- 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 the assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DescribeAssessment.html AWS API Reference> for DescribeAssessment.
+module Network.AWS.Inspector.DescribeAssessment
+    (
+    -- * Creating a Request
+      describeAssessment
+    , DescribeAssessment
+    -- * Request Lenses
+    , dAssessmentARN
+
+    -- * Destructuring the Response
+    , describeAssessmentResponse
+    , DescribeAssessmentResponse
+    -- * Response Lenses
+    , desrsAssessment
+    , desrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeAssessment' smart constructor.
+newtype DescribeAssessment = DescribeAssessment'
+    { _dAssessmentARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAssessment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dAssessmentARN'
+describeAssessment
+    :: DescribeAssessment
+describeAssessment =
+    DescribeAssessment'
+    { _dAssessmentARN = Nothing
+    }
+
+-- | The ARN specifying the assessment that you want to describe.
+dAssessmentARN :: Lens' DescribeAssessment (Maybe Text)
+dAssessmentARN = lens _dAssessmentARN (\ s a -> s{_dAssessmentARN = a});
+
+instance AWSRequest DescribeAssessment where
+        type Rs DescribeAssessment =
+             DescribeAssessmentResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeAssessmentResponse' <$>
+                   (x .?> "assessment") <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeAssessment where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DescribeAssessment" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeAssessment where
+        toJSON DescribeAssessment'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _dAssessmentARN])
+
+instance ToPath DescribeAssessment where
+        toPath = const "/"
+
+instance ToQuery DescribeAssessment where
+        toQuery = const mempty
+
+-- | /See:/ 'describeAssessmentResponse' smart constructor.
+data DescribeAssessmentResponse = DescribeAssessmentResponse'
+    { _desrsAssessment     :: !(Maybe Assessment)
+    , _desrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAssessmentResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'desrsAssessment'
+--
+-- * 'desrsResponseStatus'
+describeAssessmentResponse
+    :: Int -- ^ 'desrsResponseStatus'
+    -> DescribeAssessmentResponse
+describeAssessmentResponse pResponseStatus_ =
+    DescribeAssessmentResponse'
+    { _desrsAssessment = Nothing
+    , _desrsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the assessment.
+desrsAssessment :: Lens' DescribeAssessmentResponse (Maybe Assessment)
+desrsAssessment = lens _desrsAssessment (\ s a -> s{_desrsAssessment = a});
+
+-- | The response status code.
+desrsResponseStatus :: Lens' DescribeAssessmentResponse Int
+desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DescribeCrossAccountAccessRole.hs b/gen/Network/AWS/Inspector/DescribeCrossAccountAccessRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DescribeCrossAccountAccessRole.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.Inspector.DescribeCrossAccountAccessRole
+-- 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 the IAM role that enables Inspector to access your AWS
+-- account.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DescribeCrossAccountAccessRole.html AWS API Reference> for DescribeCrossAccountAccessRole.
+module Network.AWS.Inspector.DescribeCrossAccountAccessRole
+    (
+    -- * Creating a Request
+      describeCrossAccountAccessRole
+    , DescribeCrossAccountAccessRole
+
+    -- * Destructuring the Response
+    , describeCrossAccountAccessRoleResponse
+    , DescribeCrossAccountAccessRoleResponse
+    -- * Response Lenses
+    , dcaarrsValid
+    , dcaarrsRoleARN
+    , dcaarrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeCrossAccountAccessRole' smart constructor.
+data DescribeCrossAccountAccessRole =
+    DescribeCrossAccountAccessRole'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeCrossAccountAccessRole' with the minimum fields required to make a request.
+--
+describeCrossAccountAccessRole
+    :: DescribeCrossAccountAccessRole
+describeCrossAccountAccessRole = DescribeCrossAccountAccessRole'
+
+instance AWSRequest DescribeCrossAccountAccessRole
+         where
+        type Rs DescribeCrossAccountAccessRole =
+             DescribeCrossAccountAccessRoleResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeCrossAccountAccessRoleResponse' <$>
+                   (x .?> "valid") <*> (x .?> "roleArn") <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders DescribeCrossAccountAccessRole
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DescribeCrossAccountAccessRole" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeCrossAccountAccessRole where
+        toJSON = const (Object mempty)
+
+instance ToPath DescribeCrossAccountAccessRole where
+        toPath = const "/"
+
+instance ToQuery DescribeCrossAccountAccessRole where
+        toQuery = const mempty
+
+-- | /See:/ 'describeCrossAccountAccessRoleResponse' smart constructor.
+data DescribeCrossAccountAccessRoleResponse = DescribeCrossAccountAccessRoleResponse'
+    { _dcaarrsValid          :: !(Maybe Bool)
+    , _dcaarrsRoleARN        :: !(Maybe Text)
+    , _dcaarrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeCrossAccountAccessRoleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcaarrsValid'
+--
+-- * 'dcaarrsRoleARN'
+--
+-- * 'dcaarrsResponseStatus'
+describeCrossAccountAccessRoleResponse
+    :: Int -- ^ 'dcaarrsResponseStatus'
+    -> DescribeCrossAccountAccessRoleResponse
+describeCrossAccountAccessRoleResponse pResponseStatus_ =
+    DescribeCrossAccountAccessRoleResponse'
+    { _dcaarrsValid = Nothing
+    , _dcaarrsRoleARN = Nothing
+    , _dcaarrsResponseStatus = pResponseStatus_
+    }
+
+-- | A Boolean value that specifies whether the IAM role has the necessary
+-- policies attached to enable Inspector to access your AWS account.
+dcaarrsValid :: Lens' DescribeCrossAccountAccessRoleResponse (Maybe Bool)
+dcaarrsValid = lens _dcaarrsValid (\ s a -> s{_dcaarrsValid = a});
+
+-- | The ARN specifying the IAM role that Inspector uses to access your AWS
+-- account.
+dcaarrsRoleARN :: Lens' DescribeCrossAccountAccessRoleResponse (Maybe Text)
+dcaarrsRoleARN = lens _dcaarrsRoleARN (\ s a -> s{_dcaarrsRoleARN = a});
+
+-- | The response status code.
+dcaarrsResponseStatus :: Lens' DescribeCrossAccountAccessRoleResponse Int
+dcaarrsResponseStatus = lens _dcaarrsResponseStatus (\ s a -> s{_dcaarrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DescribeFinding.hs b/gen/Network/AWS/Inspector/DescribeFinding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DescribeFinding.hs
@@ -0,0 +1,124 @@
+{-# 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.Inspector.DescribeFinding
+-- 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 the finding specified by the finding ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DescribeFinding.html AWS API Reference> for DescribeFinding.
+module Network.AWS.Inspector.DescribeFinding
+    (
+    -- * Creating a Request
+      describeFinding
+    , DescribeFinding
+    -- * Request Lenses
+    , dfFindingARN
+
+    -- * Destructuring the Response
+    , describeFindingResponse
+    , DescribeFindingResponse
+    -- * Response Lenses
+    , dfrsFinding
+    , dfrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeFinding' smart constructor.
+newtype DescribeFinding = DescribeFinding'
+    { _dfFindingARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeFinding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dfFindingARN'
+describeFinding
+    :: DescribeFinding
+describeFinding =
+    DescribeFinding'
+    { _dfFindingARN = Nothing
+    }
+
+-- | The ARN specifying the finding that you want to describe.
+dfFindingARN :: Lens' DescribeFinding (Maybe Text)
+dfFindingARN = lens _dfFindingARN (\ s a -> s{_dfFindingARN = a});
+
+instance AWSRequest DescribeFinding where
+        type Rs DescribeFinding = DescribeFindingResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeFindingResponse' <$>
+                   (x .?> "finding") <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeFinding where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DescribeFinding" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeFinding where
+        toJSON DescribeFinding'{..}
+          = object
+              (catMaybes [("findingArn" .=) <$> _dfFindingARN])
+
+instance ToPath DescribeFinding where
+        toPath = const "/"
+
+instance ToQuery DescribeFinding where
+        toQuery = const mempty
+
+-- | /See:/ 'describeFindingResponse' smart constructor.
+data DescribeFindingResponse = DescribeFindingResponse'
+    { _dfrsFinding        :: !(Maybe Finding)
+    , _dfrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeFindingResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dfrsFinding'
+--
+-- * 'dfrsResponseStatus'
+describeFindingResponse
+    :: Int -- ^ 'dfrsResponseStatus'
+    -> DescribeFindingResponse
+describeFindingResponse pResponseStatus_ =
+    DescribeFindingResponse'
+    { _dfrsFinding = Nothing
+    , _dfrsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the finding.
+dfrsFinding :: Lens' DescribeFindingResponse (Maybe Finding)
+dfrsFinding = lens _dfrsFinding (\ s a -> s{_dfrsFinding = a});
+
+-- | The response status code.
+dfrsResponseStatus :: Lens' DescribeFindingResponse Int
+dfrsResponseStatus = lens _dfrsResponseStatus (\ s a -> s{_dfrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DescribeResourceGroup.hs b/gen/Network/AWS/Inspector/DescribeResourceGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DescribeResourceGroup.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.Inspector.DescribeResourceGroup
+-- 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 the resource group specified by the resource group ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DescribeResourceGroup.html AWS API Reference> for DescribeResourceGroup.
+module Network.AWS.Inspector.DescribeResourceGroup
+    (
+    -- * Creating a Request
+      describeResourceGroup
+    , DescribeResourceGroup
+    -- * Request Lenses
+    , drgResourceGroupARN
+
+    -- * Destructuring the Response
+    , describeResourceGroupResponse
+    , DescribeResourceGroupResponse
+    -- * Response Lenses
+    , drgrsResourceGroup
+    , drgrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeResourceGroup' smart constructor.
+newtype DescribeResourceGroup = DescribeResourceGroup'
+    { _drgResourceGroupARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeResourceGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drgResourceGroupARN'
+describeResourceGroup
+    :: DescribeResourceGroup
+describeResourceGroup =
+    DescribeResourceGroup'
+    { _drgResourceGroupARN = Nothing
+    }
+
+-- | The ARN specifying the resource group that you want to describe.
+drgResourceGroupARN :: Lens' DescribeResourceGroup (Maybe Text)
+drgResourceGroupARN = lens _drgResourceGroupARN (\ s a -> s{_drgResourceGroupARN = a});
+
+instance AWSRequest DescribeResourceGroup where
+        type Rs DescribeResourceGroup =
+             DescribeResourceGroupResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeResourceGroupResponse' <$>
+                   (x .?> "resourceGroup") <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeResourceGroup where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DescribeResourceGroup" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeResourceGroup where
+        toJSON DescribeResourceGroup'{..}
+          = object
+              (catMaybes
+                 [("resourceGroupArn" .=) <$> _drgResourceGroupARN])
+
+instance ToPath DescribeResourceGroup where
+        toPath = const "/"
+
+instance ToQuery DescribeResourceGroup where
+        toQuery = const mempty
+
+-- | /See:/ 'describeResourceGroupResponse' smart constructor.
+data DescribeResourceGroupResponse = DescribeResourceGroupResponse'
+    { _drgrsResourceGroup  :: !(Maybe ResourceGroup)
+    , _drgrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeResourceGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drgrsResourceGroup'
+--
+-- * 'drgrsResponseStatus'
+describeResourceGroupResponse
+    :: Int -- ^ 'drgrsResponseStatus'
+    -> DescribeResourceGroupResponse
+describeResourceGroupResponse pResponseStatus_ =
+    DescribeResourceGroupResponse'
+    { _drgrsResourceGroup = Nothing
+    , _drgrsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the resource group.
+drgrsResourceGroup :: Lens' DescribeResourceGroupResponse (Maybe ResourceGroup)
+drgrsResourceGroup = lens _drgrsResourceGroup (\ s a -> s{_drgrsResourceGroup = a});
+
+-- | The response status code.
+drgrsResponseStatus :: Lens' DescribeResourceGroupResponse Int
+drgrsResponseStatus = lens _drgrsResponseStatus (\ s a -> s{_drgrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DescribeRulesPackage.hs b/gen/Network/AWS/Inspector/DescribeRulesPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DescribeRulesPackage.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.Inspector.DescribeRulesPackage
+-- 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 the rules package specified by the rules package ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DescribeRulesPackage.html AWS API Reference> for DescribeRulesPackage.
+module Network.AWS.Inspector.DescribeRulesPackage
+    (
+    -- * Creating a Request
+      describeRulesPackage
+    , DescribeRulesPackage
+    -- * Request Lenses
+    , drpRulesPackageARN
+
+    -- * Destructuring the Response
+    , describeRulesPackageResponse
+    , DescribeRulesPackageResponse
+    -- * Response Lenses
+    , drprsRulesPackage
+    , drprsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeRulesPackage' smart constructor.
+newtype DescribeRulesPackage = DescribeRulesPackage'
+    { _drpRulesPackageARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRulesPackage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drpRulesPackageARN'
+describeRulesPackage
+    :: DescribeRulesPackage
+describeRulesPackage =
+    DescribeRulesPackage'
+    { _drpRulesPackageARN = Nothing
+    }
+
+-- | The ARN specifying the rules package that you want to describe.
+drpRulesPackageARN :: Lens' DescribeRulesPackage (Maybe Text)
+drpRulesPackageARN = lens _drpRulesPackageARN (\ s a -> s{_drpRulesPackageARN = a});
+
+instance AWSRequest DescribeRulesPackage where
+        type Rs DescribeRulesPackage =
+             DescribeRulesPackageResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeRulesPackageResponse' <$>
+                   (x .?> "rulesPackage") <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeRulesPackage where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DescribeRulesPackage" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeRulesPackage where
+        toJSON DescribeRulesPackage'{..}
+          = object
+              (catMaybes
+                 [("rulesPackageArn" .=) <$> _drpRulesPackageARN])
+
+instance ToPath DescribeRulesPackage where
+        toPath = const "/"
+
+instance ToQuery DescribeRulesPackage where
+        toQuery = const mempty
+
+-- | /See:/ 'describeRulesPackageResponse' smart constructor.
+data DescribeRulesPackageResponse = DescribeRulesPackageResponse'
+    { _drprsRulesPackage   :: !(Maybe RulesPackage)
+    , _drprsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRulesPackageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drprsRulesPackage'
+--
+-- * 'drprsResponseStatus'
+describeRulesPackageResponse
+    :: Int -- ^ 'drprsResponseStatus'
+    -> DescribeRulesPackageResponse
+describeRulesPackageResponse pResponseStatus_ =
+    DescribeRulesPackageResponse'
+    { _drprsRulesPackage = Nothing
+    , _drprsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the rules package.
+drprsRulesPackage :: Lens' DescribeRulesPackageResponse (Maybe RulesPackage)
+drprsRulesPackage = lens _drprsRulesPackage (\ s a -> s{_drprsRulesPackage = a});
+
+-- | The response status code.
+drprsResponseStatus :: Lens' DescribeRulesPackageResponse Int
+drprsResponseStatus = lens _drprsResponseStatus (\ s a -> s{_drprsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DescribeRun.hs b/gen/Network/AWS/Inspector/DescribeRun.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DescribeRun.hs
@@ -0,0 +1,123 @@
+{-# 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.Inspector.DescribeRun
+-- 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 the assessment run specified by the run ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DescribeRun.html AWS API Reference> for DescribeRun.
+module Network.AWS.Inspector.DescribeRun
+    (
+    -- * Creating a Request
+      describeRun
+    , DescribeRun
+    -- * Request Lenses
+    , drRunARN
+
+    -- * Destructuring the Response
+    , describeRunResponse
+    , DescribeRunResponse
+    -- * Response Lenses
+    , drrsRun
+    , drrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeRun' smart constructor.
+newtype DescribeRun = DescribeRun'
+    { _drRunARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRun' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drRunARN'
+describeRun
+    :: DescribeRun
+describeRun =
+    DescribeRun'
+    { _drRunARN = Nothing
+    }
+
+-- | The ARN specifying the assessment run that you want to describe.
+drRunARN :: Lens' DescribeRun (Maybe Text)
+drRunARN = lens _drRunARN (\ s a -> s{_drRunARN = a});
+
+instance AWSRequest DescribeRun where
+        type Rs DescribeRun = DescribeRunResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeRunResponse' <$>
+                   (x .?> "run") <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeRun where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DescribeRun" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeRun where
+        toJSON DescribeRun'{..}
+          = object (catMaybes [("runArn" .=) <$> _drRunARN])
+
+instance ToPath DescribeRun where
+        toPath = const "/"
+
+instance ToQuery DescribeRun where
+        toQuery = const mempty
+
+-- | /See:/ 'describeRunResponse' smart constructor.
+data DescribeRunResponse = DescribeRunResponse'
+    { _drrsRun            :: !(Maybe Run)
+    , _drrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRunResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrsRun'
+--
+-- * 'drrsResponseStatus'
+describeRunResponse
+    :: Int -- ^ 'drrsResponseStatus'
+    -> DescribeRunResponse
+describeRunResponse pResponseStatus_ =
+    DescribeRunResponse'
+    { _drrsRun = Nothing
+    , _drrsResponseStatus = pResponseStatus_
+    }
+
+-- | Information about the assessment run.
+drrsRun :: Lens' DescribeRunResponse (Maybe Run)
+drrsRun = lens _drrsRun (\ s a -> s{_drrsRun = a});
+
+-- | The response status code.
+drrsResponseStatus :: Lens' DescribeRunResponse Int
+drrsResponseStatus = lens _drrsResponseStatus (\ s a -> s{_drrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/DetachAssessmentAndRulesPackage.hs b/gen/Network/AWS/Inspector/DetachAssessmentAndRulesPackage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/DetachAssessmentAndRulesPackage.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.Inspector.DetachAssessmentAndRulesPackage
+-- 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)
+--
+-- Detaches the rules package specified by the rules package ARN from the
+-- assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_DetachAssessmentAndRulesPackage.html AWS API Reference> for DetachAssessmentAndRulesPackage.
+module Network.AWS.Inspector.DetachAssessmentAndRulesPackage
+    (
+    -- * Creating a Request
+      detachAssessmentAndRulesPackage
+    , DetachAssessmentAndRulesPackage
+    -- * Request Lenses
+    , daarpAssessmentARN
+    , daarpRulesPackageARN
+
+    -- * Destructuring the Response
+    , detachAssessmentAndRulesPackageResponse
+    , DetachAssessmentAndRulesPackageResponse
+    -- * Response Lenses
+    , daarprsMessage
+    , daarprsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'detachAssessmentAndRulesPackage' smart constructor.
+data DetachAssessmentAndRulesPackage = DetachAssessmentAndRulesPackage'
+    { _daarpAssessmentARN   :: !(Maybe Text)
+    , _daarpRulesPackageARN :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DetachAssessmentAndRulesPackage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daarpAssessmentARN'
+--
+-- * 'daarpRulesPackageARN'
+detachAssessmentAndRulesPackage
+    :: DetachAssessmentAndRulesPackage
+detachAssessmentAndRulesPackage =
+    DetachAssessmentAndRulesPackage'
+    { _daarpAssessmentARN = Nothing
+    , _daarpRulesPackageARN = Nothing
+    }
+
+-- | The ARN specifying the assessment from which you want to detach a rules
+-- package.
+daarpAssessmentARN :: Lens' DetachAssessmentAndRulesPackage (Maybe Text)
+daarpAssessmentARN = lens _daarpAssessmentARN (\ s a -> s{_daarpAssessmentARN = a});
+
+-- | The ARN specifying the rules package that you want to detach from the
+-- assessment.
+daarpRulesPackageARN :: Lens' DetachAssessmentAndRulesPackage (Maybe Text)
+daarpRulesPackageARN = lens _daarpRulesPackageARN (\ s a -> s{_daarpRulesPackageARN = a});
+
+instance AWSRequest DetachAssessmentAndRulesPackage
+         where
+        type Rs DetachAssessmentAndRulesPackage =
+             DetachAssessmentAndRulesPackageResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DetachAssessmentAndRulesPackageResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders DetachAssessmentAndRulesPackage
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.DetachAssessmentAndRulesPackage"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DetachAssessmentAndRulesPackage where
+        toJSON DetachAssessmentAndRulesPackage'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _daarpAssessmentARN,
+                  ("rulesPackageArn" .=) <$> _daarpRulesPackageARN])
+
+instance ToPath DetachAssessmentAndRulesPackage where
+        toPath = const "/"
+
+instance ToQuery DetachAssessmentAndRulesPackage
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'detachAssessmentAndRulesPackageResponse' smart constructor.
+data DetachAssessmentAndRulesPackageResponse = DetachAssessmentAndRulesPackageResponse'
+    { _daarprsMessage        :: !(Maybe Text)
+    , _daarprsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DetachAssessmentAndRulesPackageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daarprsMessage'
+--
+-- * 'daarprsResponseStatus'
+detachAssessmentAndRulesPackageResponse
+    :: Int -- ^ 'daarprsResponseStatus'
+    -> DetachAssessmentAndRulesPackageResponse
+detachAssessmentAndRulesPackageResponse pResponseStatus_ =
+    DetachAssessmentAndRulesPackageResponse'
+    { _daarprsMessage = Nothing
+    , _daarprsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+daarprsMessage :: Lens' DetachAssessmentAndRulesPackageResponse (Maybe Text)
+daarprsMessage = lens _daarprsMessage (\ s a -> s{_daarprsMessage = a});
+
+-- | The response status code.
+daarprsResponseStatus :: Lens' DetachAssessmentAndRulesPackageResponse Int
+daarprsResponseStatus = lens _daarprsResponseStatus (\ s a -> s{_daarprsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/GetAssessmentTelemetry.hs b/gen/Network/AWS/Inspector/GetAssessmentTelemetry.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/GetAssessmentTelemetry.hs
@@ -0,0 +1,130 @@
+{-# 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.Inspector.GetAssessmentTelemetry
+-- 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)
+--
+-- Returns the metadata about the telemetry (application behavioral data)
+-- for the assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_GetAssessmentTelemetry.html AWS API Reference> for GetAssessmentTelemetry.
+module Network.AWS.Inspector.GetAssessmentTelemetry
+    (
+    -- * Creating a Request
+      getAssessmentTelemetry
+    , GetAssessmentTelemetry
+    -- * Request Lenses
+    , gatAssessmentARN
+
+    -- * Destructuring the Response
+    , getAssessmentTelemetryResponse
+    , GetAssessmentTelemetryResponse
+    -- * Response Lenses
+    , gatrsTelemetry
+    , gatrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'getAssessmentTelemetry' smart constructor.
+newtype GetAssessmentTelemetry = GetAssessmentTelemetry'
+    { _gatAssessmentARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetAssessmentTelemetry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gatAssessmentARN'
+getAssessmentTelemetry
+    :: GetAssessmentTelemetry
+getAssessmentTelemetry =
+    GetAssessmentTelemetry'
+    { _gatAssessmentARN = Nothing
+    }
+
+-- | The ARN specifying the assessment the telemetry of which you want to
+-- obtain.
+gatAssessmentARN :: Lens' GetAssessmentTelemetry (Maybe Text)
+gatAssessmentARN = lens _gatAssessmentARN (\ s a -> s{_gatAssessmentARN = a});
+
+instance AWSRequest GetAssessmentTelemetry where
+        type Rs GetAssessmentTelemetry =
+             GetAssessmentTelemetryResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetAssessmentTelemetryResponse' <$>
+                   (x .?> "telemetry" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders GetAssessmentTelemetry where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.GetAssessmentTelemetry" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetAssessmentTelemetry where
+        toJSON GetAssessmentTelemetry'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _gatAssessmentARN])
+
+instance ToPath GetAssessmentTelemetry where
+        toPath = const "/"
+
+instance ToQuery GetAssessmentTelemetry where
+        toQuery = const mempty
+
+-- | /See:/ 'getAssessmentTelemetryResponse' smart constructor.
+data GetAssessmentTelemetryResponse = GetAssessmentTelemetryResponse'
+    { _gatrsTelemetry      :: !(Maybe [Telemetry])
+    , _gatrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetAssessmentTelemetryResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gatrsTelemetry'
+--
+-- * 'gatrsResponseStatus'
+getAssessmentTelemetryResponse
+    :: Int -- ^ 'gatrsResponseStatus'
+    -> GetAssessmentTelemetryResponse
+getAssessmentTelemetryResponse pResponseStatus_ =
+    GetAssessmentTelemetryResponse'
+    { _gatrsTelemetry = Nothing
+    , _gatrsResponseStatus = pResponseStatus_
+    }
+
+-- | Telemetry details.
+gatrsTelemetry :: Lens' GetAssessmentTelemetryResponse [Telemetry]
+gatrsTelemetry = lens _gatrsTelemetry (\ s a -> s{_gatrsTelemetry = a}) . _Default . _Coerce;
+
+-- | The response status code.
+gatrsResponseStatus :: Lens' GetAssessmentTelemetryResponse Int
+gatrsResponseStatus = lens _gatrsResponseStatus (\ s a -> s{_gatrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListApplications.hs b/gen/Network/AWS/Inspector/ListApplications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListApplications.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.Inspector.ListApplications
+-- 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 ARNs of the applications within this AWS account. For more
+-- information about applications, see
+-- <https://docs.aws.amazon.com/inspector/latest/userguide//inspector_applications.html Inspector Applications>.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListApplications.html AWS API Reference> for ListApplications.
+module Network.AWS.Inspector.ListApplications
+    (
+    -- * Creating a Request
+      listApplications
+    , ListApplications
+    -- * Request Lenses
+    , lNextToken
+    , lFilter
+    , lMaxResults
+
+    -- * Destructuring the Response
+    , listApplicationsResponse
+    , ListApplicationsResponse
+    -- * Response Lenses
+    , lrsApplicationARNList
+    , lrsNextToken
+    , lrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listApplications' smart constructor.
+data ListApplications = ListApplications'
+    { _lNextToken  :: !(Maybe Text)
+    , _lFilter     :: !(Maybe ApplicationsFilter)
+    , _lMaxResults :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListApplications' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lNextToken'
+--
+-- * 'lFilter'
+--
+-- * 'lMaxResults'
+listApplications
+    :: ListApplications
+listApplications =
+    ListApplications'
+    { _lNextToken = Nothing
+    , _lFilter = Nothing
+    , _lMaxResults = Nothing
+    }
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the
+-- __ListApplications__ action. Subsequent calls to the action fill
+-- __nextToken__ in the request with the value of __NextToken__ from
+-- previous response to continue listing data.
+lNextToken :: Lens' ListApplications (Maybe Text)
+lNextToken = lens _lNextToken (\ s a -> s{_lNextToken = a});
+
+-- | You can use this parameter to specify a subset of data to be included in
+-- the action\'s response.
+--
+-- For a record to match a filter, all specified filter attributes must
+-- match. When multiple values are specified for a filter attribute, any of
+-- the values can match.
+lFilter :: Lens' ListApplications (Maybe ApplicationsFilter)
+lFilter = lens _lFilter (\ s a -> s{_lFilter = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+lMaxResults :: Lens' ListApplications (Maybe Int)
+lMaxResults = lens _lMaxResults (\ s a -> s{_lMaxResults = a});
+
+instance AWSRequest ListApplications where
+        type Rs ListApplications = ListApplicationsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListApplicationsResponse' <$>
+                   (x .?> "applicationArnList" .!@ mempty) <*>
+                     (x .?> "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListApplications where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListApplications" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListApplications where
+        toJSON ListApplications'{..}
+          = object
+              (catMaybes
+                 [("nextToken" .=) <$> _lNextToken,
+                  ("filter" .=) <$> _lFilter,
+                  ("maxResults" .=) <$> _lMaxResults])
+
+instance ToPath ListApplications where
+        toPath = const "/"
+
+instance ToQuery ListApplications where
+        toQuery = const mempty
+
+-- | /See:/ 'listApplicationsResponse' smart constructor.
+data ListApplicationsResponse = ListApplicationsResponse'
+    { _lrsApplicationARNList :: !(Maybe [Text])
+    , _lrsNextToken          :: !(Maybe Text)
+    , _lrsResponseStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListApplicationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrsApplicationARNList'
+--
+-- * 'lrsNextToken'
+--
+-- * 'lrsResponseStatus'
+listApplicationsResponse
+    :: Int -- ^ 'lrsResponseStatus'
+    -> ListApplicationsResponse
+listApplicationsResponse pResponseStatus_ =
+    ListApplicationsResponse'
+    { _lrsApplicationARNList = Nothing
+    , _lrsNextToken = Nothing
+    , _lrsResponseStatus = pResponseStatus_
+    }
+
+-- | A list of ARNs specifying the applications returned by the action.
+lrsApplicationARNList :: Lens' ListApplicationsResponse [Text]
+lrsApplicationARNList = lens _lrsApplicationARNList (\ s a -> s{_lrsApplicationARNList = a}) . _Default . _Coerce;
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+lrsNextToken :: Lens' ListApplicationsResponse (Maybe Text)
+lrsNextToken = lens _lrsNextToken (\ s a -> s{_lrsNextToken = a});
+
+-- | The response status code.
+lrsResponseStatus :: Lens' ListApplicationsResponse Int
+lrsResponseStatus = lens _lrsResponseStatus (\ s a -> s{_lrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListAssessmentAgents.hs b/gen/Network/AWS/Inspector/ListAssessmentAgents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListAssessmentAgents.hs
@@ -0,0 +1,181 @@
+{-# 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.Inspector.ListAssessmentAgents
+-- 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 agents of the assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListAssessmentAgents.html AWS API Reference> for ListAssessmentAgents.
+module Network.AWS.Inspector.ListAssessmentAgents
+    (
+    -- * Creating a Request
+      listAssessmentAgents
+    , ListAssessmentAgents
+    -- * Request Lenses
+    , laasAssessmentARN
+    , laasNextToken
+    , laasFilter
+    , laasMaxResults
+
+    -- * Destructuring the Response
+    , listAssessmentAgentsResponse
+    , ListAssessmentAgentsResponse
+    -- * Response Lenses
+    , laarsAgentList
+    , laarsNextToken
+    , laarsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listAssessmentAgents' smart constructor.
+data ListAssessmentAgents = ListAssessmentAgents'
+    { _laasAssessmentARN :: !(Maybe Text)
+    , _laasNextToken     :: !(Maybe Text)
+    , _laasFilter        :: !(Maybe AgentsFilter)
+    , _laasMaxResults    :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAssessmentAgents' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laasAssessmentARN'
+--
+-- * 'laasNextToken'
+--
+-- * 'laasFilter'
+--
+-- * 'laasMaxResults'
+listAssessmentAgents
+    :: ListAssessmentAgents
+listAssessmentAgents =
+    ListAssessmentAgents'
+    { _laasAssessmentARN = Nothing
+    , _laasNextToken = Nothing
+    , _laasFilter = Nothing
+    , _laasMaxResults = Nothing
+    }
+
+-- | The ARN specifying the assessment whose agents you want to list.
+laasAssessmentARN :: Lens' ListAssessmentAgents (Maybe Text)
+laasAssessmentARN = lens _laasAssessmentARN (\ s a -> s{_laasAssessmentARN = a});
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the
+-- __ListAssessmentAgents__ action. Subsequent calls to the action fill
+-- __nextToken__ in the request with the value of __NextToken__ from
+-- previous response to continue listing data.
+laasNextToken :: Lens' ListAssessmentAgents (Maybe Text)
+laasNextToken = lens _laasNextToken (\ s a -> s{_laasNextToken = a});
+
+-- | You can use this parameter to specify a subset of data to be included in
+-- the action\'s response.
+--
+-- For a record to match a filter, all specified filter attributes must
+-- match. When multiple values are specified for a filter attribute, any of
+-- the values can match.
+laasFilter :: Lens' ListAssessmentAgents (Maybe AgentsFilter)
+laasFilter = lens _laasFilter (\ s a -> s{_laasFilter = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+laasMaxResults :: Lens' ListAssessmentAgents (Maybe Int)
+laasMaxResults = lens _laasMaxResults (\ s a -> s{_laasMaxResults = a});
+
+instance AWSRequest ListAssessmentAgents where
+        type Rs ListAssessmentAgents =
+             ListAssessmentAgentsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListAssessmentAgentsResponse' <$>
+                   (x .?> "agentList" .!@ mempty) <*>
+                     (x .?> "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListAssessmentAgents where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListAssessmentAgents" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListAssessmentAgents where
+        toJSON ListAssessmentAgents'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _laasAssessmentARN,
+                  ("nextToken" .=) <$> _laasNextToken,
+                  ("filter" .=) <$> _laasFilter,
+                  ("maxResults" .=) <$> _laasMaxResults])
+
+instance ToPath ListAssessmentAgents where
+        toPath = const "/"
+
+instance ToQuery ListAssessmentAgents where
+        toQuery = const mempty
+
+-- | /See:/ 'listAssessmentAgentsResponse' smart constructor.
+data ListAssessmentAgentsResponse = ListAssessmentAgentsResponse'
+    { _laarsAgentList      :: !(Maybe [Agent])
+    , _laarsNextToken      :: !(Maybe Text)
+    , _laarsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAssessmentAgentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laarsAgentList'
+--
+-- * 'laarsNextToken'
+--
+-- * 'laarsResponseStatus'
+listAssessmentAgentsResponse
+    :: Int -- ^ 'laarsResponseStatus'
+    -> ListAssessmentAgentsResponse
+listAssessmentAgentsResponse pResponseStatus_ =
+    ListAssessmentAgentsResponse'
+    { _laarsAgentList = Nothing
+    , _laarsNextToken = Nothing
+    , _laarsResponseStatus = pResponseStatus_
+    }
+
+-- | A list of ARNs specifying the agents returned by the action.
+laarsAgentList :: Lens' ListAssessmentAgentsResponse [Agent]
+laarsAgentList = lens _laarsAgentList (\ s a -> s{_laarsAgentList = a}) . _Default . _Coerce;
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+laarsNextToken :: Lens' ListAssessmentAgentsResponse (Maybe Text)
+laarsNextToken = lens _laarsNextToken (\ s a -> s{_laarsNextToken = a});
+
+-- | The response status code.
+laarsResponseStatus :: Lens' ListAssessmentAgentsResponse Int
+laarsResponseStatus = lens _laarsResponseStatus (\ s a -> s{_laarsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListAssessments.hs b/gen/Network/AWS/Inspector/ListAssessments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListAssessments.hs
@@ -0,0 +1,181 @@
+{-# 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.Inspector.ListAssessments
+-- 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 assessments corresponding to applications specified by the
+-- applications\' ARNs.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListAssessments.html AWS API Reference> for ListAssessments.
+module Network.AWS.Inspector.ListAssessments
+    (
+    -- * Creating a Request
+      listAssessments
+    , ListAssessments
+    -- * Request Lenses
+    , laApplicationARNs
+    , laNextToken
+    , laFilter
+    , laMaxResults
+
+    -- * Destructuring the Response
+    , listAssessmentsResponse
+    , ListAssessmentsResponse
+    -- * Response Lenses
+    , larsAssessmentARNList
+    , larsNextToken
+    , larsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listAssessments' smart constructor.
+data ListAssessments = ListAssessments'
+    { _laApplicationARNs :: !(Maybe [Text])
+    , _laNextToken       :: !(Maybe Text)
+    , _laFilter          :: !(Maybe AssessmentsFilter)
+    , _laMaxResults      :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAssessments' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laApplicationARNs'
+--
+-- * 'laNextToken'
+--
+-- * 'laFilter'
+--
+-- * 'laMaxResults'
+listAssessments
+    :: ListAssessments
+listAssessments =
+    ListAssessments'
+    { _laApplicationARNs = Nothing
+    , _laNextToken = Nothing
+    , _laFilter = Nothing
+    , _laMaxResults = Nothing
+    }
+
+-- | A list of ARNs specifying the applications the assessments of which you
+-- want to list.
+laApplicationARNs :: Lens' ListAssessments [Text]
+laApplicationARNs = lens _laApplicationARNs (\ s a -> s{_laApplicationARNs = a}) . _Default . _Coerce;
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the __ListAssessments__
+-- action. Subsequent calls to the action fill __nextToken__ in the request
+-- with the value of __NextToken__ from previous response to continue
+-- listing data.
+laNextToken :: Lens' ListAssessments (Maybe Text)
+laNextToken = lens _laNextToken (\ s a -> s{_laNextToken = a});
+
+-- | You can use this parameter to specify a subset of data to be included in
+-- the action\'s response.
+--
+-- For a record to match a filter, all specified filter attributes must
+-- match. When multiple values are specified for a filter attribute, any of
+-- the values can match.
+laFilter :: Lens' ListAssessments (Maybe AssessmentsFilter)
+laFilter = lens _laFilter (\ s a -> s{_laFilter = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+laMaxResults :: Lens' ListAssessments (Maybe Int)
+laMaxResults = lens _laMaxResults (\ s a -> s{_laMaxResults = a});
+
+instance AWSRequest ListAssessments where
+        type Rs ListAssessments = ListAssessmentsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListAssessmentsResponse' <$>
+                   (x .?> "assessmentArnList" .!@ mempty) <*>
+                     (x .?> "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListAssessments where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListAssessments" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListAssessments where
+        toJSON ListAssessments'{..}
+          = object
+              (catMaybes
+                 [("applicationArns" .=) <$> _laApplicationARNs,
+                  ("nextToken" .=) <$> _laNextToken,
+                  ("filter" .=) <$> _laFilter,
+                  ("maxResults" .=) <$> _laMaxResults])
+
+instance ToPath ListAssessments where
+        toPath = const "/"
+
+instance ToQuery ListAssessments where
+        toQuery = const mempty
+
+-- | /See:/ 'listAssessmentsResponse' smart constructor.
+data ListAssessmentsResponse = ListAssessmentsResponse'
+    { _larsAssessmentARNList :: !(Maybe [Text])
+    , _larsNextToken         :: !(Maybe Text)
+    , _larsResponseStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAssessmentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'larsAssessmentARNList'
+--
+-- * 'larsNextToken'
+--
+-- * 'larsResponseStatus'
+listAssessmentsResponse
+    :: Int -- ^ 'larsResponseStatus'
+    -> ListAssessmentsResponse
+listAssessmentsResponse pResponseStatus_ =
+    ListAssessmentsResponse'
+    { _larsAssessmentARNList = Nothing
+    , _larsNextToken = Nothing
+    , _larsResponseStatus = pResponseStatus_
+    }
+
+-- | A list of ARNs specifying the assessments returned by the action.
+larsAssessmentARNList :: Lens' ListAssessmentsResponse [Text]
+larsAssessmentARNList = lens _larsAssessmentARNList (\ s a -> s{_larsAssessmentARNList = a}) . _Default . _Coerce;
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+larsNextToken :: Lens' ListAssessmentsResponse (Maybe Text)
+larsNextToken = lens _larsNextToken (\ s a -> s{_larsNextToken = a});
+
+-- | The response status code.
+larsResponseStatus :: Lens' ListAssessmentsResponse Int
+larsResponseStatus = lens _larsResponseStatus (\ s a -> s{_larsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListAttachedAssessments.hs b/gen/Network/AWS/Inspector/ListAttachedAssessments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListAttachedAssessments.hs
@@ -0,0 +1,182 @@
+{-# 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.Inspector.ListAttachedAssessments
+-- 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 assessments attached to the rules package specified by the
+-- rules package ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListAttachedAssessments.html AWS API Reference> for ListAttachedAssessments.
+module Network.AWS.Inspector.ListAttachedAssessments
+    (
+    -- * Creating a Request
+      listAttachedAssessments
+    , ListAttachedAssessments
+    -- * Request Lenses
+    , laaNextToken
+    , laaRulesPackageARN
+    , laaFilter
+    , laaMaxResults
+
+    -- * Destructuring the Response
+    , listAttachedAssessmentsResponse
+    , ListAttachedAssessmentsResponse
+    -- * Response Lenses
+    , laasrsAssessmentARNList
+    , laasrsNextToken
+    , laasrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listAttachedAssessments' smart constructor.
+data ListAttachedAssessments = ListAttachedAssessments'
+    { _laaNextToken       :: !(Maybe Text)
+    , _laaRulesPackageARN :: !(Maybe Text)
+    , _laaFilter          :: !(Maybe AssessmentsFilter)
+    , _laaMaxResults      :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAttachedAssessments' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laaNextToken'
+--
+-- * 'laaRulesPackageARN'
+--
+-- * 'laaFilter'
+--
+-- * 'laaMaxResults'
+listAttachedAssessments
+    :: ListAttachedAssessments
+listAttachedAssessments =
+    ListAttachedAssessments'
+    { _laaNextToken = Nothing
+    , _laaRulesPackageARN = Nothing
+    , _laaFilter = Nothing
+    , _laaMaxResults = Nothing
+    }
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the
+-- __ListAttachedAssessments__ action. Subsequent calls to the action fill
+-- __nextToken__ in the request with the value of __NextToken__ from
+-- previous response to continue listing data.
+laaNextToken :: Lens' ListAttachedAssessments (Maybe Text)
+laaNextToken = lens _laaNextToken (\ s a -> s{_laaNextToken = a});
+
+-- | The ARN specifying the rules package whose assessments you want to list.
+laaRulesPackageARN :: Lens' ListAttachedAssessments (Maybe Text)
+laaRulesPackageARN = lens _laaRulesPackageARN (\ s a -> s{_laaRulesPackageARN = a});
+
+-- | You can use this parameter to specify a subset of data to be included in
+-- the action\'s response.
+--
+-- For a record to match a filter, all specified filter attributes must
+-- match. When multiple values are specified for a filter attribute, any of
+-- the values can match.
+laaFilter :: Lens' ListAttachedAssessments (Maybe AssessmentsFilter)
+laaFilter = lens _laaFilter (\ s a -> s{_laaFilter = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+laaMaxResults :: Lens' ListAttachedAssessments (Maybe Int)
+laaMaxResults = lens _laaMaxResults (\ s a -> s{_laaMaxResults = a});
+
+instance AWSRequest ListAttachedAssessments where
+        type Rs ListAttachedAssessments =
+             ListAttachedAssessmentsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListAttachedAssessmentsResponse' <$>
+                   (x .?> "assessmentArnList" .!@ mempty) <*>
+                     (x .?> "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListAttachedAssessments where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListAttachedAssessments" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListAttachedAssessments where
+        toJSON ListAttachedAssessments'{..}
+          = object
+              (catMaybes
+                 [("nextToken" .=) <$> _laaNextToken,
+                  ("rulesPackageArn" .=) <$> _laaRulesPackageARN,
+                  ("filter" .=) <$> _laaFilter,
+                  ("maxResults" .=) <$> _laaMaxResults])
+
+instance ToPath ListAttachedAssessments where
+        toPath = const "/"
+
+instance ToQuery ListAttachedAssessments where
+        toQuery = const mempty
+
+-- | /See:/ 'listAttachedAssessmentsResponse' smart constructor.
+data ListAttachedAssessmentsResponse = ListAttachedAssessmentsResponse'
+    { _laasrsAssessmentARNList :: !(Maybe [Text])
+    , _laasrsNextToken         :: !(Maybe Text)
+    , _laasrsResponseStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAttachedAssessmentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laasrsAssessmentARNList'
+--
+-- * 'laasrsNextToken'
+--
+-- * 'laasrsResponseStatus'
+listAttachedAssessmentsResponse
+    :: Int -- ^ 'laasrsResponseStatus'
+    -> ListAttachedAssessmentsResponse
+listAttachedAssessmentsResponse pResponseStatus_ =
+    ListAttachedAssessmentsResponse'
+    { _laasrsAssessmentARNList = Nothing
+    , _laasrsNextToken = Nothing
+    , _laasrsResponseStatus = pResponseStatus_
+    }
+
+-- | A list of ARNs specifying the assessments returned by the action.
+laasrsAssessmentARNList :: Lens' ListAttachedAssessmentsResponse [Text]
+laasrsAssessmentARNList = lens _laasrsAssessmentARNList (\ s a -> s{_laasrsAssessmentARNList = a}) . _Default . _Coerce;
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+laasrsNextToken :: Lens' ListAttachedAssessmentsResponse (Maybe Text)
+laasrsNextToken = lens _laasrsNextToken (\ s a -> s{_laasrsNextToken = a});
+
+-- | The response status code.
+laasrsResponseStatus :: Lens' ListAttachedAssessmentsResponse Int
+laasrsResponseStatus = lens _laasrsResponseStatus (\ s a -> s{_laasrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListAttachedRulesPackages.hs b/gen/Network/AWS/Inspector/ListAttachedRulesPackages.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListAttachedRulesPackages.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.Inspector.ListAttachedRulesPackages
+-- 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 rules packages attached to the assessment specified by the
+-- assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListAttachedRulesPackages.html AWS API Reference> for ListAttachedRulesPackages.
+module Network.AWS.Inspector.ListAttachedRulesPackages
+    (
+    -- * Creating a Request
+      listAttachedRulesPackages
+    , ListAttachedRulesPackages
+    -- * Request Lenses
+    , larpAssessmentARN
+    , larpNextToken
+    , larpMaxResults
+
+    -- * Destructuring the Response
+    , listAttachedRulesPackagesResponse
+    , ListAttachedRulesPackagesResponse
+    -- * Response Lenses
+    , larprsNextToken
+    , larprsRulesPackageARNList
+    , larprsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listAttachedRulesPackages' smart constructor.
+data ListAttachedRulesPackages = ListAttachedRulesPackages'
+    { _larpAssessmentARN :: !(Maybe Text)
+    , _larpNextToken     :: !(Maybe Text)
+    , _larpMaxResults    :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAttachedRulesPackages' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'larpAssessmentARN'
+--
+-- * 'larpNextToken'
+--
+-- * 'larpMaxResults'
+listAttachedRulesPackages
+    :: ListAttachedRulesPackages
+listAttachedRulesPackages =
+    ListAttachedRulesPackages'
+    { _larpAssessmentARN = Nothing
+    , _larpNextToken = Nothing
+    , _larpMaxResults = Nothing
+    }
+
+-- | The ARN specifying the assessment whose rules packages you want to list.
+larpAssessmentARN :: Lens' ListAttachedRulesPackages (Maybe Text)
+larpAssessmentARN = lens _larpAssessmentARN (\ s a -> s{_larpAssessmentARN = a});
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the
+-- __ListAttachedRulesPackages__ action. Subsequent calls to the action
+-- fill __nextToken__ in the request with the value of __NextToken__ from
+-- previous response to continue listing data.
+larpNextToken :: Lens' ListAttachedRulesPackages (Maybe Text)
+larpNextToken = lens _larpNextToken (\ s a -> s{_larpNextToken = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+larpMaxResults :: Lens' ListAttachedRulesPackages (Maybe Int)
+larpMaxResults = lens _larpMaxResults (\ s a -> s{_larpMaxResults = a});
+
+instance AWSRequest ListAttachedRulesPackages where
+        type Rs ListAttachedRulesPackages =
+             ListAttachedRulesPackagesResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListAttachedRulesPackagesResponse' <$>
+                   (x .?> "nextToken") <*>
+                     (x .?> "rulesPackageArnList" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListAttachedRulesPackages where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListAttachedRulesPackages" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListAttachedRulesPackages where
+        toJSON ListAttachedRulesPackages'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _larpAssessmentARN,
+                  ("nextToken" .=) <$> _larpNextToken,
+                  ("maxResults" .=) <$> _larpMaxResults])
+
+instance ToPath ListAttachedRulesPackages where
+        toPath = const "/"
+
+instance ToQuery ListAttachedRulesPackages where
+        toQuery = const mempty
+
+-- | /See:/ 'listAttachedRulesPackagesResponse' smart constructor.
+data ListAttachedRulesPackagesResponse = ListAttachedRulesPackagesResponse'
+    { _larprsNextToken           :: !(Maybe Text)
+    , _larprsRulesPackageARNList :: !(Maybe [Text])
+    , _larprsResponseStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAttachedRulesPackagesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'larprsNextToken'
+--
+-- * 'larprsRulesPackageARNList'
+--
+-- * 'larprsResponseStatus'
+listAttachedRulesPackagesResponse
+    :: Int -- ^ 'larprsResponseStatus'
+    -> ListAttachedRulesPackagesResponse
+listAttachedRulesPackagesResponse pResponseStatus_ =
+    ListAttachedRulesPackagesResponse'
+    { _larprsNextToken = Nothing
+    , _larprsRulesPackageARNList = Nothing
+    , _larprsResponseStatus = pResponseStatus_
+    }
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+larprsNextToken :: Lens' ListAttachedRulesPackagesResponse (Maybe Text)
+larprsNextToken = lens _larprsNextToken (\ s a -> s{_larprsNextToken = a});
+
+-- | A list of ARNs specifying the rules packages returned by the action.
+larprsRulesPackageARNList :: Lens' ListAttachedRulesPackagesResponse [Text]
+larprsRulesPackageARNList = lens _larprsRulesPackageARNList (\ s a -> s{_larprsRulesPackageARNList = a}) . _Default . _Coerce;
+
+-- | The response status code.
+larprsResponseStatus :: Lens' ListAttachedRulesPackagesResponse Int
+larprsResponseStatus = lens _larprsResponseStatus (\ s a -> s{_larprsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListFindings.hs b/gen/Network/AWS/Inspector/ListFindings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListFindings.hs
@@ -0,0 +1,181 @@
+{-# 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.Inspector.ListFindings
+-- 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 findings generated by the assessment run specified by the run
+-- ARNs.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListFindings.html AWS API Reference> for ListFindings.
+module Network.AWS.Inspector.ListFindings
+    (
+    -- * Creating a Request
+      listFindings
+    , ListFindings
+    -- * Request Lenses
+    , lfRunARNs
+    , lfNextToken
+    , lfFilter
+    , lfMaxResults
+
+    -- * Destructuring the Response
+    , listFindingsResponse
+    , ListFindingsResponse
+    -- * Response Lenses
+    , lfrsNextToken
+    , lfrsFindingARNList
+    , lfrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listFindings' smart constructor.
+data ListFindings = ListFindings'
+    { _lfRunARNs    :: !(Maybe [Text])
+    , _lfNextToken  :: !(Maybe Text)
+    , _lfFilter     :: !(Maybe FindingsFilter)
+    , _lfMaxResults :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListFindings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lfRunARNs'
+--
+-- * 'lfNextToken'
+--
+-- * 'lfFilter'
+--
+-- * 'lfMaxResults'
+listFindings
+    :: ListFindings
+listFindings =
+    ListFindings'
+    { _lfRunARNs = Nothing
+    , _lfNextToken = Nothing
+    , _lfFilter = Nothing
+    , _lfMaxResults = Nothing
+    }
+
+-- | The ARNs of the assessment runs that generate the findings that you want
+-- to list.
+lfRunARNs :: Lens' ListFindings [Text]
+lfRunARNs = lens _lfRunARNs (\ s a -> s{_lfRunARNs = a}) . _Default . _Coerce;
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the __ListFindings__
+-- action. Subsequent calls to the action fill __nextToken__ in the request
+-- with the value of __NextToken__ from previous response to continue
+-- listing data.
+lfNextToken :: Lens' ListFindings (Maybe Text)
+lfNextToken = lens _lfNextToken (\ s a -> s{_lfNextToken = a});
+
+-- | You can use this parameter to specify a subset of data to be included in
+-- the action\'s response.
+--
+-- For a record to match a filter, all specified filter attributes must
+-- match. When multiple values are specified for a filter attribute, any of
+-- the values can match.
+lfFilter :: Lens' ListFindings (Maybe FindingsFilter)
+lfFilter = lens _lfFilter (\ s a -> s{_lfFilter = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+lfMaxResults :: Lens' ListFindings (Maybe Int)
+lfMaxResults = lens _lfMaxResults (\ s a -> s{_lfMaxResults = a});
+
+instance AWSRequest ListFindings where
+        type Rs ListFindings = ListFindingsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListFindingsResponse' <$>
+                   (x .?> "nextToken") <*>
+                     (x .?> "findingArnList" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListFindings where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListFindings" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListFindings where
+        toJSON ListFindings'{..}
+          = object
+              (catMaybes
+                 [("runArns" .=) <$> _lfRunARNs,
+                  ("nextToken" .=) <$> _lfNextToken,
+                  ("filter" .=) <$> _lfFilter,
+                  ("maxResults" .=) <$> _lfMaxResults])
+
+instance ToPath ListFindings where
+        toPath = const "/"
+
+instance ToQuery ListFindings where
+        toQuery = const mempty
+
+-- | /See:/ 'listFindingsResponse' smart constructor.
+data ListFindingsResponse = ListFindingsResponse'
+    { _lfrsNextToken      :: !(Maybe Text)
+    , _lfrsFindingARNList :: !(Maybe [Text])
+    , _lfrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListFindingsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lfrsNextToken'
+--
+-- * 'lfrsFindingARNList'
+--
+-- * 'lfrsResponseStatus'
+listFindingsResponse
+    :: Int -- ^ 'lfrsResponseStatus'
+    -> ListFindingsResponse
+listFindingsResponse pResponseStatus_ =
+    ListFindingsResponse'
+    { _lfrsNextToken = Nothing
+    , _lfrsFindingARNList = Nothing
+    , _lfrsResponseStatus = pResponseStatus_
+    }
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+lfrsNextToken :: Lens' ListFindingsResponse (Maybe Text)
+lfrsNextToken = lens _lfrsNextToken (\ s a -> s{_lfrsNextToken = a});
+
+-- | A list of ARNs specifying the findings returned by the action.
+lfrsFindingARNList :: Lens' ListFindingsResponse [Text]
+lfrsFindingARNList = lens _lfrsFindingARNList (\ s a -> s{_lfrsFindingARNList = a}) . _Default . _Coerce;
+
+-- | The response status code.
+lfrsResponseStatus :: Lens' ListFindingsResponse Int
+lfrsResponseStatus = lens _lfrsResponseStatus (\ s a -> s{_lfrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListRulesPackages.hs b/gen/Network/AWS/Inspector/ListRulesPackages.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListRulesPackages.hs
@@ -0,0 +1,154 @@
+{-# 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.Inspector.ListRulesPackages
+-- 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 all available Inspector rules packages.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListRulesPackages.html AWS API Reference> for ListRulesPackages.
+module Network.AWS.Inspector.ListRulesPackages
+    (
+    -- * Creating a Request
+      listRulesPackages
+    , ListRulesPackages
+    -- * Request Lenses
+    , lrpNextToken
+    , lrpMaxResults
+
+    -- * Destructuring the Response
+    , listRulesPackagesResponse
+    , ListRulesPackagesResponse
+    -- * Response Lenses
+    , lrprsNextToken
+    , lrprsRulesPackageARNList
+    , lrprsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listRulesPackages' smart constructor.
+data ListRulesPackages = ListRulesPackages'
+    { _lrpNextToken  :: !(Maybe Text)
+    , _lrpMaxResults :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListRulesPackages' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrpNextToken'
+--
+-- * 'lrpMaxResults'
+listRulesPackages
+    :: ListRulesPackages
+listRulesPackages =
+    ListRulesPackages'
+    { _lrpNextToken = Nothing
+    , _lrpMaxResults = Nothing
+    }
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the
+-- __ListRulesPackages__ action. Subsequent calls to the action fill
+-- __nextToken__ in the request with the value of __NextToken__ from
+-- previous response to continue listing data.
+lrpNextToken :: Lens' ListRulesPackages (Maybe Text)
+lrpNextToken = lens _lrpNextToken (\ s a -> s{_lrpNextToken = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+lrpMaxResults :: Lens' ListRulesPackages (Maybe Int)
+lrpMaxResults = lens _lrpMaxResults (\ s a -> s{_lrpMaxResults = a});
+
+instance AWSRequest ListRulesPackages where
+        type Rs ListRulesPackages = ListRulesPackagesResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListRulesPackagesResponse' <$>
+                   (x .?> "nextToken") <*>
+                     (x .?> "rulesPackageArnList" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListRulesPackages where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListRulesPackages" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListRulesPackages where
+        toJSON ListRulesPackages'{..}
+          = object
+              (catMaybes
+                 [("nextToken" .=) <$> _lrpNextToken,
+                  ("maxResults" .=) <$> _lrpMaxResults])
+
+instance ToPath ListRulesPackages where
+        toPath = const "/"
+
+instance ToQuery ListRulesPackages where
+        toQuery = const mempty
+
+-- | /See:/ 'listRulesPackagesResponse' smart constructor.
+data ListRulesPackagesResponse = ListRulesPackagesResponse'
+    { _lrprsNextToken           :: !(Maybe Text)
+    , _lrprsRulesPackageARNList :: !(Maybe [Text])
+    , _lrprsResponseStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListRulesPackagesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrprsNextToken'
+--
+-- * 'lrprsRulesPackageARNList'
+--
+-- * 'lrprsResponseStatus'
+listRulesPackagesResponse
+    :: Int -- ^ 'lrprsResponseStatus'
+    -> ListRulesPackagesResponse
+listRulesPackagesResponse pResponseStatus_ =
+    ListRulesPackagesResponse'
+    { _lrprsNextToken = Nothing
+    , _lrprsRulesPackageARNList = Nothing
+    , _lrprsResponseStatus = pResponseStatus_
+    }
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+lrprsNextToken :: Lens' ListRulesPackagesResponse (Maybe Text)
+lrprsNextToken = lens _lrprsNextToken (\ s a -> s{_lrprsNextToken = a});
+
+-- | The list of ARNs specifying the rules packages returned by the action.
+lrprsRulesPackageARNList :: Lens' ListRulesPackagesResponse [Text]
+lrprsRulesPackageARNList = lens _lrprsRulesPackageARNList (\ s a -> s{_lrprsRulesPackageARNList = a}) . _Default . _Coerce;
+
+-- | The response status code.
+lrprsResponseStatus :: Lens' ListRulesPackagesResponse Int
+lrprsResponseStatus = lens _lrprsResponseStatus (\ s a -> s{_lrprsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListRuns.hs b/gen/Network/AWS/Inspector/ListRuns.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListRuns.hs
@@ -0,0 +1,180 @@
+{-# 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.Inspector.ListRuns
+-- 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 assessment runs associated with the assessments specified by
+-- the assessment ARNs.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListRuns.html AWS API Reference> for ListRuns.
+module Network.AWS.Inspector.ListRuns
+    (
+    -- * Creating a Request
+      listRuns
+    , ListRuns
+    -- * Request Lenses
+    , lrAssessmentARNs
+    , lrNextToken
+    , lrFilter
+    , lrMaxResults
+
+    -- * Destructuring the Response
+    , listRunsResponse
+    , ListRunsResponse
+    -- * Response Lenses
+    , lrrsRunARNList
+    , lrrsNextToken
+    , lrrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listRuns' smart constructor.
+data ListRuns = ListRuns'
+    { _lrAssessmentARNs :: !(Maybe [Text])
+    , _lrNextToken      :: !(Maybe Text)
+    , _lrFilter         :: !(Maybe RunsFilter)
+    , _lrMaxResults     :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListRuns' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrAssessmentARNs'
+--
+-- * 'lrNextToken'
+--
+-- * 'lrFilter'
+--
+-- * 'lrMaxResults'
+listRuns
+    :: ListRuns
+listRuns =
+    ListRuns'
+    { _lrAssessmentARNs = Nothing
+    , _lrNextToken = Nothing
+    , _lrFilter = Nothing
+    , _lrMaxResults = Nothing
+    }
+
+-- | The ARNs specifying the assessments whose runs you want to list.
+lrAssessmentARNs :: Lens' ListRuns [Text]
+lrAssessmentARNs = lens _lrAssessmentARNs (\ s a -> s{_lrAssessmentARNs = a}) . _Default . _Coerce;
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the __ListRuns__
+-- action. Subsequent calls to the action fill __nextToken__ in the request
+-- with the value of __NextToken__ from previous response to continue
+-- listing data.
+lrNextToken :: Lens' ListRuns (Maybe Text)
+lrNextToken = lens _lrNextToken (\ s a -> s{_lrNextToken = a});
+
+-- | You can use this parameter to specify a subset of data to be included in
+-- the action\'s response.
+--
+-- For a record to match a filter, all specified filter attributes must
+-- match. When multiple values are specified for a filter attribute, any of
+-- the values can match.
+lrFilter :: Lens' ListRuns (Maybe RunsFilter)
+lrFilter = lens _lrFilter (\ s a -> s{_lrFilter = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+lrMaxResults :: Lens' ListRuns (Maybe Int)
+lrMaxResults = lens _lrMaxResults (\ s a -> s{_lrMaxResults = a});
+
+instance AWSRequest ListRuns where
+        type Rs ListRuns = ListRunsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListRunsResponse' <$>
+                   (x .?> "runArnList" .!@ mempty) <*>
+                     (x .?> "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListRuns where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListRuns" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListRuns where
+        toJSON ListRuns'{..}
+          = object
+              (catMaybes
+                 [("assessmentArns" .=) <$> _lrAssessmentARNs,
+                  ("nextToken" .=) <$> _lrNextToken,
+                  ("filter" .=) <$> _lrFilter,
+                  ("maxResults" .=) <$> _lrMaxResults])
+
+instance ToPath ListRuns where
+        toPath = const "/"
+
+instance ToQuery ListRuns where
+        toQuery = const mempty
+
+-- | /See:/ 'listRunsResponse' smart constructor.
+data ListRunsResponse = ListRunsResponse'
+    { _lrrsRunARNList     :: !(Maybe [Text])
+    , _lrrsNextToken      :: !(Maybe Text)
+    , _lrrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListRunsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrrsRunARNList'
+--
+-- * 'lrrsNextToken'
+--
+-- * 'lrrsResponseStatus'
+listRunsResponse
+    :: Int -- ^ 'lrrsResponseStatus'
+    -> ListRunsResponse
+listRunsResponse pResponseStatus_ =
+    ListRunsResponse'
+    { _lrrsRunARNList = Nothing
+    , _lrrsNextToken = Nothing
+    , _lrrsResponseStatus = pResponseStatus_
+    }
+
+-- | A list of ARNs specifying the assessment runs returned by the action.
+lrrsRunARNList :: Lens' ListRunsResponse [Text]
+lrrsRunARNList = lens _lrrsRunARNList (\ s a -> s{_lrrsRunARNList = a}) . _Default . _Coerce;
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+lrrsNextToken :: Lens' ListRunsResponse (Maybe Text)
+lrrsNextToken = lens _lrrsNextToken (\ s a -> s{_lrrsNextToken = a});
+
+-- | The response status code.
+lrrsResponseStatus :: Lens' ListRunsResponse Int
+lrrsResponseStatus = lens _lrrsResponseStatus (\ s a -> s{_lrrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/ListTagsForResource.hs b/gen/Network/AWS/Inspector/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/ListTagsForResource.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.Inspector.ListTagsForResource
+-- 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 all tags associated with a resource.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_ListTagsForResource.html AWS API Reference> for ListTagsForResource.
+module Network.AWS.Inspector.ListTagsForResource
+    (
+    -- * Creating a Request
+      listTagsForResource
+    , ListTagsForResource
+    -- * Request Lenses
+    , ltfrResourceARN
+
+    -- * Destructuring the Response
+    , listTagsForResourceResponse
+    , ListTagsForResourceResponse
+    -- * Response Lenses
+    , ltfrrsTagList
+    , ltfrrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listTagsForResource' smart constructor.
+newtype ListTagsForResource = ListTagsForResource'
+    { _ltfrResourceARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltfrResourceARN'
+listTagsForResource
+    :: ListTagsForResource
+listTagsForResource =
+    ListTagsForResource'
+    { _ltfrResourceARN = Nothing
+    }
+
+-- | The ARN specifying the resource whose tags you want to list.
+ltfrResourceARN :: Lens' ListTagsForResource (Maybe Text)
+ltfrResourceARN = lens _ltfrResourceARN (\ s a -> s{_ltfrResourceARN = a});
+
+instance AWSRequest ListTagsForResource where
+        type Rs ListTagsForResource =
+             ListTagsForResourceResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListTagsForResourceResponse' <$>
+                   (x .?> "tagList" .!@ mempty) <*> (pure (fromEnum s)))
+
+instance ToHeaders ListTagsForResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.ListTagsForResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListTagsForResource where
+        toJSON ListTagsForResource'{..}
+          = object
+              (catMaybes [("resourceArn" .=) <$> _ltfrResourceARN])
+
+instance ToPath ListTagsForResource where
+        toPath = const "/"
+
+instance ToQuery ListTagsForResource where
+        toQuery = const mempty
+
+-- | /See:/ 'listTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+    { _ltfrrsTagList        :: !(Maybe [Tag])
+    , _ltfrrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTagsForResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltfrrsTagList'
+--
+-- * 'ltfrrsResponseStatus'
+listTagsForResourceResponse
+    :: Int -- ^ 'ltfrrsResponseStatus'
+    -> ListTagsForResourceResponse
+listTagsForResourceResponse pResponseStatus_ =
+    ListTagsForResourceResponse'
+    { _ltfrrsTagList = Nothing
+    , _ltfrrsResponseStatus = pResponseStatus_
+    }
+
+-- | A collection of key and value pairs.
+ltfrrsTagList :: Lens' ListTagsForResourceResponse [Tag]
+ltfrrsTagList = lens _ltfrrsTagList (\ s a -> s{_ltfrrsTagList = a}) . _Default . _Coerce;
+
+-- | The response status code.
+ltfrrsResponseStatus :: Lens' ListTagsForResourceResponse Int
+ltfrrsResponseStatus = lens _ltfrrsResponseStatus (\ s a -> s{_ltfrrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/LocalizeText.hs b/gen/Network/AWS/Inspector/LocalizeText.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/LocalizeText.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.Inspector.LocalizeText
+-- 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)
+--
+-- Translates a textual identifier into a user-readable text in a specified
+-- locale.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_LocalizeText.html AWS API Reference> for LocalizeText.
+module Network.AWS.Inspector.LocalizeText
+    (
+    -- * Creating a Request
+      localizeText
+    , LocalizeText
+    -- * Request Lenses
+    , ltLocale
+    , ltLocalizedTexts
+
+    -- * Destructuring the Response
+    , localizeTextResponse
+    , LocalizeTextResponse
+    -- * Response Lenses
+    , ltrsResults
+    , ltrsMessage
+    , ltrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'localizeText' smart constructor.
+data LocalizeText = LocalizeText'
+    { _ltLocale         :: !(Maybe Text)
+    , _ltLocalizedTexts :: !(Maybe [LocalizedText])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LocalizeText' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltLocale'
+--
+-- * 'ltLocalizedTexts'
+localizeText
+    :: LocalizeText
+localizeText =
+    LocalizeText'
+    { _ltLocale = Nothing
+    , _ltLocalizedTexts = Nothing
+    }
+
+-- | The locale that you want to translate a textual identifier into.
+ltLocale :: Lens' LocalizeText (Maybe Text)
+ltLocale = lens _ltLocale (\ s a -> s{_ltLocale = a});
+
+-- | A list of textual identifiers.
+ltLocalizedTexts :: Lens' LocalizeText [LocalizedText]
+ltLocalizedTexts = lens _ltLocalizedTexts (\ s a -> s{_ltLocalizedTexts = a}) . _Default . _Coerce;
+
+instance AWSRequest LocalizeText where
+        type Rs LocalizeText = LocalizeTextResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 LocalizeTextResponse' <$>
+                   (x .?> "results" .!@ mempty) <*> (x .?> "message")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders LocalizeText where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.LocalizeText" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON LocalizeText where
+        toJSON LocalizeText'{..}
+          = object
+              (catMaybes
+                 [("locale" .=) <$> _ltLocale,
+                  ("localizedTexts" .=) <$> _ltLocalizedTexts])
+
+instance ToPath LocalizeText where
+        toPath = const "/"
+
+instance ToQuery LocalizeText where
+        toQuery = const mempty
+
+-- | /See:/ 'localizeTextResponse' smart constructor.
+data LocalizeTextResponse = LocalizeTextResponse'
+    { _ltrsResults        :: !(Maybe [Text])
+    , _ltrsMessage        :: !(Maybe Text)
+    , _ltrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LocalizeTextResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltrsResults'
+--
+-- * 'ltrsMessage'
+--
+-- * 'ltrsResponseStatus'
+localizeTextResponse
+    :: Int -- ^ 'ltrsResponseStatus'
+    -> LocalizeTextResponse
+localizeTextResponse pResponseStatus_ =
+    LocalizeTextResponse'
+    { _ltrsResults = Nothing
+    , _ltrsMessage = Nothing
+    , _ltrsResponseStatus = pResponseStatus_
+    }
+
+-- | The resulting list of user-readable texts.
+ltrsResults :: Lens' LocalizeTextResponse [Text]
+ltrsResults = lens _ltrsResults (\ s a -> s{_ltrsResults = a}) . _Default . _Coerce;
+
+-- | Confirmation details of the action performed.
+ltrsMessage :: Lens' LocalizeTextResponse (Maybe Text)
+ltrsMessage = lens _ltrsMessage (\ s a -> s{_ltrsMessage = a});
+
+-- | The response status code.
+ltrsResponseStatus :: Lens' LocalizeTextResponse Int
+ltrsResponseStatus = lens _ltrsResponseStatus (\ s a -> s{_ltrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/PreviewAgentsForResourceGroup.hs b/gen/Network/AWS/Inspector/PreviewAgentsForResourceGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/PreviewAgentsForResourceGroup.hs
@@ -0,0 +1,169 @@
+{-# 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.Inspector.PreviewAgentsForResourceGroup
+-- 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)
+--
+-- Previews the agents installed on the EC2 instances that are included in
+-- the application created with the specified resource group.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_PreviewAgentsForResourceGroup.html AWS API Reference> for PreviewAgentsForResourceGroup.
+module Network.AWS.Inspector.PreviewAgentsForResourceGroup
+    (
+    -- * Creating a Request
+      previewAgentsForResourceGroup
+    , PreviewAgentsForResourceGroup
+    -- * Request Lenses
+    , pafrgResourceGroupARN
+    , pafrgNextToken
+    , pafrgMaxResults
+
+    -- * Destructuring the Response
+    , previewAgentsForResourceGroupResponse
+    , PreviewAgentsForResourceGroupResponse
+    -- * Response Lenses
+    , pafrgrsAgentPreviewList
+    , pafrgrsNextToken
+    , pafrgrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'previewAgentsForResourceGroup' smart constructor.
+data PreviewAgentsForResourceGroup = PreviewAgentsForResourceGroup'
+    { _pafrgResourceGroupARN :: !(Maybe Text)
+    , _pafrgNextToken        :: !(Maybe Text)
+    , _pafrgMaxResults       :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PreviewAgentsForResourceGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pafrgResourceGroupARN'
+--
+-- * 'pafrgNextToken'
+--
+-- * 'pafrgMaxResults'
+previewAgentsForResourceGroup
+    :: PreviewAgentsForResourceGroup
+previewAgentsForResourceGroup =
+    PreviewAgentsForResourceGroup'
+    { _pafrgResourceGroupARN = Nothing
+    , _pafrgNextToken = Nothing
+    , _pafrgMaxResults = Nothing
+    }
+
+-- | The ARN of the resource group that is used to create an application.
+pafrgResourceGroupARN :: Lens' PreviewAgentsForResourceGroup (Maybe Text)
+pafrgResourceGroupARN = lens _pafrgResourceGroupARN (\ s a -> s{_pafrgResourceGroupARN = a});
+
+-- | You can use this parameter when paginating results. Set the value of
+-- this parameter to \'null\' on your first call to the
+-- __PreviewAgentsForResourceGroup__ action. Subsequent calls to the action
+-- fill __nextToken__ in the request with the value of __NextToken__ from
+-- previous response to continue listing data.
+pafrgNextToken :: Lens' PreviewAgentsForResourceGroup (Maybe Text)
+pafrgNextToken = lens _pafrgNextToken (\ s a -> s{_pafrgNextToken = a});
+
+-- | You can use this parameter to indicate the maximum number of items you
+-- want in the response. The default value is 10. The maximum value is 500.
+pafrgMaxResults :: Lens' PreviewAgentsForResourceGroup (Maybe Int)
+pafrgMaxResults = lens _pafrgMaxResults (\ s a -> s{_pafrgMaxResults = a});
+
+instance AWSRequest PreviewAgentsForResourceGroup
+         where
+        type Rs PreviewAgentsForResourceGroup =
+             PreviewAgentsForResourceGroupResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 PreviewAgentsForResourceGroupResponse' <$>
+                   (x .?> "agentPreviewList" .!@ mempty) <*>
+                     (x .?> "nextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders PreviewAgentsForResourceGroup
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.PreviewAgentsForResourceGroup" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON PreviewAgentsForResourceGroup where
+        toJSON PreviewAgentsForResourceGroup'{..}
+          = object
+              (catMaybes
+                 [("resourceGroupArn" .=) <$> _pafrgResourceGroupARN,
+                  ("nextToken" .=) <$> _pafrgNextToken,
+                  ("maxResults" .=) <$> _pafrgMaxResults])
+
+instance ToPath PreviewAgentsForResourceGroup where
+        toPath = const "/"
+
+instance ToQuery PreviewAgentsForResourceGroup where
+        toQuery = const mempty
+
+-- | /See:/ 'previewAgentsForResourceGroupResponse' smart constructor.
+data PreviewAgentsForResourceGroupResponse = PreviewAgentsForResourceGroupResponse'
+    { _pafrgrsAgentPreviewList :: !(Maybe [AgentPreview])
+    , _pafrgrsNextToken        :: !(Maybe Text)
+    , _pafrgrsResponseStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PreviewAgentsForResourceGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pafrgrsAgentPreviewList'
+--
+-- * 'pafrgrsNextToken'
+--
+-- * 'pafrgrsResponseStatus'
+previewAgentsForResourceGroupResponse
+    :: Int -- ^ 'pafrgrsResponseStatus'
+    -> PreviewAgentsForResourceGroupResponse
+previewAgentsForResourceGroupResponse pResponseStatus_ =
+    PreviewAgentsForResourceGroupResponse'
+    { _pafrgrsAgentPreviewList = Nothing
+    , _pafrgrsNextToken = Nothing
+    , _pafrgrsResponseStatus = pResponseStatus_
+    }
+
+-- | The resulting list of agents.
+pafrgrsAgentPreviewList :: Lens' PreviewAgentsForResourceGroupResponse [AgentPreview]
+pafrgrsAgentPreviewList = lens _pafrgrsAgentPreviewList (\ s a -> s{_pafrgrsAgentPreviewList = a}) . _Default . _Coerce;
+
+-- | When a response is generated, if there is more data to be listed, this
+-- parameter is present in the response and contains the value to use for
+-- the __nextToken__ parameter in a subsequent pagination request. If there
+-- is no more data to be listed, this parameter is set to \'null\'.
+pafrgrsNextToken :: Lens' PreviewAgentsForResourceGroupResponse (Maybe Text)
+pafrgrsNextToken = lens _pafrgrsNextToken (\ s a -> s{_pafrgrsNextToken = a});
+
+-- | The response status code.
+pafrgrsResponseStatus :: Lens' PreviewAgentsForResourceGroupResponse Int
+pafrgrsResponseStatus = lens _pafrgrsResponseStatus (\ s a -> s{_pafrgrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/RegisterCrossAccountAccessRole.hs b/gen/Network/AWS/Inspector/RegisterCrossAccountAccessRole.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/RegisterCrossAccountAccessRole.hs
@@ -0,0 +1,130 @@
+{-# 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.Inspector.RegisterCrossAccountAccessRole
+-- 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)
+--
+-- Register the role that Inspector uses to list your EC2 instances during
+-- the assessment.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_RegisterCrossAccountAccessRole.html AWS API Reference> for RegisterCrossAccountAccessRole.
+module Network.AWS.Inspector.RegisterCrossAccountAccessRole
+    (
+    -- * Creating a Request
+      registerCrossAccountAccessRole
+    , RegisterCrossAccountAccessRole
+    -- * Request Lenses
+    , rcaarRoleARN
+
+    -- * Destructuring the Response
+    , registerCrossAccountAccessRoleResponse
+    , RegisterCrossAccountAccessRoleResponse
+    -- * Response Lenses
+    , rcaarrsMessage
+    , rcaarrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'registerCrossAccountAccessRole' smart constructor.
+newtype RegisterCrossAccountAccessRole = RegisterCrossAccountAccessRole'
+    { _rcaarRoleARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterCrossAccountAccessRole' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcaarRoleARN'
+registerCrossAccountAccessRole
+    :: RegisterCrossAccountAccessRole
+registerCrossAccountAccessRole =
+    RegisterCrossAccountAccessRole'
+    { _rcaarRoleARN = Nothing
+    }
+
+-- | The ARN of the IAM role that Inspector uses to list your EC2 instances
+-- during the assessment.
+rcaarRoleARN :: Lens' RegisterCrossAccountAccessRole (Maybe Text)
+rcaarRoleARN = lens _rcaarRoleARN (\ s a -> s{_rcaarRoleARN = a});
+
+instance AWSRequest RegisterCrossAccountAccessRole
+         where
+        type Rs RegisterCrossAccountAccessRole =
+             RegisterCrossAccountAccessRoleResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterCrossAccountAccessRoleResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders RegisterCrossAccountAccessRole
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.RegisterCrossAccountAccessRole" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RegisterCrossAccountAccessRole where
+        toJSON RegisterCrossAccountAccessRole'{..}
+          = object
+              (catMaybes [("roleArn" .=) <$> _rcaarRoleARN])
+
+instance ToPath RegisterCrossAccountAccessRole where
+        toPath = const "/"
+
+instance ToQuery RegisterCrossAccountAccessRole where
+        toQuery = const mempty
+
+-- | /See:/ 'registerCrossAccountAccessRoleResponse' smart constructor.
+data RegisterCrossAccountAccessRoleResponse = RegisterCrossAccountAccessRoleResponse'
+    { _rcaarrsMessage        :: !(Maybe Text)
+    , _rcaarrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterCrossAccountAccessRoleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcaarrsMessage'
+--
+-- * 'rcaarrsResponseStatus'
+registerCrossAccountAccessRoleResponse
+    :: Int -- ^ 'rcaarrsResponseStatus'
+    -> RegisterCrossAccountAccessRoleResponse
+registerCrossAccountAccessRoleResponse pResponseStatus_ =
+    RegisterCrossAccountAccessRoleResponse'
+    { _rcaarrsMessage = Nothing
+    , _rcaarrsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+rcaarrsMessage :: Lens' RegisterCrossAccountAccessRoleResponse (Maybe Text)
+rcaarrsMessage = lens _rcaarrsMessage (\ s a -> s{_rcaarrsMessage = a});
+
+-- | The response status code.
+rcaarrsResponseStatus :: Lens' RegisterCrossAccountAccessRoleResponse Int
+rcaarrsResponseStatus = lens _rcaarrsResponseStatus (\ s a -> s{_rcaarrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/RemoveAttributesFromFindings.hs b/gen/Network/AWS/Inspector/RemoveAttributesFromFindings.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/RemoveAttributesFromFindings.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.Inspector.RemoveAttributesFromFindings
+-- 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)
+--
+-- Removes the entire attribute (key and value pair) from the findings
+-- specified by the finding ARNs where an attribute with the specified key
+-- exists.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_RemoveAttributesFromFindings.html AWS API Reference> for RemoveAttributesFromFindings.
+module Network.AWS.Inspector.RemoveAttributesFromFindings
+    (
+    -- * Creating a Request
+      removeAttributesFromFindings
+    , RemoveAttributesFromFindings
+    -- * Request Lenses
+    , raffFindingARNs
+    , raffAttributeKeys
+
+    -- * Destructuring the Response
+    , removeAttributesFromFindingsResponse
+    , RemoveAttributesFromFindingsResponse
+    -- * Response Lenses
+    , raffrsMessage
+    , raffrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'removeAttributesFromFindings' smart constructor.
+data RemoveAttributesFromFindings = RemoveAttributesFromFindings'
+    { _raffFindingARNs   :: !(Maybe [Text])
+    , _raffAttributeKeys :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoveAttributesFromFindings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raffFindingARNs'
+--
+-- * 'raffAttributeKeys'
+removeAttributesFromFindings
+    :: RemoveAttributesFromFindings
+removeAttributesFromFindings =
+    RemoveAttributesFromFindings'
+    { _raffFindingARNs = Nothing
+    , _raffAttributeKeys = Nothing
+    }
+
+-- | The ARNs specifying the findings that you want to remove attributes
+-- from.
+raffFindingARNs :: Lens' RemoveAttributesFromFindings [Text]
+raffFindingARNs = lens _raffFindingARNs (\ s a -> s{_raffFindingARNs = a}) . _Default . _Coerce;
+
+-- | The array of attribute keys that you want to remove from specified
+-- findings.
+raffAttributeKeys :: Lens' RemoveAttributesFromFindings [Text]
+raffAttributeKeys = lens _raffAttributeKeys (\ s a -> s{_raffAttributeKeys = a}) . _Default . _Coerce;
+
+instance AWSRequest RemoveAttributesFromFindings
+         where
+        type Rs RemoveAttributesFromFindings =
+             RemoveAttributesFromFindingsResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RemoveAttributesFromFindingsResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders RemoveAttributesFromFindings where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.RemoveAttributesFromFindings" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RemoveAttributesFromFindings where
+        toJSON RemoveAttributesFromFindings'{..}
+          = object
+              (catMaybes
+                 [("findingArns" .=) <$> _raffFindingARNs,
+                  ("attributeKeys" .=) <$> _raffAttributeKeys])
+
+instance ToPath RemoveAttributesFromFindings where
+        toPath = const "/"
+
+instance ToQuery RemoveAttributesFromFindings where
+        toQuery = const mempty
+
+-- | /See:/ 'removeAttributesFromFindingsResponse' smart constructor.
+data RemoveAttributesFromFindingsResponse = RemoveAttributesFromFindingsResponse'
+    { _raffrsMessage        :: !(Maybe Text)
+    , _raffrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoveAttributesFromFindingsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raffrsMessage'
+--
+-- * 'raffrsResponseStatus'
+removeAttributesFromFindingsResponse
+    :: Int -- ^ 'raffrsResponseStatus'
+    -> RemoveAttributesFromFindingsResponse
+removeAttributesFromFindingsResponse pResponseStatus_ =
+    RemoveAttributesFromFindingsResponse'
+    { _raffrsMessage = Nothing
+    , _raffrsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+raffrsMessage :: Lens' RemoveAttributesFromFindingsResponse (Maybe Text)
+raffrsMessage = lens _raffrsMessage (\ s a -> s{_raffrsMessage = a});
+
+-- | The response status code.
+raffrsResponseStatus :: Lens' RemoveAttributesFromFindingsResponse Int
+raffrsResponseStatus = lens _raffrsResponseStatus (\ s a -> s{_raffrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/RunAssessment.hs b/gen/Network/AWS/Inspector/RunAssessment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/RunAssessment.hs
@@ -0,0 +1,136 @@
+{-# 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.Inspector.RunAssessment
+-- 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)
+--
+-- Starts the analysis of the application’s behavior against selected rule
+-- packages for the assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_RunAssessment.html AWS API Reference> for RunAssessment.
+module Network.AWS.Inspector.RunAssessment
+    (
+    -- * Creating a Request
+      runAssessment
+    , RunAssessment
+    -- * Request Lenses
+    , raAssessmentARN
+    , raRunName
+
+    -- * Destructuring the Response
+    , runAssessmentResponse
+    , RunAssessmentResponse
+    -- * Response Lenses
+    , rarsRunARN
+    , rarsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'runAssessment' smart constructor.
+data RunAssessment = RunAssessment'
+    { _raAssessmentARN :: !(Maybe Text)
+    , _raRunName       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RunAssessment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raAssessmentARN'
+--
+-- * 'raRunName'
+runAssessment
+    :: RunAssessment
+runAssessment =
+    RunAssessment'
+    { _raAssessmentARN = Nothing
+    , _raRunName = Nothing
+    }
+
+-- | The ARN of the assessment that you want to run.
+raAssessmentARN :: Lens' RunAssessment (Maybe Text)
+raAssessmentARN = lens _raAssessmentARN (\ s a -> s{_raAssessmentARN = a});
+
+-- | A name specifying the run of the assessment.
+raRunName :: Lens' RunAssessment (Maybe Text)
+raRunName = lens _raRunName (\ s a -> s{_raRunName = a});
+
+instance AWSRequest RunAssessment where
+        type Rs RunAssessment = RunAssessmentResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RunAssessmentResponse' <$>
+                   (x .?> "runArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders RunAssessment where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.RunAssessment" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RunAssessment where
+        toJSON RunAssessment'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _raAssessmentARN,
+                  ("runName" .=) <$> _raRunName])
+
+instance ToPath RunAssessment where
+        toPath = const "/"
+
+instance ToQuery RunAssessment where
+        toQuery = const mempty
+
+-- | /See:/ 'runAssessmentResponse' smart constructor.
+data RunAssessmentResponse = RunAssessmentResponse'
+    { _rarsRunARN         :: !(Maybe Text)
+    , _rarsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RunAssessmentResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rarsRunARN'
+--
+-- * 'rarsResponseStatus'
+runAssessmentResponse
+    :: Int -- ^ 'rarsResponseStatus'
+    -> RunAssessmentResponse
+runAssessmentResponse pResponseStatus_ =
+    RunAssessmentResponse'
+    { _rarsRunARN = Nothing
+    , _rarsResponseStatus = pResponseStatus_
+    }
+
+-- | The ARN specifying the run of the assessment.
+rarsRunARN :: Lens' RunAssessmentResponse (Maybe Text)
+rarsRunARN = lens _rarsRunARN (\ s a -> s{_rarsRunARN = a});
+
+-- | The response status code.
+rarsResponseStatus :: Lens' RunAssessmentResponse Int
+rarsResponseStatus = lens _rarsResponseStatus (\ s a -> s{_rarsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/SetTagsForResource.hs b/gen/Network/AWS/Inspector/SetTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/SetTagsForResource.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.Inspector.SetTagsForResource
+-- 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)
+--
+-- Sets tags (key and value pairs) to the assessment specified by the
+-- assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_SetTagsForResource.html AWS API Reference> for SetTagsForResource.
+module Network.AWS.Inspector.SetTagsForResource
+    (
+    -- * Creating a Request
+      setTagsForResource
+    , SetTagsForResource
+    -- * Request Lenses
+    , stfrResourceARN
+    , stfrTags
+
+    -- * Destructuring the Response
+    , setTagsForResourceResponse
+    , SetTagsForResourceResponse
+    -- * Response Lenses
+    , stfrrsMessage
+    , stfrrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'setTagsForResource' smart constructor.
+data SetTagsForResource = SetTagsForResource'
+    { _stfrResourceARN :: !(Maybe Text)
+    , _stfrTags        :: !(Maybe [Tag])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetTagsForResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stfrResourceARN'
+--
+-- * 'stfrTags'
+setTagsForResource
+    :: SetTagsForResource
+setTagsForResource =
+    SetTagsForResource'
+    { _stfrResourceARN = Nothing
+    , _stfrTags = Nothing
+    }
+
+-- | The ARN of the assessment that you want to set tags to.
+stfrResourceARN :: Lens' SetTagsForResource (Maybe Text)
+stfrResourceARN = lens _stfrResourceARN (\ s a -> s{_stfrResourceARN = a});
+
+-- | A collection of key and value pairs that you want to set to an
+-- assessment.
+stfrTags :: Lens' SetTagsForResource [Tag]
+stfrTags = lens _stfrTags (\ s a -> s{_stfrTags = a}) . _Default . _Coerce;
+
+instance AWSRequest SetTagsForResource where
+        type Rs SetTagsForResource =
+             SetTagsForResourceResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 SetTagsForResourceResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders SetTagsForResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.SetTagsForResource" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON SetTagsForResource where
+        toJSON SetTagsForResource'{..}
+          = object
+              (catMaybes
+                 [("resourceArn" .=) <$> _stfrResourceARN,
+                  ("tags" .=) <$> _stfrTags])
+
+instance ToPath SetTagsForResource where
+        toPath = const "/"
+
+instance ToQuery SetTagsForResource where
+        toQuery = const mempty
+
+-- | /See:/ 'setTagsForResourceResponse' smart constructor.
+data SetTagsForResourceResponse = SetTagsForResourceResponse'
+    { _stfrrsMessage        :: !(Maybe Text)
+    , _stfrrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetTagsForResourceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stfrrsMessage'
+--
+-- * 'stfrrsResponseStatus'
+setTagsForResourceResponse
+    :: Int -- ^ 'stfrrsResponseStatus'
+    -> SetTagsForResourceResponse
+setTagsForResourceResponse pResponseStatus_ =
+    SetTagsForResourceResponse'
+    { _stfrrsMessage = Nothing
+    , _stfrrsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+stfrrsMessage :: Lens' SetTagsForResourceResponse (Maybe Text)
+stfrrsMessage = lens _stfrrsMessage (\ s a -> s{_stfrrsMessage = a});
+
+-- | The response status code.
+stfrrsResponseStatus :: Lens' SetTagsForResourceResponse Int
+stfrrsResponseStatus = lens _stfrrsResponseStatus (\ s a -> s{_stfrrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/StartDataCollection.hs b/gen/Network/AWS/Inspector/StartDataCollection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/StartDataCollection.hs
@@ -0,0 +1,130 @@
+{-# 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.Inspector.StartDataCollection
+-- 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)
+--
+-- Starts data collection for the assessment specified by the assessment
+-- ARN. For this API to function properly, you must not exceed the limit of
+-- running up to 500 concurrent agents per AWS account.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_StartDataCollection.html AWS API Reference> for StartDataCollection.
+module Network.AWS.Inspector.StartDataCollection
+    (
+    -- * Creating a Request
+      startDataCollection
+    , StartDataCollection
+    -- * Request Lenses
+    , sdcAssessmentARN
+
+    -- * Destructuring the Response
+    , startDataCollectionResponse
+    , StartDataCollectionResponse
+    -- * Response Lenses
+    , srsMessage
+    , srsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'startDataCollection' smart constructor.
+newtype StartDataCollection = StartDataCollection'
+    { _sdcAssessmentARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StartDataCollection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdcAssessmentARN'
+startDataCollection
+    :: StartDataCollection
+startDataCollection =
+    StartDataCollection'
+    { _sdcAssessmentARN = Nothing
+    }
+
+-- | The ARN of the assessment for which you want to start the data
+-- collection process.
+sdcAssessmentARN :: Lens' StartDataCollection (Maybe Text)
+sdcAssessmentARN = lens _sdcAssessmentARN (\ s a -> s{_sdcAssessmentARN = a});
+
+instance AWSRequest StartDataCollection where
+        type Rs StartDataCollection =
+             StartDataCollectionResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 StartDataCollectionResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders StartDataCollection where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.StartDataCollection" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON StartDataCollection where
+        toJSON StartDataCollection'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _sdcAssessmentARN])
+
+instance ToPath StartDataCollection where
+        toPath = const "/"
+
+instance ToQuery StartDataCollection where
+        toQuery = const mempty
+
+-- | /See:/ 'startDataCollectionResponse' smart constructor.
+data StartDataCollectionResponse = StartDataCollectionResponse'
+    { _srsMessage        :: !(Maybe Text)
+    , _srsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StartDataCollectionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srsMessage'
+--
+-- * 'srsResponseStatus'
+startDataCollectionResponse
+    :: Int -- ^ 'srsResponseStatus'
+    -> StartDataCollectionResponse
+startDataCollectionResponse pResponseStatus_ =
+    StartDataCollectionResponse'
+    { _srsMessage = Nothing
+    , _srsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+srsMessage :: Lens' StartDataCollectionResponse (Maybe Text)
+srsMessage = lens _srsMessage (\ s a -> s{_srsMessage = a});
+
+-- | The response status code.
+srsResponseStatus :: Lens' StartDataCollectionResponse Int
+srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/StopDataCollection.hs b/gen/Network/AWS/Inspector/StopDataCollection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/StopDataCollection.hs
@@ -0,0 +1,128 @@
+{-# 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.Inspector.StopDataCollection
+-- 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)
+--
+-- Stop data collection for the assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_StopDataCollection.html AWS API Reference> for StopDataCollection.
+module Network.AWS.Inspector.StopDataCollection
+    (
+    -- * Creating a Request
+      stopDataCollection
+    , StopDataCollection
+    -- * Request Lenses
+    , sAssessmentARN
+
+    -- * Destructuring the Response
+    , stopDataCollectionResponse
+    , StopDataCollectionResponse
+    -- * Response Lenses
+    , sdcrsMessage
+    , sdcrsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'stopDataCollection' smart constructor.
+newtype StopDataCollection = StopDataCollection'
+    { _sAssessmentARN :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StopDataCollection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sAssessmentARN'
+stopDataCollection
+    :: StopDataCollection
+stopDataCollection =
+    StopDataCollection'
+    { _sAssessmentARN = Nothing
+    }
+
+-- | The ARN of the assessment for which you want to stop the data collection
+-- process.
+sAssessmentARN :: Lens' StopDataCollection (Maybe Text)
+sAssessmentARN = lens _sAssessmentARN (\ s a -> s{_sAssessmentARN = a});
+
+instance AWSRequest StopDataCollection where
+        type Rs StopDataCollection =
+             StopDataCollectionResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 StopDataCollectionResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders StopDataCollection where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.StopDataCollection" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON StopDataCollection where
+        toJSON StopDataCollection'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _sAssessmentARN])
+
+instance ToPath StopDataCollection where
+        toPath = const "/"
+
+instance ToQuery StopDataCollection where
+        toQuery = const mempty
+
+-- | /See:/ 'stopDataCollectionResponse' smart constructor.
+data StopDataCollectionResponse = StopDataCollectionResponse'
+    { _sdcrsMessage        :: !(Maybe Text)
+    , _sdcrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StopDataCollectionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdcrsMessage'
+--
+-- * 'sdcrsResponseStatus'
+stopDataCollectionResponse
+    :: Int -- ^ 'sdcrsResponseStatus'
+    -> StopDataCollectionResponse
+stopDataCollectionResponse pResponseStatus_ =
+    StopDataCollectionResponse'
+    { _sdcrsMessage = Nothing
+    , _sdcrsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+sdcrsMessage :: Lens' StopDataCollectionResponse (Maybe Text)
+sdcrsMessage = lens _sdcrsMessage (\ s a -> s{_sdcrsMessage = a});
+
+-- | The response status code.
+sdcrsResponseStatus :: Lens' StopDataCollectionResponse Int
+sdcrsResponseStatus = lens _sdcrsResponseStatus (\ s a -> s{_sdcrsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/Types.hs b/gen/Network/AWS/Inspector/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/Types.hs
@@ -0,0 +1,261 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.Inspector.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.Inspector.Types
+    (
+    -- * Service Configuration
+      inspector
+
+    -- * Errors
+    , _AccessDeniedException
+    , _NoSuchEntityException
+    , _OperationInProgressException
+    , _InvalidCrossAccountRoleException
+    , _InvalidInputException
+    , _InternalException
+
+    -- * Agent
+    , Agent
+    , agent
+    , aTelemetry
+    , aAutoScalingGroup
+    , aAgentHealthCode
+    , aAssessmentARN
+    , aAgentId
+    , aAccountId
+    , aAgentHealthDetails
+    , aAgentHealth
+
+    -- * AgentPreview
+    , AgentPreview
+    , agentPreview
+    , apAutoScalingGroup
+    , apAgentId
+
+    -- * AgentsFilter
+    , AgentsFilter
+    , agentsFilter
+    , afAgentHealthList
+
+    -- * Application
+    , Application
+    , application
+    , aApplicationARN
+    , aResourceGroupARN
+    , aApplicationName
+
+    -- * ApplicationsFilter
+    , ApplicationsFilter
+    , applicationsFilter
+    , afApplicationNamePatterns
+
+    -- * Assessment
+    , Assessment
+    , assessment
+    , assDataCollected
+    , assApplicationARN
+    , assStartTime
+    , assAssessmentARN
+    , assUserAttributesForFindings
+    , assFailureMessage
+    , assAssessmentState
+    , assEndTime
+    , assDurationInSeconds
+    , assAssessmentName
+
+    -- * AssessmentsFilter
+    , AssessmentsFilter
+    , assessmentsFilter
+    , afDataCollected
+    , afAssessmentStates
+    , afStartTimeRange
+    , afAssessmentNamePatterns
+    , afEndTimeRange
+    , afDurationRange
+
+    -- * Attribute
+    , Attribute
+    , attribute
+    , aValue
+    , aKey
+
+    -- * DurationRange
+    , DurationRange
+    , durationRange
+    , drMaximum
+    , drMinimum
+
+    -- * Finding
+    , Finding
+    , finding
+    , fAutoScalingGroup
+    , fFinding
+    , fSeverity
+    , fUserAttributes
+    , fRuleName
+    , fAgentId
+    , fRunARN
+    , fAttributes
+    , fRulesPackageARN
+    , fFindingARN
+    , fDescription
+    , fRecommendation
+
+    -- * FindingsFilter
+    , FindingsFilter
+    , findingsFilter
+    , ffRuleNames
+    , ffUserAttributes
+    , ffRulesPackageARNs
+    , ffAttributes
+    , ffSeverities
+
+    -- * LocalizedText
+    , LocalizedText
+    , localizedText
+    , ltKey
+    , ltParameters
+
+    -- * LocalizedTextKey
+    , LocalizedTextKey
+    , localizedTextKey
+    , ltkFacility
+    , ltkId
+
+    -- * MessageTypeTelemetry
+    , MessageTypeTelemetry
+    , messageTypeTelemetry
+    , mttDataSize
+    , mttMessageType
+    , mttCount
+
+    -- * Parameter
+    , Parameter
+    , parameter
+    , pValue
+    , pName
+
+    -- * ResourceGroup
+    , ResourceGroup
+    , resourceGroup
+    , rgResourceGroupTags
+    , rgResourceGroupARN
+
+    -- * RulesPackage
+    , RulesPackage
+    , rulesPackage
+    , rpVersion
+    , rpRulesPackageARN
+    , rpRulesPackageName
+    , rpDescription
+    , rpProvider
+
+    -- * Run
+    , Run
+    , run
+    , runCreationTime
+    , runRulesPackages
+    , runAssessmentARN
+    , runRunState
+    , runRunName
+    , runCompletionTime
+    , runRunARN
+
+    -- * RunsFilter
+    , RunsFilter
+    , runsFilter
+    , rfCreationTime
+    , rfRulesPackages
+    , rfRunStates
+    , rfRunNamePatterns
+    , rfCompletionTime
+
+    -- * Tag
+    , Tag
+    , tag
+    , tagValue
+    , tagKey
+
+    -- * Telemetry
+    , Telemetry
+    , telemetry
+    , tStatus
+    , tMessageTypeTelemetries
+
+    -- * TimestampRange
+    , TimestampRange
+    , timestampRange
+    , trMaximum
+    , trMinimum
+    ) where
+
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Inspector.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+
+-- | API version '2015-08-18' of the Amazon Inspector SDK configuration.
+inspector :: Service
+inspector =
+    Service
+    { _svcAbbrev = "Inspector"
+    , _svcSigner = v4
+    , _svcPrefix = "inspector"
+    , _svcVersion = "2015-08-18"
+    , _svcEndpoint = defaultEndpoint inspector
+    , _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 AccessDeniedException' errors.
+_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError
+_AccessDeniedException = _ServiceError . hasCode "AccessDeniedException"
+
+-- | Prism for NoSuchEntityException' errors.
+_NoSuchEntityException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoSuchEntityException = _ServiceError . hasCode "NoSuchEntityException"
+
+-- | Prism for OperationInProgressException' errors.
+_OperationInProgressException :: AsError a => Getting (First ServiceError) a ServiceError
+_OperationInProgressException =
+    _ServiceError . hasCode "OperationInProgressException"
+
+-- | Prism for InvalidCrossAccountRoleException' errors.
+_InvalidCrossAccountRoleException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidCrossAccountRoleException =
+    _ServiceError . hasCode "InvalidCrossAccountRoleException"
+
+-- | Prism for InvalidInputException' errors.
+_InvalidInputException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidInputException = _ServiceError . hasCode "InvalidInputException"
+
+-- | Prism for InternalException' errors.
+_InternalException :: AsError a => Getting (First ServiceError) a ServiceError
+_InternalException = _ServiceError . hasCode "InternalException"
diff --git a/gen/Network/AWS/Inspector/Types/Product.hs b/gen/Network/AWS/Inspector/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/Types/Product.hs
@@ -0,0 +1,1380 @@
+{-# 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.Inspector.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.Inspector.Types.Product where
+
+import           Network.AWS.Inspector.Types.Sum
+import           Network.AWS.Prelude
+
+-- | Contains information about an Inspector agent. This data type is used as
+-- a response element in the ListAssessmentAgents action.
+--
+-- /See:/ 'agent' smart constructor.
+data Agent = Agent'
+    { _aTelemetry          :: !(Maybe [Telemetry])
+    , _aAutoScalingGroup   :: !(Maybe Text)
+    , _aAgentHealthCode    :: !(Maybe Text)
+    , _aAssessmentARN      :: !(Maybe Text)
+    , _aAgentId            :: !(Maybe Text)
+    , _aAccountId          :: !(Maybe Text)
+    , _aAgentHealthDetails :: !(Maybe Text)
+    , _aAgentHealth        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Agent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aTelemetry'
+--
+-- * 'aAutoScalingGroup'
+--
+-- * 'aAgentHealthCode'
+--
+-- * 'aAssessmentARN'
+--
+-- * 'aAgentId'
+--
+-- * 'aAccountId'
+--
+-- * 'aAgentHealthDetails'
+--
+-- * 'aAgentHealth'
+agent
+    :: Agent
+agent =
+    Agent'
+    { _aTelemetry = Nothing
+    , _aAutoScalingGroup = Nothing
+    , _aAgentHealthCode = Nothing
+    , _aAssessmentARN = Nothing
+    , _aAgentId = Nothing
+    , _aAccountId = Nothing
+    , _aAgentHealthDetails = Nothing
+    , _aAgentHealth = Nothing
+    }
+
+-- | The Inspector application data metrics collected by the agent.
+aTelemetry :: Lens' Agent [Telemetry]
+aTelemetry = lens _aTelemetry (\ s a -> s{_aTelemetry = a}) . _Default . _Coerce;
+
+-- | This data type property is currently not used.
+aAutoScalingGroup :: Lens' Agent (Maybe Text)
+aAutoScalingGroup = lens _aAutoScalingGroup (\ s a -> s{_aAutoScalingGroup = a});
+
+-- | The detailed health state of the agent. Values can be set to /RUNNING/,
+-- /HEALTHY/, /UNHEALTHY/, /UNKNOWN/, /BLACKLISTED/, /SHUTDOWN/,
+-- /THROTTLED/.
+aAgentHealthCode :: Lens' Agent (Maybe Text)
+aAgentHealthCode = lens _aAgentHealthCode (\ s a -> s{_aAgentHealthCode = a});
+
+-- | The ARN of the assessment that is associated with the agent.
+aAssessmentARN :: Lens' Agent (Maybe Text)
+aAssessmentARN = lens _aAssessmentARN (\ s a -> s{_aAssessmentARN = a});
+
+-- | The EC2 instance ID where the agent is installed.
+aAgentId :: Lens' Agent (Maybe Text)
+aAgentId = lens _aAgentId (\ s a -> s{_aAgentId = a});
+
+-- | AWS account of the EC2 instance where the agent is installed.
+aAccountId :: Lens' Agent (Maybe Text)
+aAccountId = lens _aAccountId (\ s a -> s{_aAccountId = a});
+
+-- | The description for the agent health code.
+aAgentHealthDetails :: Lens' Agent (Maybe Text)
+aAgentHealthDetails = lens _aAgentHealthDetails (\ s a -> s{_aAgentHealthDetails = a});
+
+-- | The current health state of the agent. Values can be set to /HEALTHY/ or
+-- /UNHEALTHY/.
+aAgentHealth :: Lens' Agent (Maybe Text)
+aAgentHealth = lens _aAgentHealth (\ s a -> s{_aAgentHealth = a});
+
+instance FromJSON Agent where
+        parseJSON
+          = withObject "Agent"
+              (\ x ->
+                 Agent' <$>
+                   (x .:? "telemetry" .!= mempty) <*>
+                     (x .:? "autoScalingGroup")
+                     <*> (x .:? "agentHealthCode")
+                     <*> (x .:? "assessmentArn")
+                     <*> (x .:? "agentId")
+                     <*> (x .:? "accountId")
+                     <*> (x .:? "agentHealthDetails")
+                     <*> (x .:? "agentHealth"))
+
+-- | This data type is used as a response element in the
+-- PreviewAgentsForResourceGroup action.
+--
+-- /See:/ 'agentPreview' smart constructor.
+data AgentPreview = AgentPreview'
+    { _apAutoScalingGroup :: !(Maybe Text)
+    , _apAgentId          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AgentPreview' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apAutoScalingGroup'
+--
+-- * 'apAgentId'
+agentPreview
+    :: AgentPreview
+agentPreview =
+    AgentPreview'
+    { _apAutoScalingGroup = Nothing
+    , _apAgentId = Nothing
+    }
+
+-- | The autoscaling group for the EC2 instance where the agent is installed.
+apAutoScalingGroup :: Lens' AgentPreview (Maybe Text)
+apAutoScalingGroup = lens _apAutoScalingGroup (\ s a -> s{_apAutoScalingGroup = a});
+
+-- | The id of the EC2 instance where the agent is intalled.
+apAgentId :: Lens' AgentPreview (Maybe Text)
+apAgentId = lens _apAgentId (\ s a -> s{_apAgentId = a});
+
+instance FromJSON AgentPreview where
+        parseJSON
+          = withObject "AgentPreview"
+              (\ x ->
+                 AgentPreview' <$>
+                   (x .:? "autoScalingGroup") <*> (x .:? "agentId"))
+
+-- | This data type is used as a response element in the ListAssessmentAgents
+-- action.
+--
+-- /See:/ 'agentsFilter' smart constructor.
+newtype AgentsFilter = AgentsFilter'
+    { _afAgentHealthList :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AgentsFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'afAgentHealthList'
+agentsFilter
+    :: AgentsFilter
+agentsFilter =
+    AgentsFilter'
+    { _afAgentHealthList = Nothing
+    }
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __agentHealth__
+-- property of the Agent data type.
+afAgentHealthList :: Lens' AgentsFilter [Text]
+afAgentHealthList = lens _afAgentHealthList (\ s a -> s{_afAgentHealthList = a}) . _Default . _Coerce;
+
+instance ToJSON AgentsFilter where
+        toJSON AgentsFilter'{..}
+          = object
+              (catMaybes
+                 [("agentHealthList" .=) <$> _afAgentHealthList])
+
+-- | Contains information about an Inspector application.
+--
+-- This data type is used as the response element in the
+-- DescribeApplication action.
+--
+-- /See:/ 'application' smart constructor.
+data Application = Application'
+    { _aApplicationARN   :: !(Maybe Text)
+    , _aResourceGroupARN :: !(Maybe Text)
+    , _aApplicationName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Application' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aApplicationARN'
+--
+-- * 'aResourceGroupARN'
+--
+-- * 'aApplicationName'
+application
+    :: Application
+application =
+    Application'
+    { _aApplicationARN = Nothing
+    , _aResourceGroupARN = Nothing
+    , _aApplicationName = Nothing
+    }
+
+-- | The ARN specifying the Inspector application.
+aApplicationARN :: Lens' Application (Maybe Text)
+aApplicationARN = lens _aApplicationARN (\ s a -> s{_aApplicationARN = a});
+
+-- | The ARN specifying the resource group that is associated with the
+-- application.
+aResourceGroupARN :: Lens' Application (Maybe Text)
+aResourceGroupARN = lens _aResourceGroupARN (\ s a -> s{_aResourceGroupARN = a});
+
+-- | The name of the Inspector application.
+aApplicationName :: Lens' Application (Maybe Text)
+aApplicationName = lens _aApplicationName (\ s a -> s{_aApplicationName = a});
+
+instance FromJSON Application where
+        parseJSON
+          = withObject "Application"
+              (\ x ->
+                 Application' <$>
+                   (x .:? "applicationArn") <*>
+                     (x .:? "resourceGroupArn")
+                     <*> (x .:? "applicationName"))
+
+-- | This data type is used as the request parameter in the ListApplications
+-- action.
+--
+-- /See:/ 'applicationsFilter' smart constructor.
+newtype ApplicationsFilter = ApplicationsFilter'
+    { _afApplicationNamePatterns :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ApplicationsFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'afApplicationNamePatterns'
+applicationsFilter
+    :: ApplicationsFilter
+applicationsFilter =
+    ApplicationsFilter'
+    { _afApplicationNamePatterns = Nothing
+    }
+
+-- | For a record to match a filter, an explicit value or a string containing
+-- a wildcard specified for this data type property must match the value of
+-- the __applicationName__ property of the Application data type.
+afApplicationNamePatterns :: Lens' ApplicationsFilter [Text]
+afApplicationNamePatterns = lens _afApplicationNamePatterns (\ s a -> s{_afApplicationNamePatterns = a}) . _Default . _Coerce;
+
+instance ToJSON ApplicationsFilter where
+        toJSON ApplicationsFilter'{..}
+          = object
+              (catMaybes
+                 [("applicationNamePatterns" .=) <$>
+                    _afApplicationNamePatterns])
+
+-- | Contains information about an Inspector assessment.
+--
+-- This data type is used as the response element in the DescribeAssessment
+-- action.
+--
+-- /See:/ 'assessment' smart constructor.
+data Assessment = Assessment'
+    { _assDataCollected             :: !(Maybe Bool)
+    , _assApplicationARN            :: !(Maybe Text)
+    , _assStartTime                 :: !(Maybe POSIX)
+    , _assAssessmentARN             :: !(Maybe Text)
+    , _assUserAttributesForFindings :: !(Maybe [Attribute])
+    , _assFailureMessage            :: !(Maybe Text)
+    , _assAssessmentState           :: !(Maybe Text)
+    , _assEndTime                   :: !(Maybe POSIX)
+    , _assDurationInSeconds         :: !(Maybe Int)
+    , _assAssessmentName            :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Assessment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'assDataCollected'
+--
+-- * 'assApplicationARN'
+--
+-- * 'assStartTime'
+--
+-- * 'assAssessmentARN'
+--
+-- * 'assUserAttributesForFindings'
+--
+-- * 'assFailureMessage'
+--
+-- * 'assAssessmentState'
+--
+-- * 'assEndTime'
+--
+-- * 'assDurationInSeconds'
+--
+-- * 'assAssessmentName'
+assessment
+    :: Assessment
+assessment =
+    Assessment'
+    { _assDataCollected = Nothing
+    , _assApplicationARN = Nothing
+    , _assStartTime = Nothing
+    , _assAssessmentARN = Nothing
+    , _assUserAttributesForFindings = Nothing
+    , _assFailureMessage = Nothing
+    , _assAssessmentState = Nothing
+    , _assEndTime = Nothing
+    , _assDurationInSeconds = Nothing
+    , _assAssessmentName = Nothing
+    }
+
+-- | Boolean value (true or false) specifying whether the data collection
+-- process is completed.
+assDataCollected :: Lens' Assessment (Maybe Bool)
+assDataCollected = lens _assDataCollected (\ s a -> s{_assDataCollected = a});
+
+-- | The ARN of the application that corresponds to this assessment.
+assApplicationARN :: Lens' Assessment (Maybe Text)
+assApplicationARN = lens _assApplicationARN (\ s a -> s{_assApplicationARN = a});
+
+-- | The assessment start time.
+assStartTime :: Lens' Assessment (Maybe UTCTime)
+assStartTime = lens _assStartTime (\ s a -> s{_assStartTime = a}) . mapping _Time;
+
+-- | The ARN of the assessment.
+assAssessmentARN :: Lens' Assessment (Maybe Text)
+assAssessmentARN = lens _assAssessmentARN (\ s a -> s{_assAssessmentARN = a});
+
+-- | The user-defined attributes that are assigned to every generated
+-- finding.
+assUserAttributesForFindings :: Lens' Assessment [Attribute]
+assUserAttributesForFindings = lens _assUserAttributesForFindings (\ s a -> s{_assUserAttributesForFindings = a}) . _Default . _Coerce;
+
+-- | This data type property is not currently used.
+assFailureMessage :: Lens' Assessment (Maybe Text)
+assFailureMessage = lens _assFailureMessage (\ s a -> s{_assFailureMessage = a});
+
+-- | The state of the assessment. Values can be set to /Created/, /Collecting
+-- Data/, /Stopping/, and /Completed/.
+assAssessmentState :: Lens' Assessment (Maybe Text)
+assAssessmentState = lens _assAssessmentState (\ s a -> s{_assAssessmentState = a});
+
+-- | The assessment end time.
+assEndTime :: Lens' Assessment (Maybe UTCTime)
+assEndTime = lens _assEndTime (\ s a -> s{_assEndTime = a}) . mapping _Time;
+
+-- | The assessment duration in seconds. The default value is 3600 seconds
+-- (one hour). The maximum value is 86400 seconds (one day).
+assDurationInSeconds :: Lens' Assessment (Maybe Int)
+assDurationInSeconds = lens _assDurationInSeconds (\ s a -> s{_assDurationInSeconds = a});
+
+-- | The name of the assessment.
+assAssessmentName :: Lens' Assessment (Maybe Text)
+assAssessmentName = lens _assAssessmentName (\ s a -> s{_assAssessmentName = a});
+
+instance FromJSON Assessment where
+        parseJSON
+          = withObject "Assessment"
+              (\ x ->
+                 Assessment' <$>
+                   (x .:? "dataCollected") <*> (x .:? "applicationArn")
+                     <*> (x .:? "startTime")
+                     <*> (x .:? "assessmentArn")
+                     <*> (x .:? "userAttributesForFindings" .!= mempty)
+                     <*> (x .:? "failureMessage")
+                     <*> (x .:? "assessmentState")
+                     <*> (x .:? "endTime")
+                     <*> (x .:? "durationInSeconds")
+                     <*> (x .:? "assessmentName"))
+
+-- | This data type is used as the request parameter in the ListAssessments
+-- and ListAttachedAssessments actions.
+--
+-- /See:/ 'assessmentsFilter' smart constructor.
+data AssessmentsFilter = AssessmentsFilter'
+    { _afDataCollected          :: !(Maybe Bool)
+    , _afAssessmentStates       :: !(Maybe [Text])
+    , _afStartTimeRange         :: !(Maybe TimestampRange)
+    , _afAssessmentNamePatterns :: !(Maybe [Text])
+    , _afEndTimeRange           :: !(Maybe TimestampRange)
+    , _afDurationRange          :: !(Maybe DurationRange)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssessmentsFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'afDataCollected'
+--
+-- * 'afAssessmentStates'
+--
+-- * 'afStartTimeRange'
+--
+-- * 'afAssessmentNamePatterns'
+--
+-- * 'afEndTimeRange'
+--
+-- * 'afDurationRange'
+assessmentsFilter
+    :: AssessmentsFilter
+assessmentsFilter =
+    AssessmentsFilter'
+    { _afDataCollected = Nothing
+    , _afAssessmentStates = Nothing
+    , _afStartTimeRange = Nothing
+    , _afAssessmentNamePatterns = Nothing
+    , _afEndTimeRange = Nothing
+    , _afDurationRange = Nothing
+    }
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __dataCollected__
+-- property of the Assessment data type.
+afDataCollected :: Lens' AssessmentsFilter (Maybe Bool)
+afDataCollected = lens _afDataCollected (\ s a -> s{_afDataCollected = a});
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __assessmentState__
+-- property of the Assessment data type.
+afAssessmentStates :: Lens' AssessmentsFilter [Text]
+afAssessmentStates = lens _afAssessmentStates (\ s a -> s{_afAssessmentStates = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must inclusively match any value between the specified minimum
+-- and maximum values of the __startTime__ property of the Assessment data
+-- type.
+afStartTimeRange :: Lens' AssessmentsFilter (Maybe TimestampRange)
+afStartTimeRange = lens _afStartTimeRange (\ s a -> s{_afStartTimeRange = a});
+
+-- | For a record to match a filter, an explicit value or a string containing
+-- a wildcard specified for this data type property must match the value of
+-- the __assessmentName__ property of the Assessment data type.
+afAssessmentNamePatterns :: Lens' AssessmentsFilter [Text]
+afAssessmentNamePatterns = lens _afAssessmentNamePatterns (\ s a -> s{_afAssessmentNamePatterns = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must inclusively match any value between the specified minimum
+-- and maximum values of the __endTime__ property of the Assessment data
+-- type.
+afEndTimeRange :: Lens' AssessmentsFilter (Maybe TimestampRange)
+afEndTimeRange = lens _afEndTimeRange (\ s a -> s{_afEndTimeRange = a});
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must inclusively match any value between the specified minimum
+-- and maximum values of the __durationInSeconds__ property of the
+-- Assessment data type.
+afDurationRange :: Lens' AssessmentsFilter (Maybe DurationRange)
+afDurationRange = lens _afDurationRange (\ s a -> s{_afDurationRange = a});
+
+instance ToJSON AssessmentsFilter where
+        toJSON AssessmentsFilter'{..}
+          = object
+              (catMaybes
+                 [("dataCollected" .=) <$> _afDataCollected,
+                  ("assessmentStates" .=) <$> _afAssessmentStates,
+                  ("startTimeRange" .=) <$> _afStartTimeRange,
+                  ("assessmentNamePatterns" .=) <$>
+                    _afAssessmentNamePatterns,
+                  ("endTimeRange" .=) <$> _afEndTimeRange,
+                  ("durationRange" .=) <$> _afDurationRange])
+
+-- | This data type is used as a response element in the
+-- AddAttributesToFindings action and a request parameter in the
+-- CreateAssessment action.
+--
+-- /See:/ 'attribute' smart constructor.
+data Attribute = Attribute'
+    { _aValue :: !(Maybe Text)
+    , _aKey   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Attribute' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aValue'
+--
+-- * 'aKey'
+attribute
+    :: Attribute
+attribute =
+    Attribute'
+    { _aValue = Nothing
+    , _aKey = Nothing
+    }
+
+-- | The value assigned to the attribute key.
+aValue :: Lens' Attribute (Maybe Text)
+aValue = lens _aValue (\ s a -> s{_aValue = a});
+
+-- | The attribute key.
+aKey :: Lens' Attribute (Maybe Text)
+aKey = lens _aKey (\ s a -> s{_aKey = a});
+
+instance FromJSON Attribute where
+        parseJSON
+          = withObject "Attribute"
+              (\ x ->
+                 Attribute' <$> (x .:? "value") <*> (x .:? "key"))
+
+instance ToJSON Attribute where
+        toJSON Attribute'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _aValue, ("key" .=) <$> _aKey])
+
+-- | This data type is used in the AssessmentsFilter data type.
+--
+-- /See:/ 'durationRange' smart constructor.
+data DurationRange = DurationRange'
+    { _drMaximum :: !(Maybe Int)
+    , _drMinimum :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DurationRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drMaximum'
+--
+-- * 'drMinimum'
+durationRange
+    :: DurationRange
+durationRange =
+    DurationRange'
+    { _drMaximum = Nothing
+    , _drMinimum = Nothing
+    }
+
+-- | The maximum value of the duration range. Must be less than or equal to
+-- 604800 seconds (1 week).
+drMaximum :: Lens' DurationRange (Maybe Int)
+drMaximum = lens _drMaximum (\ s a -> s{_drMaximum = a});
+
+-- | The minimum value of the duration range. Must be greater than zero.
+drMinimum :: Lens' DurationRange (Maybe Int)
+drMinimum = lens _drMinimum (\ s a -> s{_drMinimum = a});
+
+instance ToJSON DurationRange where
+        toJSON DurationRange'{..}
+          = object
+              (catMaybes
+                 [("maximum" .=) <$> _drMaximum,
+                  ("minimum" .=) <$> _drMinimum])
+
+-- | Contains information about an Inspector finding.
+--
+-- This data type is used as the response element in the DescribeFinding
+-- action.
+--
+-- /See:/ 'finding' smart constructor.
+data Finding = Finding'
+    { _fAutoScalingGroup :: !(Maybe Text)
+    , _fFinding          :: !(Maybe LocalizedText)
+    , _fSeverity         :: !(Maybe Text)
+    , _fUserAttributes   :: !(Maybe [Attribute])
+    , _fRuleName         :: !(Maybe Text)
+    , _fAgentId          :: !(Maybe Text)
+    , _fRunARN           :: !(Maybe Text)
+    , _fAttributes       :: !(Maybe [Attribute])
+    , _fRulesPackageARN  :: !(Maybe Text)
+    , _fFindingARN       :: !(Maybe Text)
+    , _fDescription      :: !(Maybe LocalizedText)
+    , _fRecommendation   :: !(Maybe LocalizedText)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Finding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fAutoScalingGroup'
+--
+-- * 'fFinding'
+--
+-- * 'fSeverity'
+--
+-- * 'fUserAttributes'
+--
+-- * 'fRuleName'
+--
+-- * 'fAgentId'
+--
+-- * 'fRunARN'
+--
+-- * 'fAttributes'
+--
+-- * 'fRulesPackageARN'
+--
+-- * 'fFindingARN'
+--
+-- * 'fDescription'
+--
+-- * 'fRecommendation'
+finding
+    :: Finding
+finding =
+    Finding'
+    { _fAutoScalingGroup = Nothing
+    , _fFinding = Nothing
+    , _fSeverity = Nothing
+    , _fUserAttributes = Nothing
+    , _fRuleName = Nothing
+    , _fAgentId = Nothing
+    , _fRunARN = Nothing
+    , _fAttributes = Nothing
+    , _fRulesPackageARN = Nothing
+    , _fFindingARN = Nothing
+    , _fDescription = Nothing
+    , _fRecommendation = Nothing
+    }
+
+-- | The autoscaling group of the EC2 instance where the agent is installed
+-- that is used during the assessment that generates the finding.
+fAutoScalingGroup :: Lens' Finding (Maybe Text)
+fAutoScalingGroup = lens _fAutoScalingGroup (\ s a -> s{_fAutoScalingGroup = a});
+
+-- | A short description that identifies the finding.
+fFinding :: Lens' Finding (Maybe LocalizedText)
+fFinding = lens _fFinding (\ s a -> s{_fFinding = a});
+
+-- | The finding severity. Values can be set to /High/, /Medium/, /Low/, and
+-- /Informational/.
+fSeverity :: Lens' Finding (Maybe Text)
+fSeverity = lens _fSeverity (\ s a -> s{_fSeverity = a});
+
+-- | The user-defined attributes that are assigned to the finding.
+fUserAttributes :: Lens' Finding [Attribute]
+fUserAttributes = lens _fUserAttributes (\ s a -> s{_fUserAttributes = a}) . _Default . _Coerce;
+
+-- | The rule name that is used to generate the finding.
+fRuleName :: Lens' Finding (Maybe Text)
+fRuleName = lens _fRuleName (\ s a -> s{_fRuleName = a});
+
+-- | The EC2 instance ID where the agent is installed that is used during the
+-- assessment that generates the finding.
+fAgentId :: Lens' Finding (Maybe Text)
+fAgentId = lens _fAgentId (\ s a -> s{_fAgentId = a});
+
+-- | The ARN of the assessment run that generated the finding.
+fRunARN :: Lens' Finding (Maybe Text)
+fRunARN = lens _fRunARN (\ s a -> s{_fRunARN = a});
+
+-- | The system-defined attributes for the finding.
+fAttributes :: Lens' Finding [Attribute]
+fAttributes = lens _fAttributes (\ s a -> s{_fAttributes = a}) . _Default . _Coerce;
+
+-- | The ARN of the rules package that is used to generate the finding.
+fRulesPackageARN :: Lens' Finding (Maybe Text)
+fRulesPackageARN = lens _fRulesPackageARN (\ s a -> s{_fRulesPackageARN = a});
+
+-- | The ARN specifying the finding.
+fFindingARN :: Lens' Finding (Maybe Text)
+fFindingARN = lens _fFindingARN (\ s a -> s{_fFindingARN = a});
+
+-- | The description of the finding.
+fDescription :: Lens' Finding (Maybe LocalizedText)
+fDescription = lens _fDescription (\ s a -> s{_fDescription = a});
+
+-- | The recommendation for the finding.
+fRecommendation :: Lens' Finding (Maybe LocalizedText)
+fRecommendation = lens _fRecommendation (\ s a -> s{_fRecommendation = a});
+
+instance FromJSON Finding where
+        parseJSON
+          = withObject "Finding"
+              (\ x ->
+                 Finding' <$>
+                   (x .:? "autoScalingGroup") <*> (x .:? "finding") <*>
+                     (x .:? "severity")
+                     <*> (x .:? "userAttributes" .!= mempty)
+                     <*> (x .:? "ruleName")
+                     <*> (x .:? "agentId")
+                     <*> (x .:? "runArn")
+                     <*> (x .:? "attributes" .!= mempty)
+                     <*> (x .:? "rulesPackageArn")
+                     <*> (x .:? "findingArn")
+                     <*> (x .:? "description")
+                     <*> (x .:? "recommendation"))
+
+-- | This data type is used as a request parameter in the ListFindings
+-- action.
+--
+-- /See:/ 'findingsFilter' smart constructor.
+data FindingsFilter = FindingsFilter'
+    { _ffRuleNames        :: !(Maybe [Text])
+    , _ffUserAttributes   :: !(Maybe [Attribute])
+    , _ffRulesPackageARNs :: !(Maybe [Text])
+    , _ffAttributes       :: !(Maybe [Attribute])
+    , _ffSeverities       :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FindingsFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ffRuleNames'
+--
+-- * 'ffUserAttributes'
+--
+-- * 'ffRulesPackageARNs'
+--
+-- * 'ffAttributes'
+--
+-- * 'ffSeverities'
+findingsFilter
+    :: FindingsFilter
+findingsFilter =
+    FindingsFilter'
+    { _ffRuleNames = Nothing
+    , _ffUserAttributes = Nothing
+    , _ffRulesPackageARNs = Nothing
+    , _ffAttributes = Nothing
+    , _ffSeverities = Nothing
+    }
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __ruleName__
+-- property of the Finding data type.
+ffRuleNames :: Lens' FindingsFilter [Text]
+ffRuleNames = lens _ffRuleNames (\ s a -> s{_ffRuleNames = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __userAttributes__
+-- property of the Finding data type.
+ffUserAttributes :: Lens' FindingsFilter [Attribute]
+ffUserAttributes = lens _ffUserAttributes (\ s a -> s{_ffUserAttributes = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __rulesPackageArn__
+-- property of the Finding data type.
+ffRulesPackageARNs :: Lens' FindingsFilter [Text]
+ffRulesPackageARNs = lens _ffRulesPackageARNs (\ s a -> s{_ffRulesPackageARNs = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __attributes__
+-- property of the Finding data type.
+ffAttributes :: Lens' FindingsFilter [Attribute]
+ffAttributes = lens _ffAttributes (\ s a -> s{_ffAttributes = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __severity__
+-- property of the Finding data type.
+ffSeverities :: Lens' FindingsFilter [Text]
+ffSeverities = lens _ffSeverities (\ s a -> s{_ffSeverities = a}) . _Default . _Coerce;
+
+instance ToJSON FindingsFilter where
+        toJSON FindingsFilter'{..}
+          = object
+              (catMaybes
+                 [("ruleNames" .=) <$> _ffRuleNames,
+                  ("userAttributes" .=) <$> _ffUserAttributes,
+                  ("rulesPackageArns" .=) <$> _ffRulesPackageARNs,
+                  ("attributes" .=) <$> _ffAttributes,
+                  ("severities" .=) <$> _ffSeverities])
+
+-- | The textual identifier. This data type is used as the request parameter
+-- in the LocalizeText action.
+--
+-- /See:/ 'localizedText' smart constructor.
+data LocalizedText = LocalizedText'
+    { _ltKey        :: !(Maybe LocalizedTextKey)
+    , _ltParameters :: !(Maybe [Parameter])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LocalizedText' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltKey'
+--
+-- * 'ltParameters'
+localizedText
+    :: LocalizedText
+localizedText =
+    LocalizedText'
+    { _ltKey = Nothing
+    , _ltParameters = Nothing
+    }
+
+-- | The facility and id properties of the LocalizedTextKey data type.
+ltKey :: Lens' LocalizedText (Maybe LocalizedTextKey)
+ltKey = lens _ltKey (\ s a -> s{_ltKey = a});
+
+-- | Values for the dynamic elements of the string specified by the textual
+-- identifier.
+ltParameters :: Lens' LocalizedText [Parameter]
+ltParameters = lens _ltParameters (\ s a -> s{_ltParameters = a}) . _Default . _Coerce;
+
+instance FromJSON LocalizedText where
+        parseJSON
+          = withObject "LocalizedText"
+              (\ x ->
+                 LocalizedText' <$>
+                   (x .:? "key") <*> (x .:? "parameters" .!= mempty))
+
+instance ToJSON LocalizedText where
+        toJSON LocalizedText'{..}
+          = object
+              (catMaybes
+                 [("key" .=) <$> _ltKey,
+                  ("parameters" .=) <$> _ltParameters])
+
+-- | This data type is used in the LocalizedText data type.
+--
+-- /See:/ 'localizedTextKey' smart constructor.
+data LocalizedTextKey = LocalizedTextKey'
+    { _ltkFacility :: !(Maybe Text)
+    , _ltkId       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LocalizedTextKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltkFacility'
+--
+-- * 'ltkId'
+localizedTextKey
+    :: LocalizedTextKey
+localizedTextKey =
+    LocalizedTextKey'
+    { _ltkFacility = Nothing
+    , _ltkId = Nothing
+    }
+
+-- | The module response source of the text.
+ltkFacility :: Lens' LocalizedTextKey (Maybe Text)
+ltkFacility = lens _ltkFacility (\ s a -> s{_ltkFacility = a});
+
+-- | Part of the module response source of the text.
+ltkId :: Lens' LocalizedTextKey (Maybe Text)
+ltkId = lens _ltkId (\ s a -> s{_ltkId = a});
+
+instance FromJSON LocalizedTextKey where
+        parseJSON
+          = withObject "LocalizedTextKey"
+              (\ x ->
+                 LocalizedTextKey' <$>
+                   (x .:? "facility") <*> (x .:? "id"))
+
+instance ToJSON LocalizedTextKey where
+        toJSON LocalizedTextKey'{..}
+          = object
+              (catMaybes
+                 [("facility" .=) <$> _ltkFacility,
+                  ("id" .=) <$> _ltkId])
+
+-- | This data type is used in the Telemetry data type.
+--
+-- This is metadata about the behavioral data collected by the Inspector
+-- agent on your EC2 instances during an assessment and passed to the
+-- Inspector service for analysis.
+--
+-- /See:/ 'messageTypeTelemetry' smart constructor.
+data MessageTypeTelemetry = MessageTypeTelemetry'
+    { _mttDataSize    :: !(Maybe Integer)
+    , _mttMessageType :: !(Maybe Text)
+    , _mttCount       :: !(Maybe Integer)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MessageTypeTelemetry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mttDataSize'
+--
+-- * 'mttMessageType'
+--
+-- * 'mttCount'
+messageTypeTelemetry
+    :: MessageTypeTelemetry
+messageTypeTelemetry =
+    MessageTypeTelemetry'
+    { _mttDataSize = Nothing
+    , _mttMessageType = Nothing
+    , _mttCount = Nothing
+    }
+
+-- | The total size of the behavioral data that is collected by the agent
+-- during an assessment.
+mttDataSize :: Lens' MessageTypeTelemetry (Maybe Integer)
+mttDataSize = lens _mttDataSize (\ s a -> s{_mttDataSize = a});
+
+-- | A specific type of behavioral data that is collected by the agent.
+mttMessageType :: Lens' MessageTypeTelemetry (Maybe Text)
+mttMessageType = lens _mttMessageType (\ s a -> s{_mttMessageType = a});
+
+-- | The number of times that the behavioral data is collected by the agent
+-- during an assessment.
+mttCount :: Lens' MessageTypeTelemetry (Maybe Integer)
+mttCount = lens _mttCount (\ s a -> s{_mttCount = a});
+
+instance FromJSON MessageTypeTelemetry where
+        parseJSON
+          = withObject "MessageTypeTelemetry"
+              (\ x ->
+                 MessageTypeTelemetry' <$>
+                   (x .:? "dataSize") <*> (x .:? "messageType") <*>
+                     (x .:? "count"))
+
+-- | This data type is used in the LocalizedText data type.
+--
+-- /See:/ 'parameter' smart constructor.
+data Parameter = Parameter'
+    { _pValue :: !(Maybe Text)
+    , _pName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Parameter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pValue'
+--
+-- * 'pName'
+parameter
+    :: Parameter
+parameter =
+    Parameter'
+    { _pValue = Nothing
+    , _pName = Nothing
+    }
+
+-- | The value assigned to the variable that is being replaced.
+pValue :: Lens' Parameter (Maybe Text)
+pValue = lens _pValue (\ s a -> s{_pValue = a});
+
+-- | The name of the variable that is being replaced.
+pName :: Lens' Parameter (Maybe Text)
+pName = lens _pName (\ s a -> s{_pName = a});
+
+instance FromJSON Parameter where
+        parseJSON
+          = withObject "Parameter"
+              (\ x ->
+                 Parameter' <$> (x .:? "value") <*> (x .:? "name"))
+
+instance ToJSON Parameter where
+        toJSON Parameter'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _pValue, ("name" .=) <$> _pName])
+
+-- | Contains information about a resource group. The resource group defines
+-- a set of tags that, when queried, identify the AWS resources that
+-- comprise the application.
+--
+-- This data type is used as the response element in the
+-- DescribeResourceGroup action.
+--
+-- /See:/ 'resourceGroup' smart constructor.
+data ResourceGroup = ResourceGroup'
+    { _rgResourceGroupTags :: !(Maybe Text)
+    , _rgResourceGroupARN  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgResourceGroupTags'
+--
+-- * 'rgResourceGroupARN'
+resourceGroup
+    :: ResourceGroup
+resourceGroup =
+    ResourceGroup'
+    { _rgResourceGroupTags = Nothing
+    , _rgResourceGroupARN = Nothing
+    }
+
+-- | The tags (key and value pairs) of the resource group.
+--
+-- This data type property is used in the CreateResourceGroup action.
+--
+-- A collection of keys and an array of possible values in JSON format.
+--
+-- For example, [{ \"key1\" : [\"Value1\",\"Value2\"]},{\"Key2\":
+-- [\"Value3\"]}]
+rgResourceGroupTags :: Lens' ResourceGroup (Maybe Text)
+rgResourceGroupTags = lens _rgResourceGroupTags (\ s a -> s{_rgResourceGroupTags = a});
+
+-- | The ARN of the resource group.
+rgResourceGroupARN :: Lens' ResourceGroup (Maybe Text)
+rgResourceGroupARN = lens _rgResourceGroupARN (\ s a -> s{_rgResourceGroupARN = a});
+
+instance FromJSON ResourceGroup where
+        parseJSON
+          = withObject "ResourceGroup"
+              (\ x ->
+                 ResourceGroup' <$>
+                   (x .:? "resourceGroupTags") <*>
+                     (x .:? "resourceGroupArn"))
+
+-- | Contains information about an Inspector rules package.
+--
+-- This data type is used as the response element in the
+-- DescribeRulesPackage action.
+--
+-- /See:/ 'rulesPackage' smart constructor.
+data RulesPackage = RulesPackage'
+    { _rpVersion          :: !(Maybe Text)
+    , _rpRulesPackageARN  :: !(Maybe Text)
+    , _rpRulesPackageName :: !(Maybe Text)
+    , _rpDescription      :: !(Maybe LocalizedText)
+    , _rpProvider         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RulesPackage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpVersion'
+--
+-- * 'rpRulesPackageARN'
+--
+-- * 'rpRulesPackageName'
+--
+-- * 'rpDescription'
+--
+-- * 'rpProvider'
+rulesPackage
+    :: RulesPackage
+rulesPackage =
+    RulesPackage'
+    { _rpVersion = Nothing
+    , _rpRulesPackageARN = Nothing
+    , _rpRulesPackageName = Nothing
+    , _rpDescription = Nothing
+    , _rpProvider = Nothing
+    }
+
+-- | The version id of the rules package.
+rpVersion :: Lens' RulesPackage (Maybe Text)
+rpVersion = lens _rpVersion (\ s a -> s{_rpVersion = a});
+
+-- | The ARN of the rules package.
+rpRulesPackageARN :: Lens' RulesPackage (Maybe Text)
+rpRulesPackageARN = lens _rpRulesPackageARN (\ s a -> s{_rpRulesPackageARN = a});
+
+-- | The name of the rules package.
+rpRulesPackageName :: Lens' RulesPackage (Maybe Text)
+rpRulesPackageName = lens _rpRulesPackageName (\ s a -> s{_rpRulesPackageName = a});
+
+-- | The description of the rules package.
+rpDescription :: Lens' RulesPackage (Maybe LocalizedText)
+rpDescription = lens _rpDescription (\ s a -> s{_rpDescription = a});
+
+-- | The provider of the rules package.
+rpProvider :: Lens' RulesPackage (Maybe Text)
+rpProvider = lens _rpProvider (\ s a -> s{_rpProvider = a});
+
+instance FromJSON RulesPackage where
+        parseJSON
+          = withObject "RulesPackage"
+              (\ x ->
+                 RulesPackage' <$>
+                   (x .:? "version") <*> (x .:? "rulesPackageArn") <*>
+                     (x .:? "rulesPackageName")
+                     <*> (x .:? "description")
+                     <*> (x .:? "provider"))
+
+-- | A snapshot of an Inspector assessment that contains the assessment\'s
+-- findings.
+--
+-- This data type is used as the response element in the DescribeRun
+-- action.
+--
+-- /See:/ 'run' smart constructor.
+data Run = Run'
+    { _runCreationTime   :: !(Maybe POSIX)
+    , _runRulesPackages  :: !(Maybe [Text])
+    , _runAssessmentARN  :: !(Maybe Text)
+    , _runRunState       :: !(Maybe Text)
+    , _runRunName        :: !(Maybe Text)
+    , _runCompletionTime :: !(Maybe POSIX)
+    , _runRunARN         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Run' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'runCreationTime'
+--
+-- * 'runRulesPackages'
+--
+-- * 'runAssessmentARN'
+--
+-- * 'runRunState'
+--
+-- * 'runRunName'
+--
+-- * 'runCompletionTime'
+--
+-- * 'runRunARN'
+run
+    :: Run
+run =
+    Run'
+    { _runCreationTime = Nothing
+    , _runRulesPackages = Nothing
+    , _runAssessmentARN = Nothing
+    , _runRunState = Nothing
+    , _runRunName = Nothing
+    , _runCompletionTime = Nothing
+    , _runRunARN = Nothing
+    }
+
+-- | Run creation time that corresponds to the data collection completion
+-- time or failure.
+runCreationTime :: Lens' Run (Maybe UTCTime)
+runCreationTime = lens _runCreationTime (\ s a -> s{_runCreationTime = a}) . mapping _Time;
+
+-- | Rules packages selected for the run of the assessment.
+runRulesPackages :: Lens' Run [Text]
+runRulesPackages = lens _runRulesPackages (\ s a -> s{_runRulesPackages = a}) . _Default . _Coerce;
+
+-- | The ARN of the assessment that is associated with the run.
+runAssessmentARN :: Lens' Run (Maybe Text)
+runAssessmentARN = lens _runAssessmentARN (\ s a -> s{_runAssessmentARN = a});
+
+-- | The state of the run. Values can be set to /DataCollectionComplete/,
+-- /EvaluatingPolicies/, /EvaluatingPoliciesErrorCanRetry/, /Completed/,
+-- /Failed/, /TombStoned/.
+runRunState :: Lens' Run (Maybe Text)
+runRunState = lens _runRunState (\ s a -> s{_runRunState = a});
+
+-- | The auto-generated name for the run.
+runRunName :: Lens' Run (Maybe Text)
+runRunName = lens _runRunName (\ s a -> s{_runRunName = a});
+
+-- | Run completion time that corresponds to the rules packages evaluation
+-- completion time or failure.
+runCompletionTime :: Lens' Run (Maybe UTCTime)
+runCompletionTime = lens _runCompletionTime (\ s a -> s{_runCompletionTime = a}) . mapping _Time;
+
+-- | The ARN of the run.
+runRunARN :: Lens' Run (Maybe Text)
+runRunARN = lens _runRunARN (\ s a -> s{_runRunARN = a});
+
+instance FromJSON Run where
+        parseJSON
+          = withObject "Run"
+              (\ x ->
+                 Run' <$>
+                   (x .:? "creationTime") <*>
+                     (x .:? "rulesPackages" .!= mempty)
+                     <*> (x .:? "assessmentArn")
+                     <*> (x .:? "runState")
+                     <*> (x .:? "runName")
+                     <*> (x .:? "completionTime")
+                     <*> (x .:? "runArn"))
+
+-- | This data type is used as the request parameter in the ListRuns action.
+--
+-- /See:/ 'runsFilter' smart constructor.
+data RunsFilter = RunsFilter'
+    { _rfCreationTime    :: !(Maybe TimestampRange)
+    , _rfRulesPackages   :: !(Maybe [Text])
+    , _rfRunStates       :: !(Maybe [Text])
+    , _rfRunNamePatterns :: !(Maybe [Text])
+    , _rfCompletionTime  :: !(Maybe TimestampRange)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RunsFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rfCreationTime'
+--
+-- * 'rfRulesPackages'
+--
+-- * 'rfRunStates'
+--
+-- * 'rfRunNamePatterns'
+--
+-- * 'rfCompletionTime'
+runsFilter
+    :: RunsFilter
+runsFilter =
+    RunsFilter'
+    { _rfCreationTime = Nothing
+    , _rfRulesPackages = Nothing
+    , _rfRunStates = Nothing
+    , _rfRunNamePatterns = Nothing
+    , _rfCompletionTime = Nothing
+    }
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must inclusively match any value between the specified minimum
+-- and maximum values of the __creationTime__ property of the Run data
+-- type.
+rfCreationTime :: Lens' RunsFilter (Maybe TimestampRange)
+rfCreationTime = lens _rfCreationTime (\ s a -> s{_rfCreationTime = a});
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must match a list of values of the __rulesPackages__ property
+-- of the Run data type.
+rfRulesPackages :: Lens' RunsFilter [Text]
+rfRulesPackages = lens _rfRulesPackages (\ s a -> s{_rfRulesPackages = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must be the exact match of the value of the __runState__
+-- property of the Run data type.
+rfRunStates :: Lens' RunsFilter [Text]
+rfRunStates = lens _rfRunStates (\ s a -> s{_rfRunStates = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, an explicit value or a string containing
+-- a wildcard specified for this data type property must match the value of
+-- the __runName__ property of the Run data type.
+rfRunNamePatterns :: Lens' RunsFilter [Text]
+rfRunNamePatterns = lens _rfRunNamePatterns (\ s a -> s{_rfRunNamePatterns = a}) . _Default . _Coerce;
+
+-- | For a record to match a filter, the value specified for this data type
+-- property must inclusively match any value between the specified minimum
+-- and maximum values of the __completionTime__ property of the Run data
+-- type.
+rfCompletionTime :: Lens' RunsFilter (Maybe TimestampRange)
+rfCompletionTime = lens _rfCompletionTime (\ s a -> s{_rfCompletionTime = a});
+
+instance ToJSON RunsFilter where
+        toJSON RunsFilter'{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _rfCreationTime,
+                  ("rulesPackages" .=) <$> _rfRulesPackages,
+                  ("runStates" .=) <$> _rfRunStates,
+                  ("runNamePatterns" .=) <$> _rfRunNamePatterns,
+                  ("completionTime" .=) <$> _rfCompletionTime])
+
+-- | A key and value pair.
+--
+-- This data type is used as a request parameter in the SetTagsForResource
+-- action and a response element in the ListTagsForResource action.
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+    { _tagValue :: !(Maybe Text)
+    , _tagKey   :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagValue'
+--
+-- * 'tagKey'
+tag
+    :: Tag
+tag =
+    Tag'
+    { _tagValue = Nothing
+    , _tagKey = Nothing
+    }
+
+-- | The value assigned to a tag key.
+tagValue :: Lens' Tag (Maybe Text)
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+-- | The tag key.
+tagKey :: Lens' Tag (Maybe Text)
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+instance FromJSON Tag where
+        parseJSON
+          = withObject "Tag"
+              (\ x -> Tag' <$> (x .:? "Value") <*> (x .:? "Key"))
+
+instance ToJSON Tag where
+        toJSON Tag'{..}
+          = object
+              (catMaybes
+                 [("Value" .=) <$> _tagValue, ("Key" .=) <$> _tagKey])
+
+-- | The metadata about the Inspector application data metrics collected by
+-- the agent.
+--
+-- This data type is used as the response element in the
+-- GetAssessmentTelemetry action.
+--
+-- /See:/ 'telemetry' smart constructor.
+data Telemetry = Telemetry'
+    { _tStatus                 :: !(Maybe Text)
+    , _tMessageTypeTelemetries :: !(Maybe [MessageTypeTelemetry])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Telemetry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tStatus'
+--
+-- * 'tMessageTypeTelemetries'
+telemetry
+    :: Telemetry
+telemetry =
+    Telemetry'
+    { _tStatus = Nothing
+    , _tMessageTypeTelemetries = Nothing
+    }
+
+-- | The category of the individual metrics that together constitute the
+-- telemetry that Inspector received from the agent.
+tStatus :: Lens' Telemetry (Maybe Text)
+tStatus = lens _tStatus (\ s a -> s{_tStatus = a});
+
+-- | Counts of individual metrics received by Inspector from the agent.
+tMessageTypeTelemetries :: Lens' Telemetry [MessageTypeTelemetry]
+tMessageTypeTelemetries = lens _tMessageTypeTelemetries (\ s a -> s{_tMessageTypeTelemetries = a}) . _Default . _Coerce;
+
+instance FromJSON Telemetry where
+        parseJSON
+          = withObject "Telemetry"
+              (\ x ->
+                 Telemetry' <$>
+                   (x .:? "status") <*>
+                     (x .:? "messageTypeTelemetries" .!= mempty))
+
+-- | This data type is used in the AssessmentsFilter and RunsFilter data
+-- types.
+--
+-- /See:/ 'timestampRange' smart constructor.
+data TimestampRange = TimestampRange'
+    { _trMaximum :: !(Maybe POSIX)
+    , _trMinimum :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TimestampRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trMaximum'
+--
+-- * 'trMinimum'
+timestampRange
+    :: TimestampRange
+timestampRange =
+    TimestampRange'
+    { _trMaximum = Nothing
+    , _trMinimum = Nothing
+    }
+
+-- | The maximum value of the timestamp range.
+trMaximum :: Lens' TimestampRange (Maybe UTCTime)
+trMaximum = lens _trMaximum (\ s a -> s{_trMaximum = a}) . mapping _Time;
+
+-- | The minimum value of the timestamp range.
+trMinimum :: Lens' TimestampRange (Maybe UTCTime)
+trMinimum = lens _trMinimum (\ s a -> s{_trMinimum = a}) . mapping _Time;
+
+instance ToJSON TimestampRange where
+        toJSON TimestampRange'{..}
+          = object
+              (catMaybes
+                 [("maximum" .=) <$> _trMaximum,
+                  ("minimum" .=) <$> _trMinimum])
diff --git a/gen/Network/AWS/Inspector/Types/Sum.hs b/gen/Network/AWS/Inspector/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/Types/Sum.hs
@@ -0,0 +1,20 @@
+{-# 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.Inspector.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.Inspector.Types.Sum where
+
+import           Network.AWS.Prelude
diff --git a/gen/Network/AWS/Inspector/UpdateApplication.hs b/gen/Network/AWS/Inspector/UpdateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/UpdateApplication.hs
@@ -0,0 +1,145 @@
+{-# 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.Inspector.UpdateApplication
+-- 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 application specified by the application ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_UpdateApplication.html AWS API Reference> for UpdateApplication.
+module Network.AWS.Inspector.UpdateApplication
+    (
+    -- * Creating a Request
+      updateApplication
+    , UpdateApplication
+    -- * Request Lenses
+    , uaApplicationARN
+    , uaResourceGroupARN
+    , uaApplicationName
+
+    -- * Destructuring the Response
+    , updateApplicationResponse
+    , UpdateApplicationResponse
+    -- * Response Lenses
+    , uarsMessage
+    , uarsResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'updateApplication' smart constructor.
+data UpdateApplication = UpdateApplication'
+    { _uaApplicationARN   :: !(Maybe Text)
+    , _uaResourceGroupARN :: !(Maybe Text)
+    , _uaApplicationName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateApplication' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uaApplicationARN'
+--
+-- * 'uaResourceGroupARN'
+--
+-- * 'uaApplicationName'
+updateApplication
+    :: UpdateApplication
+updateApplication =
+    UpdateApplication'
+    { _uaApplicationARN = Nothing
+    , _uaResourceGroupARN = Nothing
+    , _uaApplicationName = Nothing
+    }
+
+-- | Application ARN that you want to update.
+uaApplicationARN :: Lens' UpdateApplication (Maybe Text)
+uaApplicationARN = lens _uaApplicationARN (\ s a -> s{_uaApplicationARN = a});
+
+-- | The resource group ARN that you want to update.
+uaResourceGroupARN :: Lens' UpdateApplication (Maybe Text)
+uaResourceGroupARN = lens _uaResourceGroupARN (\ s a -> s{_uaResourceGroupARN = a});
+
+-- | Application name that you want to update.
+uaApplicationName :: Lens' UpdateApplication (Maybe Text)
+uaApplicationName = lens _uaApplicationName (\ s a -> s{_uaApplicationName = a});
+
+instance AWSRequest UpdateApplication where
+        type Rs UpdateApplication = UpdateApplicationResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateApplicationResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders UpdateApplication where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.UpdateApplication" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateApplication where
+        toJSON UpdateApplication'{..}
+          = object
+              (catMaybes
+                 [("applicationArn" .=) <$> _uaApplicationARN,
+                  ("resourceGroupArn" .=) <$> _uaResourceGroupARN,
+                  ("applicationName" .=) <$> _uaApplicationName])
+
+instance ToPath UpdateApplication where
+        toPath = const "/"
+
+instance ToQuery UpdateApplication where
+        toQuery = const mempty
+
+-- | /See:/ 'updateApplicationResponse' smart constructor.
+data UpdateApplicationResponse = UpdateApplicationResponse'
+    { _uarsMessage        :: !(Maybe Text)
+    , _uarsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateApplicationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uarsMessage'
+--
+-- * 'uarsResponseStatus'
+updateApplicationResponse
+    :: Int -- ^ 'uarsResponseStatus'
+    -> UpdateApplicationResponse
+updateApplicationResponse pResponseStatus_ =
+    UpdateApplicationResponse'
+    { _uarsMessage = Nothing
+    , _uarsResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+uarsMessage :: Lens' UpdateApplicationResponse (Maybe Text)
+uarsMessage = lens _uarsMessage (\ s a -> s{_uarsMessage = a});
+
+-- | The response status code.
+uarsResponseStatus :: Lens' UpdateApplicationResponse Int
+uarsResponseStatus = lens _uarsResponseStatus (\ s a -> s{_uarsResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/UpdateAssessment.hs b/gen/Network/AWS/Inspector/UpdateAssessment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/UpdateAssessment.hs
@@ -0,0 +1,147 @@
+{-# 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.Inspector.UpdateAssessment
+-- 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 the assessment specified by the assessment ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/inspector/latest/APIReference/API_UpdateAssessment.html AWS API Reference> for UpdateAssessment.
+module Network.AWS.Inspector.UpdateAssessment
+    (
+    -- * Creating a Request
+      updateAssessment
+    , UpdateAssessment
+    -- * Request Lenses
+    , uaAssessmentARN
+    , uaDurationInSeconds
+    , uaAssessmentName
+
+    -- * Destructuring the Response
+    , updateAssessmentResponse
+    , UpdateAssessmentResponse
+    -- * Response Lenses
+    , ursMessage
+    , ursResponseStatus
+    ) where
+
+import           Network.AWS.Inspector.Types
+import           Network.AWS.Inspector.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'updateAssessment' smart constructor.
+data UpdateAssessment = UpdateAssessment'
+    { _uaAssessmentARN     :: !(Maybe Text)
+    , _uaDurationInSeconds :: !(Maybe Int)
+    , _uaAssessmentName    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAssessment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uaAssessmentARN'
+--
+-- * 'uaDurationInSeconds'
+--
+-- * 'uaAssessmentName'
+updateAssessment
+    :: UpdateAssessment
+updateAssessment =
+    UpdateAssessment'
+    { _uaAssessmentARN = Nothing
+    , _uaDurationInSeconds = Nothing
+    , _uaAssessmentName = Nothing
+    }
+
+-- | Asessment ARN that you want to update.
+uaAssessmentARN :: Lens' UpdateAssessment (Maybe Text)
+uaAssessmentARN = lens _uaAssessmentARN (\ s a -> s{_uaAssessmentARN = a});
+
+-- | Assessment duration in seconds that you want to update. The default
+-- value is 3600 seconds (one hour). The maximum value is 86400 seconds
+-- (one day).
+uaDurationInSeconds :: Lens' UpdateAssessment (Maybe Int)
+uaDurationInSeconds = lens _uaDurationInSeconds (\ s a -> s{_uaDurationInSeconds = a});
+
+-- | Assessment name that you want to update.
+uaAssessmentName :: Lens' UpdateAssessment (Maybe Text)
+uaAssessmentName = lens _uaAssessmentName (\ s a -> s{_uaAssessmentName = a});
+
+instance AWSRequest UpdateAssessment where
+        type Rs UpdateAssessment = UpdateAssessmentResponse
+        request = postJSON inspector
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateAssessmentResponse' <$>
+                   (x .?> "message") <*> (pure (fromEnum s)))
+
+instance ToHeaders UpdateAssessment where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("InspectorService.UpdateAssessment" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateAssessment where
+        toJSON UpdateAssessment'{..}
+          = object
+              (catMaybes
+                 [("assessmentArn" .=) <$> _uaAssessmentARN,
+                  ("durationInSeconds" .=) <$> _uaDurationInSeconds,
+                  ("assessmentName" .=) <$> _uaAssessmentName])
+
+instance ToPath UpdateAssessment where
+        toPath = const "/"
+
+instance ToQuery UpdateAssessment where
+        toQuery = const mempty
+
+-- | /See:/ 'updateAssessmentResponse' smart constructor.
+data UpdateAssessmentResponse = UpdateAssessmentResponse'
+    { _ursMessage        :: !(Maybe Text)
+    , _ursResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAssessmentResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ursMessage'
+--
+-- * 'ursResponseStatus'
+updateAssessmentResponse
+    :: Int -- ^ 'ursResponseStatus'
+    -> UpdateAssessmentResponse
+updateAssessmentResponse pResponseStatus_ =
+    UpdateAssessmentResponse'
+    { _ursMessage = Nothing
+    , _ursResponseStatus = pResponseStatus_
+    }
+
+-- | Confirmation details of the action performed.
+ursMessage :: Lens' UpdateAssessmentResponse (Maybe Text)
+ursMessage = lens _ursMessage (\ s a -> s{_ursMessage = a});
+
+-- | The response status code.
+ursResponseStatus :: Lens' UpdateAssessmentResponse Int
+ursResponseStatus = lens _ursResponseStatus (\ s a -> s{_ursResponseStatus = a});
diff --git a/gen/Network/AWS/Inspector/Waiters.hs b/gen/Network/AWS/Inspector/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Inspector/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.Inspector.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.Inspector.Waiters where
+
+import           Network.AWS.Inspector.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.Inspector
+import Test.AWS.Inspector.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "Inspector"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Gen/Inspector.hs b/test/Test/AWS/Gen/Inspector.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/Inspector.hs
@@ -0,0 +1,687 @@
+{-# 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.Inspector
+-- 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.Inspector where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.Inspector
+import Test.AWS.Inspector.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"
+--         [ testListFindings $
+--             listFindings
+--
+--         , testDescribeRun $
+--             describeRun
+--
+--         , testDescribeApplication $
+--             describeApplication
+--
+--         , testRunAssessment $
+--             runAssessment
+--
+--         , testListTagsForResource $
+--             listTagsForResource
+--
+--         , testSetTagsForResource $
+--             setTagsForResource
+--
+--         , testDescribeCrossAccountAccessRole $
+--             describeCrossAccountAccessRole
+--
+--         , testListAttachedAssessments $
+--             listAttachedAssessments
+--
+--         , testDescribeFinding $
+--             describeFinding
+--
+--         , testDeleteRun $
+--             deleteRun
+--
+--         , testListRuns $
+--             listRuns
+--
+--         , testDeleteApplication $
+--             deleteApplication
+--
+--         , testUpdateApplication $
+--             updateApplication
+--
+--         , testStartDataCollection $
+--             startDataCollection
+--
+--         , testLocalizeText $
+--             localizeText
+--
+--         , testRegisterCrossAccountAccessRole $
+--             registerCrossAccountAccessRole
+--
+--         , testCreateApplication $
+--             createApplication
+--
+--         , testCreateResourceGroup $
+--             createResourceGroup
+--
+--         , testListAttachedRulesPackages $
+--             listAttachedRulesPackages
+--
+--         , testDeleteAssessment $
+--             deleteAssessment
+--
+--         , testUpdateAssessment $
+--             updateAssessment
+--
+--         , testGetAssessmentTelemetry $
+--             getAssessmentTelemetry
+--
+--         , testListAssessments $
+--             listAssessments
+--
+--         , testDescribeRulesPackage $
+--             describeRulesPackage
+--
+--         , testCreateAssessment $
+--             createAssessment
+--
+--         , testDetachAssessmentAndRulesPackage $
+--             detachAssessmentAndRulesPackage
+--
+--         , testDescribeResourceGroup $
+--             describeResourceGroup
+--
+--         , testListApplications $
+--             listApplications
+--
+--         , testDescribeAssessment $
+--             describeAssessment
+--
+--         , testAddAttributesToFindings $
+--             addAttributesToFindings
+--
+--         , testStopDataCollection $
+--             stopDataCollection
+--
+--         , testPreviewAgentsForResourceGroup $
+--             previewAgentsForResourceGroup
+--
+--         , testListAssessmentAgents $
+--             listAssessmentAgents
+--
+--         , testListRulesPackages $
+--             listRulesPackages
+--
+--         , testRemoveAttributesFromFindings $
+--             removeAttributesFromFindings
+--
+--         , testAttachAssessmentAndRulesPackage $
+--             attachAssessmentAndRulesPackage
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testListFindingsResponse $
+--             listFindingsResponse
+--
+--         , testDescribeRunResponse $
+--             describeRunResponse
+--
+--         , testDescribeApplicationResponse $
+--             describeApplicationResponse
+--
+--         , testRunAssessmentResponse $
+--             runAssessmentResponse
+--
+--         , testListTagsForResourceResponse $
+--             listTagsForResourceResponse
+--
+--         , testSetTagsForResourceResponse $
+--             setTagsForResourceResponse
+--
+--         , testDescribeCrossAccountAccessRoleResponse $
+--             describeCrossAccountAccessRoleResponse
+--
+--         , testListAttachedAssessmentsResponse $
+--             listAttachedAssessmentsResponse
+--
+--         , testDescribeFindingResponse $
+--             describeFindingResponse
+--
+--         , testDeleteRunResponse $
+--             deleteRunResponse
+--
+--         , testListRunsResponse $
+--             listRunsResponse
+--
+--         , testDeleteApplicationResponse $
+--             deleteApplicationResponse
+--
+--         , testUpdateApplicationResponse $
+--             updateApplicationResponse
+--
+--         , testStartDataCollectionResponse $
+--             startDataCollectionResponse
+--
+--         , testLocalizeTextResponse $
+--             localizeTextResponse
+--
+--         , testRegisterCrossAccountAccessRoleResponse $
+--             registerCrossAccountAccessRoleResponse
+--
+--         , testCreateApplicationResponse $
+--             createApplicationResponse
+--
+--         , testCreateResourceGroupResponse $
+--             createResourceGroupResponse
+--
+--         , testListAttachedRulesPackagesResponse $
+--             listAttachedRulesPackagesResponse
+--
+--         , testDeleteAssessmentResponse $
+--             deleteAssessmentResponse
+--
+--         , testUpdateAssessmentResponse $
+--             updateAssessmentResponse
+--
+--         , testGetAssessmentTelemetryResponse $
+--             getAssessmentTelemetryResponse
+--
+--         , testListAssessmentsResponse $
+--             listAssessmentsResponse
+--
+--         , testDescribeRulesPackageResponse $
+--             describeRulesPackageResponse
+--
+--         , testCreateAssessmentResponse $
+--             createAssessmentResponse
+--
+--         , testDetachAssessmentAndRulesPackageResponse $
+--             detachAssessmentAndRulesPackageResponse
+--
+--         , testDescribeResourceGroupResponse $
+--             describeResourceGroupResponse
+--
+--         , testListApplicationsResponse $
+--             listApplicationsResponse
+--
+--         , testDescribeAssessmentResponse $
+--             describeAssessmentResponse
+--
+--         , testAddAttributesToFindingsResponse $
+--             addAttributesToFindingsResponse
+--
+--         , testStopDataCollectionResponse $
+--             stopDataCollectionResponse
+--
+--         , testPreviewAgentsForResourceGroupResponse $
+--             previewAgentsForResourceGroupResponse
+--
+--         , testListAssessmentAgentsResponse $
+--             listAssessmentAgentsResponse
+--
+--         , testListRulesPackagesResponse $
+--             listRulesPackagesResponse
+--
+--         , testRemoveAttributesFromFindingsResponse $
+--             removeAttributesFromFindingsResponse
+--
+--         , testAttachAssessmentAndRulesPackageResponse $
+--             attachAssessmentAndRulesPackageResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testListFindings :: ListFindings -> TestTree
+testListFindings = req
+    "ListFindings"
+    "fixture/ListFindings.yaml"
+
+testDescribeRun :: DescribeRun -> TestTree
+testDescribeRun = req
+    "DescribeRun"
+    "fixture/DescribeRun.yaml"
+
+testDescribeApplication :: DescribeApplication -> TestTree
+testDescribeApplication = req
+    "DescribeApplication"
+    "fixture/DescribeApplication.yaml"
+
+testRunAssessment :: RunAssessment -> TestTree
+testRunAssessment = req
+    "RunAssessment"
+    "fixture/RunAssessment.yaml"
+
+testListTagsForResource :: ListTagsForResource -> TestTree
+testListTagsForResource = req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+testSetTagsForResource :: SetTagsForResource -> TestTree
+testSetTagsForResource = req
+    "SetTagsForResource"
+    "fixture/SetTagsForResource.yaml"
+
+testDescribeCrossAccountAccessRole :: DescribeCrossAccountAccessRole -> TestTree
+testDescribeCrossAccountAccessRole = req
+    "DescribeCrossAccountAccessRole"
+    "fixture/DescribeCrossAccountAccessRole.yaml"
+
+testListAttachedAssessments :: ListAttachedAssessments -> TestTree
+testListAttachedAssessments = req
+    "ListAttachedAssessments"
+    "fixture/ListAttachedAssessments.yaml"
+
+testDescribeFinding :: DescribeFinding -> TestTree
+testDescribeFinding = req
+    "DescribeFinding"
+    "fixture/DescribeFinding.yaml"
+
+testDeleteRun :: DeleteRun -> TestTree
+testDeleteRun = req
+    "DeleteRun"
+    "fixture/DeleteRun.yaml"
+
+testListRuns :: ListRuns -> TestTree
+testListRuns = req
+    "ListRuns"
+    "fixture/ListRuns.yaml"
+
+testDeleteApplication :: DeleteApplication -> TestTree
+testDeleteApplication = req
+    "DeleteApplication"
+    "fixture/DeleteApplication.yaml"
+
+testUpdateApplication :: UpdateApplication -> TestTree
+testUpdateApplication = req
+    "UpdateApplication"
+    "fixture/UpdateApplication.yaml"
+
+testStartDataCollection :: StartDataCollection -> TestTree
+testStartDataCollection = req
+    "StartDataCollection"
+    "fixture/StartDataCollection.yaml"
+
+testLocalizeText :: LocalizeText -> TestTree
+testLocalizeText = req
+    "LocalizeText"
+    "fixture/LocalizeText.yaml"
+
+testRegisterCrossAccountAccessRole :: RegisterCrossAccountAccessRole -> TestTree
+testRegisterCrossAccountAccessRole = req
+    "RegisterCrossAccountAccessRole"
+    "fixture/RegisterCrossAccountAccessRole.yaml"
+
+testCreateApplication :: CreateApplication -> TestTree
+testCreateApplication = req
+    "CreateApplication"
+    "fixture/CreateApplication.yaml"
+
+testCreateResourceGroup :: CreateResourceGroup -> TestTree
+testCreateResourceGroup = req
+    "CreateResourceGroup"
+    "fixture/CreateResourceGroup.yaml"
+
+testListAttachedRulesPackages :: ListAttachedRulesPackages -> TestTree
+testListAttachedRulesPackages = req
+    "ListAttachedRulesPackages"
+    "fixture/ListAttachedRulesPackages.yaml"
+
+testDeleteAssessment :: DeleteAssessment -> TestTree
+testDeleteAssessment = req
+    "DeleteAssessment"
+    "fixture/DeleteAssessment.yaml"
+
+testUpdateAssessment :: UpdateAssessment -> TestTree
+testUpdateAssessment = req
+    "UpdateAssessment"
+    "fixture/UpdateAssessment.yaml"
+
+testGetAssessmentTelemetry :: GetAssessmentTelemetry -> TestTree
+testGetAssessmentTelemetry = req
+    "GetAssessmentTelemetry"
+    "fixture/GetAssessmentTelemetry.yaml"
+
+testListAssessments :: ListAssessments -> TestTree
+testListAssessments = req
+    "ListAssessments"
+    "fixture/ListAssessments.yaml"
+
+testDescribeRulesPackage :: DescribeRulesPackage -> TestTree
+testDescribeRulesPackage = req
+    "DescribeRulesPackage"
+    "fixture/DescribeRulesPackage.yaml"
+
+testCreateAssessment :: CreateAssessment -> TestTree
+testCreateAssessment = req
+    "CreateAssessment"
+    "fixture/CreateAssessment.yaml"
+
+testDetachAssessmentAndRulesPackage :: DetachAssessmentAndRulesPackage -> TestTree
+testDetachAssessmentAndRulesPackage = req
+    "DetachAssessmentAndRulesPackage"
+    "fixture/DetachAssessmentAndRulesPackage.yaml"
+
+testDescribeResourceGroup :: DescribeResourceGroup -> TestTree
+testDescribeResourceGroup = req
+    "DescribeResourceGroup"
+    "fixture/DescribeResourceGroup.yaml"
+
+testListApplications :: ListApplications -> TestTree
+testListApplications = req
+    "ListApplications"
+    "fixture/ListApplications.yaml"
+
+testDescribeAssessment :: DescribeAssessment -> TestTree
+testDescribeAssessment = req
+    "DescribeAssessment"
+    "fixture/DescribeAssessment.yaml"
+
+testAddAttributesToFindings :: AddAttributesToFindings -> TestTree
+testAddAttributesToFindings = req
+    "AddAttributesToFindings"
+    "fixture/AddAttributesToFindings.yaml"
+
+testStopDataCollection :: StopDataCollection -> TestTree
+testStopDataCollection = req
+    "StopDataCollection"
+    "fixture/StopDataCollection.yaml"
+
+testPreviewAgentsForResourceGroup :: PreviewAgentsForResourceGroup -> TestTree
+testPreviewAgentsForResourceGroup = req
+    "PreviewAgentsForResourceGroup"
+    "fixture/PreviewAgentsForResourceGroup.yaml"
+
+testListAssessmentAgents :: ListAssessmentAgents -> TestTree
+testListAssessmentAgents = req
+    "ListAssessmentAgents"
+    "fixture/ListAssessmentAgents.yaml"
+
+testListRulesPackages :: ListRulesPackages -> TestTree
+testListRulesPackages = req
+    "ListRulesPackages"
+    "fixture/ListRulesPackages.yaml"
+
+testRemoveAttributesFromFindings :: RemoveAttributesFromFindings -> TestTree
+testRemoveAttributesFromFindings = req
+    "RemoveAttributesFromFindings"
+    "fixture/RemoveAttributesFromFindings.yaml"
+
+testAttachAssessmentAndRulesPackage :: AttachAssessmentAndRulesPackage -> TestTree
+testAttachAssessmentAndRulesPackage = req
+    "AttachAssessmentAndRulesPackage"
+    "fixture/AttachAssessmentAndRulesPackage.yaml"
+
+-- Responses
+
+testListFindingsResponse :: ListFindingsResponse -> TestTree
+testListFindingsResponse = res
+    "ListFindingsResponse"
+    "fixture/ListFindingsResponse.proto"
+    inspector
+    (Proxy :: Proxy ListFindings)
+
+testDescribeRunResponse :: DescribeRunResponse -> TestTree
+testDescribeRunResponse = res
+    "DescribeRunResponse"
+    "fixture/DescribeRunResponse.proto"
+    inspector
+    (Proxy :: Proxy DescribeRun)
+
+testDescribeApplicationResponse :: DescribeApplicationResponse -> TestTree
+testDescribeApplicationResponse = res
+    "DescribeApplicationResponse"
+    "fixture/DescribeApplicationResponse.proto"
+    inspector
+    (Proxy :: Proxy DescribeApplication)
+
+testRunAssessmentResponse :: RunAssessmentResponse -> TestTree
+testRunAssessmentResponse = res
+    "RunAssessmentResponse"
+    "fixture/RunAssessmentResponse.proto"
+    inspector
+    (Proxy :: Proxy RunAssessment)
+
+testListTagsForResourceResponse :: ListTagsForResourceResponse -> TestTree
+testListTagsForResourceResponse = res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    inspector
+    (Proxy :: Proxy ListTagsForResource)
+
+testSetTagsForResourceResponse :: SetTagsForResourceResponse -> TestTree
+testSetTagsForResourceResponse = res
+    "SetTagsForResourceResponse"
+    "fixture/SetTagsForResourceResponse.proto"
+    inspector
+    (Proxy :: Proxy SetTagsForResource)
+
+testDescribeCrossAccountAccessRoleResponse :: DescribeCrossAccountAccessRoleResponse -> TestTree
+testDescribeCrossAccountAccessRoleResponse = res
+    "DescribeCrossAccountAccessRoleResponse"
+    "fixture/DescribeCrossAccountAccessRoleResponse.proto"
+    inspector
+    (Proxy :: Proxy DescribeCrossAccountAccessRole)
+
+testListAttachedAssessmentsResponse :: ListAttachedAssessmentsResponse -> TestTree
+testListAttachedAssessmentsResponse = res
+    "ListAttachedAssessmentsResponse"
+    "fixture/ListAttachedAssessmentsResponse.proto"
+    inspector
+    (Proxy :: Proxy ListAttachedAssessments)
+
+testDescribeFindingResponse :: DescribeFindingResponse -> TestTree
+testDescribeFindingResponse = res
+    "DescribeFindingResponse"
+    "fixture/DescribeFindingResponse.proto"
+    inspector
+    (Proxy :: Proxy DescribeFinding)
+
+testDeleteRunResponse :: DeleteRunResponse -> TestTree
+testDeleteRunResponse = res
+    "DeleteRunResponse"
+    "fixture/DeleteRunResponse.proto"
+    inspector
+    (Proxy :: Proxy DeleteRun)
+
+testListRunsResponse :: ListRunsResponse -> TestTree
+testListRunsResponse = res
+    "ListRunsResponse"
+    "fixture/ListRunsResponse.proto"
+    inspector
+    (Proxy :: Proxy ListRuns)
+
+testDeleteApplicationResponse :: DeleteApplicationResponse -> TestTree
+testDeleteApplicationResponse = res
+    "DeleteApplicationResponse"
+    "fixture/DeleteApplicationResponse.proto"
+    inspector
+    (Proxy :: Proxy DeleteApplication)
+
+testUpdateApplicationResponse :: UpdateApplicationResponse -> TestTree
+testUpdateApplicationResponse = res
+    "UpdateApplicationResponse"
+    "fixture/UpdateApplicationResponse.proto"
+    inspector
+    (Proxy :: Proxy UpdateApplication)
+
+testStartDataCollectionResponse :: StartDataCollectionResponse -> TestTree
+testStartDataCollectionResponse = res
+    "StartDataCollectionResponse"
+    "fixture/StartDataCollectionResponse.proto"
+    inspector
+    (Proxy :: Proxy StartDataCollection)
+
+testLocalizeTextResponse :: LocalizeTextResponse -> TestTree
+testLocalizeTextResponse = res
+    "LocalizeTextResponse"
+    "fixture/LocalizeTextResponse.proto"
+    inspector
+    (Proxy :: Proxy LocalizeText)
+
+testRegisterCrossAccountAccessRoleResponse :: RegisterCrossAccountAccessRoleResponse -> TestTree
+testRegisterCrossAccountAccessRoleResponse = res
+    "RegisterCrossAccountAccessRoleResponse"
+    "fixture/RegisterCrossAccountAccessRoleResponse.proto"
+    inspector
+    (Proxy :: Proxy RegisterCrossAccountAccessRole)
+
+testCreateApplicationResponse :: CreateApplicationResponse -> TestTree
+testCreateApplicationResponse = res
+    "CreateApplicationResponse"
+    "fixture/CreateApplicationResponse.proto"
+    inspector
+    (Proxy :: Proxy CreateApplication)
+
+testCreateResourceGroupResponse :: CreateResourceGroupResponse -> TestTree
+testCreateResourceGroupResponse = res
+    "CreateResourceGroupResponse"
+    "fixture/CreateResourceGroupResponse.proto"
+    inspector
+    (Proxy :: Proxy CreateResourceGroup)
+
+testListAttachedRulesPackagesResponse :: ListAttachedRulesPackagesResponse -> TestTree
+testListAttachedRulesPackagesResponse = res
+    "ListAttachedRulesPackagesResponse"
+    "fixture/ListAttachedRulesPackagesResponse.proto"
+    inspector
+    (Proxy :: Proxy ListAttachedRulesPackages)
+
+testDeleteAssessmentResponse :: DeleteAssessmentResponse -> TestTree
+testDeleteAssessmentResponse = res
+    "DeleteAssessmentResponse"
+    "fixture/DeleteAssessmentResponse.proto"
+    inspector
+    (Proxy :: Proxy DeleteAssessment)
+
+testUpdateAssessmentResponse :: UpdateAssessmentResponse -> TestTree
+testUpdateAssessmentResponse = res
+    "UpdateAssessmentResponse"
+    "fixture/UpdateAssessmentResponse.proto"
+    inspector
+    (Proxy :: Proxy UpdateAssessment)
+
+testGetAssessmentTelemetryResponse :: GetAssessmentTelemetryResponse -> TestTree
+testGetAssessmentTelemetryResponse = res
+    "GetAssessmentTelemetryResponse"
+    "fixture/GetAssessmentTelemetryResponse.proto"
+    inspector
+    (Proxy :: Proxy GetAssessmentTelemetry)
+
+testListAssessmentsResponse :: ListAssessmentsResponse -> TestTree
+testListAssessmentsResponse = res
+    "ListAssessmentsResponse"
+    "fixture/ListAssessmentsResponse.proto"
+    inspector
+    (Proxy :: Proxy ListAssessments)
+
+testDescribeRulesPackageResponse :: DescribeRulesPackageResponse -> TestTree
+testDescribeRulesPackageResponse = res
+    "DescribeRulesPackageResponse"
+    "fixture/DescribeRulesPackageResponse.proto"
+    inspector
+    (Proxy :: Proxy DescribeRulesPackage)
+
+testCreateAssessmentResponse :: CreateAssessmentResponse -> TestTree
+testCreateAssessmentResponse = res
+    "CreateAssessmentResponse"
+    "fixture/CreateAssessmentResponse.proto"
+    inspector
+    (Proxy :: Proxy CreateAssessment)
+
+testDetachAssessmentAndRulesPackageResponse :: DetachAssessmentAndRulesPackageResponse -> TestTree
+testDetachAssessmentAndRulesPackageResponse = res
+    "DetachAssessmentAndRulesPackageResponse"
+    "fixture/DetachAssessmentAndRulesPackageResponse.proto"
+    inspector
+    (Proxy :: Proxy DetachAssessmentAndRulesPackage)
+
+testDescribeResourceGroupResponse :: DescribeResourceGroupResponse -> TestTree
+testDescribeResourceGroupResponse = res
+    "DescribeResourceGroupResponse"
+    "fixture/DescribeResourceGroupResponse.proto"
+    inspector
+    (Proxy :: Proxy DescribeResourceGroup)
+
+testListApplicationsResponse :: ListApplicationsResponse -> TestTree
+testListApplicationsResponse = res
+    "ListApplicationsResponse"
+    "fixture/ListApplicationsResponse.proto"
+    inspector
+    (Proxy :: Proxy ListApplications)
+
+testDescribeAssessmentResponse :: DescribeAssessmentResponse -> TestTree
+testDescribeAssessmentResponse = res
+    "DescribeAssessmentResponse"
+    "fixture/DescribeAssessmentResponse.proto"
+    inspector
+    (Proxy :: Proxy DescribeAssessment)
+
+testAddAttributesToFindingsResponse :: AddAttributesToFindingsResponse -> TestTree
+testAddAttributesToFindingsResponse = res
+    "AddAttributesToFindingsResponse"
+    "fixture/AddAttributesToFindingsResponse.proto"
+    inspector
+    (Proxy :: Proxy AddAttributesToFindings)
+
+testStopDataCollectionResponse :: StopDataCollectionResponse -> TestTree
+testStopDataCollectionResponse = res
+    "StopDataCollectionResponse"
+    "fixture/StopDataCollectionResponse.proto"
+    inspector
+    (Proxy :: Proxy StopDataCollection)
+
+testPreviewAgentsForResourceGroupResponse :: PreviewAgentsForResourceGroupResponse -> TestTree
+testPreviewAgentsForResourceGroupResponse = res
+    "PreviewAgentsForResourceGroupResponse"
+    "fixture/PreviewAgentsForResourceGroupResponse.proto"
+    inspector
+    (Proxy :: Proxy PreviewAgentsForResourceGroup)
+
+testListAssessmentAgentsResponse :: ListAssessmentAgentsResponse -> TestTree
+testListAssessmentAgentsResponse = res
+    "ListAssessmentAgentsResponse"
+    "fixture/ListAssessmentAgentsResponse.proto"
+    inspector
+    (Proxy :: Proxy ListAssessmentAgents)
+
+testListRulesPackagesResponse :: ListRulesPackagesResponse -> TestTree
+testListRulesPackagesResponse = res
+    "ListRulesPackagesResponse"
+    "fixture/ListRulesPackagesResponse.proto"
+    inspector
+    (Proxy :: Proxy ListRulesPackages)
+
+testRemoveAttributesFromFindingsResponse :: RemoveAttributesFromFindingsResponse -> TestTree
+testRemoveAttributesFromFindingsResponse = res
+    "RemoveAttributesFromFindingsResponse"
+    "fixture/RemoveAttributesFromFindingsResponse.proto"
+    inspector
+    (Proxy :: Proxy RemoveAttributesFromFindings)
+
+testAttachAssessmentAndRulesPackageResponse :: AttachAssessmentAndRulesPackageResponse -> TestTree
+testAttachAssessmentAndRulesPackageResponse = res
+    "AttachAssessmentAndRulesPackageResponse"
+    "fixture/AttachAssessmentAndRulesPackageResponse.proto"
+    inspector
+    (Proxy :: Proxy AttachAssessmentAndRulesPackage)
diff --git a/test/Test/AWS/Inspector.hs b/test/Test/AWS/Inspector.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Inspector.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.Inspector
+-- 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.Inspector where
+
+import           Test.AWS.Prelude
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/Inspector/Internal.hs b/test/Test/AWS/Inspector/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Inspector/Internal.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.Inspector.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.Inspector.Internal where
+
+import           Test.AWS.Prelude
