diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,9 +7,8 @@
 
 
 ## Version
-
-`1.6.1`
-
+ 
+`2.0` - Derived from API version @2015-11-01@ of the AWS service descriptions, licensed under Apache 2.0.
 
 ## Description
 
@@ -26,7 +25,7 @@
 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).
 
-See [Network.AWS.Discovery](http://hackage.haskell.org/package/amazonka-discovery/docs/Network-AWS-Discovery.html)
+See [Amazonka.Discovery](http://hackage.haskell.org/package/amazonka-discovery/docs/Amazonka-Discovery.html)
 or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
 
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import           Distribution.Simple
-main = defaultMain
diff --git a/amazonka-discovery.cabal b/amazonka-discovery.cabal
--- a/amazonka-discovery.cabal
+++ b/amazonka-discovery.cabal
@@ -1,102 +1,135 @@
-name:                  amazonka-discovery
-version:               1.6.1
-synopsis:              Amazon Application Discovery Service SDK.
-homepage:              https://github.com/brendanhay/amazonka
-bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               MPL-2.0
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
+cabal-version:      2.2
+name:               amazonka-discovery
+version:            2.0
+synopsis:           Amazon Application Discovery Service SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
 description:
-    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, sending requests,
-    and receiving responses.
-    .
-    Lenses are used for constructing and manipulating types,
-    due to the depth 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.Discovery" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2015-11-01@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  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, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.Discovery.Lens" and are
+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+  .
+  See "Amazonka.Discovery" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.
 
 source-repository head
-    type:              git
-    location:          git://github.com/brendanhay/amazonka.git
-    subdir:            amazonka-discovery
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-discovery
 
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
-
-    ghc-options:
-        -Wall
-        -fwarn-incomplete-uni-patterns
-        -fwarn-incomplete-record-updates
-        -funbox-strict-fields
-
-    exposed-modules:
-          Network.AWS.Discovery
-        , Network.AWS.Discovery.AssociateConfigurationItemsToApplication
-        , Network.AWS.Discovery.CreateApplication
-        , Network.AWS.Discovery.CreateTags
-        , Network.AWS.Discovery.DeleteApplications
-        , Network.AWS.Discovery.DeleteTags
-        , Network.AWS.Discovery.DescribeAgents
-        , Network.AWS.Discovery.DescribeConfigurations
-        , Network.AWS.Discovery.DescribeExportTasks
-        , Network.AWS.Discovery.DescribeTags
-        , Network.AWS.Discovery.DisassociateConfigurationItemsFromApplication
-        , Network.AWS.Discovery.GetDiscoverySummary
-        , Network.AWS.Discovery.ListConfigurations
-        , Network.AWS.Discovery.ListServerNeighbors
-        , Network.AWS.Discovery.StartDataCollectionByAgentIds
-        , Network.AWS.Discovery.StartExportTask
-        , Network.AWS.Discovery.StopDataCollectionByAgentIds
-        , Network.AWS.Discovery.Types
-        , Network.AWS.Discovery.UpdateApplication
-        , Network.AWS.Discovery.Waiters
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
 
-    other-modules:
-          Network.AWS.Discovery.Types.Product
-        , Network.AWS.Discovery.Types.Sum
+  exposed-modules:
+    Amazonka.Discovery
+    Amazonka.Discovery.AssociateConfigurationItemsToApplication
+    Amazonka.Discovery.BatchDeleteImportData
+    Amazonka.Discovery.CreateApplication
+    Amazonka.Discovery.CreateTags
+    Amazonka.Discovery.DeleteApplications
+    Amazonka.Discovery.DeleteTags
+    Amazonka.Discovery.DescribeAgents
+    Amazonka.Discovery.DescribeConfigurations
+    Amazonka.Discovery.DescribeContinuousExports
+    Amazonka.Discovery.DescribeExportTasks
+    Amazonka.Discovery.DescribeImportTasks
+    Amazonka.Discovery.DescribeTags
+    Amazonka.Discovery.DisassociateConfigurationItemsFromApplication
+    Amazonka.Discovery.GetDiscoverySummary
+    Amazonka.Discovery.Lens
+    Amazonka.Discovery.ListConfigurations
+    Amazonka.Discovery.ListServerNeighbors
+    Amazonka.Discovery.StartContinuousExport
+    Amazonka.Discovery.StartDataCollectionByAgentIds
+    Amazonka.Discovery.StartExportTask
+    Amazonka.Discovery.StartImportTask
+    Amazonka.Discovery.StopContinuousExport
+    Amazonka.Discovery.StopDataCollectionByAgentIds
+    Amazonka.Discovery.Types
+    Amazonka.Discovery.Types.AgentConfigurationStatus
+    Amazonka.Discovery.Types.AgentInfo
+    Amazonka.Discovery.Types.AgentNetworkInfo
+    Amazonka.Discovery.Types.AgentStatus
+    Amazonka.Discovery.Types.BatchDeleteImportDataError
+    Amazonka.Discovery.Types.BatchDeleteImportDataErrorCode
+    Amazonka.Discovery.Types.ConfigurationItemType
+    Amazonka.Discovery.Types.ConfigurationTag
+    Amazonka.Discovery.Types.ContinuousExportDescription
+    Amazonka.Discovery.Types.ContinuousExportStatus
+    Amazonka.Discovery.Types.CustomerAgentInfo
+    Amazonka.Discovery.Types.CustomerAgentlessCollectorInfo
+    Amazonka.Discovery.Types.CustomerConnectorInfo
+    Amazonka.Discovery.Types.CustomerMeCollectorInfo
+    Amazonka.Discovery.Types.DataSource
+    Amazonka.Discovery.Types.ExportDataFormat
+    Amazonka.Discovery.Types.ExportFilter
+    Amazonka.Discovery.Types.ExportInfo
+    Amazonka.Discovery.Types.ExportStatus
+    Amazonka.Discovery.Types.Filter
+    Amazonka.Discovery.Types.ImportStatus
+    Amazonka.Discovery.Types.ImportTask
+    Amazonka.Discovery.Types.ImportTaskFilter
+    Amazonka.Discovery.Types.ImportTaskFilterName
+    Amazonka.Discovery.Types.NeighborConnectionDetail
+    Amazonka.Discovery.Types.OrderByElement
+    Amazonka.Discovery.Types.OrderString
+    Amazonka.Discovery.Types.Tag
+    Amazonka.Discovery.Types.TagFilter
+    Amazonka.Discovery.UpdateApplication
+    Amazonka.Discovery.Waiters
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , base          >= 4.7     && < 5
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
 
 test-suite amazonka-discovery-test
-    type:              exitcode-stdio-1.0
-    default-language:  Haskell2010
-    hs-source-dirs:    test
-    main-is:           Main.hs
-
-    ghc-options:       -Wall -threaded
+  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.Discovery
-        , Test.AWS.Gen.Discovery
-        , Test.AWS.Discovery.Internal
+  -- 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.Amazonka.Discovery
+    Test.Amazonka.Discovery.Internal
+    Test.Amazonka.Gen.Discovery
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-discovery
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-discovery
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/BatchDeleteImportData.yaml b/fixture/BatchDeleteImportData.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDeleteImportData.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/BatchDeleteImportDataResponse.proto b/fixture/BatchDeleteImportDataResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/BatchDeleteImportDataResponse.proto
diff --git a/fixture/CreateTags.yaml b/fixture/CreateTags.yaml
--- a/fixture/CreateTags.yaml
+++ b/fixture/CreateTags.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteTags.yaml b/fixture/DeleteTags.yaml
--- a/fixture/DeleteTags.yaml
+++ b/fixture/DeleteTags.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAgents.yaml b/fixture/DescribeAgents.yaml
--- a/fixture/DescribeAgents.yaml
+++ b/fixture/DescribeAgents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeConfigurations.yaml b/fixture/DescribeConfigurations.yaml
--- a/fixture/DescribeConfigurations.yaml
+++ b/fixture/DescribeConfigurations.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeContinuousExports.yaml b/fixture/DescribeContinuousExports.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeContinuousExports.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeContinuousExportsResponse.proto b/fixture/DescribeContinuousExportsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeContinuousExportsResponse.proto
diff --git a/fixture/DescribeImportTasks.yaml b/fixture/DescribeImportTasks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImportTasks.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeImportTasksResponse.proto b/fixture/DescribeImportTasksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeImportTasksResponse.proto
diff --git a/fixture/DescribeTags.yaml b/fixture/DescribeTags.yaml
--- a/fixture/DescribeTags.yaml
+++ b/fixture/DescribeTags.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListConfigurations.yaml b/fixture/ListConfigurations.yaml
--- a/fixture/ListConfigurations.yaml
+++ b/fixture/ListConfigurations.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartContinuousExport.yaml b/fixture/StartContinuousExport.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartContinuousExport.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartContinuousExportResponse.proto b/fixture/StartContinuousExportResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartContinuousExportResponse.proto
diff --git a/fixture/StartDataCollectionByAgentIds.yaml b/fixture/StartDataCollectionByAgentIds.yaml
--- a/fixture/StartDataCollectionByAgentIds.yaml
+++ b/fixture/StartDataCollectionByAgentIds.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartImportTask.yaml b/fixture/StartImportTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartImportTask.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartImportTaskResponse.proto b/fixture/StartImportTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartImportTaskResponse.proto
diff --git a/fixture/StopContinuousExport.yaml b/fixture/StopContinuousExport.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StopContinuousExport.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StopContinuousExportResponse.proto b/fixture/StopContinuousExportResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StopContinuousExportResponse.proto
diff --git a/fixture/StopDataCollectionByAgentIds.yaml b/fixture/StopDataCollectionByAgentIds.yaml
--- a/fixture/StopDataCollectionByAgentIds.yaml
+++ b/fixture/StopDataCollectionByAgentIds.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/discovery/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  discovery.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/gen/Amazonka/Discovery.hs b/gen/Amazonka/Discovery.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery.hs
@@ -0,0 +1,445 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.Discovery
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2015-11-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Web Services Application Discovery Service
+--
+-- Amazon Web Services Application Discovery Service helps you plan
+-- application migration projects. It automatically identifies servers,
+-- virtual machines (VMs), and network dependencies in your on-premises
+-- data centers. For more information, see the
+-- <http://aws.amazon.com/application-discovery/faqs/ Amazon Web Services Application Discovery Service FAQ>.
+-- Application Discovery Service offers three ways of performing discovery
+-- and collecting data about your on-premises servers:
+--
+-- -   __Agentless discovery__ is recommended for environments that use
+--     VMware vCenter Server. This mode doesn\'t require you to install an
+--     agent on each host. It does not work in non-VMware environments.
+--
+--     -   Agentless discovery gathers server information regardless of the
+--         operating systems, which minimizes the time required for initial
+--         on-premises infrastructure assessment.
+--
+--     -   Agentless discovery doesn\'t collect information about network
+--         dependencies, only agent-based discovery collects that
+--         information.
+--
+-- -   __Agent-based discovery__ collects a richer set of data than
+--     agentless discovery by using the Amazon Web Services Application
+--     Discovery Agent, which you install on one or more hosts in your data
+--     center.
+--
+--     -   The agent captures infrastructure and application information,
+--         including an inventory of running processes, system performance
+--         information, resource utilization, and network dependencies.
+--
+--     -   The information collected by agents is secured at rest and in
+--         transit to the Application Discovery Service database in the
+--         cloud.
+--
+-- -   __Amazon Web Services Partner Network (APN) solutions__ integrate
+--     with Application Discovery Service, enabling you to import details
+--     of your on-premises environment directly into Migration Hub without
+--     using the discovery connector or discovery agent.
+--
+--     -   Third-party application discovery tools can query Amazon Web
+--         Services Application Discovery Service, and they can write to
+--         the Application Discovery Service database using the public API.
+--
+--     -   In this way, you can import data into Migration Hub and view it,
+--         so that you can associate applications with servers and track
+--         migrations.
+--
+-- __Recommendations__
+--
+-- We recommend that you use agent-based discovery for non-VMware
+-- environments, and whenever you want to collect information about network
+-- dependencies. You can run agent-based and agentless discovery
+-- simultaneously. Use agentless discovery to complete the initial
+-- infrastructure assessment quickly, and then install agents on select
+-- hosts to collect additional information.
+--
+-- __Working With This Guide__
+--
+-- This API reference provides descriptions, syntax, and usage examples for
+-- each of the actions and data types for Application Discovery Service.
+-- The topic for each action shows the API request parameters and the
+-- response. Alternatively, you can use one of the Amazon Web Services SDKs
+-- to access an API that is tailored to the programming language or
+-- platform that you\'re using. For more information, see
+-- <http://aws.amazon.com/tools/#SDKs Amazon Web Services SDKs>.
+--
+-- -   Remember that you must set your Migration Hub home region before you
+--     call any of these APIs.
+--
+-- -   You must make API calls for write actions (create, notify,
+--     associate, disassociate, import, or put) while in your home region,
+--     or a @HomeRegionNotSetException@ error is returned.
+--
+-- -   API calls for read actions (list, describe, stop, and delete) are
+--     permitted outside of your home region.
+--
+-- -   Although it is unlikely, the Migration Hub home region could change.
+--     If you call APIs outside the home region, an @InvalidInputException@
+--     is returned.
+--
+-- -   You must call @GetHomeRegion@ to obtain the latest Migration Hub
+--     home region.
+--
+-- This guide is intended for use with the
+-- <http://docs.aws.amazon.com/application-discovery/latest/userguide/ Amazon Web Services Application Discovery Service User Guide>.
+--
+-- All data is handled according to the
+-- <http://aws.amazon.com/privacy/ Amazon Web Services Privacy Policy>. You
+-- can operate Application Discovery Service offline to inspect collected
+-- data before it is shared with the service.
+module Amazonka.Discovery
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AuthorizationErrorException
+    _AuthorizationErrorException,
+
+    -- ** ConflictErrorException
+    _ConflictErrorException,
+
+    -- ** HomeRegionNotSetException
+    _HomeRegionNotSetException,
+
+    -- ** InvalidParameterException
+    _InvalidParameterException,
+
+    -- ** InvalidParameterValueException
+    _InvalidParameterValueException,
+
+    -- ** OperationNotPermittedException
+    _OperationNotPermittedException,
+
+    -- ** ResourceInUseException
+    _ResourceInUseException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ServerInternalErrorException
+    _ServerInternalErrorException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AssociateConfigurationItemsToApplication
+    AssociateConfigurationItemsToApplication (AssociateConfigurationItemsToApplication'),
+    newAssociateConfigurationItemsToApplication,
+    AssociateConfigurationItemsToApplicationResponse (AssociateConfigurationItemsToApplicationResponse'),
+    newAssociateConfigurationItemsToApplicationResponse,
+
+    -- ** BatchDeleteImportData
+    BatchDeleteImportData (BatchDeleteImportData'),
+    newBatchDeleteImportData,
+    BatchDeleteImportDataResponse (BatchDeleteImportDataResponse'),
+    newBatchDeleteImportDataResponse,
+
+    -- ** CreateApplication
+    CreateApplication (CreateApplication'),
+    newCreateApplication,
+    CreateApplicationResponse (CreateApplicationResponse'),
+    newCreateApplicationResponse,
+
+    -- ** CreateTags
+    CreateTags (CreateTags'),
+    newCreateTags,
+    CreateTagsResponse (CreateTagsResponse'),
+    newCreateTagsResponse,
+
+    -- ** DeleteApplications
+    DeleteApplications (DeleteApplications'),
+    newDeleteApplications,
+    DeleteApplicationsResponse (DeleteApplicationsResponse'),
+    newDeleteApplicationsResponse,
+
+    -- ** DeleteTags
+    DeleteTags (DeleteTags'),
+    newDeleteTags,
+    DeleteTagsResponse (DeleteTagsResponse'),
+    newDeleteTagsResponse,
+
+    -- ** DescribeAgents (Paginated)
+    DescribeAgents (DescribeAgents'),
+    newDescribeAgents,
+    DescribeAgentsResponse (DescribeAgentsResponse'),
+    newDescribeAgentsResponse,
+
+    -- ** DescribeConfigurations
+    DescribeConfigurations (DescribeConfigurations'),
+    newDescribeConfigurations,
+    DescribeConfigurationsResponse (DescribeConfigurationsResponse'),
+    newDescribeConfigurationsResponse,
+
+    -- ** DescribeContinuousExports (Paginated)
+    DescribeContinuousExports (DescribeContinuousExports'),
+    newDescribeContinuousExports,
+    DescribeContinuousExportsResponse (DescribeContinuousExportsResponse'),
+    newDescribeContinuousExportsResponse,
+
+    -- ** DescribeExportTasks (Paginated)
+    DescribeExportTasks (DescribeExportTasks'),
+    newDescribeExportTasks,
+    DescribeExportTasksResponse (DescribeExportTasksResponse'),
+    newDescribeExportTasksResponse,
+
+    -- ** DescribeImportTasks
+    DescribeImportTasks (DescribeImportTasks'),
+    newDescribeImportTasks,
+    DescribeImportTasksResponse (DescribeImportTasksResponse'),
+    newDescribeImportTasksResponse,
+
+    -- ** DescribeTags (Paginated)
+    DescribeTags (DescribeTags'),
+    newDescribeTags,
+    DescribeTagsResponse (DescribeTagsResponse'),
+    newDescribeTagsResponse,
+
+    -- ** DisassociateConfigurationItemsFromApplication
+    DisassociateConfigurationItemsFromApplication (DisassociateConfigurationItemsFromApplication'),
+    newDisassociateConfigurationItemsFromApplication,
+    DisassociateConfigurationItemsFromApplicationResponse (DisassociateConfigurationItemsFromApplicationResponse'),
+    newDisassociateConfigurationItemsFromApplicationResponse,
+
+    -- ** GetDiscoverySummary
+    GetDiscoverySummary (GetDiscoverySummary'),
+    newGetDiscoverySummary,
+    GetDiscoverySummaryResponse (GetDiscoverySummaryResponse'),
+    newGetDiscoverySummaryResponse,
+
+    -- ** ListConfigurations (Paginated)
+    ListConfigurations (ListConfigurations'),
+    newListConfigurations,
+    ListConfigurationsResponse (ListConfigurationsResponse'),
+    newListConfigurationsResponse,
+
+    -- ** ListServerNeighbors
+    ListServerNeighbors (ListServerNeighbors'),
+    newListServerNeighbors,
+    ListServerNeighborsResponse (ListServerNeighborsResponse'),
+    newListServerNeighborsResponse,
+
+    -- ** StartContinuousExport
+    StartContinuousExport (StartContinuousExport'),
+    newStartContinuousExport,
+    StartContinuousExportResponse (StartContinuousExportResponse'),
+    newStartContinuousExportResponse,
+
+    -- ** StartDataCollectionByAgentIds
+    StartDataCollectionByAgentIds (StartDataCollectionByAgentIds'),
+    newStartDataCollectionByAgentIds,
+    StartDataCollectionByAgentIdsResponse (StartDataCollectionByAgentIdsResponse'),
+    newStartDataCollectionByAgentIdsResponse,
+
+    -- ** StartExportTask
+    StartExportTask (StartExportTask'),
+    newStartExportTask,
+    StartExportTaskResponse (StartExportTaskResponse'),
+    newStartExportTaskResponse,
+
+    -- ** StartImportTask
+    StartImportTask (StartImportTask'),
+    newStartImportTask,
+    StartImportTaskResponse (StartImportTaskResponse'),
+    newStartImportTaskResponse,
+
+    -- ** StopContinuousExport
+    StopContinuousExport (StopContinuousExport'),
+    newStopContinuousExport,
+    StopContinuousExportResponse (StopContinuousExportResponse'),
+    newStopContinuousExportResponse,
+
+    -- ** StopDataCollectionByAgentIds
+    StopDataCollectionByAgentIds (StopDataCollectionByAgentIds'),
+    newStopDataCollectionByAgentIds,
+    StopDataCollectionByAgentIdsResponse (StopDataCollectionByAgentIdsResponse'),
+    newStopDataCollectionByAgentIdsResponse,
+
+    -- ** UpdateApplication
+    UpdateApplication (UpdateApplication'),
+    newUpdateApplication,
+    UpdateApplicationResponse (UpdateApplicationResponse'),
+    newUpdateApplicationResponse,
+
+    -- * Types
+
+    -- ** AgentStatus
+    AgentStatus (..),
+
+    -- ** BatchDeleteImportDataErrorCode
+    BatchDeleteImportDataErrorCode (..),
+
+    -- ** ConfigurationItemType
+    ConfigurationItemType (..),
+
+    -- ** ContinuousExportStatus
+    ContinuousExportStatus (..),
+
+    -- ** DataSource
+    DataSource (..),
+
+    -- ** ExportDataFormat
+    ExportDataFormat (..),
+
+    -- ** ExportStatus
+    ExportStatus (..),
+
+    -- ** ImportStatus
+    ImportStatus (..),
+
+    -- ** ImportTaskFilterName
+    ImportTaskFilterName (..),
+
+    -- ** OrderString
+    OrderString (..),
+
+    -- ** AgentConfigurationStatus
+    AgentConfigurationStatus (AgentConfigurationStatus'),
+    newAgentConfigurationStatus,
+
+    -- ** AgentInfo
+    AgentInfo (AgentInfo'),
+    newAgentInfo,
+
+    -- ** AgentNetworkInfo
+    AgentNetworkInfo (AgentNetworkInfo'),
+    newAgentNetworkInfo,
+
+    -- ** BatchDeleteImportDataError
+    BatchDeleteImportDataError (BatchDeleteImportDataError'),
+    newBatchDeleteImportDataError,
+
+    -- ** ConfigurationTag
+    ConfigurationTag (ConfigurationTag'),
+    newConfigurationTag,
+
+    -- ** ContinuousExportDescription
+    ContinuousExportDescription (ContinuousExportDescription'),
+    newContinuousExportDescription,
+
+    -- ** CustomerAgentInfo
+    CustomerAgentInfo (CustomerAgentInfo'),
+    newCustomerAgentInfo,
+
+    -- ** CustomerAgentlessCollectorInfo
+    CustomerAgentlessCollectorInfo (CustomerAgentlessCollectorInfo'),
+    newCustomerAgentlessCollectorInfo,
+
+    -- ** CustomerConnectorInfo
+    CustomerConnectorInfo (CustomerConnectorInfo'),
+    newCustomerConnectorInfo,
+
+    -- ** CustomerMeCollectorInfo
+    CustomerMeCollectorInfo (CustomerMeCollectorInfo'),
+    newCustomerMeCollectorInfo,
+
+    -- ** ExportFilter
+    ExportFilter (ExportFilter'),
+    newExportFilter,
+
+    -- ** ExportInfo
+    ExportInfo (ExportInfo'),
+    newExportInfo,
+
+    -- ** Filter
+    Filter (Filter'),
+    newFilter,
+
+    -- ** ImportTask
+    ImportTask (ImportTask'),
+    newImportTask,
+
+    -- ** ImportTaskFilter
+    ImportTaskFilter (ImportTaskFilter'),
+    newImportTaskFilter,
+
+    -- ** NeighborConnectionDetail
+    NeighborConnectionDetail (NeighborConnectionDetail'),
+    newNeighborConnectionDetail,
+
+    -- ** OrderByElement
+    OrderByElement (OrderByElement'),
+    newOrderByElement,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+
+    -- ** TagFilter
+    TagFilter (TagFilter'),
+    newTagFilter,
+  )
+where
+
+import Amazonka.Discovery.AssociateConfigurationItemsToApplication
+import Amazonka.Discovery.BatchDeleteImportData
+import Amazonka.Discovery.CreateApplication
+import Amazonka.Discovery.CreateTags
+import Amazonka.Discovery.DeleteApplications
+import Amazonka.Discovery.DeleteTags
+import Amazonka.Discovery.DescribeAgents
+import Amazonka.Discovery.DescribeConfigurations
+import Amazonka.Discovery.DescribeContinuousExports
+import Amazonka.Discovery.DescribeExportTasks
+import Amazonka.Discovery.DescribeImportTasks
+import Amazonka.Discovery.DescribeTags
+import Amazonka.Discovery.DisassociateConfigurationItemsFromApplication
+import Amazonka.Discovery.GetDiscoverySummary
+import Amazonka.Discovery.Lens
+import Amazonka.Discovery.ListConfigurations
+import Amazonka.Discovery.ListServerNeighbors
+import Amazonka.Discovery.StartContinuousExport
+import Amazonka.Discovery.StartDataCollectionByAgentIds
+import Amazonka.Discovery.StartExportTask
+import Amazonka.Discovery.StartImportTask
+import Amazonka.Discovery.StopContinuousExport
+import Amazonka.Discovery.StopDataCollectionByAgentIds
+import Amazonka.Discovery.Types
+import Amazonka.Discovery.UpdateApplication
+import Amazonka.Discovery.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 'Discovery'.
+
+-- $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/Amazonka/Discovery/AssociateConfigurationItemsToApplication.hs b/gen/Amazonka/Discovery/AssociateConfigurationItemsToApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/AssociateConfigurationItemsToApplication.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.AssociateConfigurationItemsToApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Associates one or more configuration items with an application.
+module Amazonka.Discovery.AssociateConfigurationItemsToApplication
+  ( -- * Creating a Request
+    AssociateConfigurationItemsToApplication (..),
+    newAssociateConfigurationItemsToApplication,
+
+    -- * Request Lenses
+    associateConfigurationItemsToApplication_applicationConfigurationId,
+    associateConfigurationItemsToApplication_configurationIds,
+
+    -- * Destructuring the Response
+    AssociateConfigurationItemsToApplicationResponse (..),
+    newAssociateConfigurationItemsToApplicationResponse,
+
+    -- * Response Lenses
+    associateConfigurationItemsToApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newAssociateConfigurationItemsToApplication' smart constructor.
+data AssociateConfigurationItemsToApplication = AssociateConfigurationItemsToApplication'
+  { -- | The configuration ID of an application with which items are to be
+    -- associated.
+    applicationConfigurationId :: Prelude.Text,
+    -- | The ID of each configuration item to be associated with an application.
+    configurationIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateConfigurationItemsToApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationConfigurationId', 'associateConfigurationItemsToApplication_applicationConfigurationId' - The configuration ID of an application with which items are to be
+-- associated.
+--
+-- 'configurationIds', 'associateConfigurationItemsToApplication_configurationIds' - The ID of each configuration item to be associated with an application.
+newAssociateConfigurationItemsToApplication ::
+  -- | 'applicationConfigurationId'
+  Prelude.Text ->
+  AssociateConfigurationItemsToApplication
+newAssociateConfigurationItemsToApplication
+  pApplicationConfigurationId_ =
+    AssociateConfigurationItemsToApplication'
+      { applicationConfigurationId =
+          pApplicationConfigurationId_,
+        configurationIds = Prelude.mempty
+      }
+
+-- | The configuration ID of an application with which items are to be
+-- associated.
+associateConfigurationItemsToApplication_applicationConfigurationId :: Lens.Lens' AssociateConfigurationItemsToApplication Prelude.Text
+associateConfigurationItemsToApplication_applicationConfigurationId = Lens.lens (\AssociateConfigurationItemsToApplication' {applicationConfigurationId} -> applicationConfigurationId) (\s@AssociateConfigurationItemsToApplication' {} a -> s {applicationConfigurationId = a} :: AssociateConfigurationItemsToApplication)
+
+-- | The ID of each configuration item to be associated with an application.
+associateConfigurationItemsToApplication_configurationIds :: Lens.Lens' AssociateConfigurationItemsToApplication [Prelude.Text]
+associateConfigurationItemsToApplication_configurationIds = Lens.lens (\AssociateConfigurationItemsToApplication' {configurationIds} -> configurationIds) (\s@AssociateConfigurationItemsToApplication' {} a -> s {configurationIds = a} :: AssociateConfigurationItemsToApplication) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    AssociateConfigurationItemsToApplication
+  where
+  type
+    AWSResponse
+      AssociateConfigurationItemsToApplication =
+      AssociateConfigurationItemsToApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          AssociateConfigurationItemsToApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    AssociateConfigurationItemsToApplication
+  where
+  hashWithSalt
+    _salt
+    AssociateConfigurationItemsToApplication' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationConfigurationId
+        `Prelude.hashWithSalt` configurationIds
+
+instance
+  Prelude.NFData
+    AssociateConfigurationItemsToApplication
+  where
+  rnf AssociateConfigurationItemsToApplication' {..} =
+    Prelude.rnf applicationConfigurationId
+      `Prelude.seq` Prelude.rnf configurationIds
+
+instance
+  Data.ToHeaders
+    AssociateConfigurationItemsToApplication
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.AssociateConfigurationItemsToApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    AssociateConfigurationItemsToApplication
+  where
+  toJSON AssociateConfigurationItemsToApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ( "applicationConfigurationId"
+                  Data..= applicationConfigurationId
+              ),
+            Prelude.Just
+              ("configurationIds" Data..= configurationIds)
+          ]
+      )
+
+instance
+  Data.ToPath
+    AssociateConfigurationItemsToApplication
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    AssociateConfigurationItemsToApplication
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAssociateConfigurationItemsToApplicationResponse' smart constructor.
+data AssociateConfigurationItemsToApplicationResponse = AssociateConfigurationItemsToApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AssociateConfigurationItemsToApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'associateConfigurationItemsToApplicationResponse_httpStatus' - The response's http status code.
+newAssociateConfigurationItemsToApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AssociateConfigurationItemsToApplicationResponse
+newAssociateConfigurationItemsToApplicationResponse
+  pHttpStatus_ =
+    AssociateConfigurationItemsToApplicationResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+associateConfigurationItemsToApplicationResponse_httpStatus :: Lens.Lens' AssociateConfigurationItemsToApplicationResponse Prelude.Int
+associateConfigurationItemsToApplicationResponse_httpStatus = Lens.lens (\AssociateConfigurationItemsToApplicationResponse' {httpStatus} -> httpStatus) (\s@AssociateConfigurationItemsToApplicationResponse' {} a -> s {httpStatus = a} :: AssociateConfigurationItemsToApplicationResponse)
+
+instance
+  Prelude.NFData
+    AssociateConfigurationItemsToApplicationResponse
+  where
+  rnf
+    AssociateConfigurationItemsToApplicationResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/BatchDeleteImportData.hs b/gen/Amazonka/Discovery/BatchDeleteImportData.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/BatchDeleteImportData.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.BatchDeleteImportData
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes one or more import tasks, each identified by their import ID.
+-- Each import task has a number of records that can identify servers or
+-- applications.
+--
+-- Amazon Web Services Application Discovery Service has built-in matching
+-- logic that will identify when discovered servers match existing entries
+-- that you\'ve previously discovered, the information for the
+-- already-existing discovered server is updated. When you delete an import
+-- task that contains records that were used to match, the information in
+-- those matched records that comes from the deleted records will also be
+-- deleted.
+module Amazonka.Discovery.BatchDeleteImportData
+  ( -- * Creating a Request
+    BatchDeleteImportData (..),
+    newBatchDeleteImportData,
+
+    -- * Request Lenses
+    batchDeleteImportData_importTaskIds,
+
+    -- * Destructuring the Response
+    BatchDeleteImportDataResponse (..),
+    newBatchDeleteImportDataResponse,
+
+    -- * Response Lenses
+    batchDeleteImportDataResponse_errors,
+    batchDeleteImportDataResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newBatchDeleteImportData' smart constructor.
+data BatchDeleteImportData = BatchDeleteImportData'
+  { -- | The IDs for the import tasks that you want to delete.
+    importTaskIds :: Prelude.NonEmpty Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDeleteImportData' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'importTaskIds', 'batchDeleteImportData_importTaskIds' - The IDs for the import tasks that you want to delete.
+newBatchDeleteImportData ::
+  -- | 'importTaskIds'
+  Prelude.NonEmpty Prelude.Text ->
+  BatchDeleteImportData
+newBatchDeleteImportData pImportTaskIds_ =
+  BatchDeleteImportData'
+    { importTaskIds =
+        Lens.coerced Lens.# pImportTaskIds_
+    }
+
+-- | The IDs for the import tasks that you want to delete.
+batchDeleteImportData_importTaskIds :: Lens.Lens' BatchDeleteImportData (Prelude.NonEmpty Prelude.Text)
+batchDeleteImportData_importTaskIds = Lens.lens (\BatchDeleteImportData' {importTaskIds} -> importTaskIds) (\s@BatchDeleteImportData' {} a -> s {importTaskIds = a} :: BatchDeleteImportData) Prelude.. Lens.coerced
+
+instance Core.AWSRequest BatchDeleteImportData where
+  type
+    AWSResponse BatchDeleteImportData =
+      BatchDeleteImportDataResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BatchDeleteImportDataResponse'
+            Prelude.<$> (x Data..?> "errors" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BatchDeleteImportData where
+  hashWithSalt _salt BatchDeleteImportData' {..} =
+    _salt `Prelude.hashWithSalt` importTaskIds
+
+instance Prelude.NFData BatchDeleteImportData where
+  rnf BatchDeleteImportData' {..} =
+    Prelude.rnf importTaskIds
+
+instance Data.ToHeaders BatchDeleteImportData where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.BatchDeleteImportData" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON BatchDeleteImportData where
+  toJSON BatchDeleteImportData' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("importTaskIds" Data..= importTaskIds)
+          ]
+      )
+
+instance Data.ToPath BatchDeleteImportData where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery BatchDeleteImportData where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newBatchDeleteImportDataResponse' smart constructor.
+data BatchDeleteImportDataResponse = BatchDeleteImportDataResponse'
+  { -- | Error messages returned for each import task that you deleted as a
+    -- response for this command.
+    errors :: Prelude.Maybe [BatchDeleteImportDataError],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDeleteImportDataResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errors', 'batchDeleteImportDataResponse_errors' - Error messages returned for each import task that you deleted as a
+-- response for this command.
+--
+-- 'httpStatus', 'batchDeleteImportDataResponse_httpStatus' - The response's http status code.
+newBatchDeleteImportDataResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BatchDeleteImportDataResponse
+newBatchDeleteImportDataResponse pHttpStatus_ =
+  BatchDeleteImportDataResponse'
+    { errors =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Error messages returned for each import task that you deleted as a
+-- response for this command.
+batchDeleteImportDataResponse_errors :: Lens.Lens' BatchDeleteImportDataResponse (Prelude.Maybe [BatchDeleteImportDataError])
+batchDeleteImportDataResponse_errors = Lens.lens (\BatchDeleteImportDataResponse' {errors} -> errors) (\s@BatchDeleteImportDataResponse' {} a -> s {errors = a} :: BatchDeleteImportDataResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+batchDeleteImportDataResponse_httpStatus :: Lens.Lens' BatchDeleteImportDataResponse Prelude.Int
+batchDeleteImportDataResponse_httpStatus = Lens.lens (\BatchDeleteImportDataResponse' {httpStatus} -> httpStatus) (\s@BatchDeleteImportDataResponse' {} a -> s {httpStatus = a} :: BatchDeleteImportDataResponse)
+
+instance Prelude.NFData BatchDeleteImportDataResponse where
+  rnf BatchDeleteImportDataResponse' {..} =
+    Prelude.rnf errors
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/CreateApplication.hs b/gen/Amazonka/Discovery/CreateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/CreateApplication.hs
@@ -0,0 +1,186 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.CreateApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an application with the given name and description.
+module Amazonka.Discovery.CreateApplication
+  ( -- * Creating a Request
+    CreateApplication (..),
+    newCreateApplication,
+
+    -- * Request Lenses
+    createApplication_description,
+    createApplication_name,
+
+    -- * Destructuring the Response
+    CreateApplicationResponse (..),
+    newCreateApplicationResponse,
+
+    -- * Response Lenses
+    createApplicationResponse_configurationId,
+    createApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateApplication' smart constructor.
+data CreateApplication = CreateApplication'
+  { -- | Description of the application to be created.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Name of the application to be created.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'createApplication_description' - Description of the application to be created.
+--
+-- 'name', 'createApplication_name' - Name of the application to be created.
+newCreateApplication ::
+  -- | 'name'
+  Prelude.Text ->
+  CreateApplication
+newCreateApplication pName_ =
+  CreateApplication'
+    { description = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | Description of the application to be created.
+createApplication_description :: Lens.Lens' CreateApplication (Prelude.Maybe Prelude.Text)
+createApplication_description = Lens.lens (\CreateApplication' {description} -> description) (\s@CreateApplication' {} a -> s {description = a} :: CreateApplication)
+
+-- | Name of the application to be created.
+createApplication_name :: Lens.Lens' CreateApplication Prelude.Text
+createApplication_name = Lens.lens (\CreateApplication' {name} -> name) (\s@CreateApplication' {} a -> s {name = a} :: CreateApplication)
+
+instance Core.AWSRequest CreateApplication where
+  type
+    AWSResponse CreateApplication =
+      CreateApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateApplicationResponse'
+            Prelude.<$> (x Data..?> "configurationId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateApplication where
+  hashWithSalt _salt CreateApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData CreateApplication where
+  rnf CreateApplication' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToHeaders CreateApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.CreateApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateApplication where
+  toJSON CreateApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("description" Data..=) Prelude.<$> description,
+            Prelude.Just ("name" Data..= name)
+          ]
+      )
+
+instance Data.ToPath CreateApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateApplicationResponse' smart constructor.
+data CreateApplicationResponse = CreateApplicationResponse'
+  { -- | Configuration ID of an application to be created.
+    configurationId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationId', 'createApplicationResponse_configurationId' - Configuration ID of an application to be created.
+--
+-- 'httpStatus', 'createApplicationResponse_httpStatus' - The response's http status code.
+newCreateApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateApplicationResponse
+newCreateApplicationResponse pHttpStatus_ =
+  CreateApplicationResponse'
+    { configurationId =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Configuration ID of an application to be created.
+createApplicationResponse_configurationId :: Lens.Lens' CreateApplicationResponse (Prelude.Maybe Prelude.Text)
+createApplicationResponse_configurationId = Lens.lens (\CreateApplicationResponse' {configurationId} -> configurationId) (\s@CreateApplicationResponse' {} a -> s {configurationId = a} :: CreateApplicationResponse)
+
+-- | The response's http status code.
+createApplicationResponse_httpStatus :: Lens.Lens' CreateApplicationResponse Prelude.Int
+createApplicationResponse_httpStatus = Lens.lens (\CreateApplicationResponse' {httpStatus} -> httpStatus) (\s@CreateApplicationResponse' {} a -> s {httpStatus = a} :: CreateApplicationResponse)
+
+instance Prelude.NFData CreateApplicationResponse where
+  rnf CreateApplicationResponse' {..} =
+    Prelude.rnf configurationId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/CreateTags.hs b/gen/Amazonka/Discovery/CreateTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/CreateTags.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.CreateTags
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates one or more tags for configuration items. Tags are metadata that
+-- help you categorize IT assets. This API accepts a list of multiple
+-- configuration items.
+--
+-- Do not store sensitive information (like personal data) in tags.
+module Amazonka.Discovery.CreateTags
+  ( -- * Creating a Request
+    CreateTags (..),
+    newCreateTags,
+
+    -- * Request Lenses
+    createTags_configurationIds,
+    createTags_tags,
+
+    -- * Destructuring the Response
+    CreateTagsResponse (..),
+    newCreateTagsResponse,
+
+    -- * Response Lenses
+    createTagsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newCreateTags' smart constructor.
+data CreateTags = CreateTags'
+  { -- | A list of configuration items that you want to tag.
+    configurationIds :: [Prelude.Text],
+    -- | Tags that you want to associate with one or more configuration items.
+    -- Specify the tags that you want to create in a /key/-/value/ format. For
+    -- example:
+    --
+    -- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+    tags :: [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTags' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationIds', 'createTags_configurationIds' - A list of configuration items that you want to tag.
+--
+-- 'tags', 'createTags_tags' - Tags that you want to associate with one or more configuration items.
+-- Specify the tags that you want to create in a /key/-/value/ format. For
+-- example:
+--
+-- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+newCreateTags ::
+  CreateTags
+newCreateTags =
+  CreateTags'
+    { configurationIds = Prelude.mempty,
+      tags = Prelude.mempty
+    }
+
+-- | A list of configuration items that you want to tag.
+createTags_configurationIds :: Lens.Lens' CreateTags [Prelude.Text]
+createTags_configurationIds = Lens.lens (\CreateTags' {configurationIds} -> configurationIds) (\s@CreateTags' {} a -> s {configurationIds = a} :: CreateTags) Prelude.. Lens.coerced
+
+-- | Tags that you want to associate with one or more configuration items.
+-- Specify the tags that you want to create in a /key/-/value/ format. For
+-- example:
+--
+-- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+createTags_tags :: Lens.Lens' CreateTags [Tag]
+createTags_tags = Lens.lens (\CreateTags' {tags} -> tags) (\s@CreateTags' {} a -> s {tags = a} :: CreateTags) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateTags where
+  type AWSResponse CreateTags = CreateTagsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          CreateTagsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTags where
+  hashWithSalt _salt CreateTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationIds
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData CreateTags where
+  rnf CreateTags' {..} =
+    Prelude.rnf configurationIds
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders CreateTags where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.CreateTags" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateTags where
+  toJSON CreateTags' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("configurationIds" Data..= configurationIds),
+            Prelude.Just ("tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath CreateTags where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateTagsResponse' smart constructor.
+data CreateTagsResponse = CreateTagsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTagsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createTagsResponse_httpStatus' - The response's http status code.
+newCreateTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateTagsResponse
+newCreateTagsResponse pHttpStatus_ =
+  CreateTagsResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+createTagsResponse_httpStatus :: Lens.Lens' CreateTagsResponse Prelude.Int
+createTagsResponse_httpStatus = Lens.lens (\CreateTagsResponse' {httpStatus} -> httpStatus) (\s@CreateTagsResponse' {} a -> s {httpStatus = a} :: CreateTagsResponse)
+
+instance Prelude.NFData CreateTagsResponse where
+  rnf CreateTagsResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DeleteApplications.hs b/gen/Amazonka/Discovery/DeleteApplications.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DeleteApplications.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DeleteApplications
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a list of applications and their associations with configuration
+-- items.
+module Amazonka.Discovery.DeleteApplications
+  ( -- * Creating a Request
+    DeleteApplications (..),
+    newDeleteApplications,
+
+    -- * Request Lenses
+    deleteApplications_configurationIds,
+
+    -- * Destructuring the Response
+    DeleteApplicationsResponse (..),
+    newDeleteApplicationsResponse,
+
+    -- * Response Lenses
+    deleteApplicationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteApplications' smart constructor.
+data DeleteApplications = DeleteApplications'
+  { -- | Configuration ID of an application to be deleted.
+    configurationIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplications' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationIds', 'deleteApplications_configurationIds' - Configuration ID of an application to be deleted.
+newDeleteApplications ::
+  DeleteApplications
+newDeleteApplications =
+  DeleteApplications'
+    { configurationIds =
+        Prelude.mempty
+    }
+
+-- | Configuration ID of an application to be deleted.
+deleteApplications_configurationIds :: Lens.Lens' DeleteApplications [Prelude.Text]
+deleteApplications_configurationIds = Lens.lens (\DeleteApplications' {configurationIds} -> configurationIds) (\s@DeleteApplications' {} a -> s {configurationIds = a} :: DeleteApplications) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DeleteApplications where
+  type
+    AWSResponse DeleteApplications =
+      DeleteApplicationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteApplicationsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteApplications where
+  hashWithSalt _salt DeleteApplications' {..} =
+    _salt `Prelude.hashWithSalt` configurationIds
+
+instance Prelude.NFData DeleteApplications where
+  rnf DeleteApplications' {..} =
+    Prelude.rnf configurationIds
+
+instance Data.ToHeaders DeleteApplications where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DeleteApplications" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteApplications where
+  toJSON DeleteApplications' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("configurationIds" Data..= configurationIds)
+          ]
+      )
+
+instance Data.ToPath DeleteApplications where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteApplications where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteApplicationsResponse' smart constructor.
+data DeleteApplicationsResponse = DeleteApplicationsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteApplicationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteApplicationsResponse_httpStatus' - The response's http status code.
+newDeleteApplicationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteApplicationsResponse
+newDeleteApplicationsResponse pHttpStatus_ =
+  DeleteApplicationsResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteApplicationsResponse_httpStatus :: Lens.Lens' DeleteApplicationsResponse Prelude.Int
+deleteApplicationsResponse_httpStatus = Lens.lens (\DeleteApplicationsResponse' {httpStatus} -> httpStatus) (\s@DeleteApplicationsResponse' {} a -> s {httpStatus = a} :: DeleteApplicationsResponse)
+
+instance Prelude.NFData DeleteApplicationsResponse where
+  rnf DeleteApplicationsResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DeleteTags.hs b/gen/Amazonka/Discovery/DeleteTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DeleteTags.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DeleteTags
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the association between configuration items and one or more
+-- tags. This API accepts a list of multiple configuration items.
+module Amazonka.Discovery.DeleteTags
+  ( -- * Creating a Request
+    DeleteTags (..),
+    newDeleteTags,
+
+    -- * Request Lenses
+    deleteTags_tags,
+    deleteTags_configurationIds,
+
+    -- * Destructuring the Response
+    DeleteTagsResponse (..),
+    newDeleteTagsResponse,
+
+    -- * Response Lenses
+    deleteTagsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDeleteTags' smart constructor.
+data DeleteTags = DeleteTags'
+  { -- | Tags that you want to delete from one or more configuration items.
+    -- Specify the tags that you want to delete in a /key/-/value/ format. For
+    -- example:
+    --
+    -- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+    tags :: Prelude.Maybe [Tag],
+    -- | A list of configuration items with tags that you want to delete.
+    configurationIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTags' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tags', 'deleteTags_tags' - Tags that you want to delete from one or more configuration items.
+-- Specify the tags that you want to delete in a /key/-/value/ format. For
+-- example:
+--
+-- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+--
+-- 'configurationIds', 'deleteTags_configurationIds' - A list of configuration items with tags that you want to delete.
+newDeleteTags ::
+  DeleteTags
+newDeleteTags =
+  DeleteTags'
+    { tags = Prelude.Nothing,
+      configurationIds = Prelude.mempty
+    }
+
+-- | Tags that you want to delete from one or more configuration items.
+-- Specify the tags that you want to delete in a /key/-/value/ format. For
+-- example:
+--
+-- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+deleteTags_tags :: Lens.Lens' DeleteTags (Prelude.Maybe [Tag])
+deleteTags_tags = Lens.lens (\DeleteTags' {tags} -> tags) (\s@DeleteTags' {} a -> s {tags = a} :: DeleteTags) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of configuration items with tags that you want to delete.
+deleteTags_configurationIds :: Lens.Lens' DeleteTags [Prelude.Text]
+deleteTags_configurationIds = Lens.lens (\DeleteTags' {configurationIds} -> configurationIds) (\s@DeleteTags' {} a -> s {configurationIds = a} :: DeleteTags) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DeleteTags where
+  type AWSResponse DeleteTags = DeleteTagsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteTagsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTags where
+  hashWithSalt _salt DeleteTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` configurationIds
+
+instance Prelude.NFData DeleteTags where
+  rnf DeleteTags' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf configurationIds
+
+instance Data.ToHeaders DeleteTags where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DeleteTags" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteTags where
+  toJSON DeleteTags' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ("configurationIds" Data..= configurationIds)
+          ]
+      )
+
+instance Data.ToPath DeleteTags where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteTagsResponse' smart constructor.
+data DeleteTagsResponse = DeleteTagsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTagsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteTagsResponse_httpStatus' - The response's http status code.
+newDeleteTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteTagsResponse
+newDeleteTagsResponse pHttpStatus_ =
+  DeleteTagsResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteTagsResponse_httpStatus :: Lens.Lens' DeleteTagsResponse Prelude.Int
+deleteTagsResponse_httpStatus = Lens.lens (\DeleteTagsResponse' {httpStatus} -> httpStatus) (\s@DeleteTagsResponse' {} a -> s {httpStatus = a} :: DeleteTagsResponse)
+
+instance Prelude.NFData DeleteTagsResponse where
+  rnf DeleteTagsResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DescribeAgents.hs b/gen/Amazonka/Discovery/DescribeAgents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DescribeAgents.hs
@@ -0,0 +1,308 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DescribeAgents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists agents or connectors as specified by ID or other filters. All
+-- agents\/connectors associated with your user account can be listed if
+-- you call @DescribeAgents@ as is without passing any parameters.
+--
+-- This operation returns paginated results.
+module Amazonka.Discovery.DescribeAgents
+  ( -- * Creating a Request
+    DescribeAgents (..),
+    newDescribeAgents,
+
+    -- * Request Lenses
+    describeAgents_agentIds,
+    describeAgents_filters,
+    describeAgents_maxResults,
+    describeAgents_nextToken,
+
+    -- * Destructuring the Response
+    DescribeAgentsResponse (..),
+    newDescribeAgentsResponse,
+
+    -- * Response Lenses
+    describeAgentsResponse_agentsInfo,
+    describeAgentsResponse_nextToken,
+    describeAgentsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeAgents' smart constructor.
+data DescribeAgents = DescribeAgents'
+  { -- | The agent or the Connector IDs for which you want information. If you
+    -- specify no IDs, the system returns information about all
+    -- agents\/Connectors associated with your Amazon Web Services user
+    -- account.
+    agentIds :: Prelude.Maybe [Prelude.Text],
+    -- | You can filter the request using various logical operators and a
+    -- /key/-/value/ format. For example:
+    --
+    -- @{\"key\": \"collectionStatus\", \"value\": \"STARTED\"}@
+    filters :: Prelude.Maybe [Filter],
+    -- | The total number of agents\/Connectors to return in a single page of
+    -- output. The maximum value is 100.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Token to retrieve the next set of results. For example, if you
+    -- previously specified 100 IDs for @DescribeAgentsRequest$agentIds@ but
+    -- set @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10
+    -- results along with a token. Use that token in this query to get the next
+    -- set of 10.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAgents' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentIds', 'describeAgents_agentIds' - The agent or the Connector IDs for which you want information. If you
+-- specify no IDs, the system returns information about all
+-- agents\/Connectors associated with your Amazon Web Services user
+-- account.
+--
+-- 'filters', 'describeAgents_filters' - You can filter the request using various logical operators and a
+-- /key/-/value/ format. For example:
+--
+-- @{\"key\": \"collectionStatus\", \"value\": \"STARTED\"}@
+--
+-- 'maxResults', 'describeAgents_maxResults' - The total number of agents\/Connectors to return in a single page of
+-- output. The maximum value is 100.
+--
+-- 'nextToken', 'describeAgents_nextToken' - Token to retrieve the next set of results. For example, if you
+-- previously specified 100 IDs for @DescribeAgentsRequest$agentIds@ but
+-- set @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10
+-- results along with a token. Use that token in this query to get the next
+-- set of 10.
+newDescribeAgents ::
+  DescribeAgents
+newDescribeAgents =
+  DescribeAgents'
+    { agentIds = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The agent or the Connector IDs for which you want information. If you
+-- specify no IDs, the system returns information about all
+-- agents\/Connectors associated with your Amazon Web Services user
+-- account.
+describeAgents_agentIds :: Lens.Lens' DescribeAgents (Prelude.Maybe [Prelude.Text])
+describeAgents_agentIds = Lens.lens (\DescribeAgents' {agentIds} -> agentIds) (\s@DescribeAgents' {} a -> s {agentIds = a} :: DescribeAgents) Prelude.. Lens.mapping Lens.coerced
+
+-- | You can filter the request using various logical operators and a
+-- /key/-/value/ format. For example:
+--
+-- @{\"key\": \"collectionStatus\", \"value\": \"STARTED\"}@
+describeAgents_filters :: Lens.Lens' DescribeAgents (Prelude.Maybe [Filter])
+describeAgents_filters = Lens.lens (\DescribeAgents' {filters} -> filters) (\s@DescribeAgents' {} a -> s {filters = a} :: DescribeAgents) Prelude.. Lens.mapping Lens.coerced
+
+-- | The total number of agents\/Connectors to return in a single page of
+-- output. The maximum value is 100.
+describeAgents_maxResults :: Lens.Lens' DescribeAgents (Prelude.Maybe Prelude.Int)
+describeAgents_maxResults = Lens.lens (\DescribeAgents' {maxResults} -> maxResults) (\s@DescribeAgents' {} a -> s {maxResults = a} :: DescribeAgents)
+
+-- | Token to retrieve the next set of results. For example, if you
+-- previously specified 100 IDs for @DescribeAgentsRequest$agentIds@ but
+-- set @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10
+-- results along with a token. Use that token in this query to get the next
+-- set of 10.
+describeAgents_nextToken :: Lens.Lens' DescribeAgents (Prelude.Maybe Prelude.Text)
+describeAgents_nextToken = Lens.lens (\DescribeAgents' {nextToken} -> nextToken) (\s@DescribeAgents' {} a -> s {nextToken = a} :: DescribeAgents)
+
+instance Core.AWSPager DescribeAgents where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeAgentsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeAgentsResponse_agentsInfo
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeAgents_nextToken
+          Lens..~ rs
+          Lens.^? describeAgentsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeAgents where
+  type
+    AWSResponse DescribeAgents =
+      DescribeAgentsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeAgentsResponse'
+            Prelude.<$> (x Data..?> "agentsInfo" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeAgents where
+  hashWithSalt _salt DescribeAgents' {..} =
+    _salt
+      `Prelude.hashWithSalt` agentIds
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeAgents where
+  rnf DescribeAgents' {..} =
+    Prelude.rnf agentIds
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeAgents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DescribeAgents" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeAgents where
+  toJSON DescribeAgents' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("agentIds" Data..=) Prelude.<$> agentIds,
+            ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeAgents where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeAgents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeAgentsResponse' smart constructor.
+data DescribeAgentsResponse = DescribeAgentsResponse'
+  { -- | Lists agents or the Connector by ID or lists all agents\/Connectors
+    -- associated with your user account if you did not specify an
+    -- agent\/Connector ID. The output includes agent\/Connector IDs, IP
+    -- addresses, media access control (MAC) addresses, agent\/Connector
+    -- health, host name where the agent\/Connector resides, and the version
+    -- number of each agent\/Connector.
+    agentsInfo :: Prelude.Maybe [AgentInfo],
+    -- | Token to retrieve the next set of results. For example, if you specified
+    -- 100 IDs for @DescribeAgentsRequest$agentIds@ but set
+    -- @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10
+    -- results along with this token. Use this token in the next query to
+    -- retrieve the next set of 10.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeAgentsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentsInfo', 'describeAgentsResponse_agentsInfo' - Lists agents or the Connector by ID or lists all agents\/Connectors
+-- associated with your user account if you did not specify an
+-- agent\/Connector ID. The output includes agent\/Connector IDs, IP
+-- addresses, media access control (MAC) addresses, agent\/Connector
+-- health, host name where the agent\/Connector resides, and the version
+-- number of each agent\/Connector.
+--
+-- 'nextToken', 'describeAgentsResponse_nextToken' - Token to retrieve the next set of results. For example, if you specified
+-- 100 IDs for @DescribeAgentsRequest$agentIds@ but set
+-- @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10
+-- results along with this token. Use this token in the next query to
+-- retrieve the next set of 10.
+--
+-- 'httpStatus', 'describeAgentsResponse_httpStatus' - The response's http status code.
+newDescribeAgentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeAgentsResponse
+newDescribeAgentsResponse pHttpStatus_ =
+  DescribeAgentsResponse'
+    { agentsInfo =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Lists agents or the Connector by ID or lists all agents\/Connectors
+-- associated with your user account if you did not specify an
+-- agent\/Connector ID. The output includes agent\/Connector IDs, IP
+-- addresses, media access control (MAC) addresses, agent\/Connector
+-- health, host name where the agent\/Connector resides, and the version
+-- number of each agent\/Connector.
+describeAgentsResponse_agentsInfo :: Lens.Lens' DescribeAgentsResponse (Prelude.Maybe [AgentInfo])
+describeAgentsResponse_agentsInfo = Lens.lens (\DescribeAgentsResponse' {agentsInfo} -> agentsInfo) (\s@DescribeAgentsResponse' {} a -> s {agentsInfo = a} :: DescribeAgentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Token to retrieve the next set of results. For example, if you specified
+-- 100 IDs for @DescribeAgentsRequest$agentIds@ but set
+-- @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10
+-- results along with this token. Use this token in the next query to
+-- retrieve the next set of 10.
+describeAgentsResponse_nextToken :: Lens.Lens' DescribeAgentsResponse (Prelude.Maybe Prelude.Text)
+describeAgentsResponse_nextToken = Lens.lens (\DescribeAgentsResponse' {nextToken} -> nextToken) (\s@DescribeAgentsResponse' {} a -> s {nextToken = a} :: DescribeAgentsResponse)
+
+-- | The response's http status code.
+describeAgentsResponse_httpStatus :: Lens.Lens' DescribeAgentsResponse Prelude.Int
+describeAgentsResponse_httpStatus = Lens.lens (\DescribeAgentsResponse' {httpStatus} -> httpStatus) (\s@DescribeAgentsResponse' {} a -> s {httpStatus = a} :: DescribeAgentsResponse)
+
+instance Prelude.NFData DescribeAgentsResponse where
+  rnf DescribeAgentsResponse' {..} =
+    Prelude.rnf agentsInfo
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DescribeConfigurations.hs b/gen/Amazonka/Discovery/DescribeConfigurations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DescribeConfigurations.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DescribeConfigurations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves attributes for a list of configuration item IDs.
+--
+-- All of the supplied IDs must be for the same asset type from one of the
+-- following:
+--
+-- -   server
+--
+-- -   application
+--
+-- -   process
+--
+-- -   connection
+--
+-- Output fields are specific to the asset type specified. For example, the
+-- output for a /server/ configuration item includes a list of attributes
+-- about the server, such as host name, operating system, number of network
+-- cards, etc.
+--
+-- For a complete list of outputs for each asset type, see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#DescribeConfigurations Using the DescribeConfigurations Action>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+module Amazonka.Discovery.DescribeConfigurations
+  ( -- * Creating a Request
+    DescribeConfigurations (..),
+    newDescribeConfigurations,
+
+    -- * Request Lenses
+    describeConfigurations_configurationIds,
+
+    -- * Destructuring the Response
+    DescribeConfigurationsResponse (..),
+    newDescribeConfigurationsResponse,
+
+    -- * Response Lenses
+    describeConfigurationsResponse_configurations,
+    describeConfigurationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeConfigurations' smart constructor.
+data DescribeConfigurations = DescribeConfigurations'
+  { -- | One or more configuration IDs.
+    configurationIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConfigurations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationIds', 'describeConfigurations_configurationIds' - One or more configuration IDs.
+newDescribeConfigurations ::
+  DescribeConfigurations
+newDescribeConfigurations =
+  DescribeConfigurations'
+    { configurationIds =
+        Prelude.mempty
+    }
+
+-- | One or more configuration IDs.
+describeConfigurations_configurationIds :: Lens.Lens' DescribeConfigurations [Prelude.Text]
+describeConfigurations_configurationIds = Lens.lens (\DescribeConfigurations' {configurationIds} -> configurationIds) (\s@DescribeConfigurations' {} a -> s {configurationIds = a} :: DescribeConfigurations) Prelude.. Lens.coerced
+
+instance Core.AWSRequest DescribeConfigurations where
+  type
+    AWSResponse DescribeConfigurations =
+      DescribeConfigurationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeConfigurationsResponse'
+            Prelude.<$> (x Data..?> "configurations" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeConfigurations where
+  hashWithSalt _salt DescribeConfigurations' {..} =
+    _salt `Prelude.hashWithSalt` configurationIds
+
+instance Prelude.NFData DescribeConfigurations where
+  rnf DescribeConfigurations' {..} =
+    Prelude.rnf configurationIds
+
+instance Data.ToHeaders DescribeConfigurations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DescribeConfigurations" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeConfigurations where
+  toJSON DescribeConfigurations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("configurationIds" Data..= configurationIds)
+          ]
+      )
+
+instance Data.ToPath DescribeConfigurations where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeConfigurations where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeConfigurationsResponse' smart constructor.
+data DescribeConfigurationsResponse = DescribeConfigurationsResponse'
+  { -- | A key in the response map. The value is an array of data.
+    configurations :: Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConfigurationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurations', 'describeConfigurationsResponse_configurations' - A key in the response map. The value is an array of data.
+--
+-- 'httpStatus', 'describeConfigurationsResponse_httpStatus' - The response's http status code.
+newDescribeConfigurationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeConfigurationsResponse
+newDescribeConfigurationsResponse pHttpStatus_ =
+  DescribeConfigurationsResponse'
+    { configurations =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A key in the response map. The value is an array of data.
+describeConfigurationsResponse_configurations :: Lens.Lens' DescribeConfigurationsResponse (Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text])
+describeConfigurationsResponse_configurations = Lens.lens (\DescribeConfigurationsResponse' {configurations} -> configurations) (\s@DescribeConfigurationsResponse' {} a -> s {configurations = a} :: DescribeConfigurationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeConfigurationsResponse_httpStatus :: Lens.Lens' DescribeConfigurationsResponse Prelude.Int
+describeConfigurationsResponse_httpStatus = Lens.lens (\DescribeConfigurationsResponse' {httpStatus} -> httpStatus) (\s@DescribeConfigurationsResponse' {} a -> s {httpStatus = a} :: DescribeConfigurationsResponse)
+
+instance
+  Prelude.NFData
+    DescribeConfigurationsResponse
+  where
+  rnf DescribeConfigurationsResponse' {..} =
+    Prelude.rnf configurations
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DescribeContinuousExports.hs b/gen/Amazonka/Discovery/DescribeContinuousExports.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DescribeContinuousExports.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DescribeContinuousExports
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists exports as specified by ID. All continuous exports associated with
+-- your user account can be listed if you call @DescribeContinuousExports@
+-- as is without passing any parameters.
+--
+-- This operation returns paginated results.
+module Amazonka.Discovery.DescribeContinuousExports
+  ( -- * Creating a Request
+    DescribeContinuousExports (..),
+    newDescribeContinuousExports,
+
+    -- * Request Lenses
+    describeContinuousExports_exportIds,
+    describeContinuousExports_maxResults,
+    describeContinuousExports_nextToken,
+
+    -- * Destructuring the Response
+    DescribeContinuousExportsResponse (..),
+    newDescribeContinuousExportsResponse,
+
+    -- * Response Lenses
+    describeContinuousExportsResponse_descriptions,
+    describeContinuousExportsResponse_nextToken,
+    describeContinuousExportsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeContinuousExports' smart constructor.
+data DescribeContinuousExports = DescribeContinuousExports'
+  { -- | The unique IDs assigned to the exports.
+    exportIds :: Prelude.Maybe [Prelude.Text],
+    -- | A number between 1 and 100 specifying the maximum number of continuous
+    -- export descriptions returned.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token from the previous call to @DescribeExportTasks@.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeContinuousExports' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportIds', 'describeContinuousExports_exportIds' - The unique IDs assigned to the exports.
+--
+-- 'maxResults', 'describeContinuousExports_maxResults' - A number between 1 and 100 specifying the maximum number of continuous
+-- export descriptions returned.
+--
+-- 'nextToken', 'describeContinuousExports_nextToken' - The token from the previous call to @DescribeExportTasks@.
+newDescribeContinuousExports ::
+  DescribeContinuousExports
+newDescribeContinuousExports =
+  DescribeContinuousExports'
+    { exportIds =
+        Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The unique IDs assigned to the exports.
+describeContinuousExports_exportIds :: Lens.Lens' DescribeContinuousExports (Prelude.Maybe [Prelude.Text])
+describeContinuousExports_exportIds = Lens.lens (\DescribeContinuousExports' {exportIds} -> exportIds) (\s@DescribeContinuousExports' {} a -> s {exportIds = a} :: DescribeContinuousExports) Prelude.. Lens.mapping Lens.coerced
+
+-- | A number between 1 and 100 specifying the maximum number of continuous
+-- export descriptions returned.
+describeContinuousExports_maxResults :: Lens.Lens' DescribeContinuousExports (Prelude.Maybe Prelude.Natural)
+describeContinuousExports_maxResults = Lens.lens (\DescribeContinuousExports' {maxResults} -> maxResults) (\s@DescribeContinuousExports' {} a -> s {maxResults = a} :: DescribeContinuousExports)
+
+-- | The token from the previous call to @DescribeExportTasks@.
+describeContinuousExports_nextToken :: Lens.Lens' DescribeContinuousExports (Prelude.Maybe Prelude.Text)
+describeContinuousExports_nextToken = Lens.lens (\DescribeContinuousExports' {nextToken} -> nextToken) (\s@DescribeContinuousExports' {} a -> s {nextToken = a} :: DescribeContinuousExports)
+
+instance Core.AWSPager DescribeContinuousExports where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeContinuousExportsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeContinuousExportsResponse_descriptions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeContinuousExports_nextToken
+          Lens..~ rs
+          Lens.^? describeContinuousExportsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeContinuousExports where
+  type
+    AWSResponse DescribeContinuousExports =
+      DescribeContinuousExportsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeContinuousExportsResponse'
+            Prelude.<$> (x Data..?> "descriptions" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeContinuousExports where
+  hashWithSalt _salt DescribeContinuousExports' {..} =
+    _salt
+      `Prelude.hashWithSalt` exportIds
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeContinuousExports where
+  rnf DescribeContinuousExports' {..} =
+    Prelude.rnf exportIds
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeContinuousExports where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DescribeContinuousExports" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeContinuousExports where
+  toJSON DescribeContinuousExports' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("exportIds" Data..=) Prelude.<$> exportIds,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeContinuousExports where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeContinuousExports where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeContinuousExportsResponse' smart constructor.
+data DescribeContinuousExportsResponse = DescribeContinuousExportsResponse'
+  { -- | A list of continuous export descriptions.
+    descriptions :: Prelude.Maybe [ContinuousExportDescription],
+    -- | The token from the previous call to @DescribeExportTasks@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeContinuousExportsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'descriptions', 'describeContinuousExportsResponse_descriptions' - A list of continuous export descriptions.
+--
+-- 'nextToken', 'describeContinuousExportsResponse_nextToken' - The token from the previous call to @DescribeExportTasks@.
+--
+-- 'httpStatus', 'describeContinuousExportsResponse_httpStatus' - The response's http status code.
+newDescribeContinuousExportsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeContinuousExportsResponse
+newDescribeContinuousExportsResponse pHttpStatus_ =
+  DescribeContinuousExportsResponse'
+    { descriptions =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of continuous export descriptions.
+describeContinuousExportsResponse_descriptions :: Lens.Lens' DescribeContinuousExportsResponse (Prelude.Maybe [ContinuousExportDescription])
+describeContinuousExportsResponse_descriptions = Lens.lens (\DescribeContinuousExportsResponse' {descriptions} -> descriptions) (\s@DescribeContinuousExportsResponse' {} a -> s {descriptions = a} :: DescribeContinuousExportsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The token from the previous call to @DescribeExportTasks@.
+describeContinuousExportsResponse_nextToken :: Lens.Lens' DescribeContinuousExportsResponse (Prelude.Maybe Prelude.Text)
+describeContinuousExportsResponse_nextToken = Lens.lens (\DescribeContinuousExportsResponse' {nextToken} -> nextToken) (\s@DescribeContinuousExportsResponse' {} a -> s {nextToken = a} :: DescribeContinuousExportsResponse)
+
+-- | The response's http status code.
+describeContinuousExportsResponse_httpStatus :: Lens.Lens' DescribeContinuousExportsResponse Prelude.Int
+describeContinuousExportsResponse_httpStatus = Lens.lens (\DescribeContinuousExportsResponse' {httpStatus} -> httpStatus) (\s@DescribeContinuousExportsResponse' {} a -> s {httpStatus = a} :: DescribeContinuousExportsResponse)
+
+instance
+  Prelude.NFData
+    DescribeContinuousExportsResponse
+  where
+  rnf DescribeContinuousExportsResponse' {..} =
+    Prelude.rnf descriptions
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DescribeExportTasks.hs b/gen/Amazonka/Discovery/DescribeExportTasks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DescribeExportTasks.hs
@@ -0,0 +1,292 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DescribeExportTasks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve status of one or more export tasks. You can retrieve the status
+-- of up to 100 export tasks.
+--
+-- This operation returns paginated results.
+module Amazonka.Discovery.DescribeExportTasks
+  ( -- * Creating a Request
+    DescribeExportTasks (..),
+    newDescribeExportTasks,
+
+    -- * Request Lenses
+    describeExportTasks_exportIds,
+    describeExportTasks_filters,
+    describeExportTasks_maxResults,
+    describeExportTasks_nextToken,
+
+    -- * Destructuring the Response
+    DescribeExportTasksResponse (..),
+    newDescribeExportTasksResponse,
+
+    -- * Response Lenses
+    describeExportTasksResponse_exportsInfo,
+    describeExportTasksResponse_nextToken,
+    describeExportTasksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeExportTasks' smart constructor.
+data DescribeExportTasks = DescribeExportTasks'
+  { -- | One or more unique identifiers used to query the status of an export
+    -- request.
+    exportIds :: Prelude.Maybe [Prelude.Text],
+    -- | One or more filters.
+    --
+    -- -   @AgentId@ - ID of the agent whose collected data will be exported
+    filters :: Prelude.Maybe [ExportFilter],
+    -- | The maximum number of volume results returned by @DescribeExportTasks@
+    -- in paginated output. When this parameter is used, @DescribeExportTasks@
+    -- only returns @maxResults@ results in a single page along with a
+    -- @nextToken@ response element.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | The @nextToken@ value returned from a previous paginated
+    -- @DescribeExportTasks@ request where @maxResults@ was used and the
+    -- results exceeded the value of that parameter. Pagination continues from
+    -- the end of the previous results that returned the @nextToken@ value.
+    -- This value is null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeExportTasks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportIds', 'describeExportTasks_exportIds' - One or more unique identifiers used to query the status of an export
+-- request.
+--
+-- 'filters', 'describeExportTasks_filters' - One or more filters.
+--
+-- -   @AgentId@ - ID of the agent whose collected data will be exported
+--
+-- 'maxResults', 'describeExportTasks_maxResults' - The maximum number of volume results returned by @DescribeExportTasks@
+-- in paginated output. When this parameter is used, @DescribeExportTasks@
+-- only returns @maxResults@ results in a single page along with a
+-- @nextToken@ response element.
+--
+-- 'nextToken', 'describeExportTasks_nextToken' - The @nextToken@ value returned from a previous paginated
+-- @DescribeExportTasks@ request where @maxResults@ was used and the
+-- results exceeded the value of that parameter. Pagination continues from
+-- the end of the previous results that returned the @nextToken@ value.
+-- This value is null when there are no more results to return.
+newDescribeExportTasks ::
+  DescribeExportTasks
+newDescribeExportTasks =
+  DescribeExportTasks'
+    { exportIds = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | One or more unique identifiers used to query the status of an export
+-- request.
+describeExportTasks_exportIds :: Lens.Lens' DescribeExportTasks (Prelude.Maybe [Prelude.Text])
+describeExportTasks_exportIds = Lens.lens (\DescribeExportTasks' {exportIds} -> exportIds) (\s@DescribeExportTasks' {} a -> s {exportIds = a} :: DescribeExportTasks) Prelude.. Lens.mapping Lens.coerced
+
+-- | One or more filters.
+--
+-- -   @AgentId@ - ID of the agent whose collected data will be exported
+describeExportTasks_filters :: Lens.Lens' DescribeExportTasks (Prelude.Maybe [ExportFilter])
+describeExportTasks_filters = Lens.lens (\DescribeExportTasks' {filters} -> filters) (\s@DescribeExportTasks' {} a -> s {filters = a} :: DescribeExportTasks) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of volume results returned by @DescribeExportTasks@
+-- in paginated output. When this parameter is used, @DescribeExportTasks@
+-- only returns @maxResults@ results in a single page along with a
+-- @nextToken@ response element.
+describeExportTasks_maxResults :: Lens.Lens' DescribeExportTasks (Prelude.Maybe Prelude.Int)
+describeExportTasks_maxResults = Lens.lens (\DescribeExportTasks' {maxResults} -> maxResults) (\s@DescribeExportTasks' {} a -> s {maxResults = a} :: DescribeExportTasks)
+
+-- | The @nextToken@ value returned from a previous paginated
+-- @DescribeExportTasks@ request where @maxResults@ was used and the
+-- results exceeded the value of that parameter. Pagination continues from
+-- the end of the previous results that returned the @nextToken@ value.
+-- This value is null when there are no more results to return.
+describeExportTasks_nextToken :: Lens.Lens' DescribeExportTasks (Prelude.Maybe Prelude.Text)
+describeExportTasks_nextToken = Lens.lens (\DescribeExportTasks' {nextToken} -> nextToken) (\s@DescribeExportTasks' {} a -> s {nextToken = a} :: DescribeExportTasks)
+
+instance Core.AWSPager DescribeExportTasks where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeExportTasksResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeExportTasksResponse_exportsInfo
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeExportTasks_nextToken
+          Lens..~ rs
+          Lens.^? describeExportTasksResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeExportTasks where
+  type
+    AWSResponse DescribeExportTasks =
+      DescribeExportTasksResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeExportTasksResponse'
+            Prelude.<$> (x Data..?> "exportsInfo" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeExportTasks where
+  hashWithSalt _salt DescribeExportTasks' {..} =
+    _salt
+      `Prelude.hashWithSalt` exportIds
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeExportTasks where
+  rnf DescribeExportTasks' {..} =
+    Prelude.rnf exportIds
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeExportTasks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DescribeExportTasks" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeExportTasks where
+  toJSON DescribeExportTasks' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("exportIds" Data..=) Prelude.<$> exportIds,
+            ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeExportTasks where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeExportTasks where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeExportTasksResponse' smart constructor.
+data DescribeExportTasksResponse = DescribeExportTasksResponse'
+  { -- | Contains one or more sets of export request details. When the status of
+    -- a request is @SUCCEEDED@, the response includes a URL for an Amazon S3
+    -- bucket where you can view the data in a CSV file.
+    exportsInfo :: Prelude.Maybe [ExportInfo],
+    -- | The @nextToken@ value to include in a future @DescribeExportTasks@
+    -- request. When the results of a @DescribeExportTasks@ request exceed
+    -- @maxResults@, this value can be used to retrieve the next page of
+    -- results. This value is null when there are no more results to return.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeExportTasksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportsInfo', 'describeExportTasksResponse_exportsInfo' - Contains one or more sets of export request details. When the status of
+-- a request is @SUCCEEDED@, the response includes a URL for an Amazon S3
+-- bucket where you can view the data in a CSV file.
+--
+-- 'nextToken', 'describeExportTasksResponse_nextToken' - The @nextToken@ value to include in a future @DescribeExportTasks@
+-- request. When the results of a @DescribeExportTasks@ request exceed
+-- @maxResults@, this value can be used to retrieve the next page of
+-- results. This value is null when there are no more results to return.
+--
+-- 'httpStatus', 'describeExportTasksResponse_httpStatus' - The response's http status code.
+newDescribeExportTasksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeExportTasksResponse
+newDescribeExportTasksResponse pHttpStatus_ =
+  DescribeExportTasksResponse'
+    { exportsInfo =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Contains one or more sets of export request details. When the status of
+-- a request is @SUCCEEDED@, the response includes a URL for an Amazon S3
+-- bucket where you can view the data in a CSV file.
+describeExportTasksResponse_exportsInfo :: Lens.Lens' DescribeExportTasksResponse (Prelude.Maybe [ExportInfo])
+describeExportTasksResponse_exportsInfo = Lens.lens (\DescribeExportTasksResponse' {exportsInfo} -> exportsInfo) (\s@DescribeExportTasksResponse' {} a -> s {exportsInfo = a} :: DescribeExportTasksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The @nextToken@ value to include in a future @DescribeExportTasks@
+-- request. When the results of a @DescribeExportTasks@ request exceed
+-- @maxResults@, this value can be used to retrieve the next page of
+-- results. This value is null when there are no more results to return.
+describeExportTasksResponse_nextToken :: Lens.Lens' DescribeExportTasksResponse (Prelude.Maybe Prelude.Text)
+describeExportTasksResponse_nextToken = Lens.lens (\DescribeExportTasksResponse' {nextToken} -> nextToken) (\s@DescribeExportTasksResponse' {} a -> s {nextToken = a} :: DescribeExportTasksResponse)
+
+-- | The response's http status code.
+describeExportTasksResponse_httpStatus :: Lens.Lens' DescribeExportTasksResponse Prelude.Int
+describeExportTasksResponse_httpStatus = Lens.lens (\DescribeExportTasksResponse' {httpStatus} -> httpStatus) (\s@DescribeExportTasksResponse' {} a -> s {httpStatus = a} :: DescribeExportTasksResponse)
+
+instance Prelude.NFData DescribeExportTasksResponse where
+  rnf DescribeExportTasksResponse' {..} =
+    Prelude.rnf exportsInfo
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DescribeImportTasks.hs b/gen/Amazonka/Discovery/DescribeImportTasks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DescribeImportTasks.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DescribeImportTasks
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns an array of import tasks for your account, including status
+-- information, times, IDs, the Amazon S3 Object URL for the import file,
+-- and more.
+module Amazonka.Discovery.DescribeImportTasks
+  ( -- * Creating a Request
+    DescribeImportTasks (..),
+    newDescribeImportTasks,
+
+    -- * Request Lenses
+    describeImportTasks_filters,
+    describeImportTasks_maxResults,
+    describeImportTasks_nextToken,
+
+    -- * Destructuring the Response
+    DescribeImportTasksResponse (..),
+    newDescribeImportTasksResponse,
+
+    -- * Response Lenses
+    describeImportTasksResponse_nextToken,
+    describeImportTasksResponse_tasks,
+    describeImportTasksResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeImportTasks' smart constructor.
+data DescribeImportTasks = DescribeImportTasks'
+  { -- | An array of name-value pairs that you provide to filter the results for
+    -- the @DescribeImportTask@ request to a specific subset of results.
+    -- Currently, wildcard values aren\'t supported for filters.
+    filters :: Prelude.Maybe [ImportTaskFilter],
+    -- | The maximum number of results that you want this request to return, up
+    -- to 100.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | The token to request a specific page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeImportTasks' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'describeImportTasks_filters' - An array of name-value pairs that you provide to filter the results for
+-- the @DescribeImportTask@ request to a specific subset of results.
+-- Currently, wildcard values aren\'t supported for filters.
+--
+-- 'maxResults', 'describeImportTasks_maxResults' - The maximum number of results that you want this request to return, up
+-- to 100.
+--
+-- 'nextToken', 'describeImportTasks_nextToken' - The token to request a specific page of results.
+newDescribeImportTasks ::
+  DescribeImportTasks
+newDescribeImportTasks =
+  DescribeImportTasks'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | An array of name-value pairs that you provide to filter the results for
+-- the @DescribeImportTask@ request to a specific subset of results.
+-- Currently, wildcard values aren\'t supported for filters.
+describeImportTasks_filters :: Lens.Lens' DescribeImportTasks (Prelude.Maybe [ImportTaskFilter])
+describeImportTasks_filters = Lens.lens (\DescribeImportTasks' {filters} -> filters) (\s@DescribeImportTasks' {} a -> s {filters = a} :: DescribeImportTasks) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results that you want this request to return, up
+-- to 100.
+describeImportTasks_maxResults :: Lens.Lens' DescribeImportTasks (Prelude.Maybe Prelude.Natural)
+describeImportTasks_maxResults = Lens.lens (\DescribeImportTasks' {maxResults} -> maxResults) (\s@DescribeImportTasks' {} a -> s {maxResults = a} :: DescribeImportTasks)
+
+-- | The token to request a specific page of results.
+describeImportTasks_nextToken :: Lens.Lens' DescribeImportTasks (Prelude.Maybe Prelude.Text)
+describeImportTasks_nextToken = Lens.lens (\DescribeImportTasks' {nextToken} -> nextToken) (\s@DescribeImportTasks' {} a -> s {nextToken = a} :: DescribeImportTasks)
+
+instance Core.AWSRequest DescribeImportTasks where
+  type
+    AWSResponse DescribeImportTasks =
+      DescribeImportTasksResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeImportTasksResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (x Data..?> "tasks" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeImportTasks where
+  hashWithSalt _salt DescribeImportTasks' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeImportTasks where
+  rnf DescribeImportTasks' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeImportTasks where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DescribeImportTasks" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeImportTasks where
+  toJSON DescribeImportTasks' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeImportTasks where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeImportTasks where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeImportTasksResponse' smart constructor.
+data DescribeImportTasksResponse = DescribeImportTasksResponse'
+  { -- | The token to request the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A returned array of import tasks that match any applied filters, up to
+    -- the specified number of maximum results.
+    tasks :: Prelude.Maybe [ImportTask],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeImportTasksResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'describeImportTasksResponse_nextToken' - The token to request the next page of results.
+--
+-- 'tasks', 'describeImportTasksResponse_tasks' - A returned array of import tasks that match any applied filters, up to
+-- the specified number of maximum results.
+--
+-- 'httpStatus', 'describeImportTasksResponse_httpStatus' - The response's http status code.
+newDescribeImportTasksResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeImportTasksResponse
+newDescribeImportTasksResponse pHttpStatus_ =
+  DescribeImportTasksResponse'
+    { nextToken =
+        Prelude.Nothing,
+      tasks = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The token to request the next page of results.
+describeImportTasksResponse_nextToken :: Lens.Lens' DescribeImportTasksResponse (Prelude.Maybe Prelude.Text)
+describeImportTasksResponse_nextToken = Lens.lens (\DescribeImportTasksResponse' {nextToken} -> nextToken) (\s@DescribeImportTasksResponse' {} a -> s {nextToken = a} :: DescribeImportTasksResponse)
+
+-- | A returned array of import tasks that match any applied filters, up to
+-- the specified number of maximum results.
+describeImportTasksResponse_tasks :: Lens.Lens' DescribeImportTasksResponse (Prelude.Maybe [ImportTask])
+describeImportTasksResponse_tasks = Lens.lens (\DescribeImportTasksResponse' {tasks} -> tasks) (\s@DescribeImportTasksResponse' {} a -> s {tasks = a} :: DescribeImportTasksResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeImportTasksResponse_httpStatus :: Lens.Lens' DescribeImportTasksResponse Prelude.Int
+describeImportTasksResponse_httpStatus = Lens.lens (\DescribeImportTasksResponse' {httpStatus} -> httpStatus) (\s@DescribeImportTasksResponse' {} a -> s {httpStatus = a} :: DescribeImportTasksResponse)
+
+instance Prelude.NFData DescribeImportTasksResponse where
+  rnf DescribeImportTasksResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf tasks
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DescribeTags.hs b/gen/Amazonka/Discovery/DescribeTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DescribeTags.hs
@@ -0,0 +1,262 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DescribeTags
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of configuration items that have tags as specified by
+-- the key-value pairs, name and value, passed to the optional parameter
+-- @filters@.
+--
+-- There are three valid tag filter names:
+--
+-- -   tagKey
+--
+-- -   tagValue
+--
+-- -   configurationId
+--
+-- Also, all configuration items associated with your user account that
+-- have tags can be listed if you call @DescribeTags@ as is without passing
+-- any parameters.
+--
+-- This operation returns paginated results.
+module Amazonka.Discovery.DescribeTags
+  ( -- * Creating a Request
+    DescribeTags (..),
+    newDescribeTags,
+
+    -- * Request Lenses
+    describeTags_filters,
+    describeTags_maxResults,
+    describeTags_nextToken,
+
+    -- * Destructuring the Response
+    DescribeTagsResponse (..),
+    newDescribeTagsResponse,
+
+    -- * Response Lenses
+    describeTagsResponse_nextToken,
+    describeTagsResponse_tags,
+    describeTagsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDescribeTags' smart constructor.
+data DescribeTags = DescribeTags'
+  { -- | You can filter the list using a /key/-/value/ format. You can separate
+    -- these items by using logical operators. Allowed filters include
+    -- @tagKey@, @tagValue@, and @configurationId@.
+    filters :: Prelude.Maybe [TagFilter],
+    -- | The total number of items to return in a single page of output. The
+    -- maximum value is 100.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | A token to start the list. Use this token to get the next set of
+    -- results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTags' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'describeTags_filters' - You can filter the list using a /key/-/value/ format. You can separate
+-- these items by using logical operators. Allowed filters include
+-- @tagKey@, @tagValue@, and @configurationId@.
+--
+-- 'maxResults', 'describeTags_maxResults' - The total number of items to return in a single page of output. The
+-- maximum value is 100.
+--
+-- 'nextToken', 'describeTags_nextToken' - A token to start the list. Use this token to get the next set of
+-- results.
+newDescribeTags ::
+  DescribeTags
+newDescribeTags =
+  DescribeTags'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | You can filter the list using a /key/-/value/ format. You can separate
+-- these items by using logical operators. Allowed filters include
+-- @tagKey@, @tagValue@, and @configurationId@.
+describeTags_filters :: Lens.Lens' DescribeTags (Prelude.Maybe [TagFilter])
+describeTags_filters = Lens.lens (\DescribeTags' {filters} -> filters) (\s@DescribeTags' {} a -> s {filters = a} :: DescribeTags) Prelude.. Lens.mapping Lens.coerced
+
+-- | The total number of items to return in a single page of output. The
+-- maximum value is 100.
+describeTags_maxResults :: Lens.Lens' DescribeTags (Prelude.Maybe Prelude.Int)
+describeTags_maxResults = Lens.lens (\DescribeTags' {maxResults} -> maxResults) (\s@DescribeTags' {} a -> s {maxResults = a} :: DescribeTags)
+
+-- | A token to start the list. Use this token to get the next set of
+-- results.
+describeTags_nextToken :: Lens.Lens' DescribeTags (Prelude.Maybe Prelude.Text)
+describeTags_nextToken = Lens.lens (\DescribeTags' {nextToken} -> nextToken) (\s@DescribeTags' {} a -> s {nextToken = a} :: DescribeTags)
+
+instance Core.AWSPager DescribeTags where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeTagsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeTagsResponse_tags
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeTags_nextToken
+          Lens..~ rs
+          Lens.^? describeTagsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeTags where
+  type AWSResponse DescribeTags = DescribeTagsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeTagsResponse'
+            Prelude.<$> (x Data..?> "nextToken")
+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeTags where
+  hashWithSalt _salt DescribeTags' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData DescribeTags where
+  rnf DescribeTags' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders DescribeTags where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DescribeTags" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeTags where
+  toJSON DescribeTags' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath DescribeTags where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeTags where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeTagsResponse' smart constructor.
+data DescribeTagsResponse = DescribeTagsResponse'
+  { -- | The call returns a token. Use this token to get the next set of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Depending on the input, this is a list of configuration items tagged
+    -- with a specific tag, or a list of tags for a specific configuration
+    -- item.
+    tags :: Prelude.Maybe [ConfigurationTag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeTagsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'describeTagsResponse_nextToken' - The call returns a token. Use this token to get the next set of results.
+--
+-- 'tags', 'describeTagsResponse_tags' - Depending on the input, this is a list of configuration items tagged
+-- with a specific tag, or a list of tags for a specific configuration
+-- item.
+--
+-- 'httpStatus', 'describeTagsResponse_httpStatus' - The response's http status code.
+newDescribeTagsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeTagsResponse
+newDescribeTagsResponse pHttpStatus_ =
+  DescribeTagsResponse'
+    { nextToken = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The call returns a token. Use this token to get the next set of results.
+describeTagsResponse_nextToken :: Lens.Lens' DescribeTagsResponse (Prelude.Maybe Prelude.Text)
+describeTagsResponse_nextToken = Lens.lens (\DescribeTagsResponse' {nextToken} -> nextToken) (\s@DescribeTagsResponse' {} a -> s {nextToken = a} :: DescribeTagsResponse)
+
+-- | Depending on the input, this is a list of configuration items tagged
+-- with a specific tag, or a list of tags for a specific configuration
+-- item.
+describeTagsResponse_tags :: Lens.Lens' DescribeTagsResponse (Prelude.Maybe [ConfigurationTag])
+describeTagsResponse_tags = Lens.lens (\DescribeTagsResponse' {tags} -> tags) (\s@DescribeTagsResponse' {} a -> s {tags = a} :: DescribeTagsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeTagsResponse_httpStatus :: Lens.Lens' DescribeTagsResponse Prelude.Int
+describeTagsResponse_httpStatus = Lens.lens (\DescribeTagsResponse' {httpStatus} -> httpStatus) (\s@DescribeTagsResponse' {} a -> s {httpStatus = a} :: DescribeTagsResponse)
+
+instance Prelude.NFData DescribeTagsResponse where
+  rnf DescribeTagsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/DisassociateConfigurationItemsFromApplication.hs b/gen/Amazonka/Discovery/DisassociateConfigurationItemsFromApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/DisassociateConfigurationItemsFromApplication.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.DisassociateConfigurationItemsFromApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Disassociates one or more configuration items from an application.
+module Amazonka.Discovery.DisassociateConfigurationItemsFromApplication
+  ( -- * Creating a Request
+    DisassociateConfigurationItemsFromApplication (..),
+    newDisassociateConfigurationItemsFromApplication,
+
+    -- * Request Lenses
+    disassociateConfigurationItemsFromApplication_applicationConfigurationId,
+    disassociateConfigurationItemsFromApplication_configurationIds,
+
+    -- * Destructuring the Response
+    DisassociateConfigurationItemsFromApplicationResponse (..),
+    newDisassociateConfigurationItemsFromApplicationResponse,
+
+    -- * Response Lenses
+    disassociateConfigurationItemsFromApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newDisassociateConfigurationItemsFromApplication' smart constructor.
+data DisassociateConfigurationItemsFromApplication = DisassociateConfigurationItemsFromApplication'
+  { -- | Configuration ID of an application from which each item is
+    -- disassociated.
+    applicationConfigurationId :: Prelude.Text,
+    -- | Configuration ID of each item to be disassociated from an application.
+    configurationIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateConfigurationItemsFromApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationConfigurationId', 'disassociateConfigurationItemsFromApplication_applicationConfigurationId' - Configuration ID of an application from which each item is
+-- disassociated.
+--
+-- 'configurationIds', 'disassociateConfigurationItemsFromApplication_configurationIds' - Configuration ID of each item to be disassociated from an application.
+newDisassociateConfigurationItemsFromApplication ::
+  -- | 'applicationConfigurationId'
+  Prelude.Text ->
+  DisassociateConfigurationItemsFromApplication
+newDisassociateConfigurationItemsFromApplication
+  pApplicationConfigurationId_ =
+    DisassociateConfigurationItemsFromApplication'
+      { applicationConfigurationId =
+          pApplicationConfigurationId_,
+        configurationIds =
+          Prelude.mempty
+      }
+
+-- | Configuration ID of an application from which each item is
+-- disassociated.
+disassociateConfigurationItemsFromApplication_applicationConfigurationId :: Lens.Lens' DisassociateConfigurationItemsFromApplication Prelude.Text
+disassociateConfigurationItemsFromApplication_applicationConfigurationId = Lens.lens (\DisassociateConfigurationItemsFromApplication' {applicationConfigurationId} -> applicationConfigurationId) (\s@DisassociateConfigurationItemsFromApplication' {} a -> s {applicationConfigurationId = a} :: DisassociateConfigurationItemsFromApplication)
+
+-- | Configuration ID of each item to be disassociated from an application.
+disassociateConfigurationItemsFromApplication_configurationIds :: Lens.Lens' DisassociateConfigurationItemsFromApplication [Prelude.Text]
+disassociateConfigurationItemsFromApplication_configurationIds = Lens.lens (\DisassociateConfigurationItemsFromApplication' {configurationIds} -> configurationIds) (\s@DisassociateConfigurationItemsFromApplication' {} a -> s {configurationIds = a} :: DisassociateConfigurationItemsFromApplication) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    DisassociateConfigurationItemsFromApplication
+  where
+  type
+    AWSResponse
+      DisassociateConfigurationItemsFromApplication =
+      DisassociateConfigurationItemsFromApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DisassociateConfigurationItemsFromApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DisassociateConfigurationItemsFromApplication
+  where
+  hashWithSalt
+    _salt
+    DisassociateConfigurationItemsFromApplication' {..} =
+      _salt
+        `Prelude.hashWithSalt` applicationConfigurationId
+        `Prelude.hashWithSalt` configurationIds
+
+instance
+  Prelude.NFData
+    DisassociateConfigurationItemsFromApplication
+  where
+  rnf
+    DisassociateConfigurationItemsFromApplication' {..} =
+      Prelude.rnf applicationConfigurationId
+        `Prelude.seq` Prelude.rnf configurationIds
+
+instance
+  Data.ToHeaders
+    DisassociateConfigurationItemsFromApplication
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.DisassociateConfigurationItemsFromApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToJSON
+    DisassociateConfigurationItemsFromApplication
+  where
+  toJSON
+    DisassociateConfigurationItemsFromApplication' {..} =
+      Data.object
+        ( Prelude.catMaybes
+            [ Prelude.Just
+                ( "applicationConfigurationId"
+                    Data..= applicationConfigurationId
+                ),
+              Prelude.Just
+                ("configurationIds" Data..= configurationIds)
+            ]
+        )
+
+instance
+  Data.ToPath
+    DisassociateConfigurationItemsFromApplication
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DisassociateConfigurationItemsFromApplication
+  where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDisassociateConfigurationItemsFromApplicationResponse' smart constructor.
+data DisassociateConfigurationItemsFromApplicationResponse = DisassociateConfigurationItemsFromApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DisassociateConfigurationItemsFromApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'disassociateConfigurationItemsFromApplicationResponse_httpStatus' - The response's http status code.
+newDisassociateConfigurationItemsFromApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DisassociateConfigurationItemsFromApplicationResponse
+newDisassociateConfigurationItemsFromApplicationResponse
+  pHttpStatus_ =
+    DisassociateConfigurationItemsFromApplicationResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+disassociateConfigurationItemsFromApplicationResponse_httpStatus :: Lens.Lens' DisassociateConfigurationItemsFromApplicationResponse Prelude.Int
+disassociateConfigurationItemsFromApplicationResponse_httpStatus = Lens.lens (\DisassociateConfigurationItemsFromApplicationResponse' {httpStatus} -> httpStatus) (\s@DisassociateConfigurationItemsFromApplicationResponse' {} a -> s {httpStatus = a} :: DisassociateConfigurationItemsFromApplicationResponse)
+
+instance
+  Prelude.NFData
+    DisassociateConfigurationItemsFromApplicationResponse
+  where
+  rnf
+    DisassociateConfigurationItemsFromApplicationResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/GetDiscoverySummary.hs b/gen/Amazonka/Discovery/GetDiscoverySummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/GetDiscoverySummary.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.GetDiscoverySummary
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a short summary of discovered assets.
+--
+-- This API operation takes no request parameters and is called as is at
+-- the command prompt as shown in the example.
+module Amazonka.Discovery.GetDiscoverySummary
+  ( -- * Creating a Request
+    GetDiscoverySummary (..),
+    newGetDiscoverySummary,
+
+    -- * Destructuring the Response
+    GetDiscoverySummaryResponse (..),
+    newGetDiscoverySummaryResponse,
+
+    -- * Response Lenses
+    getDiscoverySummaryResponse_agentSummary,
+    getDiscoverySummaryResponse_agentlessCollectorSummary,
+    getDiscoverySummaryResponse_applications,
+    getDiscoverySummaryResponse_connectorSummary,
+    getDiscoverySummaryResponse_meCollectorSummary,
+    getDiscoverySummaryResponse_servers,
+    getDiscoverySummaryResponse_serversMappedToApplications,
+    getDiscoverySummaryResponse_serversMappedtoTags,
+    getDiscoverySummaryResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newGetDiscoverySummary' smart constructor.
+data GetDiscoverySummary = GetDiscoverySummary'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDiscoverySummary' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetDiscoverySummary ::
+  GetDiscoverySummary
+newGetDiscoverySummary = GetDiscoverySummary'
+
+instance Core.AWSRequest GetDiscoverySummary where
+  type
+    AWSResponse GetDiscoverySummary =
+      GetDiscoverySummaryResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDiscoverySummaryResponse'
+            Prelude.<$> (x Data..?> "agentSummary")
+            Prelude.<*> (x Data..?> "agentlessCollectorSummary")
+            Prelude.<*> (x Data..?> "applications")
+            Prelude.<*> (x Data..?> "connectorSummary")
+            Prelude.<*> (x Data..?> "meCollectorSummary")
+            Prelude.<*> (x Data..?> "servers")
+            Prelude.<*> (x Data..?> "serversMappedToApplications")
+            Prelude.<*> (x Data..?> "serversMappedtoTags")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDiscoverySummary where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetDiscoverySummary where
+  rnf _ = ()
+
+instance Data.ToHeaders GetDiscoverySummary where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.GetDiscoverySummary" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetDiscoverySummary where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath GetDiscoverySummary where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetDiscoverySummary where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetDiscoverySummaryResponse' smart constructor.
+data GetDiscoverySummaryResponse = GetDiscoverySummaryResponse'
+  { -- | Details about discovered agents, including agent status and health.
+    agentSummary :: Prelude.Maybe CustomerAgentInfo,
+    agentlessCollectorSummary :: Prelude.Maybe CustomerAgentlessCollectorInfo,
+    -- | The number of applications discovered.
+    applications :: Prelude.Maybe Prelude.Integer,
+    -- | Details about discovered connectors, including connector status and
+    -- health.
+    connectorSummary :: Prelude.Maybe CustomerConnectorInfo,
+    -- | Details about Migration Evaluator collectors, including collector status
+    -- and health.
+    meCollectorSummary :: Prelude.Maybe CustomerMeCollectorInfo,
+    -- | The number of servers discovered.
+    servers :: Prelude.Maybe Prelude.Integer,
+    -- | The number of servers mapped to applications.
+    serversMappedToApplications :: Prelude.Maybe Prelude.Integer,
+    -- | The number of servers mapped to tags.
+    serversMappedtoTags :: Prelude.Maybe Prelude.Integer,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDiscoverySummaryResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentSummary', 'getDiscoverySummaryResponse_agentSummary' - Details about discovered agents, including agent status and health.
+--
+-- 'agentlessCollectorSummary', 'getDiscoverySummaryResponse_agentlessCollectorSummary' - Undocumented member.
+--
+-- 'applications', 'getDiscoverySummaryResponse_applications' - The number of applications discovered.
+--
+-- 'connectorSummary', 'getDiscoverySummaryResponse_connectorSummary' - Details about discovered connectors, including connector status and
+-- health.
+--
+-- 'meCollectorSummary', 'getDiscoverySummaryResponse_meCollectorSummary' - Details about Migration Evaluator collectors, including collector status
+-- and health.
+--
+-- 'servers', 'getDiscoverySummaryResponse_servers' - The number of servers discovered.
+--
+-- 'serversMappedToApplications', 'getDiscoverySummaryResponse_serversMappedToApplications' - The number of servers mapped to applications.
+--
+-- 'serversMappedtoTags', 'getDiscoverySummaryResponse_serversMappedtoTags' - The number of servers mapped to tags.
+--
+-- 'httpStatus', 'getDiscoverySummaryResponse_httpStatus' - The response's http status code.
+newGetDiscoverySummaryResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDiscoverySummaryResponse
+newGetDiscoverySummaryResponse pHttpStatus_ =
+  GetDiscoverySummaryResponse'
+    { agentSummary =
+        Prelude.Nothing,
+      agentlessCollectorSummary = Prelude.Nothing,
+      applications = Prelude.Nothing,
+      connectorSummary = Prelude.Nothing,
+      meCollectorSummary = Prelude.Nothing,
+      servers = Prelude.Nothing,
+      serversMappedToApplications = Prelude.Nothing,
+      serversMappedtoTags = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Details about discovered agents, including agent status and health.
+getDiscoverySummaryResponse_agentSummary :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe CustomerAgentInfo)
+getDiscoverySummaryResponse_agentSummary = Lens.lens (\GetDiscoverySummaryResponse' {agentSummary} -> agentSummary) (\s@GetDiscoverySummaryResponse' {} a -> s {agentSummary = a} :: GetDiscoverySummaryResponse)
+
+-- | Undocumented member.
+getDiscoverySummaryResponse_agentlessCollectorSummary :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe CustomerAgentlessCollectorInfo)
+getDiscoverySummaryResponse_agentlessCollectorSummary = Lens.lens (\GetDiscoverySummaryResponse' {agentlessCollectorSummary} -> agentlessCollectorSummary) (\s@GetDiscoverySummaryResponse' {} a -> s {agentlessCollectorSummary = a} :: GetDiscoverySummaryResponse)
+
+-- | The number of applications discovered.
+getDiscoverySummaryResponse_applications :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe Prelude.Integer)
+getDiscoverySummaryResponse_applications = Lens.lens (\GetDiscoverySummaryResponse' {applications} -> applications) (\s@GetDiscoverySummaryResponse' {} a -> s {applications = a} :: GetDiscoverySummaryResponse)
+
+-- | Details about discovered connectors, including connector status and
+-- health.
+getDiscoverySummaryResponse_connectorSummary :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe CustomerConnectorInfo)
+getDiscoverySummaryResponse_connectorSummary = Lens.lens (\GetDiscoverySummaryResponse' {connectorSummary} -> connectorSummary) (\s@GetDiscoverySummaryResponse' {} a -> s {connectorSummary = a} :: GetDiscoverySummaryResponse)
+
+-- | Details about Migration Evaluator collectors, including collector status
+-- and health.
+getDiscoverySummaryResponse_meCollectorSummary :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe CustomerMeCollectorInfo)
+getDiscoverySummaryResponse_meCollectorSummary = Lens.lens (\GetDiscoverySummaryResponse' {meCollectorSummary} -> meCollectorSummary) (\s@GetDiscoverySummaryResponse' {} a -> s {meCollectorSummary = a} :: GetDiscoverySummaryResponse)
+
+-- | The number of servers discovered.
+getDiscoverySummaryResponse_servers :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe Prelude.Integer)
+getDiscoverySummaryResponse_servers = Lens.lens (\GetDiscoverySummaryResponse' {servers} -> servers) (\s@GetDiscoverySummaryResponse' {} a -> s {servers = a} :: GetDiscoverySummaryResponse)
+
+-- | The number of servers mapped to applications.
+getDiscoverySummaryResponse_serversMappedToApplications :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe Prelude.Integer)
+getDiscoverySummaryResponse_serversMappedToApplications = Lens.lens (\GetDiscoverySummaryResponse' {serversMappedToApplications} -> serversMappedToApplications) (\s@GetDiscoverySummaryResponse' {} a -> s {serversMappedToApplications = a} :: GetDiscoverySummaryResponse)
+
+-- | The number of servers mapped to tags.
+getDiscoverySummaryResponse_serversMappedtoTags :: Lens.Lens' GetDiscoverySummaryResponse (Prelude.Maybe Prelude.Integer)
+getDiscoverySummaryResponse_serversMappedtoTags = Lens.lens (\GetDiscoverySummaryResponse' {serversMappedtoTags} -> serversMappedtoTags) (\s@GetDiscoverySummaryResponse' {} a -> s {serversMappedtoTags = a} :: GetDiscoverySummaryResponse)
+
+-- | The response's http status code.
+getDiscoverySummaryResponse_httpStatus :: Lens.Lens' GetDiscoverySummaryResponse Prelude.Int
+getDiscoverySummaryResponse_httpStatus = Lens.lens (\GetDiscoverySummaryResponse' {httpStatus} -> httpStatus) (\s@GetDiscoverySummaryResponse' {} a -> s {httpStatus = a} :: GetDiscoverySummaryResponse)
+
+instance Prelude.NFData GetDiscoverySummaryResponse where
+  rnf GetDiscoverySummaryResponse' {..} =
+    Prelude.rnf agentSummary
+      `Prelude.seq` Prelude.rnf agentlessCollectorSummary
+      `Prelude.seq` Prelude.rnf applications
+      `Prelude.seq` Prelude.rnf connectorSummary
+      `Prelude.seq` Prelude.rnf meCollectorSummary
+      `Prelude.seq` Prelude.rnf servers
+      `Prelude.seq` Prelude.rnf serversMappedToApplications
+      `Prelude.seq` Prelude.rnf serversMappedtoTags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/Lens.hs b/gen/Amazonka/Discovery/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Lens.hs
@@ -0,0 +1,358 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Lens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Lens
+  ( -- * Operations
+
+    -- ** AssociateConfigurationItemsToApplication
+    associateConfigurationItemsToApplication_applicationConfigurationId,
+    associateConfigurationItemsToApplication_configurationIds,
+    associateConfigurationItemsToApplicationResponse_httpStatus,
+
+    -- ** BatchDeleteImportData
+    batchDeleteImportData_importTaskIds,
+    batchDeleteImportDataResponse_errors,
+    batchDeleteImportDataResponse_httpStatus,
+
+    -- ** CreateApplication
+    createApplication_description,
+    createApplication_name,
+    createApplicationResponse_configurationId,
+    createApplicationResponse_httpStatus,
+
+    -- ** CreateTags
+    createTags_configurationIds,
+    createTags_tags,
+    createTagsResponse_httpStatus,
+
+    -- ** DeleteApplications
+    deleteApplications_configurationIds,
+    deleteApplicationsResponse_httpStatus,
+
+    -- ** DeleteTags
+    deleteTags_tags,
+    deleteTags_configurationIds,
+    deleteTagsResponse_httpStatus,
+
+    -- ** DescribeAgents
+    describeAgents_agentIds,
+    describeAgents_filters,
+    describeAgents_maxResults,
+    describeAgents_nextToken,
+    describeAgentsResponse_agentsInfo,
+    describeAgentsResponse_nextToken,
+    describeAgentsResponse_httpStatus,
+
+    -- ** DescribeConfigurations
+    describeConfigurations_configurationIds,
+    describeConfigurationsResponse_configurations,
+    describeConfigurationsResponse_httpStatus,
+
+    -- ** DescribeContinuousExports
+    describeContinuousExports_exportIds,
+    describeContinuousExports_maxResults,
+    describeContinuousExports_nextToken,
+    describeContinuousExportsResponse_descriptions,
+    describeContinuousExportsResponse_nextToken,
+    describeContinuousExportsResponse_httpStatus,
+
+    -- ** DescribeExportTasks
+    describeExportTasks_exportIds,
+    describeExportTasks_filters,
+    describeExportTasks_maxResults,
+    describeExportTasks_nextToken,
+    describeExportTasksResponse_exportsInfo,
+    describeExportTasksResponse_nextToken,
+    describeExportTasksResponse_httpStatus,
+
+    -- ** DescribeImportTasks
+    describeImportTasks_filters,
+    describeImportTasks_maxResults,
+    describeImportTasks_nextToken,
+    describeImportTasksResponse_nextToken,
+    describeImportTasksResponse_tasks,
+    describeImportTasksResponse_httpStatus,
+
+    -- ** DescribeTags
+    describeTags_filters,
+    describeTags_maxResults,
+    describeTags_nextToken,
+    describeTagsResponse_nextToken,
+    describeTagsResponse_tags,
+    describeTagsResponse_httpStatus,
+
+    -- ** DisassociateConfigurationItemsFromApplication
+    disassociateConfigurationItemsFromApplication_applicationConfigurationId,
+    disassociateConfigurationItemsFromApplication_configurationIds,
+    disassociateConfigurationItemsFromApplicationResponse_httpStatus,
+
+    -- ** GetDiscoverySummary
+    getDiscoverySummaryResponse_agentSummary,
+    getDiscoverySummaryResponse_agentlessCollectorSummary,
+    getDiscoverySummaryResponse_applications,
+    getDiscoverySummaryResponse_connectorSummary,
+    getDiscoverySummaryResponse_meCollectorSummary,
+    getDiscoverySummaryResponse_servers,
+    getDiscoverySummaryResponse_serversMappedToApplications,
+    getDiscoverySummaryResponse_serversMappedtoTags,
+    getDiscoverySummaryResponse_httpStatus,
+
+    -- ** ListConfigurations
+    listConfigurations_filters,
+    listConfigurations_maxResults,
+    listConfigurations_nextToken,
+    listConfigurations_orderBy,
+    listConfigurations_configurationType,
+    listConfigurationsResponse_configurations,
+    listConfigurationsResponse_nextToken,
+    listConfigurationsResponse_httpStatus,
+
+    -- ** ListServerNeighbors
+    listServerNeighbors_maxResults,
+    listServerNeighbors_neighborConfigurationIds,
+    listServerNeighbors_nextToken,
+    listServerNeighbors_portInformationNeeded,
+    listServerNeighbors_configurationId,
+    listServerNeighborsResponse_knownDependencyCount,
+    listServerNeighborsResponse_nextToken,
+    listServerNeighborsResponse_httpStatus,
+    listServerNeighborsResponse_neighbors,
+
+    -- ** StartContinuousExport
+    startContinuousExportResponse_dataSource,
+    startContinuousExportResponse_exportId,
+    startContinuousExportResponse_s3Bucket,
+    startContinuousExportResponse_schemaStorageConfig,
+    startContinuousExportResponse_startTime,
+    startContinuousExportResponse_httpStatus,
+
+    -- ** StartDataCollectionByAgentIds
+    startDataCollectionByAgentIds_agentIds,
+    startDataCollectionByAgentIdsResponse_agentsConfigurationStatus,
+    startDataCollectionByAgentIdsResponse_httpStatus,
+
+    -- ** StartExportTask
+    startExportTask_endTime,
+    startExportTask_exportDataFormat,
+    startExportTask_filters,
+    startExportTask_startTime,
+    startExportTaskResponse_exportId,
+    startExportTaskResponse_httpStatus,
+
+    -- ** StartImportTask
+    startImportTask_clientRequestToken,
+    startImportTask_name,
+    startImportTask_importUrl,
+    startImportTaskResponse_task,
+    startImportTaskResponse_httpStatus,
+
+    -- ** StopContinuousExport
+    stopContinuousExport_exportId,
+    stopContinuousExportResponse_startTime,
+    stopContinuousExportResponse_stopTime,
+    stopContinuousExportResponse_httpStatus,
+
+    -- ** StopDataCollectionByAgentIds
+    stopDataCollectionByAgentIds_agentIds,
+    stopDataCollectionByAgentIdsResponse_agentsConfigurationStatus,
+    stopDataCollectionByAgentIdsResponse_httpStatus,
+
+    -- ** UpdateApplication
+    updateApplication_description,
+    updateApplication_name,
+    updateApplication_configurationId,
+    updateApplicationResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AgentConfigurationStatus
+    agentConfigurationStatus_agentId,
+    agentConfigurationStatus_description,
+    agentConfigurationStatus_operationSucceeded,
+
+    -- ** AgentInfo
+    agentInfo_agentId,
+    agentInfo_agentNetworkInfoList,
+    agentInfo_agentType,
+    agentInfo_collectionStatus,
+    agentInfo_connectorId,
+    agentInfo_health,
+    agentInfo_hostName,
+    agentInfo_lastHealthPingTime,
+    agentInfo_registeredTime,
+    agentInfo_version,
+
+    -- ** AgentNetworkInfo
+    agentNetworkInfo_ipAddress,
+    agentNetworkInfo_macAddress,
+
+    -- ** BatchDeleteImportDataError
+    batchDeleteImportDataError_errorCode,
+    batchDeleteImportDataError_errorDescription,
+    batchDeleteImportDataError_importTaskId,
+
+    -- ** ConfigurationTag
+    configurationTag_configurationId,
+    configurationTag_configurationType,
+    configurationTag_key,
+    configurationTag_timeOfCreation,
+    configurationTag_value,
+
+    -- ** ContinuousExportDescription
+    continuousExportDescription_dataSource,
+    continuousExportDescription_exportId,
+    continuousExportDescription_s3Bucket,
+    continuousExportDescription_schemaStorageConfig,
+    continuousExportDescription_startTime,
+    continuousExportDescription_status,
+    continuousExportDescription_statusDetail,
+    continuousExportDescription_stopTime,
+
+    -- ** CustomerAgentInfo
+    customerAgentInfo_activeAgents,
+    customerAgentInfo_healthyAgents,
+    customerAgentInfo_blackListedAgents,
+    customerAgentInfo_shutdownAgents,
+    customerAgentInfo_unhealthyAgents,
+    customerAgentInfo_totalAgents,
+    customerAgentInfo_unknownAgents,
+
+    -- ** CustomerAgentlessCollectorInfo
+    customerAgentlessCollectorInfo_activeAgentlessCollectors,
+    customerAgentlessCollectorInfo_healthyAgentlessCollectors,
+    customerAgentlessCollectorInfo_denyListedAgentlessCollectors,
+    customerAgentlessCollectorInfo_shutdownAgentlessCollectors,
+    customerAgentlessCollectorInfo_unhealthyAgentlessCollectors,
+    customerAgentlessCollectorInfo_totalAgentlessCollectors,
+    customerAgentlessCollectorInfo_unknownAgentlessCollectors,
+
+    -- ** CustomerConnectorInfo
+    customerConnectorInfo_activeConnectors,
+    customerConnectorInfo_healthyConnectors,
+    customerConnectorInfo_blackListedConnectors,
+    customerConnectorInfo_shutdownConnectors,
+    customerConnectorInfo_unhealthyConnectors,
+    customerConnectorInfo_totalConnectors,
+    customerConnectorInfo_unknownConnectors,
+
+    -- ** CustomerMeCollectorInfo
+    customerMeCollectorInfo_activeMeCollectors,
+    customerMeCollectorInfo_healthyMeCollectors,
+    customerMeCollectorInfo_denyListedMeCollectors,
+    customerMeCollectorInfo_shutdownMeCollectors,
+    customerMeCollectorInfo_unhealthyMeCollectors,
+    customerMeCollectorInfo_totalMeCollectors,
+    customerMeCollectorInfo_unknownMeCollectors,
+
+    -- ** ExportFilter
+    exportFilter_name,
+    exportFilter_values,
+    exportFilter_condition,
+
+    -- ** ExportInfo
+    exportInfo_configurationsDownloadUrl,
+    exportInfo_isTruncated,
+    exportInfo_requestedEndTime,
+    exportInfo_requestedStartTime,
+    exportInfo_exportId,
+    exportInfo_exportStatus,
+    exportInfo_statusMessage,
+    exportInfo_exportRequestTime,
+
+    -- ** Filter
+    filter_name,
+    filter_values,
+    filter_condition,
+
+    -- ** ImportTask
+    importTask_applicationImportFailure,
+    importTask_applicationImportSuccess,
+    importTask_clientRequestToken,
+    importTask_errorsAndFailedEntriesZip,
+    importTask_importCompletionTime,
+    importTask_importDeletedTime,
+    importTask_importRequestTime,
+    importTask_importTaskId,
+    importTask_importUrl,
+    importTask_name,
+    importTask_serverImportFailure,
+    importTask_serverImportSuccess,
+    importTask_status,
+
+    -- ** ImportTaskFilter
+    importTaskFilter_name,
+    importTaskFilter_values,
+
+    -- ** NeighborConnectionDetail
+    neighborConnectionDetail_destinationPort,
+    neighborConnectionDetail_transportProtocol,
+    neighborConnectionDetail_sourceServerId,
+    neighborConnectionDetail_destinationServerId,
+    neighborConnectionDetail_connectionsCount,
+
+    -- ** OrderByElement
+    orderByElement_sortOrder,
+    orderByElement_fieldName,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+
+    -- ** TagFilter
+    tagFilter_name,
+    tagFilter_values,
+  )
+where
+
+import Amazonka.Discovery.AssociateConfigurationItemsToApplication
+import Amazonka.Discovery.BatchDeleteImportData
+import Amazonka.Discovery.CreateApplication
+import Amazonka.Discovery.CreateTags
+import Amazonka.Discovery.DeleteApplications
+import Amazonka.Discovery.DeleteTags
+import Amazonka.Discovery.DescribeAgents
+import Amazonka.Discovery.DescribeConfigurations
+import Amazonka.Discovery.DescribeContinuousExports
+import Amazonka.Discovery.DescribeExportTasks
+import Amazonka.Discovery.DescribeImportTasks
+import Amazonka.Discovery.DescribeTags
+import Amazonka.Discovery.DisassociateConfigurationItemsFromApplication
+import Amazonka.Discovery.GetDiscoverySummary
+import Amazonka.Discovery.ListConfigurations
+import Amazonka.Discovery.ListServerNeighbors
+import Amazonka.Discovery.StartContinuousExport
+import Amazonka.Discovery.StartDataCollectionByAgentIds
+import Amazonka.Discovery.StartExportTask
+import Amazonka.Discovery.StartImportTask
+import Amazonka.Discovery.StopContinuousExport
+import Amazonka.Discovery.StopDataCollectionByAgentIds
+import Amazonka.Discovery.Types.AgentConfigurationStatus
+import Amazonka.Discovery.Types.AgentInfo
+import Amazonka.Discovery.Types.AgentNetworkInfo
+import Amazonka.Discovery.Types.BatchDeleteImportDataError
+import Amazonka.Discovery.Types.ConfigurationTag
+import Amazonka.Discovery.Types.ContinuousExportDescription
+import Amazonka.Discovery.Types.CustomerAgentInfo
+import Amazonka.Discovery.Types.CustomerAgentlessCollectorInfo
+import Amazonka.Discovery.Types.CustomerConnectorInfo
+import Amazonka.Discovery.Types.CustomerMeCollectorInfo
+import Amazonka.Discovery.Types.ExportFilter
+import Amazonka.Discovery.Types.ExportInfo
+import Amazonka.Discovery.Types.Filter
+import Amazonka.Discovery.Types.ImportTask
+import Amazonka.Discovery.Types.ImportTaskFilter
+import Amazonka.Discovery.Types.NeighborConnectionDetail
+import Amazonka.Discovery.Types.OrderByElement
+import Amazonka.Discovery.Types.Tag
+import Amazonka.Discovery.Types.TagFilter
+import Amazonka.Discovery.UpdateApplication
diff --git a/gen/Amazonka/Discovery/ListConfigurations.hs b/gen/Amazonka/Discovery/ListConfigurations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/ListConfigurations.hs
@@ -0,0 +1,327 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.ListConfigurations
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of configuration items as specified by the value passed
+-- to the required parameter @configurationType@. Optional filtering may be
+-- applied to refine search results.
+--
+-- This operation returns paginated results.
+module Amazonka.Discovery.ListConfigurations
+  ( -- * Creating a Request
+    ListConfigurations (..),
+    newListConfigurations,
+
+    -- * Request Lenses
+    listConfigurations_filters,
+    listConfigurations_maxResults,
+    listConfigurations_nextToken,
+    listConfigurations_orderBy,
+    listConfigurations_configurationType,
+
+    -- * Destructuring the Response
+    ListConfigurationsResponse (..),
+    newListConfigurationsResponse,
+
+    -- * Response Lenses
+    listConfigurationsResponse_configurations,
+    listConfigurationsResponse_nextToken,
+    listConfigurationsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListConfigurations' smart constructor.
+data ListConfigurations = ListConfigurations'
+  { -- | You can filter the request using various logical operators and a
+    -- /key/-/value/ format. For example:
+    --
+    -- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+    --
+    -- For a complete list of filter options and guidance about using them with
+    -- this action, see
+    -- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action>
+    -- in the /Amazon Web Services Application Discovery Service User Guide/.
+    filters :: Prelude.Maybe [Filter],
+    -- | The total number of items to return. The maximum value is 100.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | Token to retrieve the next set of results. For example, if a previous
+    -- call to ListConfigurations returned 100 items, but you set
+    -- @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10
+    -- results along with a token. Use that token in this query to get the next
+    -- set of 10.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Certain filter criteria return output that can be sorted in ascending or
+    -- descending order. For a list of output characteristics for each filter,
+    -- see
+    -- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action>
+    -- in the /Amazon Web Services Application Discovery Service User Guide/.
+    orderBy :: Prelude.Maybe [OrderByElement],
+    -- | A valid configuration identified by Application Discovery Service.
+    configurationType :: ConfigurationItemType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConfigurations' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listConfigurations_filters' - You can filter the request using various logical operators and a
+-- /key/-/value/ format. For example:
+--
+-- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+--
+-- For a complete list of filter options and guidance about using them with
+-- this action, see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+--
+-- 'maxResults', 'listConfigurations_maxResults' - The total number of items to return. The maximum value is 100.
+--
+-- 'nextToken', 'listConfigurations_nextToken' - Token to retrieve the next set of results. For example, if a previous
+-- call to ListConfigurations returned 100 items, but you set
+-- @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10
+-- results along with a token. Use that token in this query to get the next
+-- set of 10.
+--
+-- 'orderBy', 'listConfigurations_orderBy' - Certain filter criteria return output that can be sorted in ascending or
+-- descending order. For a list of output characteristics for each filter,
+-- see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+--
+-- 'configurationType', 'listConfigurations_configurationType' - A valid configuration identified by Application Discovery Service.
+newListConfigurations ::
+  -- | 'configurationType'
+  ConfigurationItemType ->
+  ListConfigurations
+newListConfigurations pConfigurationType_ =
+  ListConfigurations'
+    { filters = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      orderBy = Prelude.Nothing,
+      configurationType = pConfigurationType_
+    }
+
+-- | You can filter the request using various logical operators and a
+-- /key/-/value/ format. For example:
+--
+-- @{\"key\": \"serverType\", \"value\": \"webServer\"}@
+--
+-- For a complete list of filter options and guidance about using them with
+-- this action, see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+listConfigurations_filters :: Lens.Lens' ListConfigurations (Prelude.Maybe [Filter])
+listConfigurations_filters = Lens.lens (\ListConfigurations' {filters} -> filters) (\s@ListConfigurations' {} a -> s {filters = a} :: ListConfigurations) Prelude.. Lens.mapping Lens.coerced
+
+-- | The total number of items to return. The maximum value is 100.
+listConfigurations_maxResults :: Lens.Lens' ListConfigurations (Prelude.Maybe Prelude.Int)
+listConfigurations_maxResults = Lens.lens (\ListConfigurations' {maxResults} -> maxResults) (\s@ListConfigurations' {} a -> s {maxResults = a} :: ListConfigurations)
+
+-- | Token to retrieve the next set of results. For example, if a previous
+-- call to ListConfigurations returned 100 items, but you set
+-- @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10
+-- results along with a token. Use that token in this query to get the next
+-- set of 10.
+listConfigurations_nextToken :: Lens.Lens' ListConfigurations (Prelude.Maybe Prelude.Text)
+listConfigurations_nextToken = Lens.lens (\ListConfigurations' {nextToken} -> nextToken) (\s@ListConfigurations' {} a -> s {nextToken = a} :: ListConfigurations)
+
+-- | Certain filter criteria return output that can be sorted in ascending or
+-- descending order. For a list of output characteristics for each filter,
+-- see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+listConfigurations_orderBy :: Lens.Lens' ListConfigurations (Prelude.Maybe [OrderByElement])
+listConfigurations_orderBy = Lens.lens (\ListConfigurations' {orderBy} -> orderBy) (\s@ListConfigurations' {} a -> s {orderBy = a} :: ListConfigurations) Prelude.. Lens.mapping Lens.coerced
+
+-- | A valid configuration identified by Application Discovery Service.
+listConfigurations_configurationType :: Lens.Lens' ListConfigurations ConfigurationItemType
+listConfigurations_configurationType = Lens.lens (\ListConfigurations' {configurationType} -> configurationType) (\s@ListConfigurations' {} a -> s {configurationType = a} :: ListConfigurations)
+
+instance Core.AWSPager ListConfigurations where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listConfigurationsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listConfigurationsResponse_configurations
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listConfigurations_nextToken
+          Lens..~ rs
+          Lens.^? listConfigurationsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListConfigurations where
+  type
+    AWSResponse ListConfigurations =
+      ListConfigurationsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListConfigurationsResponse'
+            Prelude.<$> (x Data..?> "configurations" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListConfigurations where
+  hashWithSalt _salt ListConfigurations' {..} =
+    _salt
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` orderBy
+      `Prelude.hashWithSalt` configurationType
+
+instance Prelude.NFData ListConfigurations where
+  rnf ListConfigurations' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf orderBy
+      `Prelude.seq` Prelude.rnf configurationType
+
+instance Data.ToHeaders ListConfigurations where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.ListConfigurations" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListConfigurations where
+  toJSON ListConfigurations' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("filters" Data..=) Prelude.<$> filters,
+            ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            ("orderBy" Data..=) Prelude.<$> orderBy,
+            Prelude.Just
+              ("configurationType" Data..= configurationType)
+          ]
+      )
+
+instance Data.ToPath ListConfigurations where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListConfigurations where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListConfigurationsResponse' smart constructor.
+data ListConfigurationsResponse = ListConfigurationsResponse'
+  { -- | Returns configuration details, including the configuration ID, attribute
+    -- names, and attribute values.
+    configurations :: Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text],
+    -- | Token to retrieve the next set of results. For example, if your call to
+    -- ListConfigurations returned 100 items, but you set
+    -- @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10
+    -- results along with this token. Use this token in the next query to
+    -- retrieve the next set of 10.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConfigurationsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurations', 'listConfigurationsResponse_configurations' - Returns configuration details, including the configuration ID, attribute
+-- names, and attribute values.
+--
+-- 'nextToken', 'listConfigurationsResponse_nextToken' - Token to retrieve the next set of results. For example, if your call to
+-- ListConfigurations returned 100 items, but you set
+-- @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10
+-- results along with this token. Use this token in the next query to
+-- retrieve the next set of 10.
+--
+-- 'httpStatus', 'listConfigurationsResponse_httpStatus' - The response's http status code.
+newListConfigurationsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListConfigurationsResponse
+newListConfigurationsResponse pHttpStatus_ =
+  ListConfigurationsResponse'
+    { configurations =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns configuration details, including the configuration ID, attribute
+-- names, and attribute values.
+listConfigurationsResponse_configurations :: Lens.Lens' ListConfigurationsResponse (Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text])
+listConfigurationsResponse_configurations = Lens.lens (\ListConfigurationsResponse' {configurations} -> configurations) (\s@ListConfigurationsResponse' {} a -> s {configurations = a} :: ListConfigurationsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | Token to retrieve the next set of results. For example, if your call to
+-- ListConfigurations returned 100 items, but you set
+-- @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10
+-- results along with this token. Use this token in the next query to
+-- retrieve the next set of 10.
+listConfigurationsResponse_nextToken :: Lens.Lens' ListConfigurationsResponse (Prelude.Maybe Prelude.Text)
+listConfigurationsResponse_nextToken = Lens.lens (\ListConfigurationsResponse' {nextToken} -> nextToken) (\s@ListConfigurationsResponse' {} a -> s {nextToken = a} :: ListConfigurationsResponse)
+
+-- | The response's http status code.
+listConfigurationsResponse_httpStatus :: Lens.Lens' ListConfigurationsResponse Prelude.Int
+listConfigurationsResponse_httpStatus = Lens.lens (\ListConfigurationsResponse' {httpStatus} -> httpStatus) (\s@ListConfigurationsResponse' {} a -> s {httpStatus = a} :: ListConfigurationsResponse)
+
+instance Prelude.NFData ListConfigurationsResponse where
+  rnf ListConfigurationsResponse' {..} =
+    Prelude.rnf configurations
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/ListServerNeighbors.hs b/gen/Amazonka/Discovery/ListServerNeighbors.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/ListServerNeighbors.hs
@@ -0,0 +1,283 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.ListServerNeighbors
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a list of servers that are one network hop away from a
+-- specified server.
+module Amazonka.Discovery.ListServerNeighbors
+  ( -- * Creating a Request
+    ListServerNeighbors (..),
+    newListServerNeighbors,
+
+    -- * Request Lenses
+    listServerNeighbors_maxResults,
+    listServerNeighbors_neighborConfigurationIds,
+    listServerNeighbors_nextToken,
+    listServerNeighbors_portInformationNeeded,
+    listServerNeighbors_configurationId,
+
+    -- * Destructuring the Response
+    ListServerNeighborsResponse (..),
+    newListServerNeighborsResponse,
+
+    -- * Response Lenses
+    listServerNeighborsResponse_knownDependencyCount,
+    listServerNeighborsResponse_nextToken,
+    listServerNeighborsResponse_httpStatus,
+    listServerNeighborsResponse_neighbors,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newListServerNeighbors' smart constructor.
+data ListServerNeighbors = ListServerNeighbors'
+  { -- | Maximum number of results to return in a single page of output.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | List of configuration IDs to test for one-hop-away.
+    neighborConfigurationIds :: Prelude.Maybe [Prelude.Text],
+    -- | Token to retrieve the next set of results. For example, if you
+    -- previously specified 100 IDs for
+    -- @ListServerNeighborsRequest$neighborConfigurationIds@ but set
+    -- @ListServerNeighborsRequest$maxResults@ to 10, you received a set of 10
+    -- results along with a token. Use that token in this query to get the next
+    -- set of 10.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | Flag to indicate if port and protocol information is needed as part of
+    -- the response.
+    portInformationNeeded :: Prelude.Maybe Prelude.Bool,
+    -- | Configuration ID of the server for which neighbors are being listed.
+    configurationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServerNeighbors' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listServerNeighbors_maxResults' - Maximum number of results to return in a single page of output.
+--
+-- 'neighborConfigurationIds', 'listServerNeighbors_neighborConfigurationIds' - List of configuration IDs to test for one-hop-away.
+--
+-- 'nextToken', 'listServerNeighbors_nextToken' - Token to retrieve the next set of results. For example, if you
+-- previously specified 100 IDs for
+-- @ListServerNeighborsRequest$neighborConfigurationIds@ but set
+-- @ListServerNeighborsRequest$maxResults@ to 10, you received a set of 10
+-- results along with a token. Use that token in this query to get the next
+-- set of 10.
+--
+-- 'portInformationNeeded', 'listServerNeighbors_portInformationNeeded' - Flag to indicate if port and protocol information is needed as part of
+-- the response.
+--
+-- 'configurationId', 'listServerNeighbors_configurationId' - Configuration ID of the server for which neighbors are being listed.
+newListServerNeighbors ::
+  -- | 'configurationId'
+  Prelude.Text ->
+  ListServerNeighbors
+newListServerNeighbors pConfigurationId_ =
+  ListServerNeighbors'
+    { maxResults = Prelude.Nothing,
+      neighborConfigurationIds = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      portInformationNeeded = Prelude.Nothing,
+      configurationId = pConfigurationId_
+    }
+
+-- | Maximum number of results to return in a single page of output.
+listServerNeighbors_maxResults :: Lens.Lens' ListServerNeighbors (Prelude.Maybe Prelude.Int)
+listServerNeighbors_maxResults = Lens.lens (\ListServerNeighbors' {maxResults} -> maxResults) (\s@ListServerNeighbors' {} a -> s {maxResults = a} :: ListServerNeighbors)
+
+-- | List of configuration IDs to test for one-hop-away.
+listServerNeighbors_neighborConfigurationIds :: Lens.Lens' ListServerNeighbors (Prelude.Maybe [Prelude.Text])
+listServerNeighbors_neighborConfigurationIds = Lens.lens (\ListServerNeighbors' {neighborConfigurationIds} -> neighborConfigurationIds) (\s@ListServerNeighbors' {} a -> s {neighborConfigurationIds = a} :: ListServerNeighbors) Prelude.. Lens.mapping Lens.coerced
+
+-- | Token to retrieve the next set of results. For example, if you
+-- previously specified 100 IDs for
+-- @ListServerNeighborsRequest$neighborConfigurationIds@ but set
+-- @ListServerNeighborsRequest$maxResults@ to 10, you received a set of 10
+-- results along with a token. Use that token in this query to get the next
+-- set of 10.
+listServerNeighbors_nextToken :: Lens.Lens' ListServerNeighbors (Prelude.Maybe Prelude.Text)
+listServerNeighbors_nextToken = Lens.lens (\ListServerNeighbors' {nextToken} -> nextToken) (\s@ListServerNeighbors' {} a -> s {nextToken = a} :: ListServerNeighbors)
+
+-- | Flag to indicate if port and protocol information is needed as part of
+-- the response.
+listServerNeighbors_portInformationNeeded :: Lens.Lens' ListServerNeighbors (Prelude.Maybe Prelude.Bool)
+listServerNeighbors_portInformationNeeded = Lens.lens (\ListServerNeighbors' {portInformationNeeded} -> portInformationNeeded) (\s@ListServerNeighbors' {} a -> s {portInformationNeeded = a} :: ListServerNeighbors)
+
+-- | Configuration ID of the server for which neighbors are being listed.
+listServerNeighbors_configurationId :: Lens.Lens' ListServerNeighbors Prelude.Text
+listServerNeighbors_configurationId = Lens.lens (\ListServerNeighbors' {configurationId} -> configurationId) (\s@ListServerNeighbors' {} a -> s {configurationId = a} :: ListServerNeighbors)
+
+instance Core.AWSRequest ListServerNeighbors where
+  type
+    AWSResponse ListServerNeighbors =
+      ListServerNeighborsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListServerNeighborsResponse'
+            Prelude.<$> (x Data..?> "knownDependencyCount")
+            Prelude.<*> (x Data..?> "nextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..?> "neighbors" Core..!@ Prelude.mempty)
+      )
+
+instance Prelude.Hashable ListServerNeighbors where
+  hashWithSalt _salt ListServerNeighbors' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` neighborConfigurationIds
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` portInformationNeeded
+      `Prelude.hashWithSalt` configurationId
+
+instance Prelude.NFData ListServerNeighbors where
+  rnf ListServerNeighbors' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf neighborConfigurationIds
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf portInformationNeeded
+      `Prelude.seq` Prelude.rnf configurationId
+
+instance Data.ToHeaders ListServerNeighbors where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.ListServerNeighbors" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListServerNeighbors where
+  toJSON ListServerNeighbors' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("maxResults" Data..=) Prelude.<$> maxResults,
+            ("neighborConfigurationIds" Data..=)
+              Prelude.<$> neighborConfigurationIds,
+            ("nextToken" Data..=) Prelude.<$> nextToken,
+            ("portInformationNeeded" Data..=)
+              Prelude.<$> portInformationNeeded,
+            Prelude.Just
+              ("configurationId" Data..= configurationId)
+          ]
+      )
+
+instance Data.ToPath ListServerNeighbors where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListServerNeighbors where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListServerNeighborsResponse' smart constructor.
+data ListServerNeighborsResponse = ListServerNeighborsResponse'
+  { -- | Count of distinct servers that are one hop away from the given server.
+    knownDependencyCount :: Prelude.Maybe Prelude.Integer,
+    -- | Token to retrieve the next set of results. For example, if you specified
+    -- 100 IDs for @ListServerNeighborsRequest$neighborConfigurationIds@ but
+    -- set @ListServerNeighborsRequest$maxResults@ to 10, you received a set of
+    -- 10 results along with this token. Use this token in the next query to
+    -- retrieve the next set of 10.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | List of distinct servers that are one hop away from the given server.
+    neighbors :: [NeighborConnectionDetail]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListServerNeighborsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'knownDependencyCount', 'listServerNeighborsResponse_knownDependencyCount' - Count of distinct servers that are one hop away from the given server.
+--
+-- 'nextToken', 'listServerNeighborsResponse_nextToken' - Token to retrieve the next set of results. For example, if you specified
+-- 100 IDs for @ListServerNeighborsRequest$neighborConfigurationIds@ but
+-- set @ListServerNeighborsRequest$maxResults@ to 10, you received a set of
+-- 10 results along with this token. Use this token in the next query to
+-- retrieve the next set of 10.
+--
+-- 'httpStatus', 'listServerNeighborsResponse_httpStatus' - The response's http status code.
+--
+-- 'neighbors', 'listServerNeighborsResponse_neighbors' - List of distinct servers that are one hop away from the given server.
+newListServerNeighborsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListServerNeighborsResponse
+newListServerNeighborsResponse pHttpStatus_ =
+  ListServerNeighborsResponse'
+    { knownDependencyCount =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      neighbors = Prelude.mempty
+    }
+
+-- | Count of distinct servers that are one hop away from the given server.
+listServerNeighborsResponse_knownDependencyCount :: Lens.Lens' ListServerNeighborsResponse (Prelude.Maybe Prelude.Integer)
+listServerNeighborsResponse_knownDependencyCount = Lens.lens (\ListServerNeighborsResponse' {knownDependencyCount} -> knownDependencyCount) (\s@ListServerNeighborsResponse' {} a -> s {knownDependencyCount = a} :: ListServerNeighborsResponse)
+
+-- | Token to retrieve the next set of results. For example, if you specified
+-- 100 IDs for @ListServerNeighborsRequest$neighborConfigurationIds@ but
+-- set @ListServerNeighborsRequest$maxResults@ to 10, you received a set of
+-- 10 results along with this token. Use this token in the next query to
+-- retrieve the next set of 10.
+listServerNeighborsResponse_nextToken :: Lens.Lens' ListServerNeighborsResponse (Prelude.Maybe Prelude.Text)
+listServerNeighborsResponse_nextToken = Lens.lens (\ListServerNeighborsResponse' {nextToken} -> nextToken) (\s@ListServerNeighborsResponse' {} a -> s {nextToken = a} :: ListServerNeighborsResponse)
+
+-- | The response's http status code.
+listServerNeighborsResponse_httpStatus :: Lens.Lens' ListServerNeighborsResponse Prelude.Int
+listServerNeighborsResponse_httpStatus = Lens.lens (\ListServerNeighborsResponse' {httpStatus} -> httpStatus) (\s@ListServerNeighborsResponse' {} a -> s {httpStatus = a} :: ListServerNeighborsResponse)
+
+-- | List of distinct servers that are one hop away from the given server.
+listServerNeighborsResponse_neighbors :: Lens.Lens' ListServerNeighborsResponse [NeighborConnectionDetail]
+listServerNeighborsResponse_neighbors = Lens.lens (\ListServerNeighborsResponse' {neighbors} -> neighbors) (\s@ListServerNeighborsResponse' {} a -> s {neighbors = a} :: ListServerNeighborsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListServerNeighborsResponse where
+  rnf ListServerNeighborsResponse' {..} =
+    Prelude.rnf knownDependencyCount
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf neighbors
diff --git a/gen/Amazonka/Discovery/StartContinuousExport.hs b/gen/Amazonka/Discovery/StartContinuousExport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/StartContinuousExport.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.StartContinuousExport
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Start the continuous flow of agent\'s discovered data into Amazon
+-- Athena.
+module Amazonka.Discovery.StartContinuousExport
+  ( -- * Creating a Request
+    StartContinuousExport (..),
+    newStartContinuousExport,
+
+    -- * Destructuring the Response
+    StartContinuousExportResponse (..),
+    newStartContinuousExportResponse,
+
+    -- * Response Lenses
+    startContinuousExportResponse_dataSource,
+    startContinuousExportResponse_exportId,
+    startContinuousExportResponse_s3Bucket,
+    startContinuousExportResponse_schemaStorageConfig,
+    startContinuousExportResponse_startTime,
+    startContinuousExportResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartContinuousExport' smart constructor.
+data StartContinuousExport = StartContinuousExport'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartContinuousExport' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newStartContinuousExport ::
+  StartContinuousExport
+newStartContinuousExport = StartContinuousExport'
+
+instance Core.AWSRequest StartContinuousExport where
+  type
+    AWSResponse StartContinuousExport =
+      StartContinuousExportResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartContinuousExportResponse'
+            Prelude.<$> (x Data..?> "dataSource")
+            Prelude.<*> (x Data..?> "exportId")
+            Prelude.<*> (x Data..?> "s3Bucket")
+            Prelude.<*> ( x
+                            Data..?> "schemaStorageConfig"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "startTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartContinuousExport where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData StartContinuousExport where
+  rnf _ = ()
+
+instance Data.ToHeaders StartContinuousExport where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.StartContinuousExport" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartContinuousExport where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath StartContinuousExport where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartContinuousExport where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartContinuousExportResponse' smart constructor.
+data StartContinuousExportResponse = StartContinuousExportResponse'
+  { -- | The type of data collector used to gather this data (currently only
+    -- offered for AGENT).
+    dataSource :: Prelude.Maybe DataSource,
+    -- | The unique ID assigned to this export.
+    exportId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the s3 bucket where the export data parquet files are
+    -- stored.
+    s3Bucket :: Prelude.Maybe Prelude.Text,
+    -- | A dictionary which describes how the data is stored.
+    --
+    -- -   @databaseName@ - the name of the Glue database used to store the
+    --     schema.
+    schemaStorageConfig :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The timestamp representing when the continuous export was started.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartContinuousExportResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSource', 'startContinuousExportResponse_dataSource' - The type of data collector used to gather this data (currently only
+-- offered for AGENT).
+--
+-- 'exportId', 'startContinuousExportResponse_exportId' - The unique ID assigned to this export.
+--
+-- 's3Bucket', 'startContinuousExportResponse_s3Bucket' - The name of the s3 bucket where the export data parquet files are
+-- stored.
+--
+-- 'schemaStorageConfig', 'startContinuousExportResponse_schemaStorageConfig' - A dictionary which describes how the data is stored.
+--
+-- -   @databaseName@ - the name of the Glue database used to store the
+--     schema.
+--
+-- 'startTime', 'startContinuousExportResponse_startTime' - The timestamp representing when the continuous export was started.
+--
+-- 'httpStatus', 'startContinuousExportResponse_httpStatus' - The response's http status code.
+newStartContinuousExportResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartContinuousExportResponse
+newStartContinuousExportResponse pHttpStatus_ =
+  StartContinuousExportResponse'
+    { dataSource =
+        Prelude.Nothing,
+      exportId = Prelude.Nothing,
+      s3Bucket = Prelude.Nothing,
+      schemaStorageConfig = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The type of data collector used to gather this data (currently only
+-- offered for AGENT).
+startContinuousExportResponse_dataSource :: Lens.Lens' StartContinuousExportResponse (Prelude.Maybe DataSource)
+startContinuousExportResponse_dataSource = Lens.lens (\StartContinuousExportResponse' {dataSource} -> dataSource) (\s@StartContinuousExportResponse' {} a -> s {dataSource = a} :: StartContinuousExportResponse)
+
+-- | The unique ID assigned to this export.
+startContinuousExportResponse_exportId :: Lens.Lens' StartContinuousExportResponse (Prelude.Maybe Prelude.Text)
+startContinuousExportResponse_exportId = Lens.lens (\StartContinuousExportResponse' {exportId} -> exportId) (\s@StartContinuousExportResponse' {} a -> s {exportId = a} :: StartContinuousExportResponse)
+
+-- | The name of the s3 bucket where the export data parquet files are
+-- stored.
+startContinuousExportResponse_s3Bucket :: Lens.Lens' StartContinuousExportResponse (Prelude.Maybe Prelude.Text)
+startContinuousExportResponse_s3Bucket = Lens.lens (\StartContinuousExportResponse' {s3Bucket} -> s3Bucket) (\s@StartContinuousExportResponse' {} a -> s {s3Bucket = a} :: StartContinuousExportResponse)
+
+-- | A dictionary which describes how the data is stored.
+--
+-- -   @databaseName@ - the name of the Glue database used to store the
+--     schema.
+startContinuousExportResponse_schemaStorageConfig :: Lens.Lens' StartContinuousExportResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+startContinuousExportResponse_schemaStorageConfig = Lens.lens (\StartContinuousExportResponse' {schemaStorageConfig} -> schemaStorageConfig) (\s@StartContinuousExportResponse' {} a -> s {schemaStorageConfig = a} :: StartContinuousExportResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The timestamp representing when the continuous export was started.
+startContinuousExportResponse_startTime :: Lens.Lens' StartContinuousExportResponse (Prelude.Maybe Prelude.UTCTime)
+startContinuousExportResponse_startTime = Lens.lens (\StartContinuousExportResponse' {startTime} -> startTime) (\s@StartContinuousExportResponse' {} a -> s {startTime = a} :: StartContinuousExportResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+startContinuousExportResponse_httpStatus :: Lens.Lens' StartContinuousExportResponse Prelude.Int
+startContinuousExportResponse_httpStatus = Lens.lens (\StartContinuousExportResponse' {httpStatus} -> httpStatus) (\s@StartContinuousExportResponse' {} a -> s {httpStatus = a} :: StartContinuousExportResponse)
+
+instance Prelude.NFData StartContinuousExportResponse where
+  rnf StartContinuousExportResponse' {..} =
+    Prelude.rnf dataSource
+      `Prelude.seq` Prelude.rnf exportId
+      `Prelude.seq` Prelude.rnf s3Bucket
+      `Prelude.seq` Prelude.rnf schemaStorageConfig
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/StartDataCollectionByAgentIds.hs b/gen/Amazonka/Discovery/StartDataCollectionByAgentIds.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/StartDataCollectionByAgentIds.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.StartDataCollectionByAgentIds
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Instructs the specified agents or connectors to start collecting data.
+module Amazonka.Discovery.StartDataCollectionByAgentIds
+  ( -- * Creating a Request
+    StartDataCollectionByAgentIds (..),
+    newStartDataCollectionByAgentIds,
+
+    -- * Request Lenses
+    startDataCollectionByAgentIds_agentIds,
+
+    -- * Destructuring the Response
+    StartDataCollectionByAgentIdsResponse (..),
+    newStartDataCollectionByAgentIdsResponse,
+
+    -- * Response Lenses
+    startDataCollectionByAgentIdsResponse_agentsConfigurationStatus,
+    startDataCollectionByAgentIdsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartDataCollectionByAgentIds' smart constructor.
+data StartDataCollectionByAgentIds = StartDataCollectionByAgentIds'
+  { -- | The IDs of the agents or connectors from which to start collecting data.
+    -- If you send a request to an agent\/connector ID that you do not have
+    -- permission to contact, according to your Amazon Web Services account,
+    -- the service does not throw an exception. Instead, it returns the error
+    -- in the /Description/ field. If you send a request to multiple
+    -- agents\/connectors and you do not have permission to contact some of
+    -- those agents\/connectors, the system does not throw an exception.
+    -- Instead, the system shows @Failed@ in the /Description/ field.
+    agentIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDataCollectionByAgentIds' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentIds', 'startDataCollectionByAgentIds_agentIds' - The IDs of the agents or connectors from which to start collecting data.
+-- If you send a request to an agent\/connector ID that you do not have
+-- permission to contact, according to your Amazon Web Services account,
+-- the service does not throw an exception. Instead, it returns the error
+-- in the /Description/ field. If you send a request to multiple
+-- agents\/connectors and you do not have permission to contact some of
+-- those agents\/connectors, the system does not throw an exception.
+-- Instead, the system shows @Failed@ in the /Description/ field.
+newStartDataCollectionByAgentIds ::
+  StartDataCollectionByAgentIds
+newStartDataCollectionByAgentIds =
+  StartDataCollectionByAgentIds'
+    { agentIds =
+        Prelude.mempty
+    }
+
+-- | The IDs of the agents or connectors from which to start collecting data.
+-- If you send a request to an agent\/connector ID that you do not have
+-- permission to contact, according to your Amazon Web Services account,
+-- the service does not throw an exception. Instead, it returns the error
+-- in the /Description/ field. If you send a request to multiple
+-- agents\/connectors and you do not have permission to contact some of
+-- those agents\/connectors, the system does not throw an exception.
+-- Instead, the system shows @Failed@ in the /Description/ field.
+startDataCollectionByAgentIds_agentIds :: Lens.Lens' StartDataCollectionByAgentIds [Prelude.Text]
+startDataCollectionByAgentIds_agentIds = Lens.lens (\StartDataCollectionByAgentIds' {agentIds} -> agentIds) (\s@StartDataCollectionByAgentIds' {} a -> s {agentIds = a} :: StartDataCollectionByAgentIds) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    StartDataCollectionByAgentIds
+  where
+  type
+    AWSResponse StartDataCollectionByAgentIds =
+      StartDataCollectionByAgentIdsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartDataCollectionByAgentIdsResponse'
+            Prelude.<$> ( x
+                            Data..?> "agentsConfigurationStatus"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    StartDataCollectionByAgentIds
+  where
+  hashWithSalt _salt StartDataCollectionByAgentIds' {..} =
+    _salt `Prelude.hashWithSalt` agentIds
+
+instance Prelude.NFData StartDataCollectionByAgentIds where
+  rnf StartDataCollectionByAgentIds' {..} =
+    Prelude.rnf agentIds
+
+instance Data.ToHeaders StartDataCollectionByAgentIds where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.StartDataCollectionByAgentIds" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartDataCollectionByAgentIds where
+  toJSON StartDataCollectionByAgentIds' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("agentIds" Data..= agentIds)]
+      )
+
+instance Data.ToPath StartDataCollectionByAgentIds where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartDataCollectionByAgentIds where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartDataCollectionByAgentIdsResponse' smart constructor.
+data StartDataCollectionByAgentIdsResponse = StartDataCollectionByAgentIdsResponse'
+  { -- | Information about agents or the connector that were instructed to start
+    -- collecting data. Information includes the agent\/connector ID, a
+    -- description of the operation performed, and whether the agent\/connector
+    -- configuration was updated.
+    agentsConfigurationStatus :: Prelude.Maybe [AgentConfigurationStatus],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartDataCollectionByAgentIdsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentsConfigurationStatus', 'startDataCollectionByAgentIdsResponse_agentsConfigurationStatus' - Information about agents or the connector that were instructed to start
+-- collecting data. Information includes the agent\/connector ID, a
+-- description of the operation performed, and whether the agent\/connector
+-- configuration was updated.
+--
+-- 'httpStatus', 'startDataCollectionByAgentIdsResponse_httpStatus' - The response's http status code.
+newStartDataCollectionByAgentIdsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartDataCollectionByAgentIdsResponse
+newStartDataCollectionByAgentIdsResponse pHttpStatus_ =
+  StartDataCollectionByAgentIdsResponse'
+    { agentsConfigurationStatus =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about agents or the connector that were instructed to start
+-- collecting data. Information includes the agent\/connector ID, a
+-- description of the operation performed, and whether the agent\/connector
+-- configuration was updated.
+startDataCollectionByAgentIdsResponse_agentsConfigurationStatus :: Lens.Lens' StartDataCollectionByAgentIdsResponse (Prelude.Maybe [AgentConfigurationStatus])
+startDataCollectionByAgentIdsResponse_agentsConfigurationStatus = Lens.lens (\StartDataCollectionByAgentIdsResponse' {agentsConfigurationStatus} -> agentsConfigurationStatus) (\s@StartDataCollectionByAgentIdsResponse' {} a -> s {agentsConfigurationStatus = a} :: StartDataCollectionByAgentIdsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+startDataCollectionByAgentIdsResponse_httpStatus :: Lens.Lens' StartDataCollectionByAgentIdsResponse Prelude.Int
+startDataCollectionByAgentIdsResponse_httpStatus = Lens.lens (\StartDataCollectionByAgentIdsResponse' {httpStatus} -> httpStatus) (\s@StartDataCollectionByAgentIdsResponse' {} a -> s {httpStatus = a} :: StartDataCollectionByAgentIdsResponse)
+
+instance
+  Prelude.NFData
+    StartDataCollectionByAgentIdsResponse
+  where
+  rnf StartDataCollectionByAgentIdsResponse' {..} =
+    Prelude.rnf agentsConfigurationStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/StartExportTask.hs b/gen/Amazonka/Discovery/StartExportTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/StartExportTask.hs
@@ -0,0 +1,253 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.StartExportTask
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Begins the export of discovered data to an S3 bucket.
+--
+-- If you specify @agentIds@ in a filter, the task exports up to 72 hours
+-- of detailed data collected by the identified Application Discovery
+-- Agent, including network, process, and performance details. A time range
+-- for exported agent data may be set by using @startTime@ and @endTime@.
+-- Export of detailed agent data is limited to five concurrently running
+-- exports.
+--
+-- If you do not include an @agentIds@ filter, summary data is exported
+-- that includes both Amazon Web Services Agentless Discovery Connector
+-- data and summary data from Amazon Web Services Discovery Agents. Export
+-- of summary data is limited to two exports per day.
+module Amazonka.Discovery.StartExportTask
+  ( -- * Creating a Request
+    StartExportTask (..),
+    newStartExportTask,
+
+    -- * Request Lenses
+    startExportTask_endTime,
+    startExportTask_exportDataFormat,
+    startExportTask_filters,
+    startExportTask_startTime,
+
+    -- * Destructuring the Response
+    StartExportTaskResponse (..),
+    newStartExportTaskResponse,
+
+    -- * Response Lenses
+    startExportTaskResponse_exportId,
+    startExportTaskResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartExportTask' smart constructor.
+data StartExportTask = StartExportTask'
+  { -- | The end timestamp for exported data from the single Application
+    -- Discovery Agent selected in the filters. If no value is specified,
+    -- exported data includes the most recent data collected by the agent.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The file format for the returned export data. Default value is @CSV@.
+    -- __Note:__ /The/ @GRAPHML@ /option has been deprecated./
+    exportDataFormat :: Prelude.Maybe [ExportDataFormat],
+    -- | If a filter is present, it selects the single @agentId@ of the
+    -- Application Discovery Agent for which data is exported. The @agentId@
+    -- can be found in the results of the @DescribeAgents@ API or CLI. If no
+    -- filter is present, @startTime@ and @endTime@ are ignored and exported
+    -- data includes both Agentless Discovery Connector data and summary data
+    -- from Application Discovery agents.
+    filters :: Prelude.Maybe [ExportFilter],
+    -- | The start timestamp for exported data from the single Application
+    -- Discovery Agent selected in the filters. If no value is specified, data
+    -- is exported starting from the first data collected by the agent.
+    startTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartExportTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'endTime', 'startExportTask_endTime' - The end timestamp for exported data from the single Application
+-- Discovery Agent selected in the filters. If no value is specified,
+-- exported data includes the most recent data collected by the agent.
+--
+-- 'exportDataFormat', 'startExportTask_exportDataFormat' - The file format for the returned export data. Default value is @CSV@.
+-- __Note:__ /The/ @GRAPHML@ /option has been deprecated./
+--
+-- 'filters', 'startExportTask_filters' - If a filter is present, it selects the single @agentId@ of the
+-- Application Discovery Agent for which data is exported. The @agentId@
+-- can be found in the results of the @DescribeAgents@ API or CLI. If no
+-- filter is present, @startTime@ and @endTime@ are ignored and exported
+-- data includes both Agentless Discovery Connector data and summary data
+-- from Application Discovery agents.
+--
+-- 'startTime', 'startExportTask_startTime' - The start timestamp for exported data from the single Application
+-- Discovery Agent selected in the filters. If no value is specified, data
+-- is exported starting from the first data collected by the agent.
+newStartExportTask ::
+  StartExportTask
+newStartExportTask =
+  StartExportTask'
+    { endTime = Prelude.Nothing,
+      exportDataFormat = Prelude.Nothing,
+      filters = Prelude.Nothing,
+      startTime = Prelude.Nothing
+    }
+
+-- | The end timestamp for exported data from the single Application
+-- Discovery Agent selected in the filters. If no value is specified,
+-- exported data includes the most recent data collected by the agent.
+startExportTask_endTime :: Lens.Lens' StartExportTask (Prelude.Maybe Prelude.UTCTime)
+startExportTask_endTime = Lens.lens (\StartExportTask' {endTime} -> endTime) (\s@StartExportTask' {} a -> s {endTime = a} :: StartExportTask) Prelude.. Lens.mapping Data._Time
+
+-- | The file format for the returned export data. Default value is @CSV@.
+-- __Note:__ /The/ @GRAPHML@ /option has been deprecated./
+startExportTask_exportDataFormat :: Lens.Lens' StartExportTask (Prelude.Maybe [ExportDataFormat])
+startExportTask_exportDataFormat = Lens.lens (\StartExportTask' {exportDataFormat} -> exportDataFormat) (\s@StartExportTask' {} a -> s {exportDataFormat = a} :: StartExportTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | If a filter is present, it selects the single @agentId@ of the
+-- Application Discovery Agent for which data is exported. The @agentId@
+-- can be found in the results of the @DescribeAgents@ API or CLI. If no
+-- filter is present, @startTime@ and @endTime@ are ignored and exported
+-- data includes both Agentless Discovery Connector data and summary data
+-- from Application Discovery agents.
+startExportTask_filters :: Lens.Lens' StartExportTask (Prelude.Maybe [ExportFilter])
+startExportTask_filters = Lens.lens (\StartExportTask' {filters} -> filters) (\s@StartExportTask' {} a -> s {filters = a} :: StartExportTask) Prelude.. Lens.mapping Lens.coerced
+
+-- | The start timestamp for exported data from the single Application
+-- Discovery Agent selected in the filters. If no value is specified, data
+-- is exported starting from the first data collected by the agent.
+startExportTask_startTime :: Lens.Lens' StartExportTask (Prelude.Maybe Prelude.UTCTime)
+startExportTask_startTime = Lens.lens (\StartExportTask' {startTime} -> startTime) (\s@StartExportTask' {} a -> s {startTime = a} :: StartExportTask) Prelude.. Lens.mapping Data._Time
+
+instance Core.AWSRequest StartExportTask where
+  type
+    AWSResponse StartExportTask =
+      StartExportTaskResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartExportTaskResponse'
+            Prelude.<$> (x Data..?> "exportId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartExportTask where
+  hashWithSalt _salt StartExportTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` exportDataFormat
+      `Prelude.hashWithSalt` filters
+      `Prelude.hashWithSalt` startTime
+
+instance Prelude.NFData StartExportTask where
+  rnf StartExportTask' {..} =
+    Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf exportDataFormat
+      `Prelude.seq` Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf startTime
+
+instance Data.ToHeaders StartExportTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.StartExportTask" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartExportTask where
+  toJSON StartExportTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("endTime" Data..=) Prelude.<$> endTime,
+            ("exportDataFormat" Data..=)
+              Prelude.<$> exportDataFormat,
+            ("filters" Data..=) Prelude.<$> filters,
+            ("startTime" Data..=) Prelude.<$> startTime
+          ]
+      )
+
+instance Data.ToPath StartExportTask where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartExportTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartExportTaskResponse' smart constructor.
+data StartExportTaskResponse = StartExportTaskResponse'
+  { -- | A unique identifier used to query the status of an export request.
+    exportId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartExportTaskResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportId', 'startExportTaskResponse_exportId' - A unique identifier used to query the status of an export request.
+--
+-- 'httpStatus', 'startExportTaskResponse_httpStatus' - The response's http status code.
+newStartExportTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartExportTaskResponse
+newStartExportTaskResponse pHttpStatus_ =
+  StartExportTaskResponse'
+    { exportId =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A unique identifier used to query the status of an export request.
+startExportTaskResponse_exportId :: Lens.Lens' StartExportTaskResponse (Prelude.Maybe Prelude.Text)
+startExportTaskResponse_exportId = Lens.lens (\StartExportTaskResponse' {exportId} -> exportId) (\s@StartExportTaskResponse' {} a -> s {exportId = a} :: StartExportTaskResponse)
+
+-- | The response's http status code.
+startExportTaskResponse_httpStatus :: Lens.Lens' StartExportTaskResponse Prelude.Int
+startExportTaskResponse_httpStatus = Lens.lens (\StartExportTaskResponse' {httpStatus} -> httpStatus) (\s@StartExportTaskResponse' {} a -> s {httpStatus = a} :: StartExportTaskResponse)
+
+instance Prelude.NFData StartExportTaskResponse where
+  rnf StartExportTaskResponse' {..} =
+    Prelude.rnf exportId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/StartImportTask.hs b/gen/Amazonka/Discovery/StartImportTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/StartImportTask.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.StartImportTask
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts an import task, which allows you to import details of your
+-- on-premises environment directly into Amazon Web Services Migration Hub
+-- without having to use the Application Discovery Service (ADS) tools such
+-- as the Discovery Connector or Discovery Agent. This gives you the option
+-- to perform migration assessment and planning directly from your imported
+-- data, including the ability to group your devices as applications and
+-- track their migration status.
+--
+-- To start an import request, do this:
+--
+-- 1.  Download the specially formatted comma separated value (CSV) import
+--     template, which you can find here:
+--     <https://s3.us-west-2.amazonaws.com/templates-7cffcf56-bd96-4b1c-b45b-a5b42f282e46/import_template.csv>.
+--
+-- 2.  Fill out the template with your server and application data.
+--
+-- 3.  Upload your import file to an Amazon S3 bucket, and make a note of
+--     it\'s Object URL. Your import file must be in the CSV format.
+--
+-- 4.  Use the console or the @StartImportTask@ command with the Amazon Web
+--     Services CLI or one of the Amazon Web Services SDKs to import the
+--     records from your file.
+--
+-- For more information, including step-by-step procedures, see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-import.html Migration Hub Import>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+--
+-- There are limits to the number of import tasks you can create (and
+-- delete) in an Amazon Web Services account. For more information, see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/ads_service_limits.html Amazon Web Services Application Discovery Service Limits>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+module Amazonka.Discovery.StartImportTask
+  ( -- * Creating a Request
+    StartImportTask (..),
+    newStartImportTask,
+
+    -- * Request Lenses
+    startImportTask_clientRequestToken,
+    startImportTask_name,
+    startImportTask_importUrl,
+
+    -- * Destructuring the Response
+    StartImportTaskResponse (..),
+    newStartImportTaskResponse,
+
+    -- * Response Lenses
+    startImportTaskResponse_task,
+    startImportTaskResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStartImportTask' smart constructor.
+data StartImportTask = StartImportTask'
+  { -- | Optional. A unique token that you can provide to prevent the same import
+    -- request from occurring more than once. If you don\'t provide a token, a
+    -- token is automatically generated.
+    --
+    -- Sending more than one @StartImportTask@ request with the same client
+    -- request token will return information about the original import task
+    -- with that client request token.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A descriptive name for this request. You can use this name to filter
+    -- future requests related to this import task, such as identifying
+    -- applications and servers that were included in this import task. We
+    -- recommend that you use a meaningful name for each import task.
+    name :: Prelude.Text,
+    -- | The URL for your import file that you\'ve uploaded to Amazon S3.
+    --
+    -- If you\'re using the Amazon Web Services CLI, this URL is structured as
+    -- follows: @s3:\/\/BucketName\/ImportFileName.CSV@
+    importUrl :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartImportTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientRequestToken', 'startImportTask_clientRequestToken' - Optional. A unique token that you can provide to prevent the same import
+-- request from occurring more than once. If you don\'t provide a token, a
+-- token is automatically generated.
+--
+-- Sending more than one @StartImportTask@ request with the same client
+-- request token will return information about the original import task
+-- with that client request token.
+--
+-- 'name', 'startImportTask_name' - A descriptive name for this request. You can use this name to filter
+-- future requests related to this import task, such as identifying
+-- applications and servers that were included in this import task. We
+-- recommend that you use a meaningful name for each import task.
+--
+-- 'importUrl', 'startImportTask_importUrl' - The URL for your import file that you\'ve uploaded to Amazon S3.
+--
+-- If you\'re using the Amazon Web Services CLI, this URL is structured as
+-- follows: @s3:\/\/BucketName\/ImportFileName.CSV@
+newStartImportTask ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'importUrl'
+  Prelude.Text ->
+  StartImportTask
+newStartImportTask pName_ pImportUrl_ =
+  StartImportTask'
+    { clientRequestToken =
+        Prelude.Nothing,
+      name = pName_,
+      importUrl = pImportUrl_
+    }
+
+-- | Optional. A unique token that you can provide to prevent the same import
+-- request from occurring more than once. If you don\'t provide a token, a
+-- token is automatically generated.
+--
+-- Sending more than one @StartImportTask@ request with the same client
+-- request token will return information about the original import task
+-- with that client request token.
+startImportTask_clientRequestToken :: Lens.Lens' StartImportTask (Prelude.Maybe Prelude.Text)
+startImportTask_clientRequestToken = Lens.lens (\StartImportTask' {clientRequestToken} -> clientRequestToken) (\s@StartImportTask' {} a -> s {clientRequestToken = a} :: StartImportTask)
+
+-- | A descriptive name for this request. You can use this name to filter
+-- future requests related to this import task, such as identifying
+-- applications and servers that were included in this import task. We
+-- recommend that you use a meaningful name for each import task.
+startImportTask_name :: Lens.Lens' StartImportTask Prelude.Text
+startImportTask_name = Lens.lens (\StartImportTask' {name} -> name) (\s@StartImportTask' {} a -> s {name = a} :: StartImportTask)
+
+-- | The URL for your import file that you\'ve uploaded to Amazon S3.
+--
+-- If you\'re using the Amazon Web Services CLI, this URL is structured as
+-- follows: @s3:\/\/BucketName\/ImportFileName.CSV@
+startImportTask_importUrl :: Lens.Lens' StartImportTask Prelude.Text
+startImportTask_importUrl = Lens.lens (\StartImportTask' {importUrl} -> importUrl) (\s@StartImportTask' {} a -> s {importUrl = a} :: StartImportTask)
+
+instance Core.AWSRequest StartImportTask where
+  type
+    AWSResponse StartImportTask =
+      StartImportTaskResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartImportTaskResponse'
+            Prelude.<$> (x Data..?> "task")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StartImportTask where
+  hashWithSalt _salt StartImportTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` importUrl
+
+instance Prelude.NFData StartImportTask where
+  rnf StartImportTask' {..} =
+    Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf importUrl
+
+instance Data.ToHeaders StartImportTask where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.StartImportTask" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartImportTask where
+  toJSON StartImportTask' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("clientRequestToken" Data..=)
+              Prelude.<$> clientRequestToken,
+            Prelude.Just ("name" Data..= name),
+            Prelude.Just ("importUrl" Data..= importUrl)
+          ]
+      )
+
+instance Data.ToPath StartImportTask where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartImportTask where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStartImportTaskResponse' smart constructor.
+data StartImportTaskResponse = StartImportTaskResponse'
+  { -- | An array of information related to the import task request including
+    -- status information, times, IDs, the Amazon S3 Object URL for the import
+    -- file, and more.
+    task :: Prelude.Maybe ImportTask,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StartImportTaskResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'task', 'startImportTaskResponse_task' - An array of information related to the import task request including
+-- status information, times, IDs, the Amazon S3 Object URL for the import
+-- file, and more.
+--
+-- 'httpStatus', 'startImportTaskResponse_httpStatus' - The response's http status code.
+newStartImportTaskResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StartImportTaskResponse
+newStartImportTaskResponse pHttpStatus_ =
+  StartImportTaskResponse'
+    { task = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | An array of information related to the import task request including
+-- status information, times, IDs, the Amazon S3 Object URL for the import
+-- file, and more.
+startImportTaskResponse_task :: Lens.Lens' StartImportTaskResponse (Prelude.Maybe ImportTask)
+startImportTaskResponse_task = Lens.lens (\StartImportTaskResponse' {task} -> task) (\s@StartImportTaskResponse' {} a -> s {task = a} :: StartImportTaskResponse)
+
+-- | The response's http status code.
+startImportTaskResponse_httpStatus :: Lens.Lens' StartImportTaskResponse Prelude.Int
+startImportTaskResponse_httpStatus = Lens.lens (\StartImportTaskResponse' {httpStatus} -> httpStatus) (\s@StartImportTaskResponse' {} a -> s {httpStatus = a} :: StartImportTaskResponse)
+
+instance Prelude.NFData StartImportTaskResponse where
+  rnf StartImportTaskResponse' {..} =
+    Prelude.rnf task
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/StopContinuousExport.hs b/gen/Amazonka/Discovery/StopContinuousExport.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/StopContinuousExport.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.StopContinuousExport
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Stop the continuous flow of agent\'s discovered data into Amazon Athena.
+module Amazonka.Discovery.StopContinuousExport
+  ( -- * Creating a Request
+    StopContinuousExport (..),
+    newStopContinuousExport,
+
+    -- * Request Lenses
+    stopContinuousExport_exportId,
+
+    -- * Destructuring the Response
+    StopContinuousExportResponse (..),
+    newStopContinuousExportResponse,
+
+    -- * Response Lenses
+    stopContinuousExportResponse_startTime,
+    stopContinuousExportResponse_stopTime,
+    stopContinuousExportResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopContinuousExport' smart constructor.
+data StopContinuousExport = StopContinuousExport'
+  { -- | The unique ID assigned to this export.
+    exportId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopContinuousExport' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'exportId', 'stopContinuousExport_exportId' - The unique ID assigned to this export.
+newStopContinuousExport ::
+  -- | 'exportId'
+  Prelude.Text ->
+  StopContinuousExport
+newStopContinuousExport pExportId_ =
+  StopContinuousExport' {exportId = pExportId_}
+
+-- | The unique ID assigned to this export.
+stopContinuousExport_exportId :: Lens.Lens' StopContinuousExport Prelude.Text
+stopContinuousExport_exportId = Lens.lens (\StopContinuousExport' {exportId} -> exportId) (\s@StopContinuousExport' {} a -> s {exportId = a} :: StopContinuousExport)
+
+instance Core.AWSRequest StopContinuousExport where
+  type
+    AWSResponse StopContinuousExport =
+      StopContinuousExportResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopContinuousExportResponse'
+            Prelude.<$> (x Data..?> "startTime")
+            Prelude.<*> (x Data..?> "stopTime")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable StopContinuousExport where
+  hashWithSalt _salt StopContinuousExport' {..} =
+    _salt `Prelude.hashWithSalt` exportId
+
+instance Prelude.NFData StopContinuousExport where
+  rnf StopContinuousExport' {..} = Prelude.rnf exportId
+
+instance Data.ToHeaders StopContinuousExport where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.StopContinuousExport" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopContinuousExport where
+  toJSON StopContinuousExport' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("exportId" Data..= exportId)]
+      )
+
+instance Data.ToPath StopContinuousExport where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopContinuousExport where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopContinuousExportResponse' smart constructor.
+data StopContinuousExportResponse = StopContinuousExportResponse'
+  { -- | Timestamp that represents when this continuous export started collecting
+    -- data.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | Timestamp that represents when this continuous export was stopped.
+    stopTime :: Prelude.Maybe Data.POSIX,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopContinuousExportResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'startTime', 'stopContinuousExportResponse_startTime' - Timestamp that represents when this continuous export started collecting
+-- data.
+--
+-- 'stopTime', 'stopContinuousExportResponse_stopTime' - Timestamp that represents when this continuous export was stopped.
+--
+-- 'httpStatus', 'stopContinuousExportResponse_httpStatus' - The response's http status code.
+newStopContinuousExportResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopContinuousExportResponse
+newStopContinuousExportResponse pHttpStatus_ =
+  StopContinuousExportResponse'
+    { startTime =
+        Prelude.Nothing,
+      stopTime = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Timestamp that represents when this continuous export started collecting
+-- data.
+stopContinuousExportResponse_startTime :: Lens.Lens' StopContinuousExportResponse (Prelude.Maybe Prelude.UTCTime)
+stopContinuousExportResponse_startTime = Lens.lens (\StopContinuousExportResponse' {startTime} -> startTime) (\s@StopContinuousExportResponse' {} a -> s {startTime = a} :: StopContinuousExportResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Timestamp that represents when this continuous export was stopped.
+stopContinuousExportResponse_stopTime :: Lens.Lens' StopContinuousExportResponse (Prelude.Maybe Prelude.UTCTime)
+stopContinuousExportResponse_stopTime = Lens.lens (\StopContinuousExportResponse' {stopTime} -> stopTime) (\s@StopContinuousExportResponse' {} a -> s {stopTime = a} :: StopContinuousExportResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The response's http status code.
+stopContinuousExportResponse_httpStatus :: Lens.Lens' StopContinuousExportResponse Prelude.Int
+stopContinuousExportResponse_httpStatus = Lens.lens (\StopContinuousExportResponse' {httpStatus} -> httpStatus) (\s@StopContinuousExportResponse' {} a -> s {httpStatus = a} :: StopContinuousExportResponse)
+
+instance Prelude.NFData StopContinuousExportResponse where
+  rnf StopContinuousExportResponse' {..} =
+    Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf stopTime
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/StopDataCollectionByAgentIds.hs b/gen/Amazonka/Discovery/StopDataCollectionByAgentIds.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/StopDataCollectionByAgentIds.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.StopDataCollectionByAgentIds
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Instructs the specified agents or connectors to stop collecting data.
+module Amazonka.Discovery.StopDataCollectionByAgentIds
+  ( -- * Creating a Request
+    StopDataCollectionByAgentIds (..),
+    newStopDataCollectionByAgentIds,
+
+    -- * Request Lenses
+    stopDataCollectionByAgentIds_agentIds,
+
+    -- * Destructuring the Response
+    StopDataCollectionByAgentIdsResponse (..),
+    newStopDataCollectionByAgentIdsResponse,
+
+    -- * Response Lenses
+    stopDataCollectionByAgentIdsResponse_agentsConfigurationStatus,
+    stopDataCollectionByAgentIdsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newStopDataCollectionByAgentIds' smart constructor.
+data StopDataCollectionByAgentIds = StopDataCollectionByAgentIds'
+  { -- | The IDs of the agents or connectors from which to stop collecting data.
+    agentIds :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopDataCollectionByAgentIds' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentIds', 'stopDataCollectionByAgentIds_agentIds' - The IDs of the agents or connectors from which to stop collecting data.
+newStopDataCollectionByAgentIds ::
+  StopDataCollectionByAgentIds
+newStopDataCollectionByAgentIds =
+  StopDataCollectionByAgentIds'
+    { agentIds =
+        Prelude.mempty
+    }
+
+-- | The IDs of the agents or connectors from which to stop collecting data.
+stopDataCollectionByAgentIds_agentIds :: Lens.Lens' StopDataCollectionByAgentIds [Prelude.Text]
+stopDataCollectionByAgentIds_agentIds = Lens.lens (\StopDataCollectionByAgentIds' {agentIds} -> agentIds) (\s@StopDataCollectionByAgentIds' {} a -> s {agentIds = a} :: StopDataCollectionByAgentIds) Prelude.. Lens.coerced
+
+instance Core.AWSRequest StopDataCollectionByAgentIds where
+  type
+    AWSResponse StopDataCollectionByAgentIds =
+      StopDataCollectionByAgentIdsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StopDataCollectionByAgentIdsResponse'
+            Prelude.<$> ( x
+                            Data..?> "agentsConfigurationStatus"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    StopDataCollectionByAgentIds
+  where
+  hashWithSalt _salt StopDataCollectionByAgentIds' {..} =
+    _salt `Prelude.hashWithSalt` agentIds
+
+instance Prelude.NFData StopDataCollectionByAgentIds where
+  rnf StopDataCollectionByAgentIds' {..} =
+    Prelude.rnf agentIds
+
+instance Data.ToHeaders StopDataCollectionByAgentIds where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.StopDataCollectionByAgentIds" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StopDataCollectionByAgentIds where
+  toJSON StopDataCollectionByAgentIds' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("agentIds" Data..= agentIds)]
+      )
+
+instance Data.ToPath StopDataCollectionByAgentIds where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StopDataCollectionByAgentIds where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newStopDataCollectionByAgentIdsResponse' smart constructor.
+data StopDataCollectionByAgentIdsResponse = StopDataCollectionByAgentIdsResponse'
+  { -- | Information about the agents or connector that were instructed to stop
+    -- collecting data. Information includes the agent\/connector ID, a
+    -- description of the operation performed, and whether the agent\/connector
+    -- configuration was updated.
+    agentsConfigurationStatus :: Prelude.Maybe [AgentConfigurationStatus],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopDataCollectionByAgentIdsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentsConfigurationStatus', 'stopDataCollectionByAgentIdsResponse_agentsConfigurationStatus' - Information about the agents or connector that were instructed to stop
+-- collecting data. Information includes the agent\/connector ID, a
+-- description of the operation performed, and whether the agent\/connector
+-- configuration was updated.
+--
+-- 'httpStatus', 'stopDataCollectionByAgentIdsResponse_httpStatus' - The response's http status code.
+newStopDataCollectionByAgentIdsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  StopDataCollectionByAgentIdsResponse
+newStopDataCollectionByAgentIdsResponse pHttpStatus_ =
+  StopDataCollectionByAgentIdsResponse'
+    { agentsConfigurationStatus =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the agents or connector that were instructed to stop
+-- collecting data. Information includes the agent\/connector ID, a
+-- description of the operation performed, and whether the agent\/connector
+-- configuration was updated.
+stopDataCollectionByAgentIdsResponse_agentsConfigurationStatus :: Lens.Lens' StopDataCollectionByAgentIdsResponse (Prelude.Maybe [AgentConfigurationStatus])
+stopDataCollectionByAgentIdsResponse_agentsConfigurationStatus = Lens.lens (\StopDataCollectionByAgentIdsResponse' {agentsConfigurationStatus} -> agentsConfigurationStatus) (\s@StopDataCollectionByAgentIdsResponse' {} a -> s {agentsConfigurationStatus = a} :: StopDataCollectionByAgentIdsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+stopDataCollectionByAgentIdsResponse_httpStatus :: Lens.Lens' StopDataCollectionByAgentIdsResponse Prelude.Int
+stopDataCollectionByAgentIdsResponse_httpStatus = Lens.lens (\StopDataCollectionByAgentIdsResponse' {httpStatus} -> httpStatus) (\s@StopDataCollectionByAgentIdsResponse' {} a -> s {httpStatus = a} :: StopDataCollectionByAgentIdsResponse)
+
+instance
+  Prelude.NFData
+    StopDataCollectionByAgentIdsResponse
+  where
+  rnf StopDataCollectionByAgentIdsResponse' {..} =
+    Prelude.rnf agentsConfigurationStatus
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/Types.hs b/gen/Amazonka/Discovery/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types.hs
@@ -0,0 +1,410 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AuthorizationErrorException,
+    _ConflictErrorException,
+    _HomeRegionNotSetException,
+    _InvalidParameterException,
+    _InvalidParameterValueException,
+    _OperationNotPermittedException,
+    _ResourceInUseException,
+    _ResourceNotFoundException,
+    _ServerInternalErrorException,
+
+    -- * AgentStatus
+    AgentStatus (..),
+
+    -- * BatchDeleteImportDataErrorCode
+    BatchDeleteImportDataErrorCode (..),
+
+    -- * ConfigurationItemType
+    ConfigurationItemType (..),
+
+    -- * ContinuousExportStatus
+    ContinuousExportStatus (..),
+
+    -- * DataSource
+    DataSource (..),
+
+    -- * ExportDataFormat
+    ExportDataFormat (..),
+
+    -- * ExportStatus
+    ExportStatus (..),
+
+    -- * ImportStatus
+    ImportStatus (..),
+
+    -- * ImportTaskFilterName
+    ImportTaskFilterName (..),
+
+    -- * OrderString
+    OrderString (..),
+
+    -- * AgentConfigurationStatus
+    AgentConfigurationStatus (..),
+    newAgentConfigurationStatus,
+    agentConfigurationStatus_agentId,
+    agentConfigurationStatus_description,
+    agentConfigurationStatus_operationSucceeded,
+
+    -- * AgentInfo
+    AgentInfo (..),
+    newAgentInfo,
+    agentInfo_agentId,
+    agentInfo_agentNetworkInfoList,
+    agentInfo_agentType,
+    agentInfo_collectionStatus,
+    agentInfo_connectorId,
+    agentInfo_health,
+    agentInfo_hostName,
+    agentInfo_lastHealthPingTime,
+    agentInfo_registeredTime,
+    agentInfo_version,
+
+    -- * AgentNetworkInfo
+    AgentNetworkInfo (..),
+    newAgentNetworkInfo,
+    agentNetworkInfo_ipAddress,
+    agentNetworkInfo_macAddress,
+
+    -- * BatchDeleteImportDataError
+    BatchDeleteImportDataError (..),
+    newBatchDeleteImportDataError,
+    batchDeleteImportDataError_errorCode,
+    batchDeleteImportDataError_errorDescription,
+    batchDeleteImportDataError_importTaskId,
+
+    -- * ConfigurationTag
+    ConfigurationTag (..),
+    newConfigurationTag,
+    configurationTag_configurationId,
+    configurationTag_configurationType,
+    configurationTag_key,
+    configurationTag_timeOfCreation,
+    configurationTag_value,
+
+    -- * ContinuousExportDescription
+    ContinuousExportDescription (..),
+    newContinuousExportDescription,
+    continuousExportDescription_dataSource,
+    continuousExportDescription_exportId,
+    continuousExportDescription_s3Bucket,
+    continuousExportDescription_schemaStorageConfig,
+    continuousExportDescription_startTime,
+    continuousExportDescription_status,
+    continuousExportDescription_statusDetail,
+    continuousExportDescription_stopTime,
+
+    -- * CustomerAgentInfo
+    CustomerAgentInfo (..),
+    newCustomerAgentInfo,
+    customerAgentInfo_activeAgents,
+    customerAgentInfo_healthyAgents,
+    customerAgentInfo_blackListedAgents,
+    customerAgentInfo_shutdownAgents,
+    customerAgentInfo_unhealthyAgents,
+    customerAgentInfo_totalAgents,
+    customerAgentInfo_unknownAgents,
+
+    -- * CustomerAgentlessCollectorInfo
+    CustomerAgentlessCollectorInfo (..),
+    newCustomerAgentlessCollectorInfo,
+    customerAgentlessCollectorInfo_activeAgentlessCollectors,
+    customerAgentlessCollectorInfo_healthyAgentlessCollectors,
+    customerAgentlessCollectorInfo_denyListedAgentlessCollectors,
+    customerAgentlessCollectorInfo_shutdownAgentlessCollectors,
+    customerAgentlessCollectorInfo_unhealthyAgentlessCollectors,
+    customerAgentlessCollectorInfo_totalAgentlessCollectors,
+    customerAgentlessCollectorInfo_unknownAgentlessCollectors,
+
+    -- * CustomerConnectorInfo
+    CustomerConnectorInfo (..),
+    newCustomerConnectorInfo,
+    customerConnectorInfo_activeConnectors,
+    customerConnectorInfo_healthyConnectors,
+    customerConnectorInfo_blackListedConnectors,
+    customerConnectorInfo_shutdownConnectors,
+    customerConnectorInfo_unhealthyConnectors,
+    customerConnectorInfo_totalConnectors,
+    customerConnectorInfo_unknownConnectors,
+
+    -- * CustomerMeCollectorInfo
+    CustomerMeCollectorInfo (..),
+    newCustomerMeCollectorInfo,
+    customerMeCollectorInfo_activeMeCollectors,
+    customerMeCollectorInfo_healthyMeCollectors,
+    customerMeCollectorInfo_denyListedMeCollectors,
+    customerMeCollectorInfo_shutdownMeCollectors,
+    customerMeCollectorInfo_unhealthyMeCollectors,
+    customerMeCollectorInfo_totalMeCollectors,
+    customerMeCollectorInfo_unknownMeCollectors,
+
+    -- * ExportFilter
+    ExportFilter (..),
+    newExportFilter,
+    exportFilter_name,
+    exportFilter_values,
+    exportFilter_condition,
+
+    -- * ExportInfo
+    ExportInfo (..),
+    newExportInfo,
+    exportInfo_configurationsDownloadUrl,
+    exportInfo_isTruncated,
+    exportInfo_requestedEndTime,
+    exportInfo_requestedStartTime,
+    exportInfo_exportId,
+    exportInfo_exportStatus,
+    exportInfo_statusMessage,
+    exportInfo_exportRequestTime,
+
+    -- * Filter
+    Filter (..),
+    newFilter,
+    filter_name,
+    filter_values,
+    filter_condition,
+
+    -- * ImportTask
+    ImportTask (..),
+    newImportTask,
+    importTask_applicationImportFailure,
+    importTask_applicationImportSuccess,
+    importTask_clientRequestToken,
+    importTask_errorsAndFailedEntriesZip,
+    importTask_importCompletionTime,
+    importTask_importDeletedTime,
+    importTask_importRequestTime,
+    importTask_importTaskId,
+    importTask_importUrl,
+    importTask_name,
+    importTask_serverImportFailure,
+    importTask_serverImportSuccess,
+    importTask_status,
+
+    -- * ImportTaskFilter
+    ImportTaskFilter (..),
+    newImportTaskFilter,
+    importTaskFilter_name,
+    importTaskFilter_values,
+
+    -- * NeighborConnectionDetail
+    NeighborConnectionDetail (..),
+    newNeighborConnectionDetail,
+    neighborConnectionDetail_destinationPort,
+    neighborConnectionDetail_transportProtocol,
+    neighborConnectionDetail_sourceServerId,
+    neighborConnectionDetail_destinationServerId,
+    neighborConnectionDetail_connectionsCount,
+
+    -- * OrderByElement
+    OrderByElement (..),
+    newOrderByElement,
+    orderByElement_sortOrder,
+    orderByElement_fieldName,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+
+    -- * TagFilter
+    TagFilter (..),
+    newTagFilter,
+    tagFilter_name,
+    tagFilter_values,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.Discovery.Types.AgentConfigurationStatus
+import Amazonka.Discovery.Types.AgentInfo
+import Amazonka.Discovery.Types.AgentNetworkInfo
+import Amazonka.Discovery.Types.AgentStatus
+import Amazonka.Discovery.Types.BatchDeleteImportDataError
+import Amazonka.Discovery.Types.BatchDeleteImportDataErrorCode
+import Amazonka.Discovery.Types.ConfigurationItemType
+import Amazonka.Discovery.Types.ConfigurationTag
+import Amazonka.Discovery.Types.ContinuousExportDescription
+import Amazonka.Discovery.Types.ContinuousExportStatus
+import Amazonka.Discovery.Types.CustomerAgentInfo
+import Amazonka.Discovery.Types.CustomerAgentlessCollectorInfo
+import Amazonka.Discovery.Types.CustomerConnectorInfo
+import Amazonka.Discovery.Types.CustomerMeCollectorInfo
+import Amazonka.Discovery.Types.DataSource
+import Amazonka.Discovery.Types.ExportDataFormat
+import Amazonka.Discovery.Types.ExportFilter
+import Amazonka.Discovery.Types.ExportInfo
+import Amazonka.Discovery.Types.ExportStatus
+import Amazonka.Discovery.Types.Filter
+import Amazonka.Discovery.Types.ImportStatus
+import Amazonka.Discovery.Types.ImportTask
+import Amazonka.Discovery.Types.ImportTaskFilter
+import Amazonka.Discovery.Types.ImportTaskFilterName
+import Amazonka.Discovery.Types.NeighborConnectionDetail
+import Amazonka.Discovery.Types.OrderByElement
+import Amazonka.Discovery.Types.OrderString
+import Amazonka.Discovery.Types.Tag
+import Amazonka.Discovery.Types.TagFilter
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2015-11-01@ of the Amazon Application Discovery Service SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "Discovery",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "discovery",
+      Core.signingName = "discovery",
+      Core.version = "2015-11-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "Discovery",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | The Amazon Web Services user account does not have permission to perform
+-- the action. Check the IAM policy associated with this account.
+_AuthorizationErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AuthorizationErrorException =
+  Core._MatchServiceError
+    defaultService
+    "AuthorizationErrorException"
+
+_ConflictErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictErrorException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictErrorException"
+
+-- | The home region is not set. Set the home region to continue.
+_HomeRegionNotSetException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_HomeRegionNotSetException =
+  Core._MatchServiceError
+    defaultService
+    "HomeRegionNotSetException"
+
+-- | One or more parameters are not valid. Verify the parameters and try
+-- again.
+_InvalidParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidParameterException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidParameterException"
+
+-- | The value of one or more parameters are either invalid or out of range.
+-- Verify the parameter values and try again.
+_InvalidParameterValueException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidParameterValueException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidParameterValueException"
+
+-- | This operation is not permitted.
+_OperationNotPermittedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_OperationNotPermittedException =
+  Core._MatchServiceError
+    defaultService
+    "OperationNotPermittedException"
+
+-- | This issue occurs when the same @clientRequestToken@ is used with the
+-- @StartImportTask@ action, but with different parameters. For example,
+-- you use the same request token but have two different import URLs, you
+-- can encounter this issue. If the import tasks are meant to be different,
+-- use a different @clientRequestToken@, and try again.
+_ResourceInUseException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceInUseException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceInUseException"
+
+-- | The specified configuration ID was not located. Verify the configuration
+-- ID and try again.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+
+-- | The server experienced an internal error. Try again.
+_ServerInternalErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServerInternalErrorException =
+  Core._MatchServiceError
+    defaultService
+    "ServerInternalErrorException"
diff --git a/gen/Amazonka/Discovery/Types/AgentConfigurationStatus.hs b/gen/Amazonka/Discovery/Types/AgentConfigurationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/AgentConfigurationStatus.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.AgentConfigurationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.AgentConfigurationStatus where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about agents or connectors that were instructed to start
+-- collecting data. Information includes the agent\/connector ID, a
+-- description of the operation, and whether the agent\/connector
+-- configuration was updated.
+--
+-- /See:/ 'newAgentConfigurationStatus' smart constructor.
+data AgentConfigurationStatus = AgentConfigurationStatus'
+  { -- | The agent\/connector ID.
+    agentId :: Prelude.Maybe Prelude.Text,
+    -- | A description of the operation performed.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | Information about the status of the @StartDataCollection@ and
+    -- @StopDataCollection@ operations. The system has recorded the data
+    -- collection operation. The agent\/connector receives this command the
+    -- next time it polls for a new command.
+    operationSucceeded :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AgentConfigurationStatus' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentId', 'agentConfigurationStatus_agentId' - The agent\/connector ID.
+--
+-- 'description', 'agentConfigurationStatus_description' - A description of the operation performed.
+--
+-- 'operationSucceeded', 'agentConfigurationStatus_operationSucceeded' - Information about the status of the @StartDataCollection@ and
+-- @StopDataCollection@ operations. The system has recorded the data
+-- collection operation. The agent\/connector receives this command the
+-- next time it polls for a new command.
+newAgentConfigurationStatus ::
+  AgentConfigurationStatus
+newAgentConfigurationStatus =
+  AgentConfigurationStatus'
+    { agentId =
+        Prelude.Nothing,
+      description = Prelude.Nothing,
+      operationSucceeded = Prelude.Nothing
+    }
+
+-- | The agent\/connector ID.
+agentConfigurationStatus_agentId :: Lens.Lens' AgentConfigurationStatus (Prelude.Maybe Prelude.Text)
+agentConfigurationStatus_agentId = Lens.lens (\AgentConfigurationStatus' {agentId} -> agentId) (\s@AgentConfigurationStatus' {} a -> s {agentId = a} :: AgentConfigurationStatus)
+
+-- | A description of the operation performed.
+agentConfigurationStatus_description :: Lens.Lens' AgentConfigurationStatus (Prelude.Maybe Prelude.Text)
+agentConfigurationStatus_description = Lens.lens (\AgentConfigurationStatus' {description} -> description) (\s@AgentConfigurationStatus' {} a -> s {description = a} :: AgentConfigurationStatus)
+
+-- | Information about the status of the @StartDataCollection@ and
+-- @StopDataCollection@ operations. The system has recorded the data
+-- collection operation. The agent\/connector receives this command the
+-- next time it polls for a new command.
+agentConfigurationStatus_operationSucceeded :: Lens.Lens' AgentConfigurationStatus (Prelude.Maybe Prelude.Bool)
+agentConfigurationStatus_operationSucceeded = Lens.lens (\AgentConfigurationStatus' {operationSucceeded} -> operationSucceeded) (\s@AgentConfigurationStatus' {} a -> s {operationSucceeded = a} :: AgentConfigurationStatus)
+
+instance Data.FromJSON AgentConfigurationStatus where
+  parseJSON =
+    Data.withObject
+      "AgentConfigurationStatus"
+      ( \x ->
+          AgentConfigurationStatus'
+            Prelude.<$> (x Data..:? "agentId")
+            Prelude.<*> (x Data..:? "description")
+            Prelude.<*> (x Data..:? "operationSucceeded")
+      )
+
+instance Prelude.Hashable AgentConfigurationStatus where
+  hashWithSalt _salt AgentConfigurationStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` agentId
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` operationSucceeded
+
+instance Prelude.NFData AgentConfigurationStatus where
+  rnf AgentConfigurationStatus' {..} =
+    Prelude.rnf agentId
+      `Prelude.seq` Prelude.rnf description
+      `Prelude.seq` Prelude.rnf operationSucceeded
diff --git a/gen/Amazonka/Discovery/Types/AgentInfo.hs b/gen/Amazonka/Discovery/Types/AgentInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/AgentInfo.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.AgentInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.AgentInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.AgentNetworkInfo
+import Amazonka.Discovery.Types.AgentStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information about agents or connectors associated with the user’s Amazon
+-- Web Services account. Information includes agent or connector IDs, IP
+-- addresses, media access control (MAC) addresses, agent or connector
+-- health, hostname where the agent or connector resides, and agent version
+-- for each agent.
+--
+-- /See:/ 'newAgentInfo' smart constructor.
+data AgentInfo = AgentInfo'
+  { -- | The agent or connector ID.
+    agentId :: Prelude.Maybe Prelude.Text,
+    -- | Network details about the host where the agent or connector resides.
+    agentNetworkInfoList :: Prelude.Maybe [AgentNetworkInfo],
+    -- | Type of agent.
+    agentType :: Prelude.Maybe Prelude.Text,
+    -- | Status of the collection process for an agent or connector.
+    collectionStatus :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the connector.
+    connectorId :: Prelude.Maybe Prelude.Text,
+    -- | The health of the agent or connector.
+    health :: Prelude.Maybe AgentStatus,
+    -- | The name of the host where the agent or connector resides. The host can
+    -- be a server or virtual machine.
+    hostName :: Prelude.Maybe Prelude.Text,
+    -- | Time since agent or connector health was reported.
+    lastHealthPingTime :: Prelude.Maybe Prelude.Text,
+    -- | Agent\'s first registration timestamp in UTC.
+    registeredTime :: Prelude.Maybe Prelude.Text,
+    -- | The agent or connector version.
+    version :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AgentInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'agentId', 'agentInfo_agentId' - The agent or connector ID.
+--
+-- 'agentNetworkInfoList', 'agentInfo_agentNetworkInfoList' - Network details about the host where the agent or connector resides.
+--
+-- 'agentType', 'agentInfo_agentType' - Type of agent.
+--
+-- 'collectionStatus', 'agentInfo_collectionStatus' - Status of the collection process for an agent or connector.
+--
+-- 'connectorId', 'agentInfo_connectorId' - The ID of the connector.
+--
+-- 'health', 'agentInfo_health' - The health of the agent or connector.
+--
+-- 'hostName', 'agentInfo_hostName' - The name of the host where the agent or connector resides. The host can
+-- be a server or virtual machine.
+--
+-- 'lastHealthPingTime', 'agentInfo_lastHealthPingTime' - Time since agent or connector health was reported.
+--
+-- 'registeredTime', 'agentInfo_registeredTime' - Agent\'s first registration timestamp in UTC.
+--
+-- 'version', 'agentInfo_version' - The agent or connector version.
+newAgentInfo ::
+  AgentInfo
+newAgentInfo =
+  AgentInfo'
+    { agentId = Prelude.Nothing,
+      agentNetworkInfoList = Prelude.Nothing,
+      agentType = Prelude.Nothing,
+      collectionStatus = Prelude.Nothing,
+      connectorId = Prelude.Nothing,
+      health = Prelude.Nothing,
+      hostName = Prelude.Nothing,
+      lastHealthPingTime = Prelude.Nothing,
+      registeredTime = Prelude.Nothing,
+      version = Prelude.Nothing
+    }
+
+-- | The agent or connector ID.
+agentInfo_agentId :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_agentId = Lens.lens (\AgentInfo' {agentId} -> agentId) (\s@AgentInfo' {} a -> s {agentId = a} :: AgentInfo)
+
+-- | Network details about the host where the agent or connector resides.
+agentInfo_agentNetworkInfoList :: Lens.Lens' AgentInfo (Prelude.Maybe [AgentNetworkInfo])
+agentInfo_agentNetworkInfoList = Lens.lens (\AgentInfo' {agentNetworkInfoList} -> agentNetworkInfoList) (\s@AgentInfo' {} a -> s {agentNetworkInfoList = a} :: AgentInfo) Prelude.. Lens.mapping Lens.coerced
+
+-- | Type of agent.
+agentInfo_agentType :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_agentType = Lens.lens (\AgentInfo' {agentType} -> agentType) (\s@AgentInfo' {} a -> s {agentType = a} :: AgentInfo)
+
+-- | Status of the collection process for an agent or connector.
+agentInfo_collectionStatus :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_collectionStatus = Lens.lens (\AgentInfo' {collectionStatus} -> collectionStatus) (\s@AgentInfo' {} a -> s {collectionStatus = a} :: AgentInfo)
+
+-- | The ID of the connector.
+agentInfo_connectorId :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_connectorId = Lens.lens (\AgentInfo' {connectorId} -> connectorId) (\s@AgentInfo' {} a -> s {connectorId = a} :: AgentInfo)
+
+-- | The health of the agent or connector.
+agentInfo_health :: Lens.Lens' AgentInfo (Prelude.Maybe AgentStatus)
+agentInfo_health = Lens.lens (\AgentInfo' {health} -> health) (\s@AgentInfo' {} a -> s {health = a} :: AgentInfo)
+
+-- | The name of the host where the agent or connector resides. The host can
+-- be a server or virtual machine.
+agentInfo_hostName :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_hostName = Lens.lens (\AgentInfo' {hostName} -> hostName) (\s@AgentInfo' {} a -> s {hostName = a} :: AgentInfo)
+
+-- | Time since agent or connector health was reported.
+agentInfo_lastHealthPingTime :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_lastHealthPingTime = Lens.lens (\AgentInfo' {lastHealthPingTime} -> lastHealthPingTime) (\s@AgentInfo' {} a -> s {lastHealthPingTime = a} :: AgentInfo)
+
+-- | Agent\'s first registration timestamp in UTC.
+agentInfo_registeredTime :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_registeredTime = Lens.lens (\AgentInfo' {registeredTime} -> registeredTime) (\s@AgentInfo' {} a -> s {registeredTime = a} :: AgentInfo)
+
+-- | The agent or connector version.
+agentInfo_version :: Lens.Lens' AgentInfo (Prelude.Maybe Prelude.Text)
+agentInfo_version = Lens.lens (\AgentInfo' {version} -> version) (\s@AgentInfo' {} a -> s {version = a} :: AgentInfo)
+
+instance Data.FromJSON AgentInfo where
+  parseJSON =
+    Data.withObject
+      "AgentInfo"
+      ( \x ->
+          AgentInfo'
+            Prelude.<$> (x Data..:? "agentId")
+            Prelude.<*> ( x
+                            Data..:? "agentNetworkInfoList"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "agentType")
+            Prelude.<*> (x Data..:? "collectionStatus")
+            Prelude.<*> (x Data..:? "connectorId")
+            Prelude.<*> (x Data..:? "health")
+            Prelude.<*> (x Data..:? "hostName")
+            Prelude.<*> (x Data..:? "lastHealthPingTime")
+            Prelude.<*> (x Data..:? "registeredTime")
+            Prelude.<*> (x Data..:? "version")
+      )
+
+instance Prelude.Hashable AgentInfo where
+  hashWithSalt _salt AgentInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` agentId
+      `Prelude.hashWithSalt` agentNetworkInfoList
+      `Prelude.hashWithSalt` agentType
+      `Prelude.hashWithSalt` collectionStatus
+      `Prelude.hashWithSalt` connectorId
+      `Prelude.hashWithSalt` health
+      `Prelude.hashWithSalt` hostName
+      `Prelude.hashWithSalt` lastHealthPingTime
+      `Prelude.hashWithSalt` registeredTime
+      `Prelude.hashWithSalt` version
+
+instance Prelude.NFData AgentInfo where
+  rnf AgentInfo' {..} =
+    Prelude.rnf agentId
+      `Prelude.seq` Prelude.rnf agentNetworkInfoList
+      `Prelude.seq` Prelude.rnf agentType
+      `Prelude.seq` Prelude.rnf collectionStatus
+      `Prelude.seq` Prelude.rnf connectorId
+      `Prelude.seq` Prelude.rnf health
+      `Prelude.seq` Prelude.rnf hostName
+      `Prelude.seq` Prelude.rnf lastHealthPingTime
+      `Prelude.seq` Prelude.rnf registeredTime
+      `Prelude.seq` Prelude.rnf version
diff --git a/gen/Amazonka/Discovery/Types/AgentNetworkInfo.hs b/gen/Amazonka/Discovery/Types/AgentNetworkInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/AgentNetworkInfo.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.AgentNetworkInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.AgentNetworkInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Network details about the host where the agent\/connector resides.
+--
+-- /See:/ 'newAgentNetworkInfo' smart constructor.
+data AgentNetworkInfo = AgentNetworkInfo'
+  { -- | The IP address for the host where the agent\/connector resides.
+    ipAddress :: Prelude.Maybe Prelude.Text,
+    -- | The MAC address for the host where the agent\/connector resides.
+    macAddress :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AgentNetworkInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ipAddress', 'agentNetworkInfo_ipAddress' - The IP address for the host where the agent\/connector resides.
+--
+-- 'macAddress', 'agentNetworkInfo_macAddress' - The MAC address for the host where the agent\/connector resides.
+newAgentNetworkInfo ::
+  AgentNetworkInfo
+newAgentNetworkInfo =
+  AgentNetworkInfo'
+    { ipAddress = Prelude.Nothing,
+      macAddress = Prelude.Nothing
+    }
+
+-- | The IP address for the host where the agent\/connector resides.
+agentNetworkInfo_ipAddress :: Lens.Lens' AgentNetworkInfo (Prelude.Maybe Prelude.Text)
+agentNetworkInfo_ipAddress = Lens.lens (\AgentNetworkInfo' {ipAddress} -> ipAddress) (\s@AgentNetworkInfo' {} a -> s {ipAddress = a} :: AgentNetworkInfo)
+
+-- | The MAC address for the host where the agent\/connector resides.
+agentNetworkInfo_macAddress :: Lens.Lens' AgentNetworkInfo (Prelude.Maybe Prelude.Text)
+agentNetworkInfo_macAddress = Lens.lens (\AgentNetworkInfo' {macAddress} -> macAddress) (\s@AgentNetworkInfo' {} a -> s {macAddress = a} :: AgentNetworkInfo)
+
+instance Data.FromJSON AgentNetworkInfo where
+  parseJSON =
+    Data.withObject
+      "AgentNetworkInfo"
+      ( \x ->
+          AgentNetworkInfo'
+            Prelude.<$> (x Data..:? "ipAddress")
+            Prelude.<*> (x Data..:? "macAddress")
+      )
+
+instance Prelude.Hashable AgentNetworkInfo where
+  hashWithSalt _salt AgentNetworkInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` ipAddress
+      `Prelude.hashWithSalt` macAddress
+
+instance Prelude.NFData AgentNetworkInfo where
+  rnf AgentNetworkInfo' {..} =
+    Prelude.rnf ipAddress
+      `Prelude.seq` Prelude.rnf macAddress
diff --git a/gen/Amazonka/Discovery/Types/AgentStatus.hs b/gen/Amazonka/Discovery/Types/AgentStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/AgentStatus.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.AgentStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.AgentStatus
+  ( AgentStatus
+      ( ..,
+        AgentStatus_BLACKLISTED,
+        AgentStatus_HEALTHY,
+        AgentStatus_RUNNING,
+        AgentStatus_SHUTDOWN,
+        AgentStatus_UNHEALTHY,
+        AgentStatus_UNKNOWN
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype AgentStatus = AgentStatus'
+  { fromAgentStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern AgentStatus_BLACKLISTED :: AgentStatus
+pattern AgentStatus_BLACKLISTED = AgentStatus' "BLACKLISTED"
+
+pattern AgentStatus_HEALTHY :: AgentStatus
+pattern AgentStatus_HEALTHY = AgentStatus' "HEALTHY"
+
+pattern AgentStatus_RUNNING :: AgentStatus
+pattern AgentStatus_RUNNING = AgentStatus' "RUNNING"
+
+pattern AgentStatus_SHUTDOWN :: AgentStatus
+pattern AgentStatus_SHUTDOWN = AgentStatus' "SHUTDOWN"
+
+pattern AgentStatus_UNHEALTHY :: AgentStatus
+pattern AgentStatus_UNHEALTHY = AgentStatus' "UNHEALTHY"
+
+pattern AgentStatus_UNKNOWN :: AgentStatus
+pattern AgentStatus_UNKNOWN = AgentStatus' "UNKNOWN"
+
+{-# COMPLETE
+  AgentStatus_BLACKLISTED,
+  AgentStatus_HEALTHY,
+  AgentStatus_RUNNING,
+  AgentStatus_SHUTDOWN,
+  AgentStatus_UNHEALTHY,
+  AgentStatus_UNKNOWN,
+  AgentStatus'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/BatchDeleteImportDataError.hs b/gen/Amazonka/Discovery/Types/BatchDeleteImportDataError.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/BatchDeleteImportDataError.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.BatchDeleteImportDataError
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.BatchDeleteImportDataError where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.BatchDeleteImportDataErrorCode
+import qualified Amazonka.Prelude as Prelude
+
+-- | Error messages returned for each import task that you deleted as a
+-- response for this command.
+--
+-- /See:/ 'newBatchDeleteImportDataError' smart constructor.
+data BatchDeleteImportDataError = BatchDeleteImportDataError'
+  { -- | The type of error that occurred for a specific import task.
+    errorCode :: Prelude.Maybe BatchDeleteImportDataErrorCode,
+    -- | The description of the error that occurred for a specific import task.
+    errorDescription :: Prelude.Maybe Prelude.Text,
+    -- | The unique import ID associated with the error that occurred.
+    importTaskId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BatchDeleteImportDataError' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'errorCode', 'batchDeleteImportDataError_errorCode' - The type of error that occurred for a specific import task.
+--
+-- 'errorDescription', 'batchDeleteImportDataError_errorDescription' - The description of the error that occurred for a specific import task.
+--
+-- 'importTaskId', 'batchDeleteImportDataError_importTaskId' - The unique import ID associated with the error that occurred.
+newBatchDeleteImportDataError ::
+  BatchDeleteImportDataError
+newBatchDeleteImportDataError =
+  BatchDeleteImportDataError'
+    { errorCode =
+        Prelude.Nothing,
+      errorDescription = Prelude.Nothing,
+      importTaskId = Prelude.Nothing
+    }
+
+-- | The type of error that occurred for a specific import task.
+batchDeleteImportDataError_errorCode :: Lens.Lens' BatchDeleteImportDataError (Prelude.Maybe BatchDeleteImportDataErrorCode)
+batchDeleteImportDataError_errorCode = Lens.lens (\BatchDeleteImportDataError' {errorCode} -> errorCode) (\s@BatchDeleteImportDataError' {} a -> s {errorCode = a} :: BatchDeleteImportDataError)
+
+-- | The description of the error that occurred for a specific import task.
+batchDeleteImportDataError_errorDescription :: Lens.Lens' BatchDeleteImportDataError (Prelude.Maybe Prelude.Text)
+batchDeleteImportDataError_errorDescription = Lens.lens (\BatchDeleteImportDataError' {errorDescription} -> errorDescription) (\s@BatchDeleteImportDataError' {} a -> s {errorDescription = a} :: BatchDeleteImportDataError)
+
+-- | The unique import ID associated with the error that occurred.
+batchDeleteImportDataError_importTaskId :: Lens.Lens' BatchDeleteImportDataError (Prelude.Maybe Prelude.Text)
+batchDeleteImportDataError_importTaskId = Lens.lens (\BatchDeleteImportDataError' {importTaskId} -> importTaskId) (\s@BatchDeleteImportDataError' {} a -> s {importTaskId = a} :: BatchDeleteImportDataError)
+
+instance Data.FromJSON BatchDeleteImportDataError where
+  parseJSON =
+    Data.withObject
+      "BatchDeleteImportDataError"
+      ( \x ->
+          BatchDeleteImportDataError'
+            Prelude.<$> (x Data..:? "errorCode")
+            Prelude.<*> (x Data..:? "errorDescription")
+            Prelude.<*> (x Data..:? "importTaskId")
+      )
+
+instance Prelude.Hashable BatchDeleteImportDataError where
+  hashWithSalt _salt BatchDeleteImportDataError' {..} =
+    _salt
+      `Prelude.hashWithSalt` errorCode
+      `Prelude.hashWithSalt` errorDescription
+      `Prelude.hashWithSalt` importTaskId
+
+instance Prelude.NFData BatchDeleteImportDataError where
+  rnf BatchDeleteImportDataError' {..} =
+    Prelude.rnf errorCode
+      `Prelude.seq` Prelude.rnf errorDescription
+      `Prelude.seq` Prelude.rnf importTaskId
diff --git a/gen/Amazonka/Discovery/Types/BatchDeleteImportDataErrorCode.hs b/gen/Amazonka/Discovery/Types/BatchDeleteImportDataErrorCode.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/BatchDeleteImportDataErrorCode.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.BatchDeleteImportDataErrorCode
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.BatchDeleteImportDataErrorCode
+  ( BatchDeleteImportDataErrorCode
+      ( ..,
+        BatchDeleteImportDataErrorCode_INTERNAL_SERVER_ERROR,
+        BatchDeleteImportDataErrorCode_NOT_FOUND,
+        BatchDeleteImportDataErrorCode_OVER_LIMIT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BatchDeleteImportDataErrorCode = BatchDeleteImportDataErrorCode'
+  { fromBatchDeleteImportDataErrorCode ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BatchDeleteImportDataErrorCode_INTERNAL_SERVER_ERROR :: BatchDeleteImportDataErrorCode
+pattern BatchDeleteImportDataErrorCode_INTERNAL_SERVER_ERROR = BatchDeleteImportDataErrorCode' "INTERNAL_SERVER_ERROR"
+
+pattern BatchDeleteImportDataErrorCode_NOT_FOUND :: BatchDeleteImportDataErrorCode
+pattern BatchDeleteImportDataErrorCode_NOT_FOUND = BatchDeleteImportDataErrorCode' "NOT_FOUND"
+
+pattern BatchDeleteImportDataErrorCode_OVER_LIMIT :: BatchDeleteImportDataErrorCode
+pattern BatchDeleteImportDataErrorCode_OVER_LIMIT = BatchDeleteImportDataErrorCode' "OVER_LIMIT"
+
+{-# COMPLETE
+  BatchDeleteImportDataErrorCode_INTERNAL_SERVER_ERROR,
+  BatchDeleteImportDataErrorCode_NOT_FOUND,
+  BatchDeleteImportDataErrorCode_OVER_LIMIT,
+  BatchDeleteImportDataErrorCode'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/ConfigurationItemType.hs b/gen/Amazonka/Discovery/Types/ConfigurationItemType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ConfigurationItemType.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ConfigurationItemType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ConfigurationItemType
+  ( ConfigurationItemType
+      ( ..,
+        ConfigurationItemType_APPLICATION,
+        ConfigurationItemType_CONNECTION,
+        ConfigurationItemType_PROCESS,
+        ConfigurationItemType_SERVER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConfigurationItemType = ConfigurationItemType'
+  { fromConfigurationItemType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ConfigurationItemType_APPLICATION :: ConfigurationItemType
+pattern ConfigurationItemType_APPLICATION = ConfigurationItemType' "APPLICATION"
+
+pattern ConfigurationItemType_CONNECTION :: ConfigurationItemType
+pattern ConfigurationItemType_CONNECTION = ConfigurationItemType' "CONNECTION"
+
+pattern ConfigurationItemType_PROCESS :: ConfigurationItemType
+pattern ConfigurationItemType_PROCESS = ConfigurationItemType' "PROCESS"
+
+pattern ConfigurationItemType_SERVER :: ConfigurationItemType
+pattern ConfigurationItemType_SERVER = ConfigurationItemType' "SERVER"
+
+{-# COMPLETE
+  ConfigurationItemType_APPLICATION,
+  ConfigurationItemType_CONNECTION,
+  ConfigurationItemType_PROCESS,
+  ConfigurationItemType_SERVER,
+  ConfigurationItemType'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/ConfigurationTag.hs b/gen/Amazonka/Discovery/Types/ConfigurationTag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ConfigurationTag.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ConfigurationTag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ConfigurationTag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.ConfigurationItemType
+import qualified Amazonka.Prelude as Prelude
+
+-- | Tags for a configuration item. Tags are metadata that help you
+-- categorize IT assets.
+--
+-- /See:/ 'newConfigurationTag' smart constructor.
+data ConfigurationTag = ConfigurationTag'
+  { -- | The configuration ID for the item to tag. You can specify a list of keys
+    -- and values.
+    configurationId :: Prelude.Maybe Prelude.Text,
+    -- | A type of IT asset to tag.
+    configurationType :: Prelude.Maybe ConfigurationItemType,
+    -- | A type of tag on which to filter. For example, /serverType/.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | The time the configuration tag was created in Coordinated Universal Time
+    -- (UTC).
+    timeOfCreation :: Prelude.Maybe Data.POSIX,
+    -- | A value on which to filter. For example /key = serverType/ and /value =
+    -- web server/.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConfigurationTag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationId', 'configurationTag_configurationId' - The configuration ID for the item to tag. You can specify a list of keys
+-- and values.
+--
+-- 'configurationType', 'configurationTag_configurationType' - A type of IT asset to tag.
+--
+-- 'key', 'configurationTag_key' - A type of tag on which to filter. For example, /serverType/.
+--
+-- 'timeOfCreation', 'configurationTag_timeOfCreation' - The time the configuration tag was created in Coordinated Universal Time
+-- (UTC).
+--
+-- 'value', 'configurationTag_value' - A value on which to filter. For example /key = serverType/ and /value =
+-- web server/.
+newConfigurationTag ::
+  ConfigurationTag
+newConfigurationTag =
+  ConfigurationTag'
+    { configurationId =
+        Prelude.Nothing,
+      configurationType = Prelude.Nothing,
+      key = Prelude.Nothing,
+      timeOfCreation = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The configuration ID for the item to tag. You can specify a list of keys
+-- and values.
+configurationTag_configurationId :: Lens.Lens' ConfigurationTag (Prelude.Maybe Prelude.Text)
+configurationTag_configurationId = Lens.lens (\ConfigurationTag' {configurationId} -> configurationId) (\s@ConfigurationTag' {} a -> s {configurationId = a} :: ConfigurationTag)
+
+-- | A type of IT asset to tag.
+configurationTag_configurationType :: Lens.Lens' ConfigurationTag (Prelude.Maybe ConfigurationItemType)
+configurationTag_configurationType = Lens.lens (\ConfigurationTag' {configurationType} -> configurationType) (\s@ConfigurationTag' {} a -> s {configurationType = a} :: ConfigurationTag)
+
+-- | A type of tag on which to filter. For example, /serverType/.
+configurationTag_key :: Lens.Lens' ConfigurationTag (Prelude.Maybe Prelude.Text)
+configurationTag_key = Lens.lens (\ConfigurationTag' {key} -> key) (\s@ConfigurationTag' {} a -> s {key = a} :: ConfigurationTag)
+
+-- | The time the configuration tag was created in Coordinated Universal Time
+-- (UTC).
+configurationTag_timeOfCreation :: Lens.Lens' ConfigurationTag (Prelude.Maybe Prelude.UTCTime)
+configurationTag_timeOfCreation = Lens.lens (\ConfigurationTag' {timeOfCreation} -> timeOfCreation) (\s@ConfigurationTag' {} a -> s {timeOfCreation = a} :: ConfigurationTag) Prelude.. Lens.mapping Data._Time
+
+-- | A value on which to filter. For example /key = serverType/ and /value =
+-- web server/.
+configurationTag_value :: Lens.Lens' ConfigurationTag (Prelude.Maybe Prelude.Text)
+configurationTag_value = Lens.lens (\ConfigurationTag' {value} -> value) (\s@ConfigurationTag' {} a -> s {value = a} :: ConfigurationTag)
+
+instance Data.FromJSON ConfigurationTag where
+  parseJSON =
+    Data.withObject
+      "ConfigurationTag"
+      ( \x ->
+          ConfigurationTag'
+            Prelude.<$> (x Data..:? "configurationId")
+            Prelude.<*> (x Data..:? "configurationType")
+            Prelude.<*> (x Data..:? "key")
+            Prelude.<*> (x Data..:? "timeOfCreation")
+            Prelude.<*> (x Data..:? "value")
+      )
+
+instance Prelude.Hashable ConfigurationTag where
+  hashWithSalt _salt ConfigurationTag' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationId
+      `Prelude.hashWithSalt` configurationType
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` timeOfCreation
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ConfigurationTag where
+  rnf ConfigurationTag' {..} =
+    Prelude.rnf configurationId
+      `Prelude.seq` Prelude.rnf configurationType
+      `Prelude.seq` Prelude.rnf key
+      `Prelude.seq` Prelude.rnf timeOfCreation
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/Discovery/Types/ContinuousExportDescription.hs b/gen/Amazonka/Discovery/Types/ContinuousExportDescription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ContinuousExportDescription.hs
@@ -0,0 +1,444 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ContinuousExportDescription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ContinuousExportDescription where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.ContinuousExportStatus
+import Amazonka.Discovery.Types.DataSource
+import qualified Amazonka.Prelude as Prelude
+
+-- | A list of continuous export descriptions.
+--
+-- /See:/ 'newContinuousExportDescription' smart constructor.
+data ContinuousExportDescription = ContinuousExportDescription'
+  { -- | The type of data collector used to gather this data (currently only
+    -- offered for AGENT).
+    dataSource :: Prelude.Maybe DataSource,
+    -- | The unique ID assigned to this export.
+    exportId :: Prelude.Maybe Prelude.Text,
+    -- | The name of the s3 bucket where the export data parquet files are
+    -- stored.
+    s3Bucket :: Prelude.Maybe Prelude.Text,
+    -- | An object which describes how the data is stored.
+    --
+    -- -   @databaseName@ - the name of the Glue database used to store the
+    --     schema.
+    schemaStorageConfig :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The timestamp representing when the continuous export was started.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | Describes the status of the export. Can be one of the following values:
+    --
+    -- -   START_IN_PROGRESS - setting up resources to start continuous export.
+    --
+    -- -   START_FAILED - an error occurred setting up continuous export. To
+    --     recover, call start-continuous-export again.
+    --
+    -- -   ACTIVE - data is being exported to the customer bucket.
+    --
+    -- -   ERROR - an error occurred during export. To fix the issue, call
+    --     stop-continuous-export and start-continuous-export.
+    --
+    -- -   STOP_IN_PROGRESS - stopping the export.
+    --
+    -- -   STOP_FAILED - an error occurred stopping the export. To recover,
+    --     call stop-continuous-export again.
+    --
+    -- -   INACTIVE - the continuous export has been stopped. Data is no longer
+    --     being exported to the customer bucket.
+    status :: Prelude.Maybe ContinuousExportStatus,
+    -- | Contains information about any errors that have occurred. This data type
+    -- can have the following values:
+    --
+    -- -   ACCESS_DENIED - You don’t have permission to start Data Exploration
+    --     in Amazon Athena. Contact your Amazon Web Services administrator for
+    --     help. For more information, see
+    --     <http://docs.aws.amazon.com/application-discovery/latest/userguide/setting-up.html Setting Up Amazon Web Services Application Discovery Service>
+    --     in the Application Discovery Service User Guide.
+    --
+    -- -   DELIVERY_STREAM_LIMIT_FAILURE - You reached the limit for Amazon
+    --     Kinesis Data Firehose delivery streams. Reduce the number of streams
+    --     or request a limit increase and try again. For more information, see
+    --     <http://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html Kinesis Data Streams Limits>
+    --     in the Amazon Kinesis Data Streams Developer Guide.
+    --
+    -- -   FIREHOSE_ROLE_MISSING - The Data Exploration feature is in an error
+    --     state because your IAM User is missing the
+    --     AWSApplicationDiscoveryServiceFirehose role. Turn on Data
+    --     Exploration in Amazon Athena and try again. For more information,
+    --     see
+    --     <http://docs.aws.amazon.com/application-discovery/latest/userguide/setting-up.html#setting-up-user-policy Step 3: Provide Application Discovery Service Access to Non-Administrator Users by Attaching Policies>
+    --     in the Application Discovery Service User Guide.
+    --
+    -- -   FIREHOSE_STREAM_DOES_NOT_EXIST - The Data Exploration feature is in
+    --     an error state because your IAM User is missing one or more of the
+    --     Kinesis data delivery streams.
+    --
+    -- -   INTERNAL_FAILURE - The Data Exploration feature is in an error state
+    --     because of an internal failure. Try again later. If this problem
+    --     persists, contact Amazon Web Services Support.
+    --
+    -- -   LAKE_FORMATION_ACCESS_DENIED - You don\'t have sufficient lake
+    --     formation permissions to start continuous export. For more
+    --     information, see
+    --     <http://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html Upgrading Amazon Web Services Glue Data Permissions to the Amazon Web Services Lake Formation Model>
+    --     in the Amazon Web Services /Lake Formation Developer Guide/.
+    --
+    --     You can use one of the following two ways to resolve this issue.
+    --
+    --     1.  If you don’t want to use the Lake Formation permission model,
+    --         you can change the default Data Catalog settings to use only
+    --         Amazon Web Services Identity and Access Management (IAM) access
+    --         control for new databases. For more information, see
+    --         <https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#setup-change-cat-settings Change Data Catalog Settings>
+    --         in the /Lake Formation Developer Guide/.
+    --
+    --     2.  You can give the service-linked IAM roles
+    --         AWSServiceRoleForApplicationDiscoveryServiceContinuousExport and
+    --         AWSApplicationDiscoveryServiceFirehose the required Lake
+    --         Formation permissions. For more information, see
+    --         <https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html Granting Database Permissions>
+    --         in the /Lake Formation Developer Guide/.
+    --
+    --         1.  AWSServiceRoleForApplicationDiscoveryServiceContinuousExport
+    --             - Grant database creator permissions, which gives the role
+    --             database creation ability and implicit permissions for any
+    --             created tables. For more information, see
+    --             <https://docs.aws.amazon.com/lake-formation/latest/dg/implicit-permissions.html Implicit Lake Formation Permissions>
+    --             in the /Lake Formation Developer Guide/.
+    --
+    --         2.  AWSApplicationDiscoveryServiceFirehose - Grant describe
+    --             permissions for all tables in the database.
+    --
+    -- -   S3_BUCKET_LIMIT_FAILURE - You reached the limit for Amazon S3
+    --     buckets. Reduce the number of S3 buckets or request a limit increase
+    --     and try again. For more information, see
+    --     <http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html Bucket Restrictions and Limitations>
+    --     in the Amazon Simple Storage Service Developer Guide.
+    --
+    -- -   S3_NOT_SIGNED_UP - Your account is not signed up for the Amazon S3
+    --     service. You must sign up before you can use Amazon S3. You can sign
+    --     up at the following URL: <https://aws.amazon.com/s3>.
+    statusDetail :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp that represents when this continuous export was stopped.
+    stopTime :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ContinuousExportDescription' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataSource', 'continuousExportDescription_dataSource' - The type of data collector used to gather this data (currently only
+-- offered for AGENT).
+--
+-- 'exportId', 'continuousExportDescription_exportId' - The unique ID assigned to this export.
+--
+-- 's3Bucket', 'continuousExportDescription_s3Bucket' - The name of the s3 bucket where the export data parquet files are
+-- stored.
+--
+-- 'schemaStorageConfig', 'continuousExportDescription_schemaStorageConfig' - An object which describes how the data is stored.
+--
+-- -   @databaseName@ - the name of the Glue database used to store the
+--     schema.
+--
+-- 'startTime', 'continuousExportDescription_startTime' - The timestamp representing when the continuous export was started.
+--
+-- 'status', 'continuousExportDescription_status' - Describes the status of the export. Can be one of the following values:
+--
+-- -   START_IN_PROGRESS - setting up resources to start continuous export.
+--
+-- -   START_FAILED - an error occurred setting up continuous export. To
+--     recover, call start-continuous-export again.
+--
+-- -   ACTIVE - data is being exported to the customer bucket.
+--
+-- -   ERROR - an error occurred during export. To fix the issue, call
+--     stop-continuous-export and start-continuous-export.
+--
+-- -   STOP_IN_PROGRESS - stopping the export.
+--
+-- -   STOP_FAILED - an error occurred stopping the export. To recover,
+--     call stop-continuous-export again.
+--
+-- -   INACTIVE - the continuous export has been stopped. Data is no longer
+--     being exported to the customer bucket.
+--
+-- 'statusDetail', 'continuousExportDescription_statusDetail' - Contains information about any errors that have occurred. This data type
+-- can have the following values:
+--
+-- -   ACCESS_DENIED - You don’t have permission to start Data Exploration
+--     in Amazon Athena. Contact your Amazon Web Services administrator for
+--     help. For more information, see
+--     <http://docs.aws.amazon.com/application-discovery/latest/userguide/setting-up.html Setting Up Amazon Web Services Application Discovery Service>
+--     in the Application Discovery Service User Guide.
+--
+-- -   DELIVERY_STREAM_LIMIT_FAILURE - You reached the limit for Amazon
+--     Kinesis Data Firehose delivery streams. Reduce the number of streams
+--     or request a limit increase and try again. For more information, see
+--     <http://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html Kinesis Data Streams Limits>
+--     in the Amazon Kinesis Data Streams Developer Guide.
+--
+-- -   FIREHOSE_ROLE_MISSING - The Data Exploration feature is in an error
+--     state because your IAM User is missing the
+--     AWSApplicationDiscoveryServiceFirehose role. Turn on Data
+--     Exploration in Amazon Athena and try again. For more information,
+--     see
+--     <http://docs.aws.amazon.com/application-discovery/latest/userguide/setting-up.html#setting-up-user-policy Step 3: Provide Application Discovery Service Access to Non-Administrator Users by Attaching Policies>
+--     in the Application Discovery Service User Guide.
+--
+-- -   FIREHOSE_STREAM_DOES_NOT_EXIST - The Data Exploration feature is in
+--     an error state because your IAM User is missing one or more of the
+--     Kinesis data delivery streams.
+--
+-- -   INTERNAL_FAILURE - The Data Exploration feature is in an error state
+--     because of an internal failure. Try again later. If this problem
+--     persists, contact Amazon Web Services Support.
+--
+-- -   LAKE_FORMATION_ACCESS_DENIED - You don\'t have sufficient lake
+--     formation permissions to start continuous export. For more
+--     information, see
+--     <http://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html Upgrading Amazon Web Services Glue Data Permissions to the Amazon Web Services Lake Formation Model>
+--     in the Amazon Web Services /Lake Formation Developer Guide/.
+--
+--     You can use one of the following two ways to resolve this issue.
+--
+--     1.  If you don’t want to use the Lake Formation permission model,
+--         you can change the default Data Catalog settings to use only
+--         Amazon Web Services Identity and Access Management (IAM) access
+--         control for new databases. For more information, see
+--         <https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#setup-change-cat-settings Change Data Catalog Settings>
+--         in the /Lake Formation Developer Guide/.
+--
+--     2.  You can give the service-linked IAM roles
+--         AWSServiceRoleForApplicationDiscoveryServiceContinuousExport and
+--         AWSApplicationDiscoveryServiceFirehose the required Lake
+--         Formation permissions. For more information, see
+--         <https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html Granting Database Permissions>
+--         in the /Lake Formation Developer Guide/.
+--
+--         1.  AWSServiceRoleForApplicationDiscoveryServiceContinuousExport
+--             - Grant database creator permissions, which gives the role
+--             database creation ability and implicit permissions for any
+--             created tables. For more information, see
+--             <https://docs.aws.amazon.com/lake-formation/latest/dg/implicit-permissions.html Implicit Lake Formation Permissions>
+--             in the /Lake Formation Developer Guide/.
+--
+--         2.  AWSApplicationDiscoveryServiceFirehose - Grant describe
+--             permissions for all tables in the database.
+--
+-- -   S3_BUCKET_LIMIT_FAILURE - You reached the limit for Amazon S3
+--     buckets. Reduce the number of S3 buckets or request a limit increase
+--     and try again. For more information, see
+--     <http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html Bucket Restrictions and Limitations>
+--     in the Amazon Simple Storage Service Developer Guide.
+--
+-- -   S3_NOT_SIGNED_UP - Your account is not signed up for the Amazon S3
+--     service. You must sign up before you can use Amazon S3. You can sign
+--     up at the following URL: <https://aws.amazon.com/s3>.
+--
+-- 'stopTime', 'continuousExportDescription_stopTime' - The timestamp that represents when this continuous export was stopped.
+newContinuousExportDescription ::
+  ContinuousExportDescription
+newContinuousExportDescription =
+  ContinuousExportDescription'
+    { dataSource =
+        Prelude.Nothing,
+      exportId = Prelude.Nothing,
+      s3Bucket = Prelude.Nothing,
+      schemaStorageConfig = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusDetail = Prelude.Nothing,
+      stopTime = Prelude.Nothing
+    }
+
+-- | The type of data collector used to gather this data (currently only
+-- offered for AGENT).
+continuousExportDescription_dataSource :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe DataSource)
+continuousExportDescription_dataSource = Lens.lens (\ContinuousExportDescription' {dataSource} -> dataSource) (\s@ContinuousExportDescription' {} a -> s {dataSource = a} :: ContinuousExportDescription)
+
+-- | The unique ID assigned to this export.
+continuousExportDescription_exportId :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe Prelude.Text)
+continuousExportDescription_exportId = Lens.lens (\ContinuousExportDescription' {exportId} -> exportId) (\s@ContinuousExportDescription' {} a -> s {exportId = a} :: ContinuousExportDescription)
+
+-- | The name of the s3 bucket where the export data parquet files are
+-- stored.
+continuousExportDescription_s3Bucket :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe Prelude.Text)
+continuousExportDescription_s3Bucket = Lens.lens (\ContinuousExportDescription' {s3Bucket} -> s3Bucket) (\s@ContinuousExportDescription' {} a -> s {s3Bucket = a} :: ContinuousExportDescription)
+
+-- | An object which describes how the data is stored.
+--
+-- -   @databaseName@ - the name of the Glue database used to store the
+--     schema.
+continuousExportDescription_schemaStorageConfig :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+continuousExportDescription_schemaStorageConfig = Lens.lens (\ContinuousExportDescription' {schemaStorageConfig} -> schemaStorageConfig) (\s@ContinuousExportDescription' {} a -> s {schemaStorageConfig = a} :: ContinuousExportDescription) Prelude.. Lens.mapping Lens.coerced
+
+-- | The timestamp representing when the continuous export was started.
+continuousExportDescription_startTime :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe Prelude.UTCTime)
+continuousExportDescription_startTime = Lens.lens (\ContinuousExportDescription' {startTime} -> startTime) (\s@ContinuousExportDescription' {} a -> s {startTime = a} :: ContinuousExportDescription) Prelude.. Lens.mapping Data._Time
+
+-- | Describes the status of the export. Can be one of the following values:
+--
+-- -   START_IN_PROGRESS - setting up resources to start continuous export.
+--
+-- -   START_FAILED - an error occurred setting up continuous export. To
+--     recover, call start-continuous-export again.
+--
+-- -   ACTIVE - data is being exported to the customer bucket.
+--
+-- -   ERROR - an error occurred during export. To fix the issue, call
+--     stop-continuous-export and start-continuous-export.
+--
+-- -   STOP_IN_PROGRESS - stopping the export.
+--
+-- -   STOP_FAILED - an error occurred stopping the export. To recover,
+--     call stop-continuous-export again.
+--
+-- -   INACTIVE - the continuous export has been stopped. Data is no longer
+--     being exported to the customer bucket.
+continuousExportDescription_status :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe ContinuousExportStatus)
+continuousExportDescription_status = Lens.lens (\ContinuousExportDescription' {status} -> status) (\s@ContinuousExportDescription' {} a -> s {status = a} :: ContinuousExportDescription)
+
+-- | Contains information about any errors that have occurred. This data type
+-- can have the following values:
+--
+-- -   ACCESS_DENIED - You don’t have permission to start Data Exploration
+--     in Amazon Athena. Contact your Amazon Web Services administrator for
+--     help. For more information, see
+--     <http://docs.aws.amazon.com/application-discovery/latest/userguide/setting-up.html Setting Up Amazon Web Services Application Discovery Service>
+--     in the Application Discovery Service User Guide.
+--
+-- -   DELIVERY_STREAM_LIMIT_FAILURE - You reached the limit for Amazon
+--     Kinesis Data Firehose delivery streams. Reduce the number of streams
+--     or request a limit increase and try again. For more information, see
+--     <http://docs.aws.amazon.com/streams/latest/dev/service-sizes-and-limits.html Kinesis Data Streams Limits>
+--     in the Amazon Kinesis Data Streams Developer Guide.
+--
+-- -   FIREHOSE_ROLE_MISSING - The Data Exploration feature is in an error
+--     state because your IAM User is missing the
+--     AWSApplicationDiscoveryServiceFirehose role. Turn on Data
+--     Exploration in Amazon Athena and try again. For more information,
+--     see
+--     <http://docs.aws.amazon.com/application-discovery/latest/userguide/setting-up.html#setting-up-user-policy Step 3: Provide Application Discovery Service Access to Non-Administrator Users by Attaching Policies>
+--     in the Application Discovery Service User Guide.
+--
+-- -   FIREHOSE_STREAM_DOES_NOT_EXIST - The Data Exploration feature is in
+--     an error state because your IAM User is missing one or more of the
+--     Kinesis data delivery streams.
+--
+-- -   INTERNAL_FAILURE - The Data Exploration feature is in an error state
+--     because of an internal failure. Try again later. If this problem
+--     persists, contact Amazon Web Services Support.
+--
+-- -   LAKE_FORMATION_ACCESS_DENIED - You don\'t have sufficient lake
+--     formation permissions to start continuous export. For more
+--     information, see
+--     <http://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html Upgrading Amazon Web Services Glue Data Permissions to the Amazon Web Services Lake Formation Model>
+--     in the Amazon Web Services /Lake Formation Developer Guide/.
+--
+--     You can use one of the following two ways to resolve this issue.
+--
+--     1.  If you don’t want to use the Lake Formation permission model,
+--         you can change the default Data Catalog settings to use only
+--         Amazon Web Services Identity and Access Management (IAM) access
+--         control for new databases. For more information, see
+--         <https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#setup-change-cat-settings Change Data Catalog Settings>
+--         in the /Lake Formation Developer Guide/.
+--
+--     2.  You can give the service-linked IAM roles
+--         AWSServiceRoleForApplicationDiscoveryServiceContinuousExport and
+--         AWSApplicationDiscoveryServiceFirehose the required Lake
+--         Formation permissions. For more information, see
+--         <https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html Granting Database Permissions>
+--         in the /Lake Formation Developer Guide/.
+--
+--         1.  AWSServiceRoleForApplicationDiscoveryServiceContinuousExport
+--             - Grant database creator permissions, which gives the role
+--             database creation ability and implicit permissions for any
+--             created tables. For more information, see
+--             <https://docs.aws.amazon.com/lake-formation/latest/dg/implicit-permissions.html Implicit Lake Formation Permissions>
+--             in the /Lake Formation Developer Guide/.
+--
+--         2.  AWSApplicationDiscoveryServiceFirehose - Grant describe
+--             permissions for all tables in the database.
+--
+-- -   S3_BUCKET_LIMIT_FAILURE - You reached the limit for Amazon S3
+--     buckets. Reduce the number of S3 buckets or request a limit increase
+--     and try again. For more information, see
+--     <http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html Bucket Restrictions and Limitations>
+--     in the Amazon Simple Storage Service Developer Guide.
+--
+-- -   S3_NOT_SIGNED_UP - Your account is not signed up for the Amazon S3
+--     service. You must sign up before you can use Amazon S3. You can sign
+--     up at the following URL: <https://aws.amazon.com/s3>.
+continuousExportDescription_statusDetail :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe Prelude.Text)
+continuousExportDescription_statusDetail = Lens.lens (\ContinuousExportDescription' {statusDetail} -> statusDetail) (\s@ContinuousExportDescription' {} a -> s {statusDetail = a} :: ContinuousExportDescription)
+
+-- | The timestamp that represents when this continuous export was stopped.
+continuousExportDescription_stopTime :: Lens.Lens' ContinuousExportDescription (Prelude.Maybe Prelude.UTCTime)
+continuousExportDescription_stopTime = Lens.lens (\ContinuousExportDescription' {stopTime} -> stopTime) (\s@ContinuousExportDescription' {} a -> s {stopTime = a} :: ContinuousExportDescription) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON ContinuousExportDescription where
+  parseJSON =
+    Data.withObject
+      "ContinuousExportDescription"
+      ( \x ->
+          ContinuousExportDescription'
+            Prelude.<$> (x Data..:? "dataSource")
+            Prelude.<*> (x Data..:? "exportId")
+            Prelude.<*> (x Data..:? "s3Bucket")
+            Prelude.<*> ( x
+                            Data..:? "schemaStorageConfig"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "startTime")
+            Prelude.<*> (x Data..:? "status")
+            Prelude.<*> (x Data..:? "statusDetail")
+            Prelude.<*> (x Data..:? "stopTime")
+      )
+
+instance Prelude.Hashable ContinuousExportDescription where
+  hashWithSalt _salt ContinuousExportDescription' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataSource
+      `Prelude.hashWithSalt` exportId
+      `Prelude.hashWithSalt` s3Bucket
+      `Prelude.hashWithSalt` schemaStorageConfig
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusDetail
+      `Prelude.hashWithSalt` stopTime
+
+instance Prelude.NFData ContinuousExportDescription where
+  rnf ContinuousExportDescription' {..} =
+    Prelude.rnf dataSource
+      `Prelude.seq` Prelude.rnf exportId
+      `Prelude.seq` Prelude.rnf s3Bucket
+      `Prelude.seq` Prelude.rnf schemaStorageConfig
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusDetail
+      `Prelude.seq` Prelude.rnf stopTime
diff --git a/gen/Amazonka/Discovery/Types/ContinuousExportStatus.hs b/gen/Amazonka/Discovery/Types/ContinuousExportStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ContinuousExportStatus.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ContinuousExportStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ContinuousExportStatus
+  ( ContinuousExportStatus
+      ( ..,
+        ContinuousExportStatus_ACTIVE,
+        ContinuousExportStatus_ERROR,
+        ContinuousExportStatus_INACTIVE,
+        ContinuousExportStatus_START_FAILED,
+        ContinuousExportStatus_START_IN_PROGRESS,
+        ContinuousExportStatus_STOP_FAILED,
+        ContinuousExportStatus_STOP_IN_PROGRESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ContinuousExportStatus = ContinuousExportStatus'
+  { fromContinuousExportStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ContinuousExportStatus_ACTIVE :: ContinuousExportStatus
+pattern ContinuousExportStatus_ACTIVE = ContinuousExportStatus' "ACTIVE"
+
+pattern ContinuousExportStatus_ERROR :: ContinuousExportStatus
+pattern ContinuousExportStatus_ERROR = ContinuousExportStatus' "ERROR"
+
+pattern ContinuousExportStatus_INACTIVE :: ContinuousExportStatus
+pattern ContinuousExportStatus_INACTIVE = ContinuousExportStatus' "INACTIVE"
+
+pattern ContinuousExportStatus_START_FAILED :: ContinuousExportStatus
+pattern ContinuousExportStatus_START_FAILED = ContinuousExportStatus' "START_FAILED"
+
+pattern ContinuousExportStatus_START_IN_PROGRESS :: ContinuousExportStatus
+pattern ContinuousExportStatus_START_IN_PROGRESS = ContinuousExportStatus' "START_IN_PROGRESS"
+
+pattern ContinuousExportStatus_STOP_FAILED :: ContinuousExportStatus
+pattern ContinuousExportStatus_STOP_FAILED = ContinuousExportStatus' "STOP_FAILED"
+
+pattern ContinuousExportStatus_STOP_IN_PROGRESS :: ContinuousExportStatus
+pattern ContinuousExportStatus_STOP_IN_PROGRESS = ContinuousExportStatus' "STOP_IN_PROGRESS"
+
+{-# COMPLETE
+  ContinuousExportStatus_ACTIVE,
+  ContinuousExportStatus_ERROR,
+  ContinuousExportStatus_INACTIVE,
+  ContinuousExportStatus_START_FAILED,
+  ContinuousExportStatus_START_IN_PROGRESS,
+  ContinuousExportStatus_STOP_FAILED,
+  ContinuousExportStatus_STOP_IN_PROGRESS,
+  ContinuousExportStatus'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/CustomerAgentInfo.hs b/gen/Amazonka/Discovery/Types/CustomerAgentInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/CustomerAgentInfo.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.CustomerAgentInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.CustomerAgentInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Inventory data for installed discovery agents.
+--
+-- /See:/ 'newCustomerAgentInfo' smart constructor.
+data CustomerAgentInfo = CustomerAgentInfo'
+  { -- | Number of active discovery agents.
+    activeAgents :: Prelude.Int,
+    -- | Number of healthy discovery agents
+    healthyAgents :: Prelude.Int,
+    -- | Number of blacklisted discovery agents.
+    blackListedAgents :: Prelude.Int,
+    -- | Number of discovery agents with status SHUTDOWN.
+    shutdownAgents :: Prelude.Int,
+    -- | Number of unhealthy discovery agents.
+    unhealthyAgents :: Prelude.Int,
+    -- | Total number of discovery agents.
+    totalAgents :: Prelude.Int,
+    -- | Number of unknown discovery agents.
+    unknownAgents :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomerAgentInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeAgents', 'customerAgentInfo_activeAgents' - Number of active discovery agents.
+--
+-- 'healthyAgents', 'customerAgentInfo_healthyAgents' - Number of healthy discovery agents
+--
+-- 'blackListedAgents', 'customerAgentInfo_blackListedAgents' - Number of blacklisted discovery agents.
+--
+-- 'shutdownAgents', 'customerAgentInfo_shutdownAgents' - Number of discovery agents with status SHUTDOWN.
+--
+-- 'unhealthyAgents', 'customerAgentInfo_unhealthyAgents' - Number of unhealthy discovery agents.
+--
+-- 'totalAgents', 'customerAgentInfo_totalAgents' - Total number of discovery agents.
+--
+-- 'unknownAgents', 'customerAgentInfo_unknownAgents' - Number of unknown discovery agents.
+newCustomerAgentInfo ::
+  -- | 'activeAgents'
+  Prelude.Int ->
+  -- | 'healthyAgents'
+  Prelude.Int ->
+  -- | 'blackListedAgents'
+  Prelude.Int ->
+  -- | 'shutdownAgents'
+  Prelude.Int ->
+  -- | 'unhealthyAgents'
+  Prelude.Int ->
+  -- | 'totalAgents'
+  Prelude.Int ->
+  -- | 'unknownAgents'
+  Prelude.Int ->
+  CustomerAgentInfo
+newCustomerAgentInfo
+  pActiveAgents_
+  pHealthyAgents_
+  pBlackListedAgents_
+  pShutdownAgents_
+  pUnhealthyAgents_
+  pTotalAgents_
+  pUnknownAgents_ =
+    CustomerAgentInfo'
+      { activeAgents = pActiveAgents_,
+        healthyAgents = pHealthyAgents_,
+        blackListedAgents = pBlackListedAgents_,
+        shutdownAgents = pShutdownAgents_,
+        unhealthyAgents = pUnhealthyAgents_,
+        totalAgents = pTotalAgents_,
+        unknownAgents = pUnknownAgents_
+      }
+
+-- | Number of active discovery agents.
+customerAgentInfo_activeAgents :: Lens.Lens' CustomerAgentInfo Prelude.Int
+customerAgentInfo_activeAgents = Lens.lens (\CustomerAgentInfo' {activeAgents} -> activeAgents) (\s@CustomerAgentInfo' {} a -> s {activeAgents = a} :: CustomerAgentInfo)
+
+-- | Number of healthy discovery agents
+customerAgentInfo_healthyAgents :: Lens.Lens' CustomerAgentInfo Prelude.Int
+customerAgentInfo_healthyAgents = Lens.lens (\CustomerAgentInfo' {healthyAgents} -> healthyAgents) (\s@CustomerAgentInfo' {} a -> s {healthyAgents = a} :: CustomerAgentInfo)
+
+-- | Number of blacklisted discovery agents.
+customerAgentInfo_blackListedAgents :: Lens.Lens' CustomerAgentInfo Prelude.Int
+customerAgentInfo_blackListedAgents = Lens.lens (\CustomerAgentInfo' {blackListedAgents} -> blackListedAgents) (\s@CustomerAgentInfo' {} a -> s {blackListedAgents = a} :: CustomerAgentInfo)
+
+-- | Number of discovery agents with status SHUTDOWN.
+customerAgentInfo_shutdownAgents :: Lens.Lens' CustomerAgentInfo Prelude.Int
+customerAgentInfo_shutdownAgents = Lens.lens (\CustomerAgentInfo' {shutdownAgents} -> shutdownAgents) (\s@CustomerAgentInfo' {} a -> s {shutdownAgents = a} :: CustomerAgentInfo)
+
+-- | Number of unhealthy discovery agents.
+customerAgentInfo_unhealthyAgents :: Lens.Lens' CustomerAgentInfo Prelude.Int
+customerAgentInfo_unhealthyAgents = Lens.lens (\CustomerAgentInfo' {unhealthyAgents} -> unhealthyAgents) (\s@CustomerAgentInfo' {} a -> s {unhealthyAgents = a} :: CustomerAgentInfo)
+
+-- | Total number of discovery agents.
+customerAgentInfo_totalAgents :: Lens.Lens' CustomerAgentInfo Prelude.Int
+customerAgentInfo_totalAgents = Lens.lens (\CustomerAgentInfo' {totalAgents} -> totalAgents) (\s@CustomerAgentInfo' {} a -> s {totalAgents = a} :: CustomerAgentInfo)
+
+-- | Number of unknown discovery agents.
+customerAgentInfo_unknownAgents :: Lens.Lens' CustomerAgentInfo Prelude.Int
+customerAgentInfo_unknownAgents = Lens.lens (\CustomerAgentInfo' {unknownAgents} -> unknownAgents) (\s@CustomerAgentInfo' {} a -> s {unknownAgents = a} :: CustomerAgentInfo)
+
+instance Data.FromJSON CustomerAgentInfo where
+  parseJSON =
+    Data.withObject
+      "CustomerAgentInfo"
+      ( \x ->
+          CustomerAgentInfo'
+            Prelude.<$> (x Data..: "activeAgents")
+            Prelude.<*> (x Data..: "healthyAgents")
+            Prelude.<*> (x Data..: "blackListedAgents")
+            Prelude.<*> (x Data..: "shutdownAgents")
+            Prelude.<*> (x Data..: "unhealthyAgents")
+            Prelude.<*> (x Data..: "totalAgents")
+            Prelude.<*> (x Data..: "unknownAgents")
+      )
+
+instance Prelude.Hashable CustomerAgentInfo where
+  hashWithSalt _salt CustomerAgentInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeAgents
+      `Prelude.hashWithSalt` healthyAgents
+      `Prelude.hashWithSalt` blackListedAgents
+      `Prelude.hashWithSalt` shutdownAgents
+      `Prelude.hashWithSalt` unhealthyAgents
+      `Prelude.hashWithSalt` totalAgents
+      `Prelude.hashWithSalt` unknownAgents
+
+instance Prelude.NFData CustomerAgentInfo where
+  rnf CustomerAgentInfo' {..} =
+    Prelude.rnf activeAgents
+      `Prelude.seq` Prelude.rnf healthyAgents
+      `Prelude.seq` Prelude.rnf blackListedAgents
+      `Prelude.seq` Prelude.rnf shutdownAgents
+      `Prelude.seq` Prelude.rnf unhealthyAgents
+      `Prelude.seq` Prelude.rnf totalAgents
+      `Prelude.seq` Prelude.rnf unknownAgents
diff --git a/gen/Amazonka/Discovery/Types/CustomerAgentlessCollectorInfo.hs b/gen/Amazonka/Discovery/Types/CustomerAgentlessCollectorInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/CustomerAgentlessCollectorInfo.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.CustomerAgentlessCollectorInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.CustomerAgentlessCollectorInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | /See:/ 'newCustomerAgentlessCollectorInfo' smart constructor.
+data CustomerAgentlessCollectorInfo = CustomerAgentlessCollectorInfo'
+  { activeAgentlessCollectors :: Prelude.Int,
+    healthyAgentlessCollectors :: Prelude.Int,
+    denyListedAgentlessCollectors :: Prelude.Int,
+    shutdownAgentlessCollectors :: Prelude.Int,
+    unhealthyAgentlessCollectors :: Prelude.Int,
+    totalAgentlessCollectors :: Prelude.Int,
+    unknownAgentlessCollectors :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomerAgentlessCollectorInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeAgentlessCollectors', 'customerAgentlessCollectorInfo_activeAgentlessCollectors' - Undocumented member.
+--
+-- 'healthyAgentlessCollectors', 'customerAgentlessCollectorInfo_healthyAgentlessCollectors' - Undocumented member.
+--
+-- 'denyListedAgentlessCollectors', 'customerAgentlessCollectorInfo_denyListedAgentlessCollectors' - Undocumented member.
+--
+-- 'shutdownAgentlessCollectors', 'customerAgentlessCollectorInfo_shutdownAgentlessCollectors' - Undocumented member.
+--
+-- 'unhealthyAgentlessCollectors', 'customerAgentlessCollectorInfo_unhealthyAgentlessCollectors' - Undocumented member.
+--
+-- 'totalAgentlessCollectors', 'customerAgentlessCollectorInfo_totalAgentlessCollectors' - Undocumented member.
+--
+-- 'unknownAgentlessCollectors', 'customerAgentlessCollectorInfo_unknownAgentlessCollectors' - Undocumented member.
+newCustomerAgentlessCollectorInfo ::
+  -- | 'activeAgentlessCollectors'
+  Prelude.Int ->
+  -- | 'healthyAgentlessCollectors'
+  Prelude.Int ->
+  -- | 'denyListedAgentlessCollectors'
+  Prelude.Int ->
+  -- | 'shutdownAgentlessCollectors'
+  Prelude.Int ->
+  -- | 'unhealthyAgentlessCollectors'
+  Prelude.Int ->
+  -- | 'totalAgentlessCollectors'
+  Prelude.Int ->
+  -- | 'unknownAgentlessCollectors'
+  Prelude.Int ->
+  CustomerAgentlessCollectorInfo
+newCustomerAgentlessCollectorInfo
+  pActiveAgentlessCollectors_
+  pHealthyAgentlessCollectors_
+  pDenyListedAgentlessCollectors_
+  pShutdownAgentlessCollectors_
+  pUnhealthyAgentlessCollectors_
+  pTotalAgentlessCollectors_
+  pUnknownAgentlessCollectors_ =
+    CustomerAgentlessCollectorInfo'
+      { activeAgentlessCollectors =
+          pActiveAgentlessCollectors_,
+        healthyAgentlessCollectors =
+          pHealthyAgentlessCollectors_,
+        denyListedAgentlessCollectors =
+          pDenyListedAgentlessCollectors_,
+        shutdownAgentlessCollectors =
+          pShutdownAgentlessCollectors_,
+        unhealthyAgentlessCollectors =
+          pUnhealthyAgentlessCollectors_,
+        totalAgentlessCollectors =
+          pTotalAgentlessCollectors_,
+        unknownAgentlessCollectors =
+          pUnknownAgentlessCollectors_
+      }
+
+-- | Undocumented member.
+customerAgentlessCollectorInfo_activeAgentlessCollectors :: Lens.Lens' CustomerAgentlessCollectorInfo Prelude.Int
+customerAgentlessCollectorInfo_activeAgentlessCollectors = Lens.lens (\CustomerAgentlessCollectorInfo' {activeAgentlessCollectors} -> activeAgentlessCollectors) (\s@CustomerAgentlessCollectorInfo' {} a -> s {activeAgentlessCollectors = a} :: CustomerAgentlessCollectorInfo)
+
+-- | Undocumented member.
+customerAgentlessCollectorInfo_healthyAgentlessCollectors :: Lens.Lens' CustomerAgentlessCollectorInfo Prelude.Int
+customerAgentlessCollectorInfo_healthyAgentlessCollectors = Lens.lens (\CustomerAgentlessCollectorInfo' {healthyAgentlessCollectors} -> healthyAgentlessCollectors) (\s@CustomerAgentlessCollectorInfo' {} a -> s {healthyAgentlessCollectors = a} :: CustomerAgentlessCollectorInfo)
+
+-- | Undocumented member.
+customerAgentlessCollectorInfo_denyListedAgentlessCollectors :: Lens.Lens' CustomerAgentlessCollectorInfo Prelude.Int
+customerAgentlessCollectorInfo_denyListedAgentlessCollectors = Lens.lens (\CustomerAgentlessCollectorInfo' {denyListedAgentlessCollectors} -> denyListedAgentlessCollectors) (\s@CustomerAgentlessCollectorInfo' {} a -> s {denyListedAgentlessCollectors = a} :: CustomerAgentlessCollectorInfo)
+
+-- | Undocumented member.
+customerAgentlessCollectorInfo_shutdownAgentlessCollectors :: Lens.Lens' CustomerAgentlessCollectorInfo Prelude.Int
+customerAgentlessCollectorInfo_shutdownAgentlessCollectors = Lens.lens (\CustomerAgentlessCollectorInfo' {shutdownAgentlessCollectors} -> shutdownAgentlessCollectors) (\s@CustomerAgentlessCollectorInfo' {} a -> s {shutdownAgentlessCollectors = a} :: CustomerAgentlessCollectorInfo)
+
+-- | Undocumented member.
+customerAgentlessCollectorInfo_unhealthyAgentlessCollectors :: Lens.Lens' CustomerAgentlessCollectorInfo Prelude.Int
+customerAgentlessCollectorInfo_unhealthyAgentlessCollectors = Lens.lens (\CustomerAgentlessCollectorInfo' {unhealthyAgentlessCollectors} -> unhealthyAgentlessCollectors) (\s@CustomerAgentlessCollectorInfo' {} a -> s {unhealthyAgentlessCollectors = a} :: CustomerAgentlessCollectorInfo)
+
+-- | Undocumented member.
+customerAgentlessCollectorInfo_totalAgentlessCollectors :: Lens.Lens' CustomerAgentlessCollectorInfo Prelude.Int
+customerAgentlessCollectorInfo_totalAgentlessCollectors = Lens.lens (\CustomerAgentlessCollectorInfo' {totalAgentlessCollectors} -> totalAgentlessCollectors) (\s@CustomerAgentlessCollectorInfo' {} a -> s {totalAgentlessCollectors = a} :: CustomerAgentlessCollectorInfo)
+
+-- | Undocumented member.
+customerAgentlessCollectorInfo_unknownAgentlessCollectors :: Lens.Lens' CustomerAgentlessCollectorInfo Prelude.Int
+customerAgentlessCollectorInfo_unknownAgentlessCollectors = Lens.lens (\CustomerAgentlessCollectorInfo' {unknownAgentlessCollectors} -> unknownAgentlessCollectors) (\s@CustomerAgentlessCollectorInfo' {} a -> s {unknownAgentlessCollectors = a} :: CustomerAgentlessCollectorInfo)
+
+instance Data.FromJSON CustomerAgentlessCollectorInfo where
+  parseJSON =
+    Data.withObject
+      "CustomerAgentlessCollectorInfo"
+      ( \x ->
+          CustomerAgentlessCollectorInfo'
+            Prelude.<$> (x Data..: "activeAgentlessCollectors")
+            Prelude.<*> (x Data..: "healthyAgentlessCollectors")
+            Prelude.<*> (x Data..: "denyListedAgentlessCollectors")
+            Prelude.<*> (x Data..: "shutdownAgentlessCollectors")
+            Prelude.<*> (x Data..: "unhealthyAgentlessCollectors")
+            Prelude.<*> (x Data..: "totalAgentlessCollectors")
+            Prelude.<*> (x Data..: "unknownAgentlessCollectors")
+      )
+
+instance
+  Prelude.Hashable
+    CustomerAgentlessCollectorInfo
+  where
+  hashWithSalt
+    _salt
+    CustomerAgentlessCollectorInfo' {..} =
+      _salt
+        `Prelude.hashWithSalt` activeAgentlessCollectors
+        `Prelude.hashWithSalt` healthyAgentlessCollectors
+        `Prelude.hashWithSalt` denyListedAgentlessCollectors
+        `Prelude.hashWithSalt` shutdownAgentlessCollectors
+        `Prelude.hashWithSalt` unhealthyAgentlessCollectors
+        `Prelude.hashWithSalt` totalAgentlessCollectors
+        `Prelude.hashWithSalt` unknownAgentlessCollectors
+
+instance
+  Prelude.NFData
+    CustomerAgentlessCollectorInfo
+  where
+  rnf CustomerAgentlessCollectorInfo' {..} =
+    Prelude.rnf activeAgentlessCollectors
+      `Prelude.seq` Prelude.rnf healthyAgentlessCollectors
+      `Prelude.seq` Prelude.rnf denyListedAgentlessCollectors
+      `Prelude.seq` Prelude.rnf shutdownAgentlessCollectors
+      `Prelude.seq` Prelude.rnf unhealthyAgentlessCollectors
+      `Prelude.seq` Prelude.rnf totalAgentlessCollectors
+      `Prelude.seq` Prelude.rnf unknownAgentlessCollectors
diff --git a/gen/Amazonka/Discovery/Types/CustomerConnectorInfo.hs b/gen/Amazonka/Discovery/Types/CustomerConnectorInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/CustomerConnectorInfo.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.CustomerConnectorInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.CustomerConnectorInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Inventory data for installed discovery connectors.
+--
+-- /See:/ 'newCustomerConnectorInfo' smart constructor.
+data CustomerConnectorInfo = CustomerConnectorInfo'
+  { -- | Number of active discovery connectors.
+    activeConnectors :: Prelude.Int,
+    -- | Number of healthy discovery connectors.
+    healthyConnectors :: Prelude.Int,
+    -- | Number of blacklisted discovery connectors.
+    blackListedConnectors :: Prelude.Int,
+    -- | Number of discovery connectors with status SHUTDOWN,
+    shutdownConnectors :: Prelude.Int,
+    -- | Number of unhealthy discovery connectors.
+    unhealthyConnectors :: Prelude.Int,
+    -- | Total number of discovery connectors.
+    totalConnectors :: Prelude.Int,
+    -- | Number of unknown discovery connectors.
+    unknownConnectors :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomerConnectorInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeConnectors', 'customerConnectorInfo_activeConnectors' - Number of active discovery connectors.
+--
+-- 'healthyConnectors', 'customerConnectorInfo_healthyConnectors' - Number of healthy discovery connectors.
+--
+-- 'blackListedConnectors', 'customerConnectorInfo_blackListedConnectors' - Number of blacklisted discovery connectors.
+--
+-- 'shutdownConnectors', 'customerConnectorInfo_shutdownConnectors' - Number of discovery connectors with status SHUTDOWN,
+--
+-- 'unhealthyConnectors', 'customerConnectorInfo_unhealthyConnectors' - Number of unhealthy discovery connectors.
+--
+-- 'totalConnectors', 'customerConnectorInfo_totalConnectors' - Total number of discovery connectors.
+--
+-- 'unknownConnectors', 'customerConnectorInfo_unknownConnectors' - Number of unknown discovery connectors.
+newCustomerConnectorInfo ::
+  -- | 'activeConnectors'
+  Prelude.Int ->
+  -- | 'healthyConnectors'
+  Prelude.Int ->
+  -- | 'blackListedConnectors'
+  Prelude.Int ->
+  -- | 'shutdownConnectors'
+  Prelude.Int ->
+  -- | 'unhealthyConnectors'
+  Prelude.Int ->
+  -- | 'totalConnectors'
+  Prelude.Int ->
+  -- | 'unknownConnectors'
+  Prelude.Int ->
+  CustomerConnectorInfo
+newCustomerConnectorInfo
+  pActiveConnectors_
+  pHealthyConnectors_
+  pBlackListedConnectors_
+  pShutdownConnectors_
+  pUnhealthyConnectors_
+  pTotalConnectors_
+  pUnknownConnectors_ =
+    CustomerConnectorInfo'
+      { activeConnectors =
+          pActiveConnectors_,
+        healthyConnectors = pHealthyConnectors_,
+        blackListedConnectors = pBlackListedConnectors_,
+        shutdownConnectors = pShutdownConnectors_,
+        unhealthyConnectors = pUnhealthyConnectors_,
+        totalConnectors = pTotalConnectors_,
+        unknownConnectors = pUnknownConnectors_
+      }
+
+-- | Number of active discovery connectors.
+customerConnectorInfo_activeConnectors :: Lens.Lens' CustomerConnectorInfo Prelude.Int
+customerConnectorInfo_activeConnectors = Lens.lens (\CustomerConnectorInfo' {activeConnectors} -> activeConnectors) (\s@CustomerConnectorInfo' {} a -> s {activeConnectors = a} :: CustomerConnectorInfo)
+
+-- | Number of healthy discovery connectors.
+customerConnectorInfo_healthyConnectors :: Lens.Lens' CustomerConnectorInfo Prelude.Int
+customerConnectorInfo_healthyConnectors = Lens.lens (\CustomerConnectorInfo' {healthyConnectors} -> healthyConnectors) (\s@CustomerConnectorInfo' {} a -> s {healthyConnectors = a} :: CustomerConnectorInfo)
+
+-- | Number of blacklisted discovery connectors.
+customerConnectorInfo_blackListedConnectors :: Lens.Lens' CustomerConnectorInfo Prelude.Int
+customerConnectorInfo_blackListedConnectors = Lens.lens (\CustomerConnectorInfo' {blackListedConnectors} -> blackListedConnectors) (\s@CustomerConnectorInfo' {} a -> s {blackListedConnectors = a} :: CustomerConnectorInfo)
+
+-- | Number of discovery connectors with status SHUTDOWN,
+customerConnectorInfo_shutdownConnectors :: Lens.Lens' CustomerConnectorInfo Prelude.Int
+customerConnectorInfo_shutdownConnectors = Lens.lens (\CustomerConnectorInfo' {shutdownConnectors} -> shutdownConnectors) (\s@CustomerConnectorInfo' {} a -> s {shutdownConnectors = a} :: CustomerConnectorInfo)
+
+-- | Number of unhealthy discovery connectors.
+customerConnectorInfo_unhealthyConnectors :: Lens.Lens' CustomerConnectorInfo Prelude.Int
+customerConnectorInfo_unhealthyConnectors = Lens.lens (\CustomerConnectorInfo' {unhealthyConnectors} -> unhealthyConnectors) (\s@CustomerConnectorInfo' {} a -> s {unhealthyConnectors = a} :: CustomerConnectorInfo)
+
+-- | Total number of discovery connectors.
+customerConnectorInfo_totalConnectors :: Lens.Lens' CustomerConnectorInfo Prelude.Int
+customerConnectorInfo_totalConnectors = Lens.lens (\CustomerConnectorInfo' {totalConnectors} -> totalConnectors) (\s@CustomerConnectorInfo' {} a -> s {totalConnectors = a} :: CustomerConnectorInfo)
+
+-- | Number of unknown discovery connectors.
+customerConnectorInfo_unknownConnectors :: Lens.Lens' CustomerConnectorInfo Prelude.Int
+customerConnectorInfo_unknownConnectors = Lens.lens (\CustomerConnectorInfo' {unknownConnectors} -> unknownConnectors) (\s@CustomerConnectorInfo' {} a -> s {unknownConnectors = a} :: CustomerConnectorInfo)
+
+instance Data.FromJSON CustomerConnectorInfo where
+  parseJSON =
+    Data.withObject
+      "CustomerConnectorInfo"
+      ( \x ->
+          CustomerConnectorInfo'
+            Prelude.<$> (x Data..: "activeConnectors")
+            Prelude.<*> (x Data..: "healthyConnectors")
+            Prelude.<*> (x Data..: "blackListedConnectors")
+            Prelude.<*> (x Data..: "shutdownConnectors")
+            Prelude.<*> (x Data..: "unhealthyConnectors")
+            Prelude.<*> (x Data..: "totalConnectors")
+            Prelude.<*> (x Data..: "unknownConnectors")
+      )
+
+instance Prelude.Hashable CustomerConnectorInfo where
+  hashWithSalt _salt CustomerConnectorInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeConnectors
+      `Prelude.hashWithSalt` healthyConnectors
+      `Prelude.hashWithSalt` blackListedConnectors
+      `Prelude.hashWithSalt` shutdownConnectors
+      `Prelude.hashWithSalt` unhealthyConnectors
+      `Prelude.hashWithSalt` totalConnectors
+      `Prelude.hashWithSalt` unknownConnectors
+
+instance Prelude.NFData CustomerConnectorInfo where
+  rnf CustomerConnectorInfo' {..} =
+    Prelude.rnf activeConnectors
+      `Prelude.seq` Prelude.rnf healthyConnectors
+      `Prelude.seq` Prelude.rnf blackListedConnectors
+      `Prelude.seq` Prelude.rnf shutdownConnectors
+      `Prelude.seq` Prelude.rnf unhealthyConnectors
+      `Prelude.seq` Prelude.rnf totalConnectors
+      `Prelude.seq` Prelude.rnf unknownConnectors
diff --git a/gen/Amazonka/Discovery/Types/CustomerMeCollectorInfo.hs b/gen/Amazonka/Discovery/Types/CustomerMeCollectorInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/CustomerMeCollectorInfo.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.CustomerMeCollectorInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.CustomerMeCollectorInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The inventory data for installed Migration Evaluator collectors.
+--
+-- /See:/ 'newCustomerMeCollectorInfo' smart constructor.
+data CustomerMeCollectorInfo = CustomerMeCollectorInfo'
+  { -- | The number of active Migration Evaluator collectors.
+    activeMeCollectors :: Prelude.Int,
+    -- | The number of healthy Migration Evaluator collectors.
+    healthyMeCollectors :: Prelude.Int,
+    -- | The number of deny-listed Migration Evaluator collectors.
+    denyListedMeCollectors :: Prelude.Int,
+    -- | The number of Migration Evaluator collectors with @SHUTDOWN@ status.
+    shutdownMeCollectors :: Prelude.Int,
+    -- | The number of unhealthy Migration Evaluator collectors.
+    unhealthyMeCollectors :: Prelude.Int,
+    -- | The total number of Migration Evaluator collectors.
+    totalMeCollectors :: Prelude.Int,
+    -- | The number of unknown Migration Evaluator collectors.
+    unknownMeCollectors :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomerMeCollectorInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'activeMeCollectors', 'customerMeCollectorInfo_activeMeCollectors' - The number of active Migration Evaluator collectors.
+--
+-- 'healthyMeCollectors', 'customerMeCollectorInfo_healthyMeCollectors' - The number of healthy Migration Evaluator collectors.
+--
+-- 'denyListedMeCollectors', 'customerMeCollectorInfo_denyListedMeCollectors' - The number of deny-listed Migration Evaluator collectors.
+--
+-- 'shutdownMeCollectors', 'customerMeCollectorInfo_shutdownMeCollectors' - The number of Migration Evaluator collectors with @SHUTDOWN@ status.
+--
+-- 'unhealthyMeCollectors', 'customerMeCollectorInfo_unhealthyMeCollectors' - The number of unhealthy Migration Evaluator collectors.
+--
+-- 'totalMeCollectors', 'customerMeCollectorInfo_totalMeCollectors' - The total number of Migration Evaluator collectors.
+--
+-- 'unknownMeCollectors', 'customerMeCollectorInfo_unknownMeCollectors' - The number of unknown Migration Evaluator collectors.
+newCustomerMeCollectorInfo ::
+  -- | 'activeMeCollectors'
+  Prelude.Int ->
+  -- | 'healthyMeCollectors'
+  Prelude.Int ->
+  -- | 'denyListedMeCollectors'
+  Prelude.Int ->
+  -- | 'shutdownMeCollectors'
+  Prelude.Int ->
+  -- | 'unhealthyMeCollectors'
+  Prelude.Int ->
+  -- | 'totalMeCollectors'
+  Prelude.Int ->
+  -- | 'unknownMeCollectors'
+  Prelude.Int ->
+  CustomerMeCollectorInfo
+newCustomerMeCollectorInfo
+  pActiveMeCollectors_
+  pHealthyMeCollectors_
+  pDenyListedMeCollectors_
+  pShutdownMeCollectors_
+  pUnhealthyMeCollectors_
+  pTotalMeCollectors_
+  pUnknownMeCollectors_ =
+    CustomerMeCollectorInfo'
+      { activeMeCollectors =
+          pActiveMeCollectors_,
+        healthyMeCollectors = pHealthyMeCollectors_,
+        denyListedMeCollectors = pDenyListedMeCollectors_,
+        shutdownMeCollectors = pShutdownMeCollectors_,
+        unhealthyMeCollectors = pUnhealthyMeCollectors_,
+        totalMeCollectors = pTotalMeCollectors_,
+        unknownMeCollectors = pUnknownMeCollectors_
+      }
+
+-- | The number of active Migration Evaluator collectors.
+customerMeCollectorInfo_activeMeCollectors :: Lens.Lens' CustomerMeCollectorInfo Prelude.Int
+customerMeCollectorInfo_activeMeCollectors = Lens.lens (\CustomerMeCollectorInfo' {activeMeCollectors} -> activeMeCollectors) (\s@CustomerMeCollectorInfo' {} a -> s {activeMeCollectors = a} :: CustomerMeCollectorInfo)
+
+-- | The number of healthy Migration Evaluator collectors.
+customerMeCollectorInfo_healthyMeCollectors :: Lens.Lens' CustomerMeCollectorInfo Prelude.Int
+customerMeCollectorInfo_healthyMeCollectors = Lens.lens (\CustomerMeCollectorInfo' {healthyMeCollectors} -> healthyMeCollectors) (\s@CustomerMeCollectorInfo' {} a -> s {healthyMeCollectors = a} :: CustomerMeCollectorInfo)
+
+-- | The number of deny-listed Migration Evaluator collectors.
+customerMeCollectorInfo_denyListedMeCollectors :: Lens.Lens' CustomerMeCollectorInfo Prelude.Int
+customerMeCollectorInfo_denyListedMeCollectors = Lens.lens (\CustomerMeCollectorInfo' {denyListedMeCollectors} -> denyListedMeCollectors) (\s@CustomerMeCollectorInfo' {} a -> s {denyListedMeCollectors = a} :: CustomerMeCollectorInfo)
+
+-- | The number of Migration Evaluator collectors with @SHUTDOWN@ status.
+customerMeCollectorInfo_shutdownMeCollectors :: Lens.Lens' CustomerMeCollectorInfo Prelude.Int
+customerMeCollectorInfo_shutdownMeCollectors = Lens.lens (\CustomerMeCollectorInfo' {shutdownMeCollectors} -> shutdownMeCollectors) (\s@CustomerMeCollectorInfo' {} a -> s {shutdownMeCollectors = a} :: CustomerMeCollectorInfo)
+
+-- | The number of unhealthy Migration Evaluator collectors.
+customerMeCollectorInfo_unhealthyMeCollectors :: Lens.Lens' CustomerMeCollectorInfo Prelude.Int
+customerMeCollectorInfo_unhealthyMeCollectors = Lens.lens (\CustomerMeCollectorInfo' {unhealthyMeCollectors} -> unhealthyMeCollectors) (\s@CustomerMeCollectorInfo' {} a -> s {unhealthyMeCollectors = a} :: CustomerMeCollectorInfo)
+
+-- | The total number of Migration Evaluator collectors.
+customerMeCollectorInfo_totalMeCollectors :: Lens.Lens' CustomerMeCollectorInfo Prelude.Int
+customerMeCollectorInfo_totalMeCollectors = Lens.lens (\CustomerMeCollectorInfo' {totalMeCollectors} -> totalMeCollectors) (\s@CustomerMeCollectorInfo' {} a -> s {totalMeCollectors = a} :: CustomerMeCollectorInfo)
+
+-- | The number of unknown Migration Evaluator collectors.
+customerMeCollectorInfo_unknownMeCollectors :: Lens.Lens' CustomerMeCollectorInfo Prelude.Int
+customerMeCollectorInfo_unknownMeCollectors = Lens.lens (\CustomerMeCollectorInfo' {unknownMeCollectors} -> unknownMeCollectors) (\s@CustomerMeCollectorInfo' {} a -> s {unknownMeCollectors = a} :: CustomerMeCollectorInfo)
+
+instance Data.FromJSON CustomerMeCollectorInfo where
+  parseJSON =
+    Data.withObject
+      "CustomerMeCollectorInfo"
+      ( \x ->
+          CustomerMeCollectorInfo'
+            Prelude.<$> (x Data..: "activeMeCollectors")
+            Prelude.<*> (x Data..: "healthyMeCollectors")
+            Prelude.<*> (x Data..: "denyListedMeCollectors")
+            Prelude.<*> (x Data..: "shutdownMeCollectors")
+            Prelude.<*> (x Data..: "unhealthyMeCollectors")
+            Prelude.<*> (x Data..: "totalMeCollectors")
+            Prelude.<*> (x Data..: "unknownMeCollectors")
+      )
+
+instance Prelude.Hashable CustomerMeCollectorInfo where
+  hashWithSalt _salt CustomerMeCollectorInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` activeMeCollectors
+      `Prelude.hashWithSalt` healthyMeCollectors
+      `Prelude.hashWithSalt` denyListedMeCollectors
+      `Prelude.hashWithSalt` shutdownMeCollectors
+      `Prelude.hashWithSalt` unhealthyMeCollectors
+      `Prelude.hashWithSalt` totalMeCollectors
+      `Prelude.hashWithSalt` unknownMeCollectors
+
+instance Prelude.NFData CustomerMeCollectorInfo where
+  rnf CustomerMeCollectorInfo' {..} =
+    Prelude.rnf activeMeCollectors
+      `Prelude.seq` Prelude.rnf healthyMeCollectors
+      `Prelude.seq` Prelude.rnf denyListedMeCollectors
+      `Prelude.seq` Prelude.rnf shutdownMeCollectors
+      `Prelude.seq` Prelude.rnf unhealthyMeCollectors
+      `Prelude.seq` Prelude.rnf totalMeCollectors
+      `Prelude.seq` Prelude.rnf unknownMeCollectors
diff --git a/gen/Amazonka/Discovery/Types/DataSource.hs b/gen/Amazonka/Discovery/Types/DataSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/DataSource.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.DataSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.DataSource
+  ( DataSource
+      ( ..,
+        DataSource_AGENT
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DataSource = DataSource'
+  { fromDataSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DataSource_AGENT :: DataSource
+pattern DataSource_AGENT = DataSource' "AGENT"
+
+{-# COMPLETE
+  DataSource_AGENT,
+  DataSource'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/ExportDataFormat.hs b/gen/Amazonka/Discovery/Types/ExportDataFormat.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ExportDataFormat.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ExportDataFormat
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ExportDataFormat
+  ( ExportDataFormat
+      ( ..,
+        ExportDataFormat_CSV,
+        ExportDataFormat_GRAPHML
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ExportDataFormat = ExportDataFormat'
+  { fromExportDataFormat ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ExportDataFormat_CSV :: ExportDataFormat
+pattern ExportDataFormat_CSV = ExportDataFormat' "CSV"
+
+pattern ExportDataFormat_GRAPHML :: ExportDataFormat
+pattern ExportDataFormat_GRAPHML = ExportDataFormat' "GRAPHML"
+
+{-# COMPLETE
+  ExportDataFormat_CSV,
+  ExportDataFormat_GRAPHML,
+  ExportDataFormat'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/ExportFilter.hs b/gen/Amazonka/Discovery/Types/ExportFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ExportFilter.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ExportFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ExportFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Used to select which agent\'s data is to be exported. A single agent ID
+-- may be selected for export using the
+-- <http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_StartExportTask.html StartExportTask>
+-- action.
+--
+-- /See:/ 'newExportFilter' smart constructor.
+data ExportFilter = ExportFilter'
+  { -- | A single @ExportFilter@ name. Supported filters: @agentIds@.
+    name :: Prelude.Text,
+    -- | A single agent ID for a Discovery Agent. An agent ID can be found using
+    -- the
+    -- <http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_DescribeAgents.html DescribeAgents>
+    -- action. Typically an ADS agent ID is in the form @o-0123456789abcdef0@.
+    values :: [Prelude.Text],
+    -- | Supported condition: @EQUALS@
+    condition :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'exportFilter_name' - A single @ExportFilter@ name. Supported filters: @agentIds@.
+--
+-- 'values', 'exportFilter_values' - A single agent ID for a Discovery Agent. An agent ID can be found using
+-- the
+-- <http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_DescribeAgents.html DescribeAgents>
+-- action. Typically an ADS agent ID is in the form @o-0123456789abcdef0@.
+--
+-- 'condition', 'exportFilter_condition' - Supported condition: @EQUALS@
+newExportFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'condition'
+  Prelude.Text ->
+  ExportFilter
+newExportFilter pName_ pCondition_ =
+  ExportFilter'
+    { name = pName_,
+      values = Prelude.mempty,
+      condition = pCondition_
+    }
+
+-- | A single @ExportFilter@ name. Supported filters: @agentIds@.
+exportFilter_name :: Lens.Lens' ExportFilter Prelude.Text
+exportFilter_name = Lens.lens (\ExportFilter' {name} -> name) (\s@ExportFilter' {} a -> s {name = a} :: ExportFilter)
+
+-- | A single agent ID for a Discovery Agent. An agent ID can be found using
+-- the
+-- <http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_DescribeAgents.html DescribeAgents>
+-- action. Typically an ADS agent ID is in the form @o-0123456789abcdef0@.
+exportFilter_values :: Lens.Lens' ExportFilter [Prelude.Text]
+exportFilter_values = Lens.lens (\ExportFilter' {values} -> values) (\s@ExportFilter' {} a -> s {values = a} :: ExportFilter) Prelude.. Lens.coerced
+
+-- | Supported condition: @EQUALS@
+exportFilter_condition :: Lens.Lens' ExportFilter Prelude.Text
+exportFilter_condition = Lens.lens (\ExportFilter' {condition} -> condition) (\s@ExportFilter' {} a -> s {condition = a} :: ExportFilter)
+
+instance Prelude.Hashable ExportFilter where
+  hashWithSalt _salt ExportFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+      `Prelude.hashWithSalt` condition
+
+instance Prelude.NFData ExportFilter where
+  rnf ExportFilter' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf values
+      `Prelude.seq` Prelude.rnf condition
+
+instance Data.ToJSON ExportFilter where
+  toJSON ExportFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("name" Data..= name),
+            Prelude.Just ("values" Data..= values),
+            Prelude.Just ("condition" Data..= condition)
+          ]
+      )
diff --git a/gen/Amazonka/Discovery/Types/ExportInfo.hs b/gen/Amazonka/Discovery/Types/ExportInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ExportInfo.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ExportInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ExportInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.ExportStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | Information regarding the export status of discovered data. The value is
+-- an array of objects.
+--
+-- /See:/ 'newExportInfo' smart constructor.
+data ExportInfo = ExportInfo'
+  { -- | A URL for an Amazon S3 bucket where you can review the exported data.
+    -- The URL is displayed only if the export succeeded.
+    configurationsDownloadUrl :: Prelude.Maybe Prelude.Text,
+    -- | If true, the export of agent information exceeded the size limit for a
+    -- single export and the exported data is incomplete for the requested time
+    -- range. To address this, select a smaller time range for the export by
+    -- using @startDate@ and @endDate@.
+    isTruncated :: Prelude.Maybe Prelude.Bool,
+    -- | The @endTime@ used in the @StartExportTask@ request. If no @endTime@ was
+    -- requested, this result does not appear in @ExportInfo@.
+    requestedEndTime :: Prelude.Maybe Data.POSIX,
+    -- | The value of @startTime@ parameter in the @StartExportTask@ request. If
+    -- no @startTime@ was requested, this result does not appear in
+    -- @ExportInfo@.
+    requestedStartTime :: Prelude.Maybe Data.POSIX,
+    -- | A unique identifier used to query an export.
+    exportId :: Prelude.Text,
+    -- | The status of the data export job.
+    exportStatus :: ExportStatus,
+    -- | A status message provided for API callers.
+    statusMessage :: Prelude.Text,
+    -- | The time that the data export was initiated.
+    exportRequestTime :: Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationsDownloadUrl', 'exportInfo_configurationsDownloadUrl' - A URL for an Amazon S3 bucket where you can review the exported data.
+-- The URL is displayed only if the export succeeded.
+--
+-- 'isTruncated', 'exportInfo_isTruncated' - If true, the export of agent information exceeded the size limit for a
+-- single export and the exported data is incomplete for the requested time
+-- range. To address this, select a smaller time range for the export by
+-- using @startDate@ and @endDate@.
+--
+-- 'requestedEndTime', 'exportInfo_requestedEndTime' - The @endTime@ used in the @StartExportTask@ request. If no @endTime@ was
+-- requested, this result does not appear in @ExportInfo@.
+--
+-- 'requestedStartTime', 'exportInfo_requestedStartTime' - The value of @startTime@ parameter in the @StartExportTask@ request. If
+-- no @startTime@ was requested, this result does not appear in
+-- @ExportInfo@.
+--
+-- 'exportId', 'exportInfo_exportId' - A unique identifier used to query an export.
+--
+-- 'exportStatus', 'exportInfo_exportStatus' - The status of the data export job.
+--
+-- 'statusMessage', 'exportInfo_statusMessage' - A status message provided for API callers.
+--
+-- 'exportRequestTime', 'exportInfo_exportRequestTime' - The time that the data export was initiated.
+newExportInfo ::
+  -- | 'exportId'
+  Prelude.Text ->
+  -- | 'exportStatus'
+  ExportStatus ->
+  -- | 'statusMessage'
+  Prelude.Text ->
+  -- | 'exportRequestTime'
+  Prelude.UTCTime ->
+  ExportInfo
+newExportInfo
+  pExportId_
+  pExportStatus_
+  pStatusMessage_
+  pExportRequestTime_ =
+    ExportInfo'
+      { configurationsDownloadUrl =
+          Prelude.Nothing,
+        isTruncated = Prelude.Nothing,
+        requestedEndTime = Prelude.Nothing,
+        requestedStartTime = Prelude.Nothing,
+        exportId = pExportId_,
+        exportStatus = pExportStatus_,
+        statusMessage = pStatusMessage_,
+        exportRequestTime =
+          Data._Time Lens.# pExportRequestTime_
+      }
+
+-- | A URL for an Amazon S3 bucket where you can review the exported data.
+-- The URL is displayed only if the export succeeded.
+exportInfo_configurationsDownloadUrl :: Lens.Lens' ExportInfo (Prelude.Maybe Prelude.Text)
+exportInfo_configurationsDownloadUrl = Lens.lens (\ExportInfo' {configurationsDownloadUrl} -> configurationsDownloadUrl) (\s@ExportInfo' {} a -> s {configurationsDownloadUrl = a} :: ExportInfo)
+
+-- | If true, the export of agent information exceeded the size limit for a
+-- single export and the exported data is incomplete for the requested time
+-- range. To address this, select a smaller time range for the export by
+-- using @startDate@ and @endDate@.
+exportInfo_isTruncated :: Lens.Lens' ExportInfo (Prelude.Maybe Prelude.Bool)
+exportInfo_isTruncated = Lens.lens (\ExportInfo' {isTruncated} -> isTruncated) (\s@ExportInfo' {} a -> s {isTruncated = a} :: ExportInfo)
+
+-- | The @endTime@ used in the @StartExportTask@ request. If no @endTime@ was
+-- requested, this result does not appear in @ExportInfo@.
+exportInfo_requestedEndTime :: Lens.Lens' ExportInfo (Prelude.Maybe Prelude.UTCTime)
+exportInfo_requestedEndTime = Lens.lens (\ExportInfo' {requestedEndTime} -> requestedEndTime) (\s@ExportInfo' {} a -> s {requestedEndTime = a} :: ExportInfo) Prelude.. Lens.mapping Data._Time
+
+-- | The value of @startTime@ parameter in the @StartExportTask@ request. If
+-- no @startTime@ was requested, this result does not appear in
+-- @ExportInfo@.
+exportInfo_requestedStartTime :: Lens.Lens' ExportInfo (Prelude.Maybe Prelude.UTCTime)
+exportInfo_requestedStartTime = Lens.lens (\ExportInfo' {requestedStartTime} -> requestedStartTime) (\s@ExportInfo' {} a -> s {requestedStartTime = a} :: ExportInfo) Prelude.. Lens.mapping Data._Time
+
+-- | A unique identifier used to query an export.
+exportInfo_exportId :: Lens.Lens' ExportInfo Prelude.Text
+exportInfo_exportId = Lens.lens (\ExportInfo' {exportId} -> exportId) (\s@ExportInfo' {} a -> s {exportId = a} :: ExportInfo)
+
+-- | The status of the data export job.
+exportInfo_exportStatus :: Lens.Lens' ExportInfo ExportStatus
+exportInfo_exportStatus = Lens.lens (\ExportInfo' {exportStatus} -> exportStatus) (\s@ExportInfo' {} a -> s {exportStatus = a} :: ExportInfo)
+
+-- | A status message provided for API callers.
+exportInfo_statusMessage :: Lens.Lens' ExportInfo Prelude.Text
+exportInfo_statusMessage = Lens.lens (\ExportInfo' {statusMessage} -> statusMessage) (\s@ExportInfo' {} a -> s {statusMessage = a} :: ExportInfo)
+
+-- | The time that the data export was initiated.
+exportInfo_exportRequestTime :: Lens.Lens' ExportInfo Prelude.UTCTime
+exportInfo_exportRequestTime = Lens.lens (\ExportInfo' {exportRequestTime} -> exportRequestTime) (\s@ExportInfo' {} a -> s {exportRequestTime = a} :: ExportInfo) Prelude.. Data._Time
+
+instance Data.FromJSON ExportInfo where
+  parseJSON =
+    Data.withObject
+      "ExportInfo"
+      ( \x ->
+          ExportInfo'
+            Prelude.<$> (x Data..:? "configurationsDownloadUrl")
+            Prelude.<*> (x Data..:? "isTruncated")
+            Prelude.<*> (x Data..:? "requestedEndTime")
+            Prelude.<*> (x Data..:? "requestedStartTime")
+            Prelude.<*> (x Data..: "exportId")
+            Prelude.<*> (x Data..: "exportStatus")
+            Prelude.<*> (x Data..: "statusMessage")
+            Prelude.<*> (x Data..: "exportRequestTime")
+      )
+
+instance Prelude.Hashable ExportInfo where
+  hashWithSalt _salt ExportInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationsDownloadUrl
+      `Prelude.hashWithSalt` isTruncated
+      `Prelude.hashWithSalt` requestedEndTime
+      `Prelude.hashWithSalt` requestedStartTime
+      `Prelude.hashWithSalt` exportId
+      `Prelude.hashWithSalt` exportStatus
+      `Prelude.hashWithSalt` statusMessage
+      `Prelude.hashWithSalt` exportRequestTime
+
+instance Prelude.NFData ExportInfo where
+  rnf ExportInfo' {..} =
+    Prelude.rnf configurationsDownloadUrl
+      `Prelude.seq` Prelude.rnf isTruncated
+      `Prelude.seq` Prelude.rnf requestedEndTime
+      `Prelude.seq` Prelude.rnf requestedStartTime
+      `Prelude.seq` Prelude.rnf exportId
+      `Prelude.seq` Prelude.rnf exportStatus
+      `Prelude.seq` Prelude.rnf statusMessage
+      `Prelude.seq` Prelude.rnf exportRequestTime
diff --git a/gen/Amazonka/Discovery/Types/ExportStatus.hs b/gen/Amazonka/Discovery/Types/ExportStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ExportStatus.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ExportStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ExportStatus
+  ( ExportStatus
+      ( ..,
+        ExportStatus_FAILED,
+        ExportStatus_IN_PROGRESS,
+        ExportStatus_SUCCEEDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ExportStatus = ExportStatus'
+  { fromExportStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ExportStatus_FAILED :: ExportStatus
+pattern ExportStatus_FAILED = ExportStatus' "FAILED"
+
+pattern ExportStatus_IN_PROGRESS :: ExportStatus
+pattern ExportStatus_IN_PROGRESS = ExportStatus' "IN_PROGRESS"
+
+pattern ExportStatus_SUCCEEDED :: ExportStatus
+pattern ExportStatus_SUCCEEDED = ExportStatus' "SUCCEEDED"
+
+{-# COMPLETE
+  ExportStatus_FAILED,
+  ExportStatus_IN_PROGRESS,
+  ExportStatus_SUCCEEDED,
+  ExportStatus'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/Filter.hs b/gen/Amazonka/Discovery/Types/Filter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/Filter.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.Filter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.Filter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A filter that can use conditional operators.
+--
+-- For more information about filters, see
+-- <https://docs.aws.amazon.com/application-discovery/latest/userguide/discovery-api-queries.html Querying Discovered Configuration Items>
+-- in the /Amazon Web Services Application Discovery Service User Guide/.
+--
+-- /See:/ 'newFilter' smart constructor.
+data Filter = Filter'
+  { -- | The name of the filter.
+    name :: Prelude.Text,
+    -- | A string value on which to filter. For example, if you choose the
+    -- @destinationServer.osVersion@ filter name, you could specify @Ubuntu@
+    -- for the value.
+    values :: [Prelude.Text],
+    -- | A conditional operator. The following operators are valid: EQUALS,
+    -- NOT_EQUALS, CONTAINS, NOT_CONTAINS. If you specify multiple filters, the
+    -- system utilizes all filters as though concatenated by /AND/. If you
+    -- specify multiple values for a particular filter, the system
+    -- differentiates the values using /OR/. Calling either
+    -- /DescribeConfigurations/ or /ListConfigurations/ returns attributes of
+    -- matching configuration items.
+    condition :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Filter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'filter_name' - The name of the filter.
+--
+-- 'values', 'filter_values' - A string value on which to filter. For example, if you choose the
+-- @destinationServer.osVersion@ filter name, you could specify @Ubuntu@
+-- for the value.
+--
+-- 'condition', 'filter_condition' - A conditional operator. The following operators are valid: EQUALS,
+-- NOT_EQUALS, CONTAINS, NOT_CONTAINS. If you specify multiple filters, the
+-- system utilizes all filters as though concatenated by /AND/. If you
+-- specify multiple values for a particular filter, the system
+-- differentiates the values using /OR/. Calling either
+-- /DescribeConfigurations/ or /ListConfigurations/ returns attributes of
+-- matching configuration items.
+newFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'condition'
+  Prelude.Text ->
+  Filter
+newFilter pName_ pCondition_ =
+  Filter'
+    { name = pName_,
+      values = Prelude.mempty,
+      condition = pCondition_
+    }
+
+-- | The name of the filter.
+filter_name :: Lens.Lens' Filter Prelude.Text
+filter_name = Lens.lens (\Filter' {name} -> name) (\s@Filter' {} a -> s {name = a} :: Filter)
+
+-- | A string value on which to filter. For example, if you choose the
+-- @destinationServer.osVersion@ filter name, you could specify @Ubuntu@
+-- for the value.
+filter_values :: Lens.Lens' Filter [Prelude.Text]
+filter_values = Lens.lens (\Filter' {values} -> values) (\s@Filter' {} a -> s {values = a} :: Filter) Prelude.. Lens.coerced
+
+-- | A conditional operator. The following operators are valid: EQUALS,
+-- NOT_EQUALS, CONTAINS, NOT_CONTAINS. If you specify multiple filters, the
+-- system utilizes all filters as though concatenated by /AND/. If you
+-- specify multiple values for a particular filter, the system
+-- differentiates the values using /OR/. Calling either
+-- /DescribeConfigurations/ or /ListConfigurations/ returns attributes of
+-- matching configuration items.
+filter_condition :: Lens.Lens' Filter Prelude.Text
+filter_condition = Lens.lens (\Filter' {condition} -> condition) (\s@Filter' {} a -> s {condition = a} :: Filter)
+
+instance Prelude.Hashable Filter where
+  hashWithSalt _salt Filter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+      `Prelude.hashWithSalt` condition
+
+instance Prelude.NFData Filter where
+  rnf Filter' {..} =
+    Prelude.rnf name
+      `Prelude.seq` Prelude.rnf values
+      `Prelude.seq` Prelude.rnf condition
+
+instance Data.ToJSON Filter where
+  toJSON Filter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("name" Data..= name),
+            Prelude.Just ("values" Data..= values),
+            Prelude.Just ("condition" Data..= condition)
+          ]
+      )
diff --git a/gen/Amazonka/Discovery/Types/ImportStatus.hs b/gen/Amazonka/Discovery/Types/ImportStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ImportStatus.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ImportStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ImportStatus
+  ( ImportStatus
+      ( ..,
+        ImportStatus_DELETE_COMPLETE,
+        ImportStatus_DELETE_FAILED,
+        ImportStatus_DELETE_FAILED_LIMIT_EXCEEDED,
+        ImportStatus_DELETE_IN_PROGRESS,
+        ImportStatus_IMPORT_COMPLETE,
+        ImportStatus_IMPORT_COMPLETE_WITH_ERRORS,
+        ImportStatus_IMPORT_FAILED,
+        ImportStatus_IMPORT_FAILED_RECORD_LIMIT_EXCEEDED,
+        ImportStatus_IMPORT_FAILED_SERVER_LIMIT_EXCEEDED,
+        ImportStatus_IMPORT_IN_PROGRESS,
+        ImportStatus_INTERNAL_ERROR
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImportStatus = ImportStatus'
+  { fromImportStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImportStatus_DELETE_COMPLETE :: ImportStatus
+pattern ImportStatus_DELETE_COMPLETE = ImportStatus' "DELETE_COMPLETE"
+
+pattern ImportStatus_DELETE_FAILED :: ImportStatus
+pattern ImportStatus_DELETE_FAILED = ImportStatus' "DELETE_FAILED"
+
+pattern ImportStatus_DELETE_FAILED_LIMIT_EXCEEDED :: ImportStatus
+pattern ImportStatus_DELETE_FAILED_LIMIT_EXCEEDED = ImportStatus' "DELETE_FAILED_LIMIT_EXCEEDED"
+
+pattern ImportStatus_DELETE_IN_PROGRESS :: ImportStatus
+pattern ImportStatus_DELETE_IN_PROGRESS = ImportStatus' "DELETE_IN_PROGRESS"
+
+pattern ImportStatus_IMPORT_COMPLETE :: ImportStatus
+pattern ImportStatus_IMPORT_COMPLETE = ImportStatus' "IMPORT_COMPLETE"
+
+pattern ImportStatus_IMPORT_COMPLETE_WITH_ERRORS :: ImportStatus
+pattern ImportStatus_IMPORT_COMPLETE_WITH_ERRORS = ImportStatus' "IMPORT_COMPLETE_WITH_ERRORS"
+
+pattern ImportStatus_IMPORT_FAILED :: ImportStatus
+pattern ImportStatus_IMPORT_FAILED = ImportStatus' "IMPORT_FAILED"
+
+pattern ImportStatus_IMPORT_FAILED_RECORD_LIMIT_EXCEEDED :: ImportStatus
+pattern ImportStatus_IMPORT_FAILED_RECORD_LIMIT_EXCEEDED = ImportStatus' "IMPORT_FAILED_RECORD_LIMIT_EXCEEDED"
+
+pattern ImportStatus_IMPORT_FAILED_SERVER_LIMIT_EXCEEDED :: ImportStatus
+pattern ImportStatus_IMPORT_FAILED_SERVER_LIMIT_EXCEEDED = ImportStatus' "IMPORT_FAILED_SERVER_LIMIT_EXCEEDED"
+
+pattern ImportStatus_IMPORT_IN_PROGRESS :: ImportStatus
+pattern ImportStatus_IMPORT_IN_PROGRESS = ImportStatus' "IMPORT_IN_PROGRESS"
+
+pattern ImportStatus_INTERNAL_ERROR :: ImportStatus
+pattern ImportStatus_INTERNAL_ERROR = ImportStatus' "INTERNAL_ERROR"
+
+{-# COMPLETE
+  ImportStatus_DELETE_COMPLETE,
+  ImportStatus_DELETE_FAILED,
+  ImportStatus_DELETE_FAILED_LIMIT_EXCEEDED,
+  ImportStatus_DELETE_IN_PROGRESS,
+  ImportStatus_IMPORT_COMPLETE,
+  ImportStatus_IMPORT_COMPLETE_WITH_ERRORS,
+  ImportStatus_IMPORT_FAILED,
+  ImportStatus_IMPORT_FAILED_RECORD_LIMIT_EXCEEDED,
+  ImportStatus_IMPORT_FAILED_SERVER_LIMIT_EXCEEDED,
+  ImportStatus_IMPORT_IN_PROGRESS,
+  ImportStatus_INTERNAL_ERROR,
+  ImportStatus'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/ImportTask.hs b/gen/Amazonka/Discovery/Types/ImportTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ImportTask.hs
@@ -0,0 +1,307 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ImportTask
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ImportTask where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.ImportStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | An array of information related to the import task request that includes
+-- status information, times, IDs, the Amazon S3 Object URL for the import
+-- file, and more.
+--
+-- /See:/ 'newImportTask' smart constructor.
+data ImportTask = ImportTask'
+  { -- | The total number of application records in the import file that failed
+    -- to be imported.
+    applicationImportFailure :: Prelude.Maybe Prelude.Int,
+    -- | The total number of application records in the import file that were
+    -- successfully imported.
+    applicationImportSuccess :: Prelude.Maybe Prelude.Int,
+    -- | A unique token used to prevent the same import request from occurring
+    -- more than once. If you didn\'t provide a token, a token was
+    -- automatically generated when the import task request was sent.
+    clientRequestToken :: Prelude.Maybe Prelude.Text,
+    -- | A link to a compressed archive folder (in the ZIP format) that contains
+    -- an error log and a file of failed records. You can use these two files
+    -- to quickly identify records that failed, why they failed, and correct
+    -- those records. Afterward, you can upload the corrected file to your
+    -- Amazon S3 bucket and create another import task request.
+    --
+    -- This field also includes authorization information so you can confirm
+    -- the authenticity of the compressed archive before you download it.
+    --
+    -- If some records failed to be imported we recommend that you correct the
+    -- records in the failed entries file and then imports that failed entries
+    -- file. This prevents you from having to correct and update the larger
+    -- original file and attempt importing it again.
+    errorsAndFailedEntriesZip :: Prelude.Maybe Prelude.Text,
+    -- | The time that the import task request finished, presented in the Unix
+    -- time stamp format.
+    importCompletionTime :: Prelude.Maybe Data.POSIX,
+    -- | The time that the import task request was deleted, presented in the Unix
+    -- time stamp format.
+    importDeletedTime :: Prelude.Maybe Data.POSIX,
+    -- | The time that the import task request was made, presented in the Unix
+    -- time stamp format.
+    importRequestTime :: Prelude.Maybe Data.POSIX,
+    -- | The unique ID for a specific import task. These IDs aren\'t globally
+    -- unique, but they are unique within an Amazon Web Services account.
+    importTaskId :: Prelude.Maybe Prelude.Text,
+    -- | The URL for your import file that you\'ve uploaded to Amazon S3.
+    importUrl :: Prelude.Maybe Prelude.Text,
+    -- | A descriptive name for an import task. You can use this name to filter
+    -- future requests related to this import task, such as identifying
+    -- applications and servers that were included in this import task. We
+    -- recommend that you use a meaningful name for each import task.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The total number of server records in the import file that failed to be
+    -- imported.
+    serverImportFailure :: Prelude.Maybe Prelude.Int,
+    -- | The total number of server records in the import file that were
+    -- successfully imported.
+    serverImportSuccess :: Prelude.Maybe Prelude.Int,
+    -- | The status of the import task. An import can have the status of
+    -- @IMPORT_COMPLETE@ and still have some records fail to import from the
+    -- overall request. More information can be found in the downloadable
+    -- archive defined in the @errorsAndFailedEntriesZip@ field, or in the
+    -- Migration Hub management console.
+    status :: Prelude.Maybe ImportStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportTask' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationImportFailure', 'importTask_applicationImportFailure' - The total number of application records in the import file that failed
+-- to be imported.
+--
+-- 'applicationImportSuccess', 'importTask_applicationImportSuccess' - The total number of application records in the import file that were
+-- successfully imported.
+--
+-- 'clientRequestToken', 'importTask_clientRequestToken' - A unique token used to prevent the same import request from occurring
+-- more than once. If you didn\'t provide a token, a token was
+-- automatically generated when the import task request was sent.
+--
+-- 'errorsAndFailedEntriesZip', 'importTask_errorsAndFailedEntriesZip' - A link to a compressed archive folder (in the ZIP format) that contains
+-- an error log and a file of failed records. You can use these two files
+-- to quickly identify records that failed, why they failed, and correct
+-- those records. Afterward, you can upload the corrected file to your
+-- Amazon S3 bucket and create another import task request.
+--
+-- This field also includes authorization information so you can confirm
+-- the authenticity of the compressed archive before you download it.
+--
+-- If some records failed to be imported we recommend that you correct the
+-- records in the failed entries file and then imports that failed entries
+-- file. This prevents you from having to correct and update the larger
+-- original file and attempt importing it again.
+--
+-- 'importCompletionTime', 'importTask_importCompletionTime' - The time that the import task request finished, presented in the Unix
+-- time stamp format.
+--
+-- 'importDeletedTime', 'importTask_importDeletedTime' - The time that the import task request was deleted, presented in the Unix
+-- time stamp format.
+--
+-- 'importRequestTime', 'importTask_importRequestTime' - The time that the import task request was made, presented in the Unix
+-- time stamp format.
+--
+-- 'importTaskId', 'importTask_importTaskId' - The unique ID for a specific import task. These IDs aren\'t globally
+-- unique, but they are unique within an Amazon Web Services account.
+--
+-- 'importUrl', 'importTask_importUrl' - The URL for your import file that you\'ve uploaded to Amazon S3.
+--
+-- 'name', 'importTask_name' - A descriptive name for an import task. You can use this name to filter
+-- future requests related to this import task, such as identifying
+-- applications and servers that were included in this import task. We
+-- recommend that you use a meaningful name for each import task.
+--
+-- 'serverImportFailure', 'importTask_serverImportFailure' - The total number of server records in the import file that failed to be
+-- imported.
+--
+-- 'serverImportSuccess', 'importTask_serverImportSuccess' - The total number of server records in the import file that were
+-- successfully imported.
+--
+-- 'status', 'importTask_status' - The status of the import task. An import can have the status of
+-- @IMPORT_COMPLETE@ and still have some records fail to import from the
+-- overall request. More information can be found in the downloadable
+-- archive defined in the @errorsAndFailedEntriesZip@ field, or in the
+-- Migration Hub management console.
+newImportTask ::
+  ImportTask
+newImportTask =
+  ImportTask'
+    { applicationImportFailure =
+        Prelude.Nothing,
+      applicationImportSuccess = Prelude.Nothing,
+      clientRequestToken = Prelude.Nothing,
+      errorsAndFailedEntriesZip = Prelude.Nothing,
+      importCompletionTime = Prelude.Nothing,
+      importDeletedTime = Prelude.Nothing,
+      importRequestTime = Prelude.Nothing,
+      importTaskId = Prelude.Nothing,
+      importUrl = Prelude.Nothing,
+      name = Prelude.Nothing,
+      serverImportFailure = Prelude.Nothing,
+      serverImportSuccess = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | The total number of application records in the import file that failed
+-- to be imported.
+importTask_applicationImportFailure :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Int)
+importTask_applicationImportFailure = Lens.lens (\ImportTask' {applicationImportFailure} -> applicationImportFailure) (\s@ImportTask' {} a -> s {applicationImportFailure = a} :: ImportTask)
+
+-- | The total number of application records in the import file that were
+-- successfully imported.
+importTask_applicationImportSuccess :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Int)
+importTask_applicationImportSuccess = Lens.lens (\ImportTask' {applicationImportSuccess} -> applicationImportSuccess) (\s@ImportTask' {} a -> s {applicationImportSuccess = a} :: ImportTask)
+
+-- | A unique token used to prevent the same import request from occurring
+-- more than once. If you didn\'t provide a token, a token was
+-- automatically generated when the import task request was sent.
+importTask_clientRequestToken :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Text)
+importTask_clientRequestToken = Lens.lens (\ImportTask' {clientRequestToken} -> clientRequestToken) (\s@ImportTask' {} a -> s {clientRequestToken = a} :: ImportTask)
+
+-- | A link to a compressed archive folder (in the ZIP format) that contains
+-- an error log and a file of failed records. You can use these two files
+-- to quickly identify records that failed, why they failed, and correct
+-- those records. Afterward, you can upload the corrected file to your
+-- Amazon S3 bucket and create another import task request.
+--
+-- This field also includes authorization information so you can confirm
+-- the authenticity of the compressed archive before you download it.
+--
+-- If some records failed to be imported we recommend that you correct the
+-- records in the failed entries file and then imports that failed entries
+-- file. This prevents you from having to correct and update the larger
+-- original file and attempt importing it again.
+importTask_errorsAndFailedEntriesZip :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Text)
+importTask_errorsAndFailedEntriesZip = Lens.lens (\ImportTask' {errorsAndFailedEntriesZip} -> errorsAndFailedEntriesZip) (\s@ImportTask' {} a -> s {errorsAndFailedEntriesZip = a} :: ImportTask)
+
+-- | The time that the import task request finished, presented in the Unix
+-- time stamp format.
+importTask_importCompletionTime :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.UTCTime)
+importTask_importCompletionTime = Lens.lens (\ImportTask' {importCompletionTime} -> importCompletionTime) (\s@ImportTask' {} a -> s {importCompletionTime = a} :: ImportTask) Prelude.. Lens.mapping Data._Time
+
+-- | The time that the import task request was deleted, presented in the Unix
+-- time stamp format.
+importTask_importDeletedTime :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.UTCTime)
+importTask_importDeletedTime = Lens.lens (\ImportTask' {importDeletedTime} -> importDeletedTime) (\s@ImportTask' {} a -> s {importDeletedTime = a} :: ImportTask) Prelude.. Lens.mapping Data._Time
+
+-- | The time that the import task request was made, presented in the Unix
+-- time stamp format.
+importTask_importRequestTime :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.UTCTime)
+importTask_importRequestTime = Lens.lens (\ImportTask' {importRequestTime} -> importRequestTime) (\s@ImportTask' {} a -> s {importRequestTime = a} :: ImportTask) Prelude.. Lens.mapping Data._Time
+
+-- | The unique ID for a specific import task. These IDs aren\'t globally
+-- unique, but they are unique within an Amazon Web Services account.
+importTask_importTaskId :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Text)
+importTask_importTaskId = Lens.lens (\ImportTask' {importTaskId} -> importTaskId) (\s@ImportTask' {} a -> s {importTaskId = a} :: ImportTask)
+
+-- | The URL for your import file that you\'ve uploaded to Amazon S3.
+importTask_importUrl :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Text)
+importTask_importUrl = Lens.lens (\ImportTask' {importUrl} -> importUrl) (\s@ImportTask' {} a -> s {importUrl = a} :: ImportTask)
+
+-- | A descriptive name for an import task. You can use this name to filter
+-- future requests related to this import task, such as identifying
+-- applications and servers that were included in this import task. We
+-- recommend that you use a meaningful name for each import task.
+importTask_name :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Text)
+importTask_name = Lens.lens (\ImportTask' {name} -> name) (\s@ImportTask' {} a -> s {name = a} :: ImportTask)
+
+-- | The total number of server records in the import file that failed to be
+-- imported.
+importTask_serverImportFailure :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Int)
+importTask_serverImportFailure = Lens.lens (\ImportTask' {serverImportFailure} -> serverImportFailure) (\s@ImportTask' {} a -> s {serverImportFailure = a} :: ImportTask)
+
+-- | The total number of server records in the import file that were
+-- successfully imported.
+importTask_serverImportSuccess :: Lens.Lens' ImportTask (Prelude.Maybe Prelude.Int)
+importTask_serverImportSuccess = Lens.lens (\ImportTask' {serverImportSuccess} -> serverImportSuccess) (\s@ImportTask' {} a -> s {serverImportSuccess = a} :: ImportTask)
+
+-- | The status of the import task. An import can have the status of
+-- @IMPORT_COMPLETE@ and still have some records fail to import from the
+-- overall request. More information can be found in the downloadable
+-- archive defined in the @errorsAndFailedEntriesZip@ field, or in the
+-- Migration Hub management console.
+importTask_status :: Lens.Lens' ImportTask (Prelude.Maybe ImportStatus)
+importTask_status = Lens.lens (\ImportTask' {status} -> status) (\s@ImportTask' {} a -> s {status = a} :: ImportTask)
+
+instance Data.FromJSON ImportTask where
+  parseJSON =
+    Data.withObject
+      "ImportTask"
+      ( \x ->
+          ImportTask'
+            Prelude.<$> (x Data..:? "applicationImportFailure")
+            Prelude.<*> (x Data..:? "applicationImportSuccess")
+            Prelude.<*> (x Data..:? "clientRequestToken")
+            Prelude.<*> (x Data..:? "errorsAndFailedEntriesZip")
+            Prelude.<*> (x Data..:? "importCompletionTime")
+            Prelude.<*> (x Data..:? "importDeletedTime")
+            Prelude.<*> (x Data..:? "importRequestTime")
+            Prelude.<*> (x Data..:? "importTaskId")
+            Prelude.<*> (x Data..:? "importUrl")
+            Prelude.<*> (x Data..:? "name")
+            Prelude.<*> (x Data..:? "serverImportFailure")
+            Prelude.<*> (x Data..:? "serverImportSuccess")
+            Prelude.<*> (x Data..:? "status")
+      )
+
+instance Prelude.Hashable ImportTask where
+  hashWithSalt _salt ImportTask' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationImportFailure
+      `Prelude.hashWithSalt` applicationImportSuccess
+      `Prelude.hashWithSalt` clientRequestToken
+      `Prelude.hashWithSalt` errorsAndFailedEntriesZip
+      `Prelude.hashWithSalt` importCompletionTime
+      `Prelude.hashWithSalt` importDeletedTime
+      `Prelude.hashWithSalt` importRequestTime
+      `Prelude.hashWithSalt` importTaskId
+      `Prelude.hashWithSalt` importUrl
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` serverImportFailure
+      `Prelude.hashWithSalt` serverImportSuccess
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData ImportTask where
+  rnf ImportTask' {..} =
+    Prelude.rnf applicationImportFailure
+      `Prelude.seq` Prelude.rnf applicationImportSuccess
+      `Prelude.seq` Prelude.rnf clientRequestToken
+      `Prelude.seq` Prelude.rnf errorsAndFailedEntriesZip
+      `Prelude.seq` Prelude.rnf importCompletionTime
+      `Prelude.seq` Prelude.rnf importDeletedTime
+      `Prelude.seq` Prelude.rnf importRequestTime
+      `Prelude.seq` Prelude.rnf importTaskId
+      `Prelude.seq` Prelude.rnf importUrl
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf serverImportFailure
+      `Prelude.seq` Prelude.rnf serverImportSuccess
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/Discovery/Types/ImportTaskFilter.hs b/gen/Amazonka/Discovery/Types/ImportTaskFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ImportTaskFilter.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ImportTaskFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ImportTaskFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.ImportTaskFilterName
+import qualified Amazonka.Prelude as Prelude
+
+-- | A name-values pair of elements you can use to filter the results when
+-- querying your import tasks. Currently, wildcards are not supported for
+-- filters.
+--
+-- When filtering by import status, all other filter values are ignored.
+--
+-- /See:/ 'newImportTaskFilter' smart constructor.
+data ImportTaskFilter = ImportTaskFilter'
+  { -- | The name, status, or import task ID for a specific import task.
+    name :: Prelude.Maybe ImportTaskFilterName,
+    -- | An array of strings that you can provide to match against a specific
+    -- name, status, or import task ID to filter the results for your import
+    -- task queries.
+    values :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportTaskFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'importTaskFilter_name' - The name, status, or import task ID for a specific import task.
+--
+-- 'values', 'importTaskFilter_values' - An array of strings that you can provide to match against a specific
+-- name, status, or import task ID to filter the results for your import
+-- task queries.
+newImportTaskFilter ::
+  ImportTaskFilter
+newImportTaskFilter =
+  ImportTaskFilter'
+    { name = Prelude.Nothing,
+      values = Prelude.Nothing
+    }
+
+-- | The name, status, or import task ID for a specific import task.
+importTaskFilter_name :: Lens.Lens' ImportTaskFilter (Prelude.Maybe ImportTaskFilterName)
+importTaskFilter_name = Lens.lens (\ImportTaskFilter' {name} -> name) (\s@ImportTaskFilter' {} a -> s {name = a} :: ImportTaskFilter)
+
+-- | An array of strings that you can provide to match against a specific
+-- name, status, or import task ID to filter the results for your import
+-- task queries.
+importTaskFilter_values :: Lens.Lens' ImportTaskFilter (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
+importTaskFilter_values = Lens.lens (\ImportTaskFilter' {values} -> values) (\s@ImportTaskFilter' {} a -> s {values = a} :: ImportTaskFilter) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable ImportTaskFilter where
+  hashWithSalt _salt ImportTaskFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData ImportTaskFilter where
+  rnf ImportTaskFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON ImportTaskFilter where
+  toJSON ImportTaskFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("name" Data..=) Prelude.<$> name,
+            ("values" Data..=) Prelude.<$> values
+          ]
+      )
diff --git a/gen/Amazonka/Discovery/Types/ImportTaskFilterName.hs b/gen/Amazonka/Discovery/Types/ImportTaskFilterName.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/ImportTaskFilterName.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.ImportTaskFilterName
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.ImportTaskFilterName
+  ( ImportTaskFilterName
+      ( ..,
+        ImportTaskFilterName_IMPORT_TASK_ID,
+        ImportTaskFilterName_NAME,
+        ImportTaskFilterName_STATUS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ImportTaskFilterName = ImportTaskFilterName'
+  { fromImportTaskFilterName ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ImportTaskFilterName_IMPORT_TASK_ID :: ImportTaskFilterName
+pattern ImportTaskFilterName_IMPORT_TASK_ID = ImportTaskFilterName' "IMPORT_TASK_ID"
+
+pattern ImportTaskFilterName_NAME :: ImportTaskFilterName
+pattern ImportTaskFilterName_NAME = ImportTaskFilterName' "NAME"
+
+pattern ImportTaskFilterName_STATUS :: ImportTaskFilterName
+pattern ImportTaskFilterName_STATUS = ImportTaskFilterName' "STATUS"
+
+{-# COMPLETE
+  ImportTaskFilterName_IMPORT_TASK_ID,
+  ImportTaskFilterName_NAME,
+  ImportTaskFilterName_STATUS,
+  ImportTaskFilterName'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/NeighborConnectionDetail.hs b/gen/Amazonka/Discovery/Types/NeighborConnectionDetail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/NeighborConnectionDetail.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.NeighborConnectionDetail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.NeighborConnectionDetail where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Details about neighboring servers.
+--
+-- /See:/ 'newNeighborConnectionDetail' smart constructor.
+data NeighborConnectionDetail = NeighborConnectionDetail'
+  { -- | The destination network port for the connection.
+    destinationPort :: Prelude.Maybe Prelude.Int,
+    -- | The network protocol used for the connection.
+    transportProtocol :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the server that opened the network connection.
+    sourceServerId :: Prelude.Text,
+    -- | The ID of the server that accepted the network connection.
+    destinationServerId :: Prelude.Text,
+    -- | The number of open network connections with the neighboring server.
+    connectionsCount :: Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NeighborConnectionDetail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'destinationPort', 'neighborConnectionDetail_destinationPort' - The destination network port for the connection.
+--
+-- 'transportProtocol', 'neighborConnectionDetail_transportProtocol' - The network protocol used for the connection.
+--
+-- 'sourceServerId', 'neighborConnectionDetail_sourceServerId' - The ID of the server that opened the network connection.
+--
+-- 'destinationServerId', 'neighborConnectionDetail_destinationServerId' - The ID of the server that accepted the network connection.
+--
+-- 'connectionsCount', 'neighborConnectionDetail_connectionsCount' - The number of open network connections with the neighboring server.
+newNeighborConnectionDetail ::
+  -- | 'sourceServerId'
+  Prelude.Text ->
+  -- | 'destinationServerId'
+  Prelude.Text ->
+  -- | 'connectionsCount'
+  Prelude.Integer ->
+  NeighborConnectionDetail
+newNeighborConnectionDetail
+  pSourceServerId_
+  pDestinationServerId_
+  pConnectionsCount_ =
+    NeighborConnectionDetail'
+      { destinationPort =
+          Prelude.Nothing,
+        transportProtocol = Prelude.Nothing,
+        sourceServerId = pSourceServerId_,
+        destinationServerId = pDestinationServerId_,
+        connectionsCount = pConnectionsCount_
+      }
+
+-- | The destination network port for the connection.
+neighborConnectionDetail_destinationPort :: Lens.Lens' NeighborConnectionDetail (Prelude.Maybe Prelude.Int)
+neighborConnectionDetail_destinationPort = Lens.lens (\NeighborConnectionDetail' {destinationPort} -> destinationPort) (\s@NeighborConnectionDetail' {} a -> s {destinationPort = a} :: NeighborConnectionDetail)
+
+-- | The network protocol used for the connection.
+neighborConnectionDetail_transportProtocol :: Lens.Lens' NeighborConnectionDetail (Prelude.Maybe Prelude.Text)
+neighborConnectionDetail_transportProtocol = Lens.lens (\NeighborConnectionDetail' {transportProtocol} -> transportProtocol) (\s@NeighborConnectionDetail' {} a -> s {transportProtocol = a} :: NeighborConnectionDetail)
+
+-- | The ID of the server that opened the network connection.
+neighborConnectionDetail_sourceServerId :: Lens.Lens' NeighborConnectionDetail Prelude.Text
+neighborConnectionDetail_sourceServerId = Lens.lens (\NeighborConnectionDetail' {sourceServerId} -> sourceServerId) (\s@NeighborConnectionDetail' {} a -> s {sourceServerId = a} :: NeighborConnectionDetail)
+
+-- | The ID of the server that accepted the network connection.
+neighborConnectionDetail_destinationServerId :: Lens.Lens' NeighborConnectionDetail Prelude.Text
+neighborConnectionDetail_destinationServerId = Lens.lens (\NeighborConnectionDetail' {destinationServerId} -> destinationServerId) (\s@NeighborConnectionDetail' {} a -> s {destinationServerId = a} :: NeighborConnectionDetail)
+
+-- | The number of open network connections with the neighboring server.
+neighborConnectionDetail_connectionsCount :: Lens.Lens' NeighborConnectionDetail Prelude.Integer
+neighborConnectionDetail_connectionsCount = Lens.lens (\NeighborConnectionDetail' {connectionsCount} -> connectionsCount) (\s@NeighborConnectionDetail' {} a -> s {connectionsCount = a} :: NeighborConnectionDetail)
+
+instance Data.FromJSON NeighborConnectionDetail where
+  parseJSON =
+    Data.withObject
+      "NeighborConnectionDetail"
+      ( \x ->
+          NeighborConnectionDetail'
+            Prelude.<$> (x Data..:? "destinationPort")
+            Prelude.<*> (x Data..:? "transportProtocol")
+            Prelude.<*> (x Data..: "sourceServerId")
+            Prelude.<*> (x Data..: "destinationServerId")
+            Prelude.<*> (x Data..: "connectionsCount")
+      )
+
+instance Prelude.Hashable NeighborConnectionDetail where
+  hashWithSalt _salt NeighborConnectionDetail' {..} =
+    _salt
+      `Prelude.hashWithSalt` destinationPort
+      `Prelude.hashWithSalt` transportProtocol
+      `Prelude.hashWithSalt` sourceServerId
+      `Prelude.hashWithSalt` destinationServerId
+      `Prelude.hashWithSalt` connectionsCount
+
+instance Prelude.NFData NeighborConnectionDetail where
+  rnf NeighborConnectionDetail' {..} =
+    Prelude.rnf destinationPort
+      `Prelude.seq` Prelude.rnf transportProtocol
+      `Prelude.seq` Prelude.rnf sourceServerId
+      `Prelude.seq` Prelude.rnf destinationServerId
+      `Prelude.seq` Prelude.rnf connectionsCount
diff --git a/gen/Amazonka/Discovery/Types/OrderByElement.hs b/gen/Amazonka/Discovery/Types/OrderByElement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/OrderByElement.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.OrderByElement
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.OrderByElement where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types.OrderString
+import qualified Amazonka.Prelude as Prelude
+
+-- | A field and direction for ordered output.
+--
+-- /See:/ 'newOrderByElement' smart constructor.
+data OrderByElement = OrderByElement'
+  { -- | Ordering direction.
+    sortOrder :: Prelude.Maybe OrderString,
+    -- | The field on which to order.
+    fieldName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OrderByElement' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sortOrder', 'orderByElement_sortOrder' - Ordering direction.
+--
+-- 'fieldName', 'orderByElement_fieldName' - The field on which to order.
+newOrderByElement ::
+  -- | 'fieldName'
+  Prelude.Text ->
+  OrderByElement
+newOrderByElement pFieldName_ =
+  OrderByElement'
+    { sortOrder = Prelude.Nothing,
+      fieldName = pFieldName_
+    }
+
+-- | Ordering direction.
+orderByElement_sortOrder :: Lens.Lens' OrderByElement (Prelude.Maybe OrderString)
+orderByElement_sortOrder = Lens.lens (\OrderByElement' {sortOrder} -> sortOrder) (\s@OrderByElement' {} a -> s {sortOrder = a} :: OrderByElement)
+
+-- | The field on which to order.
+orderByElement_fieldName :: Lens.Lens' OrderByElement Prelude.Text
+orderByElement_fieldName = Lens.lens (\OrderByElement' {fieldName} -> fieldName) (\s@OrderByElement' {} a -> s {fieldName = a} :: OrderByElement)
+
+instance Prelude.Hashable OrderByElement where
+  hashWithSalt _salt OrderByElement' {..} =
+    _salt
+      `Prelude.hashWithSalt` sortOrder
+      `Prelude.hashWithSalt` fieldName
+
+instance Prelude.NFData OrderByElement where
+  rnf OrderByElement' {..} =
+    Prelude.rnf sortOrder
+      `Prelude.seq` Prelude.rnf fieldName
+
+instance Data.ToJSON OrderByElement where
+  toJSON OrderByElement' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("sortOrder" Data..=) Prelude.<$> sortOrder,
+            Prelude.Just ("fieldName" Data..= fieldName)
+          ]
+      )
diff --git a/gen/Amazonka/Discovery/Types/OrderString.hs b/gen/Amazonka/Discovery/Types/OrderString.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/OrderString.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.OrderString
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.OrderString
+  ( OrderString
+      ( ..,
+        OrderString_ASC,
+        OrderString_DESC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrderString = OrderString'
+  { fromOrderString ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern OrderString_ASC :: OrderString
+pattern OrderString_ASC = OrderString' "ASC"
+
+pattern OrderString_DESC :: OrderString
+pattern OrderString_DESC = OrderString' "DESC"
+
+{-# COMPLETE
+  OrderString_ASC,
+  OrderString_DESC,
+  OrderString'
+  #-}
diff --git a/gen/Amazonka/Discovery/Types/Tag.hs b/gen/Amazonka/Discovery/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/Tag.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Metadata that help you categorize IT assets.
+--
+-- Do not store sensitive information (like personal data) in tags.
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The type of tag on which to filter.
+    key :: Prelude.Text,
+    -- | A value for a tag key on which to filter.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'key', 'tag_key' - The type of tag on which to filter.
+--
+-- 'value', 'tag_value' - A value for a tag key on which to filter.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | The type of tag on which to filter.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | A value for a tag key on which to filter.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("key" Data..= key),
+            Prelude.Just ("value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/Discovery/Types/TagFilter.hs b/gen/Amazonka/Discovery/Types/TagFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Types/TagFilter.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Types.TagFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Types.TagFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The tag filter. Valid names are: @tagKey@, @tagValue@,
+-- @configurationId@.
+--
+-- /See:/ 'newTagFilter' smart constructor.
+data TagFilter = TagFilter'
+  { -- | A name of the tag filter.
+    name :: Prelude.Text,
+    -- | Values for the tag filter.
+    values :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'tagFilter_name' - A name of the tag filter.
+--
+-- 'values', 'tagFilter_values' - Values for the tag filter.
+newTagFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  TagFilter
+newTagFilter pName_ =
+  TagFilter' {name = pName_, values = Prelude.mempty}
+
+-- | A name of the tag filter.
+tagFilter_name :: Lens.Lens' TagFilter Prelude.Text
+tagFilter_name = Lens.lens (\TagFilter' {name} -> name) (\s@TagFilter' {} a -> s {name = a} :: TagFilter)
+
+-- | Values for the tag filter.
+tagFilter_values :: Lens.Lens' TagFilter [Prelude.Text]
+tagFilter_values = Lens.lens (\TagFilter' {values} -> values) (\s@TagFilter' {} a -> s {values = a} :: TagFilter) Prelude.. Lens.coerced
+
+instance Prelude.Hashable TagFilter where
+  hashWithSalt _salt TagFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` values
+
+instance Prelude.NFData TagFilter where
+  rnf TagFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf values
+
+instance Data.ToJSON TagFilter where
+  toJSON TagFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("name" Data..= name),
+            Prelude.Just ("values" Data..= values)
+          ]
+      )
diff --git a/gen/Amazonka/Discovery/UpdateApplication.hs b/gen/Amazonka/Discovery/UpdateApplication.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/UpdateApplication.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.UpdateApplication
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates metadata about an application.
+module Amazonka.Discovery.UpdateApplication
+  ( -- * Creating a Request
+    UpdateApplication (..),
+    newUpdateApplication,
+
+    -- * Request Lenses
+    updateApplication_description,
+    updateApplication_name,
+    updateApplication_configurationId,
+
+    -- * Destructuring the Response
+    UpdateApplicationResponse (..),
+    newUpdateApplicationResponse,
+
+    -- * Response Lenses
+    updateApplicationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | /See:/ 'newUpdateApplication' smart constructor.
+data UpdateApplication = UpdateApplication'
+  { -- | New description of the application to be updated.
+    description :: Prelude.Maybe Prelude.Text,
+    -- | New name of the application to be updated.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | Configuration ID of the application to be updated.
+    configurationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateApplication' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'description', 'updateApplication_description' - New description of the application to be updated.
+--
+-- 'name', 'updateApplication_name' - New name of the application to be updated.
+--
+-- 'configurationId', 'updateApplication_configurationId' - Configuration ID of the application to be updated.
+newUpdateApplication ::
+  -- | 'configurationId'
+  Prelude.Text ->
+  UpdateApplication
+newUpdateApplication pConfigurationId_ =
+  UpdateApplication'
+    { description = Prelude.Nothing,
+      name = Prelude.Nothing,
+      configurationId = pConfigurationId_
+    }
+
+-- | New description of the application to be updated.
+updateApplication_description :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
+updateApplication_description = Lens.lens (\UpdateApplication' {description} -> description) (\s@UpdateApplication' {} a -> s {description = a} :: UpdateApplication)
+
+-- | New name of the application to be updated.
+updateApplication_name :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
+updateApplication_name = Lens.lens (\UpdateApplication' {name} -> name) (\s@UpdateApplication' {} a -> s {name = a} :: UpdateApplication)
+
+-- | Configuration ID of the application to be updated.
+updateApplication_configurationId :: Lens.Lens' UpdateApplication Prelude.Text
+updateApplication_configurationId = Lens.lens (\UpdateApplication' {configurationId} -> configurationId) (\s@UpdateApplication' {} a -> s {configurationId = a} :: UpdateApplication)
+
+instance Core.AWSRequest UpdateApplication where
+  type
+    AWSResponse UpdateApplication =
+      UpdateApplicationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UpdateApplicationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateApplication where
+  hashWithSalt _salt UpdateApplication' {..} =
+    _salt
+      `Prelude.hashWithSalt` description
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` configurationId
+
+instance Prelude.NFData UpdateApplication where
+  rnf UpdateApplication' {..} =
+    Prelude.rnf description
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf configurationId
+
+instance Data.ToHeaders UpdateApplication where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "AWSPoseidonService_V2015_11_01.UpdateApplication" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UpdateApplication where
+  toJSON UpdateApplication' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("description" Data..=) Prelude.<$> description,
+            ("name" Data..=) Prelude.<$> name,
+            Prelude.Just
+              ("configurationId" Data..= configurationId)
+          ]
+      )
+
+instance Data.ToPath UpdateApplication where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateApplication where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateApplicationResponse' smart constructor.
+data UpdateApplicationResponse = UpdateApplicationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateApplicationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateApplicationResponse_httpStatus' - The response's http status code.
+newUpdateApplicationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateApplicationResponse
+newUpdateApplicationResponse pHttpStatus_ =
+  UpdateApplicationResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateApplicationResponse_httpStatus :: Lens.Lens' UpdateApplicationResponse Prelude.Int
+updateApplicationResponse_httpStatus = Lens.lens (\UpdateApplicationResponse' {httpStatus} -> httpStatus) (\s@UpdateApplicationResponse' {} a -> s {httpStatus = a} :: UpdateApplicationResponse)
+
+instance Prelude.NFData UpdateApplicationResponse where
+  rnf UpdateApplicationResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/Discovery/Waiters.hs b/gen/Amazonka/Discovery/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/Discovery/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.Discovery.Waiters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.Discovery.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.Discovery.Lens
+import Amazonka.Discovery.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/Discovery.hs b/gen/Network/AWS/Discovery.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery.hs
+++ /dev/null
@@ -1,298 +0,0 @@
-{-# 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.Discovery
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- __AWS Application Discovery Service__
---
--- AWS Application Discovery Service helps you plan application migration projects by automatically identifying servers, virtual machines (VMs), software, and software dependencies running in your on-premises data centers. Application Discovery Service also collects application performance data, which can help you assess the outcome of your migration. The data collected by Application Discovery Service is securely retained in an AWS-hosted and managed database in the cloud. You can export the data as a CSV or XML file into your preferred visualization tool or cloud-migration solution to plan your migration. For more information, see <http://aws.amazon.com/application-discovery/faqs/ AWS Application Discovery Service FAQ> .
---
--- Application Discovery Service offers two modes of operation:
---
---     * __Agentless discovery__ mode is recommended for environments that use VMware vCenter Server. This mode doesn't require you to install an agent on each host. Agentless discovery gathers server information regardless of the operating systems, which minimizes the time required for initial on-premises infrastructure assessment. Agentless discovery doesn't collect information about software and software dependencies. It also doesn't work in non-VMware environments.
---
---     * __Agent-based discovery__ mode collects a richer set of data than agentless discovery by using the AWS Application Discovery Agent, which you install on one or more hosts in your data center. The agent captures infrastructure and application information, including an inventory of installed software applications, system and process performance, resource utilization, and network dependencies between workloads. The information collected by agents is secured at rest and in transit to the Application Discovery Service database in the cloud.
---
---
---
--- We recommend that you use agent-based discovery for non-VMware environments and to collect information about software and software dependencies. You can also run agent-based and agentless discovery simultaneously. Use agentless discovery to quickly complete the initial infrastructure assessment and then install agents on select hosts.
---
--- Application Discovery Service integrates with application discovery solutions from AWS Partner Network (APN) partners. Third-party application discovery tools can query Application Discovery Service and write to the Application Discovery Service database using a public API. You can then import the data into either a visualization tool or cloud-migration solution.
---
--- /Important:/ Application Discovery Service doesn't gather sensitive information. All data is handled according to the <http://aws.amazon.com/privacy/ AWS Privacy Policy> . You can operate Application Discovery Service offline to inspect collected data before it is shared with the service.
---
--- Your AWS account must be granted access to Application Discovery Service, a process called /whitelisting/ . This is true for AWS partners and customers alike. To request access, <http://aws.amazon.com/application-discovery/ sign up for Application Discovery Service> .
---
--- This API reference provides descriptions, syntax, and usage examples for each of the actions and data types for Application Discovery Service. The topic for each action shows the API request parameters and the response. Alternatively, you can use one of the AWS SDKs to access an API that is tailored to the programming language or platform that you're using. For more information, see <http://aws.amazon.com/tools/#SDKs AWS SDKs> .
---
--- This guide is intended for use with the <http://docs.aws.amazon.com/application-discovery/latest/userguide/ /AWS Application Discovery Service User Guide/ > .
---
-module Network.AWS.Discovery
-    (
-    -- * Service Configuration
-      discovery
-
-    -- * Errors
-    -- $errors
-
-    -- ** AuthorizationErrorException
-    , _AuthorizationErrorException
-
-    -- ** InvalidParameterException
-    , _InvalidParameterException
-
-    -- ** InvalidParameterValueException
-    , _InvalidParameterValueException
-
-    -- ** ServerInternalErrorException
-    , _ServerInternalErrorException
-
-    -- ** OperationNotPermittedException
-    , _OperationNotPermittedException
-
-    -- ** ResourceNotFoundException
-    , _ResourceNotFoundException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** DescribeTags
-    , module Network.AWS.Discovery.DescribeTags
-
-    -- ** StopDataCollectionByAgentIds
-    , module Network.AWS.Discovery.StopDataCollectionByAgentIds
-
-    -- ** CreateTags
-    , module Network.AWS.Discovery.CreateTags
-
-    -- ** DeleteTags
-    , module Network.AWS.Discovery.DeleteTags
-
-    -- ** DeleteApplications
-    , module Network.AWS.Discovery.DeleteApplications
-
-    -- ** UpdateApplication
-    , module Network.AWS.Discovery.UpdateApplication
-
-    -- ** DescribeConfigurations
-    , module Network.AWS.Discovery.DescribeConfigurations
-
-    -- ** CreateApplication
-    , module Network.AWS.Discovery.CreateApplication
-
-    -- ** ListConfigurations
-    , module Network.AWS.Discovery.ListConfigurations
-
-    -- ** DescribeAgents
-    , module Network.AWS.Discovery.DescribeAgents
-
-    -- ** DescribeExportTasks
-    , module Network.AWS.Discovery.DescribeExportTasks
-
-    -- ** StartDataCollectionByAgentIds
-    , module Network.AWS.Discovery.StartDataCollectionByAgentIds
-
-    -- ** GetDiscoverySummary
-    , module Network.AWS.Discovery.GetDiscoverySummary
-
-    -- ** DisassociateConfigurationItemsFromApplication
-    , module Network.AWS.Discovery.DisassociateConfigurationItemsFromApplication
-
-    -- ** AssociateConfigurationItemsToApplication
-    , module Network.AWS.Discovery.AssociateConfigurationItemsToApplication
-
-    -- ** ListServerNeighbors
-    , module Network.AWS.Discovery.ListServerNeighbors
-
-    -- ** StartExportTask
-    , module Network.AWS.Discovery.StartExportTask
-
-    -- * Types
-
-    -- ** AgentStatus
-    , AgentStatus (..)
-
-    -- ** ConfigurationItemType
-    , ConfigurationItemType (..)
-
-    -- ** ExportDataFormat
-    , ExportDataFormat (..)
-
-    -- ** ExportStatus
-    , ExportStatus (..)
-
-    -- ** OrderString
-    , OrderString (..)
-
-    -- ** AgentConfigurationStatus
-    , AgentConfigurationStatus
-    , agentConfigurationStatus
-    , acsAgentId
-    , acsOperationSucceeded
-    , acsDescription
-
-    -- ** AgentInfo
-    , AgentInfo
-    , agentInfo
-    , aiHostName
-    , aiLastHealthPingTime
-    , aiAgentNetworkInfoList
-    , aiConnectorId
-    , aiHealth
-    , aiAgentId
-    , aiVersion
-    , aiCollectionStatus
-    , aiRegisteredTime
-    , aiAgentType
-
-    -- ** AgentNetworkInfo
-    , AgentNetworkInfo
-    , agentNetworkInfo
-    , aniIpAddress
-    , aniMacAddress
-
-    -- ** ConfigurationTag
-    , ConfigurationTag
-    , configurationTag
-    , ctTimeOfCreation
-    , ctConfigurationId
-    , ctConfigurationType
-    , ctValue
-    , ctKey
-
-    -- ** CustomerAgentInfo
-    , CustomerAgentInfo
-    , customerAgentInfo
-    , caiActiveAgents
-    , caiHealthyAgents
-    , caiBlackListedAgents
-    , caiShutdownAgents
-    , caiUnhealthyAgents
-    , caiTotalAgents
-    , caiUnknownAgents
-
-    -- ** CustomerConnectorInfo
-    , CustomerConnectorInfo
-    , customerConnectorInfo
-    , cciActiveConnectors
-    , cciHealthyConnectors
-    , cciBlackListedConnectors
-    , cciShutdownConnectors
-    , cciUnhealthyConnectors
-    , cciTotalConnectors
-    , cciUnknownConnectors
-
-    -- ** ExportFilter
-    , ExportFilter
-    , exportFilter
-    , efName
-    , efValues
-    , efCondition
-
-    -- ** ExportInfo
-    , ExportInfo
-    , exportInfo
-    , eiConfigurationsDownloadURL
-    , eiRequestedStartTime
-    , eiRequestedEndTime
-    , eiIsTruncated
-    , eiExportId
-    , eiExportStatus
-    , eiStatusMessage
-    , eiExportRequestTime
-
-    -- ** Filter
-    , Filter
-    , filter'
-    , fName
-    , fValues
-    , fCondition
-
-    -- ** NeighborConnectionDetail
-    , NeighborConnectionDetail
-    , neighborConnectionDetail
-    , ncdTransportProtocol
-    , ncdDestinationPort
-    , ncdSourceServerId
-    , ncdDestinationServerId
-    , ncdConnectionsCount
-
-    -- ** OrderByElement
-    , OrderByElement
-    , orderByElement
-    , obeSortOrder
-    , obeFieldName
-
-    -- ** Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagValue
-
-    -- ** TagFilter
-    , TagFilter
-    , tagFilter
-    , tfName
-    , tfValues
-    ) where
-
-import Network.AWS.Discovery.AssociateConfigurationItemsToApplication
-import Network.AWS.Discovery.CreateApplication
-import Network.AWS.Discovery.CreateTags
-import Network.AWS.Discovery.DeleteApplications
-import Network.AWS.Discovery.DeleteTags
-import Network.AWS.Discovery.DescribeAgents
-import Network.AWS.Discovery.DescribeConfigurations
-import Network.AWS.Discovery.DescribeExportTasks
-import Network.AWS.Discovery.DescribeTags
-import Network.AWS.Discovery.DisassociateConfigurationItemsFromApplication
-import Network.AWS.Discovery.GetDiscoverySummary
-import Network.AWS.Discovery.ListConfigurations
-import Network.AWS.Discovery.ListServerNeighbors
-import Network.AWS.Discovery.StartDataCollectionByAgentIds
-import Network.AWS.Discovery.StartExportTask
-import Network.AWS.Discovery.StopDataCollectionByAgentIds
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.UpdateApplication
-import Network.AWS.Discovery.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 'Discovery'.
--}
-
-{- $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/Discovery/AssociateConfigurationItemsToApplication.hs b/gen/Network/AWS/Discovery/AssociateConfigurationItemsToApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/AssociateConfigurationItemsToApplication.hs
+++ /dev/null
@@ -1,157 +0,0 @@
-{-# 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.Discovery.AssociateConfigurationItemsToApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Associates one or more configuration items with an application.
---
---
-module Network.AWS.Discovery.AssociateConfigurationItemsToApplication
-    (
-    -- * Creating a Request
-      associateConfigurationItemsToApplication
-    , AssociateConfigurationItemsToApplication
-    -- * Request Lenses
-    , acitaApplicationConfigurationId
-    , acitaConfigurationIds
-
-    -- * Destructuring the Response
-    , associateConfigurationItemsToApplicationResponse
-    , AssociateConfigurationItemsToApplicationResponse
-    -- * Response Lenses
-    , acitarsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'associateConfigurationItemsToApplication' smart constructor.
-data AssociateConfigurationItemsToApplication = AssociateConfigurationItemsToApplication'
-  { _acitaApplicationConfigurationId :: !Text
-  , _acitaConfigurationIds           :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AssociateConfigurationItemsToApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acitaApplicationConfigurationId' - The configuration ID of an application with which items are to be associated.
---
--- * 'acitaConfigurationIds' - The ID of each configuration item to be associated with an application.
-associateConfigurationItemsToApplication
-    :: Text -- ^ 'acitaApplicationConfigurationId'
-    -> AssociateConfigurationItemsToApplication
-associateConfigurationItemsToApplication pApplicationConfigurationId_ =
-  AssociateConfigurationItemsToApplication'
-    { _acitaApplicationConfigurationId = pApplicationConfigurationId_
-    , _acitaConfigurationIds = mempty
-    }
-
-
--- | The configuration ID of an application with which items are to be associated.
-acitaApplicationConfigurationId :: Lens' AssociateConfigurationItemsToApplication Text
-acitaApplicationConfigurationId = lens _acitaApplicationConfigurationId (\ s a -> s{_acitaApplicationConfigurationId = a})
-
--- | The ID of each configuration item to be associated with an application.
-acitaConfigurationIds :: Lens' AssociateConfigurationItemsToApplication [Text]
-acitaConfigurationIds = lens _acitaConfigurationIds (\ s a -> s{_acitaConfigurationIds = a}) . _Coerce
-
-instance AWSRequest
-           AssociateConfigurationItemsToApplication
-         where
-        type Rs AssociateConfigurationItemsToApplication =
-             AssociateConfigurationItemsToApplicationResponse
-        request = postJSON discovery
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 AssociateConfigurationItemsToApplicationResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           AssociateConfigurationItemsToApplication
-         where
-
-instance NFData
-           AssociateConfigurationItemsToApplication
-         where
-
-instance ToHeaders
-           AssociateConfigurationItemsToApplication
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.AssociateConfigurationItemsToApplication"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON
-           AssociateConfigurationItemsToApplication
-         where
-        toJSON AssociateConfigurationItemsToApplication'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("applicationConfigurationId" .=
-                       _acitaApplicationConfigurationId),
-                  Just ("configurationIds" .= _acitaConfigurationIds)])
-
-instance ToPath
-           AssociateConfigurationItemsToApplication
-         where
-        toPath = const "/"
-
-instance ToQuery
-           AssociateConfigurationItemsToApplication
-         where
-        toQuery = const mempty
-
--- | /See:/ 'associateConfigurationItemsToApplicationResponse' smart constructor.
-newtype AssociateConfigurationItemsToApplicationResponse = AssociateConfigurationItemsToApplicationResponse'
-  { _acitarsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AssociateConfigurationItemsToApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acitarsResponseStatus' - -- | The response status code.
-associateConfigurationItemsToApplicationResponse
-    :: Int -- ^ 'acitarsResponseStatus'
-    -> AssociateConfigurationItemsToApplicationResponse
-associateConfigurationItemsToApplicationResponse pResponseStatus_ =
-  AssociateConfigurationItemsToApplicationResponse'
-    {_acitarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-acitarsResponseStatus :: Lens' AssociateConfigurationItemsToApplicationResponse Int
-acitarsResponseStatus = lens _acitarsResponseStatus (\ s a -> s{_acitarsResponseStatus = a})
-
-instance NFData
-           AssociateConfigurationItemsToApplicationResponse
-         where
diff --git a/gen/Network/AWS/Discovery/CreateApplication.hs b/gen/Network/AWS/Discovery/CreateApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/CreateApplication.hs
+++ /dev/null
@@ -1,143 +0,0 @@
-{-# 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.Discovery.CreateApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates an application with the given name and description.
---
---
-module Network.AWS.Discovery.CreateApplication
-    (
-    -- * Creating a Request
-      createApplication
-    , CreateApplication
-    -- * Request Lenses
-    , caDescription
-    , caName
-
-    -- * Destructuring the Response
-    , createApplicationResponse
-    , CreateApplicationResponse
-    -- * Response Lenses
-    , carsConfigurationId
-    , carsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'createApplication' smart constructor.
-data CreateApplication = CreateApplication'
-  { _caDescription :: !(Maybe Text)
-  , _caName        :: !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:
---
--- * 'caDescription' - Description of the application to be created.
---
--- * 'caName' - Name of the application to be created.
-createApplication
-    :: Text -- ^ 'caName'
-    -> CreateApplication
-createApplication pName_ =
-  CreateApplication' {_caDescription = Nothing, _caName = pName_}
-
-
--- | Description of the application to be created.
-caDescription :: Lens' CreateApplication (Maybe Text)
-caDescription = lens _caDescription (\ s a -> s{_caDescription = a})
-
--- | Name of the application to be created.
-caName :: Lens' CreateApplication Text
-caName = lens _caName (\ s a -> s{_caName = a})
-
-instance AWSRequest CreateApplication where
-        type Rs CreateApplication = CreateApplicationResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateApplicationResponse' <$>
-                   (x .?> "configurationId") <*> (pure (fromEnum s)))
-
-instance Hashable CreateApplication where
-
-instance NFData CreateApplication where
-
-instance ToHeaders CreateApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.CreateApplication"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateApplication where
-        toJSON CreateApplication'{..}
-          = object
-              (catMaybes
-                 [("description" .=) <$> _caDescription,
-                  Just ("name" .= _caName)])
-
-instance ToPath CreateApplication where
-        toPath = const "/"
-
-instance ToQuery CreateApplication where
-        toQuery = const mempty
-
--- | /See:/ 'createApplicationResponse' smart constructor.
-data CreateApplicationResponse = CreateApplicationResponse'
-  { _carsConfigurationId :: !(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:
---
--- * 'carsConfigurationId' - Configuration ID of an application to be created.
---
--- * 'carsResponseStatus' - -- | The response status code.
-createApplicationResponse
-    :: Int -- ^ 'carsResponseStatus'
-    -> CreateApplicationResponse
-createApplicationResponse pResponseStatus_ =
-  CreateApplicationResponse'
-    {_carsConfigurationId = Nothing, _carsResponseStatus = pResponseStatus_}
-
-
--- | Configuration ID of an application to be created.
-carsConfigurationId :: Lens' CreateApplicationResponse (Maybe Text)
-carsConfigurationId = lens _carsConfigurationId (\ s a -> s{_carsConfigurationId = a})
-
--- | -- | The response status code.
-carsResponseStatus :: Lens' CreateApplicationResponse Int
-carsResponseStatus = lens _carsResponseStatus (\ s a -> s{_carsResponseStatus = a})
-
-instance NFData CreateApplicationResponse where
diff --git a/gen/Network/AWS/Discovery/CreateTags.hs b/gen/Network/AWS/Discovery/CreateTags.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/CreateTags.hs
+++ /dev/null
@@ -1,131 +0,0 @@
-{-# 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.Discovery.CreateTags
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates one or more tags for configuration items. Tags are metadata that help you categorize IT assets. This API accepts a list of multiple configuration items.
---
---
-module Network.AWS.Discovery.CreateTags
-    (
-    -- * Creating a Request
-      createTags
-    , CreateTags
-    -- * Request Lenses
-    , ctConfigurationIds
-    , ctTags
-
-    -- * Destructuring the Response
-    , createTagsResponse
-    , CreateTagsResponse
-    -- * Response Lenses
-    , ctrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'createTags' smart constructor.
-data CreateTags = CreateTags'
-  { _ctConfigurationIds :: ![Text]
-  , _ctTags             :: ![Tag]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateTags' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctConfigurationIds' - A list of configuration items that you want to tag.
---
--- * 'ctTags' - Tags that you want to associate with one or more configuration items. Specify the tags that you want to create in a /key/ -/value/ format. For example: @{"key": "serverType", "value": "webServer"}@
-createTags
-    :: CreateTags
-createTags = CreateTags' {_ctConfigurationIds = mempty, _ctTags = mempty}
-
-
--- | A list of configuration items that you want to tag.
-ctConfigurationIds :: Lens' CreateTags [Text]
-ctConfigurationIds = lens _ctConfigurationIds (\ s a -> s{_ctConfigurationIds = a}) . _Coerce
-
--- | Tags that you want to associate with one or more configuration items. Specify the tags that you want to create in a /key/ -/value/ format. For example: @{"key": "serverType", "value": "webServer"}@
-ctTags :: Lens' CreateTags [Tag]
-ctTags = lens _ctTags (\ s a -> s{_ctTags = a}) . _Coerce
-
-instance AWSRequest CreateTags where
-        type Rs CreateTags = CreateTagsResponse
-        request = postJSON discovery
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 CreateTagsResponse' <$> (pure (fromEnum s)))
-
-instance Hashable CreateTags where
-
-instance NFData CreateTags where
-
-instance ToHeaders CreateTags where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.CreateTags" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateTags where
-        toJSON CreateTags'{..}
-          = object
-              (catMaybes
-                 [Just ("configurationIds" .= _ctConfigurationIds),
-                  Just ("tags" .= _ctTags)])
-
-instance ToPath CreateTags where
-        toPath = const "/"
-
-instance ToQuery CreateTags where
-        toQuery = const mempty
-
--- | /See:/ 'createTagsResponse' smart constructor.
-newtype CreateTagsResponse = CreateTagsResponse'
-  { _ctrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateTagsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctrsResponseStatus' - -- | The response status code.
-createTagsResponse
-    :: Int -- ^ 'ctrsResponseStatus'
-    -> CreateTagsResponse
-createTagsResponse pResponseStatus_ =
-  CreateTagsResponse' {_ctrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ctrsResponseStatus :: Lens' CreateTagsResponse Int
-ctrsResponseStatus = lens _ctrsResponseStatus (\ s a -> s{_ctrsResponseStatus = a})
-
-instance NFData CreateTagsResponse where
diff --git a/gen/Network/AWS/Discovery/DeleteApplications.hs b/gen/Network/AWS/Discovery/DeleteApplications.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/DeleteApplications.hs
+++ /dev/null
@@ -1,123 +0,0 @@
-{-# 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.Discovery.DeleteApplications
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a list of applications and their associations with configuration items.
---
---
-module Network.AWS.Discovery.DeleteApplications
-    (
-    -- * Creating a Request
-      deleteApplications
-    , DeleteApplications
-    -- * Request Lenses
-    , daConfigurationIds
-
-    -- * Destructuring the Response
-    , deleteApplicationsResponse
-    , DeleteApplicationsResponse
-    -- * Response Lenses
-    , darsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteApplications' smart constructor.
-newtype DeleteApplications = DeleteApplications'
-  { _daConfigurationIds :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplications' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daConfigurationIds' - Configuration ID of an application to be deleted.
-deleteApplications
-    :: DeleteApplications
-deleteApplications = DeleteApplications' {_daConfigurationIds = mempty}
-
-
--- | Configuration ID of an application to be deleted.
-daConfigurationIds :: Lens' DeleteApplications [Text]
-daConfigurationIds = lens _daConfigurationIds (\ s a -> s{_daConfigurationIds = a}) . _Coerce
-
-instance AWSRequest DeleteApplications where
-        type Rs DeleteApplications =
-             DeleteApplicationsResponse
-        request = postJSON discovery
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteApplicationsResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteApplications where
-
-instance NFData DeleteApplications where
-
-instance ToHeaders DeleteApplications where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.DeleteApplications"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteApplications where
-        toJSON DeleteApplications'{..}
-          = object
-              (catMaybes
-                 [Just ("configurationIds" .= _daConfigurationIds)])
-
-instance ToPath DeleteApplications where
-        toPath = const "/"
-
-instance ToQuery DeleteApplications where
-        toQuery = const mempty
-
--- | /See:/ 'deleteApplicationsResponse' smart constructor.
-newtype DeleteApplicationsResponse = DeleteApplicationsResponse'
-  { _darsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteApplicationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'darsResponseStatus' - -- | The response status code.
-deleteApplicationsResponse
-    :: Int -- ^ 'darsResponseStatus'
-    -> DeleteApplicationsResponse
-deleteApplicationsResponse pResponseStatus_ =
-  DeleteApplicationsResponse' {_darsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-darsResponseStatus :: Lens' DeleteApplicationsResponse Int
-darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a})
-
-instance NFData DeleteApplicationsResponse where
diff --git a/gen/Network/AWS/Discovery/DeleteTags.hs b/gen/Network/AWS/Discovery/DeleteTags.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/DeleteTags.hs
+++ /dev/null
@@ -1,131 +0,0 @@
-{-# 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.Discovery.DeleteTags
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the association between configuration items and one or more tags. This API accepts a list of multiple configuration items.
---
---
-module Network.AWS.Discovery.DeleteTags
-    (
-    -- * Creating a Request
-      deleteTags
-    , DeleteTags
-    -- * Request Lenses
-    , dtTags
-    , dtConfigurationIds
-
-    -- * Destructuring the Response
-    , deleteTagsResponse
-    , DeleteTagsResponse
-    -- * Response Lenses
-    , drsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'deleteTags' smart constructor.
-data DeleteTags = DeleteTags'
-  { _dtTags             :: !(Maybe [Tag])
-  , _dtConfigurationIds :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteTags' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtTags' - Tags that you want to delete from one or more configuration items. Specify the tags that you want to delete in a /key/ -/value/ format. For example: @{"key": "serverType", "value": "webServer"}@
---
--- * 'dtConfigurationIds' - A list of configuration items with tags that you want to delete.
-deleteTags
-    :: DeleteTags
-deleteTags = DeleteTags' {_dtTags = Nothing, _dtConfigurationIds = mempty}
-
-
--- | Tags that you want to delete from one or more configuration items. Specify the tags that you want to delete in a /key/ -/value/ format. For example: @{"key": "serverType", "value": "webServer"}@
-dtTags :: Lens' DeleteTags [Tag]
-dtTags = lens _dtTags (\ s a -> s{_dtTags = a}) . _Default . _Coerce
-
--- | A list of configuration items with tags that you want to delete.
-dtConfigurationIds :: Lens' DeleteTags [Text]
-dtConfigurationIds = lens _dtConfigurationIds (\ s a -> s{_dtConfigurationIds = a}) . _Coerce
-
-instance AWSRequest DeleteTags where
-        type Rs DeleteTags = DeleteTagsResponse
-        request = postJSON discovery
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteTagsResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteTags where
-
-instance NFData DeleteTags where
-
-instance ToHeaders DeleteTags where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.DeleteTags" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DeleteTags where
-        toJSON DeleteTags'{..}
-          = object
-              (catMaybes
-                 [("tags" .=) <$> _dtTags,
-                  Just ("configurationIds" .= _dtConfigurationIds)])
-
-instance ToPath DeleteTags where
-        toPath = const "/"
-
-instance ToQuery DeleteTags where
-        toQuery = const mempty
-
--- | /See:/ 'deleteTagsResponse' smart constructor.
-newtype DeleteTagsResponse = DeleteTagsResponse'
-  { _drsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteTagsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drsResponseStatus' - -- | The response status code.
-deleteTagsResponse
-    :: Int -- ^ 'drsResponseStatus'
-    -> DeleteTagsResponse
-deleteTagsResponse pResponseStatus_ =
-  DeleteTagsResponse' {_drsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-drsResponseStatus :: Lens' DeleteTagsResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
-
-instance NFData DeleteTagsResponse where
diff --git a/gen/Network/AWS/Discovery/DescribeAgents.hs b/gen/Network/AWS/Discovery/DescribeAgents.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/DescribeAgents.hs
+++ /dev/null
@@ -1,178 +0,0 @@
-{-# 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.Discovery.DescribeAgents
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists agents or the Connector by ID or lists all agents/Connectors associated with your user account if you did not specify an ID.
---
---
-module Network.AWS.Discovery.DescribeAgents
-    (
-    -- * Creating a Request
-      describeAgents
-    , DescribeAgents
-    -- * Request Lenses
-    , daAgentIds
-    , daFilters
-    , daNextToken
-    , daMaxResults
-
-    -- * Destructuring the Response
-    , describeAgentsResponse
-    , DescribeAgentsResponse
-    -- * Response Lenses
-    , dasrsAgentsInfo
-    , dasrsNextToken
-    , dasrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeAgents' smart constructor.
-data DescribeAgents = DescribeAgents'
-  { _daAgentIds   :: !(Maybe [Text])
-  , _daFilters    :: !(Maybe [Filter])
-  , _daNextToken  :: !(Maybe Text)
-  , _daMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeAgents' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daAgentIds' - The agent or the Connector IDs for which you want information. If you specify no IDs, the system returns information about all agents/Connectors associated with your AWS user account.
---
--- * 'daFilters' - You can filter the request using various logical operators and a /key/ -/value/ format. For example:  @{"key": "collectionStatus", "value": "STARTED"}@
---
--- * 'daNextToken' - Token to retrieve the next set of results. For example, if you previously specified 100 IDs for @DescribeAgentsRequest$agentIds@ but set @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10.
---
--- * 'daMaxResults' - The total number of agents/Connectors to return in a single page of output. The maximum value is 100.
-describeAgents
-    :: DescribeAgents
-describeAgents =
-  DescribeAgents'
-    { _daAgentIds = Nothing
-    , _daFilters = Nothing
-    , _daNextToken = Nothing
-    , _daMaxResults = Nothing
-    }
-
-
--- | The agent or the Connector IDs for which you want information. If you specify no IDs, the system returns information about all agents/Connectors associated with your AWS user account.
-daAgentIds :: Lens' DescribeAgents [Text]
-daAgentIds = lens _daAgentIds (\ s a -> s{_daAgentIds = a}) . _Default . _Coerce
-
--- | You can filter the request using various logical operators and a /key/ -/value/ format. For example:  @{"key": "collectionStatus", "value": "STARTED"}@
-daFilters :: Lens' DescribeAgents [Filter]
-daFilters = lens _daFilters (\ s a -> s{_daFilters = a}) . _Default . _Coerce
-
--- | Token to retrieve the next set of results. For example, if you previously specified 100 IDs for @DescribeAgentsRequest$agentIds@ but set @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10.
-daNextToken :: Lens' DescribeAgents (Maybe Text)
-daNextToken = lens _daNextToken (\ s a -> s{_daNextToken = a})
-
--- | The total number of agents/Connectors to return in a single page of output. The maximum value is 100.
-daMaxResults :: Lens' DescribeAgents (Maybe Int)
-daMaxResults = lens _daMaxResults (\ s a -> s{_daMaxResults = a})
-
-instance AWSRequest DescribeAgents where
-        type Rs DescribeAgents = DescribeAgentsResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeAgentsResponse' <$>
-                   (x .?> "agentsInfo" .!@ mempty) <*>
-                     (x .?> "nextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeAgents where
-
-instance NFData DescribeAgents where
-
-instance ToHeaders DescribeAgents where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.DescribeAgents" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeAgents where
-        toJSON DescribeAgents'{..}
-          = object
-              (catMaybes
-                 [("agentIds" .=) <$> _daAgentIds,
-                  ("filters" .=) <$> _daFilters,
-                  ("nextToken" .=) <$> _daNextToken,
-                  ("maxResults" .=) <$> _daMaxResults])
-
-instance ToPath DescribeAgents where
-        toPath = const "/"
-
-instance ToQuery DescribeAgents where
-        toQuery = const mempty
-
--- | /See:/ 'describeAgentsResponse' smart constructor.
-data DescribeAgentsResponse = DescribeAgentsResponse'
-  { _dasrsAgentsInfo     :: !(Maybe [AgentInfo])
-  , _dasrsNextToken      :: !(Maybe Text)
-  , _dasrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeAgentsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dasrsAgentsInfo' - Lists agents or the Connector by ID or lists all agents/Connectors associated with your user account if you did not specify an agent/Connector ID. The output includes agent/Connector IDs, IP addresses, media access control (MAC) addresses, agent/Connector health, host name where the agent/Connector resides, and the version number of each agent/Connector.
---
--- * 'dasrsNextToken' - Token to retrieve the next set of results. For example, if you specified 100 IDs for @DescribeAgentsRequest$agentIds@ but set @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10.
---
--- * 'dasrsResponseStatus' - -- | The response status code.
-describeAgentsResponse
-    :: Int -- ^ 'dasrsResponseStatus'
-    -> DescribeAgentsResponse
-describeAgentsResponse pResponseStatus_ =
-  DescribeAgentsResponse'
-    { _dasrsAgentsInfo = Nothing
-    , _dasrsNextToken = Nothing
-    , _dasrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Lists agents or the Connector by ID or lists all agents/Connectors associated with your user account if you did not specify an agent/Connector ID. The output includes agent/Connector IDs, IP addresses, media access control (MAC) addresses, agent/Connector health, host name where the agent/Connector resides, and the version number of each agent/Connector.
-dasrsAgentsInfo :: Lens' DescribeAgentsResponse [AgentInfo]
-dasrsAgentsInfo = lens _dasrsAgentsInfo (\ s a -> s{_dasrsAgentsInfo = a}) . _Default . _Coerce
-
--- | Token to retrieve the next set of results. For example, if you specified 100 IDs for @DescribeAgentsRequest$agentIds@ but set @DescribeAgentsRequest$maxResults@ to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10.
-dasrsNextToken :: Lens' DescribeAgentsResponse (Maybe Text)
-dasrsNextToken = lens _dasrsNextToken (\ s a -> s{_dasrsNextToken = a})
-
--- | -- | The response status code.
-dasrsResponseStatus :: Lens' DescribeAgentsResponse Int
-dasrsResponseStatus = lens _dasrsResponseStatus (\ s a -> s{_dasrsResponseStatus = a})
-
-instance NFData DescribeAgentsResponse where
diff --git a/gen/Network/AWS/Discovery/DescribeConfigurations.hs b/gen/Network/AWS/Discovery/DescribeConfigurations.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/DescribeConfigurations.hs
+++ /dev/null
@@ -1,136 +0,0 @@
-{-# 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.Discovery.DescribeConfigurations
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Retrieves attributes for a list of configuration item IDs. All of the supplied IDs must be for the same asset type (server, application, process, or connection). Output fields are specific to the asset type selected. For example, the output for a /server/ configuration item includes a list of attributes about the server, such as host name, operating system, and number of network cards.
---
---
--- For a complete list of outputs for each asset type, see <http://docs.aws.amazon.com/application-discovery/latest/APIReference/discovery-api-queries.html#DescribeConfigurations Using the DescribeConfigurations Action> .
---
-module Network.AWS.Discovery.DescribeConfigurations
-    (
-    -- * Creating a Request
-      describeConfigurations
-    , DescribeConfigurations
-    -- * Request Lenses
-    , dcConfigurationIds
-
-    -- * Destructuring the Response
-    , describeConfigurationsResponse
-    , DescribeConfigurationsResponse
-    -- * Response Lenses
-    , dcrsConfigurations
-    , dcrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeConfigurations' smart constructor.
-newtype DescribeConfigurations = DescribeConfigurations'
-  { _dcConfigurationIds :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeConfigurations' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcConfigurationIds' - One or more configuration IDs.
-describeConfigurations
-    :: DescribeConfigurations
-describeConfigurations = DescribeConfigurations' {_dcConfigurationIds = mempty}
-
-
--- | One or more configuration IDs.
-dcConfigurationIds :: Lens' DescribeConfigurations [Text]
-dcConfigurationIds = lens _dcConfigurationIds (\ s a -> s{_dcConfigurationIds = a}) . _Coerce
-
-instance AWSRequest DescribeConfigurations where
-        type Rs DescribeConfigurations =
-             DescribeConfigurationsResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeConfigurationsResponse' <$>
-                   (x .?> "configurations" .!@ mempty) <*>
-                     (pure (fromEnum s)))
-
-instance Hashable DescribeConfigurations where
-
-instance NFData DescribeConfigurations where
-
-instance ToHeaders DescribeConfigurations where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.DescribeConfigurations"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeConfigurations where
-        toJSON DescribeConfigurations'{..}
-          = object
-              (catMaybes
-                 [Just ("configurationIds" .= _dcConfigurationIds)])
-
-instance ToPath DescribeConfigurations where
-        toPath = const "/"
-
-instance ToQuery DescribeConfigurations where
-        toQuery = const mempty
-
--- | /See:/ 'describeConfigurationsResponse' smart constructor.
-data DescribeConfigurationsResponse = DescribeConfigurationsResponse'
-  { _dcrsConfigurations :: !(Maybe [Map Text Text])
-  , _dcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeConfigurationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcrsConfigurations' - A key in the response map. The value is an array of data.
---
--- * 'dcrsResponseStatus' - -- | The response status code.
-describeConfigurationsResponse
-    :: Int -- ^ 'dcrsResponseStatus'
-    -> DescribeConfigurationsResponse
-describeConfigurationsResponse pResponseStatus_ =
-  DescribeConfigurationsResponse'
-    {_dcrsConfigurations = Nothing, _dcrsResponseStatus = pResponseStatus_}
-
-
--- | A key in the response map. The value is an array of data.
-dcrsConfigurations :: Lens' DescribeConfigurationsResponse [HashMap Text Text]
-dcrsConfigurations = lens _dcrsConfigurations (\ s a -> s{_dcrsConfigurations = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-dcrsResponseStatus :: Lens' DescribeConfigurationsResponse Int
-dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a})
-
-instance NFData DescribeConfigurationsResponse where
diff --git a/gen/Network/AWS/Discovery/DescribeExportTasks.hs b/gen/Network/AWS/Discovery/DescribeExportTasks.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/DescribeExportTasks.hs
+++ /dev/null
@@ -1,179 +0,0 @@
-{-# 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.Discovery.DescribeExportTasks
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Retrieve status of one or more export tasks. You can retrieve the status of up to 100 export tasks.
---
---
-module Network.AWS.Discovery.DescribeExportTasks
-    (
-    -- * Creating a Request
-      describeExportTasks
-    , DescribeExportTasks
-    -- * Request Lenses
-    , detFilters
-    , detNextToken
-    , detExportIds
-    , detMaxResults
-
-    -- * Destructuring the Response
-    , describeExportTasksResponse
-    , DescribeExportTasksResponse
-    -- * Response Lenses
-    , detrsNextToken
-    , detrsExportsInfo
-    , detrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeExportTasks' smart constructor.
-data DescribeExportTasks = DescribeExportTasks'
-  { _detFilters    :: !(Maybe [ExportFilter])
-  , _detNextToken  :: !(Maybe Text)
-  , _detExportIds  :: !(Maybe [Text])
-  , _detMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeExportTasks' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'detFilters' - One or more filters.     * @AgentId@ - ID of the agent whose collected data will be exported
---
--- * 'detNextToken' - The @nextToken@ value returned from a previous paginated @DescribeExportTasks@ request where @maxResults@ was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the @nextToken@ value. This value is null when there are no more results to return.
---
--- * 'detExportIds' - One or more unique identifiers used to query the status of an export request.
---
--- * 'detMaxResults' - The maximum number of volume results returned by @DescribeExportTasks@ in paginated output. When this parameter is used, @DescribeExportTasks@ only returns @maxResults@ results in a single page along with a @nextToken@ response element.
-describeExportTasks
-    :: DescribeExportTasks
-describeExportTasks =
-  DescribeExportTasks'
-    { _detFilters = Nothing
-    , _detNextToken = Nothing
-    , _detExportIds = Nothing
-    , _detMaxResults = Nothing
-    }
-
-
--- | One or more filters.     * @AgentId@ - ID of the agent whose collected data will be exported
-detFilters :: Lens' DescribeExportTasks [ExportFilter]
-detFilters = lens _detFilters (\ s a -> s{_detFilters = a}) . _Default . _Coerce
-
--- | The @nextToken@ value returned from a previous paginated @DescribeExportTasks@ request where @maxResults@ was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the @nextToken@ value. This value is null when there are no more results to return.
-detNextToken :: Lens' DescribeExportTasks (Maybe Text)
-detNextToken = lens _detNextToken (\ s a -> s{_detNextToken = a})
-
--- | One or more unique identifiers used to query the status of an export request.
-detExportIds :: Lens' DescribeExportTasks [Text]
-detExportIds = lens _detExportIds (\ s a -> s{_detExportIds = a}) . _Default . _Coerce
-
--- | The maximum number of volume results returned by @DescribeExportTasks@ in paginated output. When this parameter is used, @DescribeExportTasks@ only returns @maxResults@ results in a single page along with a @nextToken@ response element.
-detMaxResults :: Lens' DescribeExportTasks (Maybe Int)
-detMaxResults = lens _detMaxResults (\ s a -> s{_detMaxResults = a})
-
-instance AWSRequest DescribeExportTasks where
-        type Rs DescribeExportTasks =
-             DescribeExportTasksResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeExportTasksResponse' <$>
-                   (x .?> "nextToken") <*>
-                     (x .?> "exportsInfo" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeExportTasks where
-
-instance NFData DescribeExportTasks where
-
-instance ToHeaders DescribeExportTasks where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.DescribeExportTasks"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeExportTasks where
-        toJSON DescribeExportTasks'{..}
-          = object
-              (catMaybes
-                 [("filters" .=) <$> _detFilters,
-                  ("nextToken" .=) <$> _detNextToken,
-                  ("exportIds" .=) <$> _detExportIds,
-                  ("maxResults" .=) <$> _detMaxResults])
-
-instance ToPath DescribeExportTasks where
-        toPath = const "/"
-
-instance ToQuery DescribeExportTasks where
-        toQuery = const mempty
-
--- | /See:/ 'describeExportTasksResponse' smart constructor.
-data DescribeExportTasksResponse = DescribeExportTasksResponse'
-  { _detrsNextToken      :: !(Maybe Text)
-  , _detrsExportsInfo    :: !(Maybe [ExportInfo])
-  , _detrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeExportTasksResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'detrsNextToken' - The @nextToken@ value to include in a future @DescribeExportTasks@ request. When the results of a @DescribeExportTasks@ request exceed @maxResults@ , this value can be used to retrieve the next page of results. This value is null when there are no more results to return.
---
--- * 'detrsExportsInfo' - Contains one or more sets of export request details. When the status of a request is @SUCCEEDED@ , the response includes a URL for an Amazon S3 bucket where you can view the data in a CSV file.
---
--- * 'detrsResponseStatus' - -- | The response status code.
-describeExportTasksResponse
-    :: Int -- ^ 'detrsResponseStatus'
-    -> DescribeExportTasksResponse
-describeExportTasksResponse pResponseStatus_ =
-  DescribeExportTasksResponse'
-    { _detrsNextToken = Nothing
-    , _detrsExportsInfo = Nothing
-    , _detrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The @nextToken@ value to include in a future @DescribeExportTasks@ request. When the results of a @DescribeExportTasks@ request exceed @maxResults@ , this value can be used to retrieve the next page of results. This value is null when there are no more results to return.
-detrsNextToken :: Lens' DescribeExportTasksResponse (Maybe Text)
-detrsNextToken = lens _detrsNextToken (\ s a -> s{_detrsNextToken = a})
-
--- | Contains one or more sets of export request details. When the status of a request is @SUCCEEDED@ , the response includes a URL for an Amazon S3 bucket where you can view the data in a CSV file.
-detrsExportsInfo :: Lens' DescribeExportTasksResponse [ExportInfo]
-detrsExportsInfo = lens _detrsExportsInfo (\ s a -> s{_detrsExportsInfo = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-detrsResponseStatus :: Lens' DescribeExportTasksResponse Int
-detrsResponseStatus = lens _detrsResponseStatus (\ s a -> s{_detrsResponseStatus = a})
-
-instance NFData DescribeExportTasksResponse where
diff --git a/gen/Network/AWS/Discovery/DescribeTags.hs b/gen/Network/AWS/Discovery/DescribeTags.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/DescribeTags.hs
+++ /dev/null
@@ -1,164 +0,0 @@
-{-# 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.Discovery.DescribeTags
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Retrieves a list of configuration items that are tagged with a specific tag. Or retrieves a list of all tags assigned to a specific configuration item.
---
---
-module Network.AWS.Discovery.DescribeTags
-    (
-    -- * Creating a Request
-      describeTags
-    , DescribeTags
-    -- * Request Lenses
-    , dtFilters
-    , dtNextToken
-    , dtMaxResults
-
-    -- * Destructuring the Response
-    , describeTagsResponse
-    , DescribeTagsResponse
-    -- * Response Lenses
-    , dtrsNextToken
-    , dtrsTags
-    , dtrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'describeTags' smart constructor.
-data DescribeTags = DescribeTags'
-  { _dtFilters    :: !(Maybe [TagFilter])
-  , _dtNextToken  :: !(Maybe Text)
-  , _dtMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeTags' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtFilters' - You can filter the list using a /key/ -/value/ format. You can separate these items by using logical operators. Allowed filters include @tagKey@ , @tagValue@ , and @configurationId@ .
---
--- * 'dtNextToken' - A token to start the list. Use this token to get the next set of results.
---
--- * 'dtMaxResults' - The total number of items to return in a single page of output. The maximum value is 100.
-describeTags
-    :: DescribeTags
-describeTags =
-  DescribeTags'
-    {_dtFilters = Nothing, _dtNextToken = Nothing, _dtMaxResults = Nothing}
-
-
--- | You can filter the list using a /key/ -/value/ format. You can separate these items by using logical operators. Allowed filters include @tagKey@ , @tagValue@ , and @configurationId@ .
-dtFilters :: Lens' DescribeTags [TagFilter]
-dtFilters = lens _dtFilters (\ s a -> s{_dtFilters = a}) . _Default . _Coerce
-
--- | A token to start the list. Use this token to get the next set of results.
-dtNextToken :: Lens' DescribeTags (Maybe Text)
-dtNextToken = lens _dtNextToken (\ s a -> s{_dtNextToken = a})
-
--- | The total number of items to return in a single page of output. The maximum value is 100.
-dtMaxResults :: Lens' DescribeTags (Maybe Int)
-dtMaxResults = lens _dtMaxResults (\ s a -> s{_dtMaxResults = a})
-
-instance AWSRequest DescribeTags where
-        type Rs DescribeTags = DescribeTagsResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeTagsResponse' <$>
-                   (x .?> "nextToken") <*> (x .?> "tags" .!@ mempty) <*>
-                     (pure (fromEnum s)))
-
-instance Hashable DescribeTags where
-
-instance NFData DescribeTags where
-
-instance ToHeaders DescribeTags where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.DescribeTags" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON DescribeTags where
-        toJSON DescribeTags'{..}
-          = object
-              (catMaybes
-                 [("filters" .=) <$> _dtFilters,
-                  ("nextToken" .=) <$> _dtNextToken,
-                  ("maxResults" .=) <$> _dtMaxResults])
-
-instance ToPath DescribeTags where
-        toPath = const "/"
-
-instance ToQuery DescribeTags where
-        toQuery = const mempty
-
--- | /See:/ 'describeTagsResponse' smart constructor.
-data DescribeTagsResponse = DescribeTagsResponse'
-  { _dtrsNextToken      :: !(Maybe Text)
-  , _dtrsTags           :: !(Maybe [ConfigurationTag])
-  , _dtrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeTagsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtrsNextToken' - The call returns a token. Use this token to get the next set of results.
---
--- * 'dtrsTags' - Depending on the input, this is a list of configuration items tagged with a specific tag, or a list of tags for a specific configuration item.
---
--- * 'dtrsResponseStatus' - -- | The response status code.
-describeTagsResponse
-    :: Int -- ^ 'dtrsResponseStatus'
-    -> DescribeTagsResponse
-describeTagsResponse pResponseStatus_ =
-  DescribeTagsResponse'
-    { _dtrsNextToken = Nothing
-    , _dtrsTags = Nothing
-    , _dtrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The call returns a token. Use this token to get the next set of results.
-dtrsNextToken :: Lens' DescribeTagsResponse (Maybe Text)
-dtrsNextToken = lens _dtrsNextToken (\ s a -> s{_dtrsNextToken = a})
-
--- | Depending on the input, this is a list of configuration items tagged with a specific tag, or a list of tags for a specific configuration item.
-dtrsTags :: Lens' DescribeTagsResponse [ConfigurationTag]
-dtrsTags = lens _dtrsTags (\ s a -> s{_dtrsTags = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-dtrsResponseStatus :: Lens' DescribeTagsResponse Int
-dtrsResponseStatus = lens _dtrsResponseStatus (\ s a -> s{_dtrsResponseStatus = a})
-
-instance NFData DescribeTagsResponse where
diff --git a/gen/Network/AWS/Discovery/DisassociateConfigurationItemsFromApplication.hs b/gen/Network/AWS/Discovery/DisassociateConfigurationItemsFromApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/DisassociateConfigurationItemsFromApplication.hs
+++ /dev/null
@@ -1,159 +0,0 @@
-{-# 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.Discovery.DisassociateConfigurationItemsFromApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Disassociates one or more configuration items from an application.
---
---
-module Network.AWS.Discovery.DisassociateConfigurationItemsFromApplication
-    (
-    -- * Creating a Request
-      disassociateConfigurationItemsFromApplication
-    , DisassociateConfigurationItemsFromApplication
-    -- * Request Lenses
-    , dcifaApplicationConfigurationId
-    , dcifaConfigurationIds
-
-    -- * Destructuring the Response
-    , disassociateConfigurationItemsFromApplicationResponse
-    , DisassociateConfigurationItemsFromApplicationResponse
-    -- * Response Lenses
-    , dcifarsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'disassociateConfigurationItemsFromApplication' smart constructor.
-data DisassociateConfigurationItemsFromApplication = DisassociateConfigurationItemsFromApplication'
-  { _dcifaApplicationConfigurationId :: !Text
-  , _dcifaConfigurationIds           :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DisassociateConfigurationItemsFromApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcifaApplicationConfigurationId' - Configuration ID of an application from which each item is disassociated.
---
--- * 'dcifaConfigurationIds' - Configuration ID of each item to be disassociated from an application.
-disassociateConfigurationItemsFromApplication
-    :: Text -- ^ 'dcifaApplicationConfigurationId'
-    -> DisassociateConfigurationItemsFromApplication
-disassociateConfigurationItemsFromApplication pApplicationConfigurationId_ =
-  DisassociateConfigurationItemsFromApplication'
-    { _dcifaApplicationConfigurationId = pApplicationConfigurationId_
-    , _dcifaConfigurationIds = mempty
-    }
-
-
--- | Configuration ID of an application from which each item is disassociated.
-dcifaApplicationConfigurationId :: Lens' DisassociateConfigurationItemsFromApplication Text
-dcifaApplicationConfigurationId = lens _dcifaApplicationConfigurationId (\ s a -> s{_dcifaApplicationConfigurationId = a})
-
--- | Configuration ID of each item to be disassociated from an application.
-dcifaConfigurationIds :: Lens' DisassociateConfigurationItemsFromApplication [Text]
-dcifaConfigurationIds = lens _dcifaConfigurationIds (\ s a -> s{_dcifaConfigurationIds = a}) . _Coerce
-
-instance AWSRequest
-           DisassociateConfigurationItemsFromApplication
-         where
-        type Rs DisassociateConfigurationItemsFromApplication
-             =
-             DisassociateConfigurationItemsFromApplicationResponse
-        request = postJSON discovery
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DisassociateConfigurationItemsFromApplicationResponse'
-                   <$> (pure (fromEnum s)))
-
-instance Hashable
-           DisassociateConfigurationItemsFromApplication
-         where
-
-instance NFData
-           DisassociateConfigurationItemsFromApplication
-         where
-
-instance ToHeaders
-           DisassociateConfigurationItemsFromApplication
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.DisassociateConfigurationItemsFromApplication"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON
-           DisassociateConfigurationItemsFromApplication
-         where
-        toJSON
-          DisassociateConfigurationItemsFromApplication'{..}
-          = object
-              (catMaybes
-                 [Just
-                    ("applicationConfigurationId" .=
-                       _dcifaApplicationConfigurationId),
-                  Just ("configurationIds" .= _dcifaConfigurationIds)])
-
-instance ToPath
-           DisassociateConfigurationItemsFromApplication
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DisassociateConfigurationItemsFromApplication
-         where
-        toQuery = const mempty
-
--- | /See:/ 'disassociateConfigurationItemsFromApplicationResponse' smart constructor.
-newtype DisassociateConfigurationItemsFromApplicationResponse = DisassociateConfigurationItemsFromApplicationResponse'
-  { _dcifarsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DisassociateConfigurationItemsFromApplicationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcifarsResponseStatus' - -- | The response status code.
-disassociateConfigurationItemsFromApplicationResponse
-    :: Int -- ^ 'dcifarsResponseStatus'
-    -> DisassociateConfigurationItemsFromApplicationResponse
-disassociateConfigurationItemsFromApplicationResponse pResponseStatus_ =
-  DisassociateConfigurationItemsFromApplicationResponse'
-    {_dcifarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dcifarsResponseStatus :: Lens' DisassociateConfigurationItemsFromApplicationResponse Int
-dcifarsResponseStatus = lens _dcifarsResponseStatus (\ s a -> s{_dcifarsResponseStatus = a})
-
-instance NFData
-           DisassociateConfigurationItemsFromApplicationResponse
-         where
diff --git a/gen/Network/AWS/Discovery/GetDiscoverySummary.hs b/gen/Network/AWS/Discovery/GetDiscoverySummary.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/GetDiscoverySummary.hs
+++ /dev/null
@@ -1,173 +0,0 @@
-{-# 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.Discovery.GetDiscoverySummary
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Retrieves a short summary of discovered assets.
---
---
-module Network.AWS.Discovery.GetDiscoverySummary
-    (
-    -- * Creating a Request
-      getDiscoverySummary
-    , GetDiscoverySummary
-
-    -- * Destructuring the Response
-    , getDiscoverySummaryResponse
-    , GetDiscoverySummaryResponse
-    -- * Response Lenses
-    , gdsrsServers
-    , gdsrsServersMappedtoTags
-    , gdsrsServersMappedToApplications
-    , gdsrsConnectorSummary
-    , gdsrsAgentSummary
-    , gdsrsApplications
-    , gdsrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'getDiscoverySummary' smart constructor.
-data GetDiscoverySummary =
-  GetDiscoverySummary'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDiscoverySummary' with the minimum fields required to make a request.
---
-getDiscoverySummary
-    :: GetDiscoverySummary
-getDiscoverySummary = GetDiscoverySummary'
-
-
-instance AWSRequest GetDiscoverySummary where
-        type Rs GetDiscoverySummary =
-             GetDiscoverySummaryResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetDiscoverySummaryResponse' <$>
-                   (x .?> "servers") <*> (x .?> "serversMappedtoTags")
-                     <*> (x .?> "serversMappedToApplications")
-                     <*> (x .?> "connectorSummary")
-                     <*> (x .?> "agentSummary")
-                     <*> (x .?> "applications")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetDiscoverySummary where
-
-instance NFData GetDiscoverySummary where
-
-instance ToHeaders GetDiscoverySummary where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.GetDiscoverySummary"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON GetDiscoverySummary where
-        toJSON = const (Object mempty)
-
-instance ToPath GetDiscoverySummary where
-        toPath = const "/"
-
-instance ToQuery GetDiscoverySummary where
-        toQuery = const mempty
-
--- | /See:/ 'getDiscoverySummaryResponse' smart constructor.
-data GetDiscoverySummaryResponse = GetDiscoverySummaryResponse'
-  { _gdsrsServers                     :: !(Maybe Integer)
-  , _gdsrsServersMappedtoTags         :: !(Maybe Integer)
-  , _gdsrsServersMappedToApplications :: !(Maybe Integer)
-  , _gdsrsConnectorSummary            :: !(Maybe CustomerConnectorInfo)
-  , _gdsrsAgentSummary                :: !(Maybe CustomerAgentInfo)
-  , _gdsrsApplications                :: !(Maybe Integer)
-  , _gdsrsResponseStatus              :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDiscoverySummaryResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdsrsServers' - The number of servers discovered.
---
--- * 'gdsrsServersMappedtoTags' - The number of servers mapped to tags.
---
--- * 'gdsrsServersMappedToApplications' - The number of servers mapped to applications.
---
--- * 'gdsrsConnectorSummary' - Details about discovered connectors, including connector status and health.
---
--- * 'gdsrsAgentSummary' - Details about discovered agents, including agent status and health.
---
--- * 'gdsrsApplications' - The number of applications discovered.
---
--- * 'gdsrsResponseStatus' - -- | The response status code.
-getDiscoverySummaryResponse
-    :: Int -- ^ 'gdsrsResponseStatus'
-    -> GetDiscoverySummaryResponse
-getDiscoverySummaryResponse pResponseStatus_ =
-  GetDiscoverySummaryResponse'
-    { _gdsrsServers = Nothing
-    , _gdsrsServersMappedtoTags = Nothing
-    , _gdsrsServersMappedToApplications = Nothing
-    , _gdsrsConnectorSummary = Nothing
-    , _gdsrsAgentSummary = Nothing
-    , _gdsrsApplications = Nothing
-    , _gdsrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The number of servers discovered.
-gdsrsServers :: Lens' GetDiscoverySummaryResponse (Maybe Integer)
-gdsrsServers = lens _gdsrsServers (\ s a -> s{_gdsrsServers = a})
-
--- | The number of servers mapped to tags.
-gdsrsServersMappedtoTags :: Lens' GetDiscoverySummaryResponse (Maybe Integer)
-gdsrsServersMappedtoTags = lens _gdsrsServersMappedtoTags (\ s a -> s{_gdsrsServersMappedtoTags = a})
-
--- | The number of servers mapped to applications.
-gdsrsServersMappedToApplications :: Lens' GetDiscoverySummaryResponse (Maybe Integer)
-gdsrsServersMappedToApplications = lens _gdsrsServersMappedToApplications (\ s a -> s{_gdsrsServersMappedToApplications = a})
-
--- | Details about discovered connectors, including connector status and health.
-gdsrsConnectorSummary :: Lens' GetDiscoverySummaryResponse (Maybe CustomerConnectorInfo)
-gdsrsConnectorSummary = lens _gdsrsConnectorSummary (\ s a -> s{_gdsrsConnectorSummary = a})
-
--- | Details about discovered agents, including agent status and health.
-gdsrsAgentSummary :: Lens' GetDiscoverySummaryResponse (Maybe CustomerAgentInfo)
-gdsrsAgentSummary = lens _gdsrsAgentSummary (\ s a -> s{_gdsrsAgentSummary = a})
-
--- | The number of applications discovered.
-gdsrsApplications :: Lens' GetDiscoverySummaryResponse (Maybe Integer)
-gdsrsApplications = lens _gdsrsApplications (\ s a -> s{_gdsrsApplications = a})
-
--- | -- | The response status code.
-gdsrsResponseStatus :: Lens' GetDiscoverySummaryResponse Int
-gdsrsResponseStatus = lens _gdsrsResponseStatus (\ s a -> s{_gdsrsResponseStatus = a})
-
-instance NFData GetDiscoverySummaryResponse where
diff --git a/gen/Network/AWS/Discovery/ListConfigurations.hs b/gen/Network/AWS/Discovery/ListConfigurations.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/ListConfigurations.hs
+++ /dev/null
@@ -1,190 +0,0 @@
-{-# 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.Discovery.ListConfigurations
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Retrieves a list of configuration items according to criteria that you specify in a filter. The filter criteria identifies the relationship requirements.
---
---
-module Network.AWS.Discovery.ListConfigurations
-    (
-    -- * Creating a Request
-      listConfigurations
-    , ListConfigurations
-    -- * Request Lenses
-    , lcOrderBy
-    , lcFilters
-    , lcNextToken
-    , lcMaxResults
-    , lcConfigurationType
-
-    -- * Destructuring the Response
-    , listConfigurationsResponse
-    , ListConfigurationsResponse
-    -- * Response Lenses
-    , lcrsConfigurations
-    , lcrsNextToken
-    , lcrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listConfigurations' smart constructor.
-data ListConfigurations = ListConfigurations'
-  { _lcOrderBy           :: !(Maybe [OrderByElement])
-  , _lcFilters           :: !(Maybe [Filter])
-  , _lcNextToken         :: !(Maybe Text)
-  , _lcMaxResults        :: !(Maybe Int)
-  , _lcConfigurationType :: !ConfigurationItemType
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListConfigurations' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcOrderBy' - Certain filter criteria return output that can be sorted in ascending or descending order. For a list of output characteristics for each filter, see <http://docs.aws.amazon.com/application-discovery/latest/APIReference/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action> .
---
--- * 'lcFilters' - You can filter the request using various logical operators and a /key/ -/value/ format. For example:  @{"key": "serverType", "value": "webServer"}@  For a complete list of filter options and guidance about using them with this action, see <http://docs.aws.amazon.com/application-discovery/latest/APIReference/discovery-api-queries.html#ListConfigurations Querying Discovered Configuration Items> .
---
--- * 'lcNextToken' - Token to retrieve the next set of results. For example, if a previous call to ListConfigurations returned 100 items, but you set @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10.
---
--- * 'lcMaxResults' - The total number of items to return. The maximum value is 100.
---
--- * 'lcConfigurationType' - A valid configuration identified by Application Discovery Service.
-listConfigurations
-    :: ConfigurationItemType -- ^ 'lcConfigurationType'
-    -> ListConfigurations
-listConfigurations pConfigurationType_ =
-  ListConfigurations'
-    { _lcOrderBy = Nothing
-    , _lcFilters = Nothing
-    , _lcNextToken = Nothing
-    , _lcMaxResults = Nothing
-    , _lcConfigurationType = pConfigurationType_
-    }
-
-
--- | Certain filter criteria return output that can be sorted in ascending or descending order. For a list of output characteristics for each filter, see <http://docs.aws.amazon.com/application-discovery/latest/APIReference/discovery-api-queries.html#ListConfigurations Using the ListConfigurations Action> .
-lcOrderBy :: Lens' ListConfigurations [OrderByElement]
-lcOrderBy = lens _lcOrderBy (\ s a -> s{_lcOrderBy = a}) . _Default . _Coerce
-
--- | You can filter the request using various logical operators and a /key/ -/value/ format. For example:  @{"key": "serverType", "value": "webServer"}@  For a complete list of filter options and guidance about using them with this action, see <http://docs.aws.amazon.com/application-discovery/latest/APIReference/discovery-api-queries.html#ListConfigurations Querying Discovered Configuration Items> .
-lcFilters :: Lens' ListConfigurations [Filter]
-lcFilters = lens _lcFilters (\ s a -> s{_lcFilters = a}) . _Default . _Coerce
-
--- | Token to retrieve the next set of results. For example, if a previous call to ListConfigurations returned 100 items, but you set @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10.
-lcNextToken :: Lens' ListConfigurations (Maybe Text)
-lcNextToken = lens _lcNextToken (\ s a -> s{_lcNextToken = a})
-
--- | The total number of items to return. The maximum value is 100.
-lcMaxResults :: Lens' ListConfigurations (Maybe Int)
-lcMaxResults = lens _lcMaxResults (\ s a -> s{_lcMaxResults = a})
-
--- | A valid configuration identified by Application Discovery Service.
-lcConfigurationType :: Lens' ListConfigurations ConfigurationItemType
-lcConfigurationType = lens _lcConfigurationType (\ s a -> s{_lcConfigurationType = a})
-
-instance AWSRequest ListConfigurations where
-        type Rs ListConfigurations =
-             ListConfigurationsResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListConfigurationsResponse' <$>
-                   (x .?> "configurations" .!@ mempty) <*>
-                     (x .?> "nextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListConfigurations where
-
-instance NFData ListConfigurations where
-
-instance ToHeaders ListConfigurations where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.ListConfigurations"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListConfigurations where
-        toJSON ListConfigurations'{..}
-          = object
-              (catMaybes
-                 [("orderBy" .=) <$> _lcOrderBy,
-                  ("filters" .=) <$> _lcFilters,
-                  ("nextToken" .=) <$> _lcNextToken,
-                  ("maxResults" .=) <$> _lcMaxResults,
-                  Just ("configurationType" .= _lcConfigurationType)])
-
-instance ToPath ListConfigurations where
-        toPath = const "/"
-
-instance ToQuery ListConfigurations where
-        toQuery = const mempty
-
--- | /See:/ 'listConfigurationsResponse' smart constructor.
-data ListConfigurationsResponse = ListConfigurationsResponse'
-  { _lcrsConfigurations :: !(Maybe [Map Text Text])
-  , _lcrsNextToken      :: !(Maybe Text)
-  , _lcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListConfigurationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcrsConfigurations' - Returns configuration details, including the configuration ID, attribute names, and attribute values.
---
--- * 'lcrsNextToken' - Token to retrieve the next set of results. For example, if your call to ListConfigurations returned 100 items, but you set @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10.
---
--- * 'lcrsResponseStatus' - -- | The response status code.
-listConfigurationsResponse
-    :: Int -- ^ 'lcrsResponseStatus'
-    -> ListConfigurationsResponse
-listConfigurationsResponse pResponseStatus_ =
-  ListConfigurationsResponse'
-    { _lcrsConfigurations = Nothing
-    , _lcrsNextToken = Nothing
-    , _lcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Returns configuration details, including the configuration ID, attribute names, and attribute values.
-lcrsConfigurations :: Lens' ListConfigurationsResponse [HashMap Text Text]
-lcrsConfigurations = lens _lcrsConfigurations (\ s a -> s{_lcrsConfigurations = a}) . _Default . _Coerce
-
--- | Token to retrieve the next set of results. For example, if your call to ListConfigurations returned 100 items, but you set @ListConfigurationsRequest$maxResults@ to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10.
-lcrsNextToken :: Lens' ListConfigurationsResponse (Maybe Text)
-lcrsNextToken = lens _lcrsNextToken (\ s a -> s{_lcrsNextToken = a})
-
--- | -- | The response status code.
-lcrsResponseStatus :: Lens' ListConfigurationsResponse Int
-lcrsResponseStatus = lens _lcrsResponseStatus (\ s a -> s{_lcrsResponseStatus = a})
-
-instance NFData ListConfigurationsResponse where
diff --git a/gen/Network/AWS/Discovery/ListServerNeighbors.hs b/gen/Network/AWS/Discovery/ListServerNeighbors.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/ListServerNeighbors.hs
+++ /dev/null
@@ -1,202 +0,0 @@
-{-# 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.Discovery.ListServerNeighbors
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Retrieves a list of servers that are one network hop away from a specified server.
---
---
-module Network.AWS.Discovery.ListServerNeighbors
-    (
-    -- * Creating a Request
-      listServerNeighbors
-    , ListServerNeighbors
-    -- * Request Lenses
-    , lsnPortInformationNeeded
-    , lsnNeighborConfigurationIds
-    , lsnNextToken
-    , lsnMaxResults
-    , lsnConfigurationId
-
-    -- * Destructuring the Response
-    , listServerNeighborsResponse
-    , ListServerNeighborsResponse
-    -- * Response Lenses
-    , lsnrsNextToken
-    , lsnrsKnownDependencyCount
-    , lsnrsResponseStatus
-    , lsnrsNeighbors
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'listServerNeighbors' smart constructor.
-data ListServerNeighbors = ListServerNeighbors'
-  { _lsnPortInformationNeeded    :: !(Maybe Bool)
-  , _lsnNeighborConfigurationIds :: !(Maybe [Text])
-  , _lsnNextToken                :: !(Maybe Text)
-  , _lsnMaxResults               :: !(Maybe Int)
-  , _lsnConfigurationId          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListServerNeighbors' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lsnPortInformationNeeded' - Flag to indicate if port and protocol information is needed as part of the response.
---
--- * 'lsnNeighborConfigurationIds' - List of configuration IDs to test for one-hop-away.
---
--- * 'lsnNextToken' - Token to retrieve the next set of results. For example, if you previously specified 100 IDs for @ListServerNeighborsRequest$neighborConfigurationIds@ but set @ListServerNeighborsRequest$maxResults@ to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10.
---
--- * 'lsnMaxResults' - Maximum number of results to return in a single page of output.
---
--- * 'lsnConfigurationId' - Configuration ID of the server for which neighbors are being listed.
-listServerNeighbors
-    :: Text -- ^ 'lsnConfigurationId'
-    -> ListServerNeighbors
-listServerNeighbors pConfigurationId_ =
-  ListServerNeighbors'
-    { _lsnPortInformationNeeded = Nothing
-    , _lsnNeighborConfigurationIds = Nothing
-    , _lsnNextToken = Nothing
-    , _lsnMaxResults = Nothing
-    , _lsnConfigurationId = pConfigurationId_
-    }
-
-
--- | Flag to indicate if port and protocol information is needed as part of the response.
-lsnPortInformationNeeded :: Lens' ListServerNeighbors (Maybe Bool)
-lsnPortInformationNeeded = lens _lsnPortInformationNeeded (\ s a -> s{_lsnPortInformationNeeded = a})
-
--- | List of configuration IDs to test for one-hop-away.
-lsnNeighborConfigurationIds :: Lens' ListServerNeighbors [Text]
-lsnNeighborConfigurationIds = lens _lsnNeighborConfigurationIds (\ s a -> s{_lsnNeighborConfigurationIds = a}) . _Default . _Coerce
-
--- | Token to retrieve the next set of results. For example, if you previously specified 100 IDs for @ListServerNeighborsRequest$neighborConfigurationIds@ but set @ListServerNeighborsRequest$maxResults@ to 10, you received a set of 10 results along with a token. Use that token in this query to get the next set of 10.
-lsnNextToken :: Lens' ListServerNeighbors (Maybe Text)
-lsnNextToken = lens _lsnNextToken (\ s a -> s{_lsnNextToken = a})
-
--- | Maximum number of results to return in a single page of output.
-lsnMaxResults :: Lens' ListServerNeighbors (Maybe Int)
-lsnMaxResults = lens _lsnMaxResults (\ s a -> s{_lsnMaxResults = a})
-
--- | Configuration ID of the server for which neighbors are being listed.
-lsnConfigurationId :: Lens' ListServerNeighbors Text
-lsnConfigurationId = lens _lsnConfigurationId (\ s a -> s{_lsnConfigurationId = a})
-
-instance AWSRequest ListServerNeighbors where
-        type Rs ListServerNeighbors =
-             ListServerNeighborsResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListServerNeighborsResponse' <$>
-                   (x .?> "nextToken") <*>
-                     (x .?> "knownDependencyCount")
-                     <*> (pure (fromEnum s))
-                     <*> (x .?> "neighbors" .!@ mempty))
-
-instance Hashable ListServerNeighbors where
-
-instance NFData ListServerNeighbors where
-
-instance ToHeaders ListServerNeighbors where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.ListServerNeighbors"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON ListServerNeighbors where
-        toJSON ListServerNeighbors'{..}
-          = object
-              (catMaybes
-                 [("portInformationNeeded" .=) <$>
-                    _lsnPortInformationNeeded,
-                  ("neighborConfigurationIds" .=) <$>
-                    _lsnNeighborConfigurationIds,
-                  ("nextToken" .=) <$> _lsnNextToken,
-                  ("maxResults" .=) <$> _lsnMaxResults,
-                  Just ("configurationId" .= _lsnConfigurationId)])
-
-instance ToPath ListServerNeighbors where
-        toPath = const "/"
-
-instance ToQuery ListServerNeighbors where
-        toQuery = const mempty
-
--- | /See:/ 'listServerNeighborsResponse' smart constructor.
-data ListServerNeighborsResponse = ListServerNeighborsResponse'
-  { _lsnrsNextToken            :: !(Maybe Text)
-  , _lsnrsKnownDependencyCount :: !(Maybe Integer)
-  , _lsnrsResponseStatus       :: !Int
-  , _lsnrsNeighbors            :: ![NeighborConnectionDetail]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListServerNeighborsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lsnrsNextToken' - Token to retrieve the next set of results. For example, if you specified 100 IDs for @ListServerNeighborsRequest$neighborConfigurationIds@ but set @ListServerNeighborsRequest$maxResults@ to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10.
---
--- * 'lsnrsKnownDependencyCount' - Count of distinct servers that are one hop away from the given server.
---
--- * 'lsnrsResponseStatus' - -- | The response status code.
---
--- * 'lsnrsNeighbors' - List of distinct servers that are one hop away from the given server.
-listServerNeighborsResponse
-    :: Int -- ^ 'lsnrsResponseStatus'
-    -> ListServerNeighborsResponse
-listServerNeighborsResponse pResponseStatus_ =
-  ListServerNeighborsResponse'
-    { _lsnrsNextToken = Nothing
-    , _lsnrsKnownDependencyCount = Nothing
-    , _lsnrsResponseStatus = pResponseStatus_
-    , _lsnrsNeighbors = mempty
-    }
-
-
--- | Token to retrieve the next set of results. For example, if you specified 100 IDs for @ListServerNeighborsRequest$neighborConfigurationIds@ but set @ListServerNeighborsRequest$maxResults@ to 10, you received a set of 10 results along with this token. Use this token in the next query to retrieve the next set of 10.
-lsnrsNextToken :: Lens' ListServerNeighborsResponse (Maybe Text)
-lsnrsNextToken = lens _lsnrsNextToken (\ s a -> s{_lsnrsNextToken = a})
-
--- | Count of distinct servers that are one hop away from the given server.
-lsnrsKnownDependencyCount :: Lens' ListServerNeighborsResponse (Maybe Integer)
-lsnrsKnownDependencyCount = lens _lsnrsKnownDependencyCount (\ s a -> s{_lsnrsKnownDependencyCount = a})
-
--- | -- | The response status code.
-lsnrsResponseStatus :: Lens' ListServerNeighborsResponse Int
-lsnrsResponseStatus = lens _lsnrsResponseStatus (\ s a -> s{_lsnrsResponseStatus = a})
-
--- | List of distinct servers that are one hop away from the given server.
-lsnrsNeighbors :: Lens' ListServerNeighborsResponse [NeighborConnectionDetail]
-lsnrsNeighbors = lens _lsnrsNeighbors (\ s a -> s{_lsnrsNeighbors = a}) . _Coerce
-
-instance NFData ListServerNeighborsResponse where
diff --git a/gen/Network/AWS/Discovery/StartDataCollectionByAgentIds.hs b/gen/Network/AWS/Discovery/StartDataCollectionByAgentIds.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/StartDataCollectionByAgentIds.hs
+++ /dev/null
@@ -1,139 +0,0 @@
-{-# 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.Discovery.StartDataCollectionByAgentIds
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Instructs the specified agents or connectors to start collecting data.
---
---
-module Network.AWS.Discovery.StartDataCollectionByAgentIds
-    (
-    -- * Creating a Request
-      startDataCollectionByAgentIds
-    , StartDataCollectionByAgentIds
-    -- * Request Lenses
-    , sAgentIds
-
-    -- * Destructuring the Response
-    , startDataCollectionByAgentIdsResponse
-    , StartDataCollectionByAgentIdsResponse
-    -- * Response Lenses
-    , srsAgentsConfigurationStatus
-    , srsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'startDataCollectionByAgentIds' smart constructor.
-newtype StartDataCollectionByAgentIds = StartDataCollectionByAgentIds'
-  { _sAgentIds :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartDataCollectionByAgentIds' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sAgentIds' - The IDs of the agents or connectors from which to start collecting data. If you send a request to an agent/connector ID that you do not have permission to contact, according to your AWS account, the service does not throw an exception. Instead, it returns the error in the /Description/ field. If you send a request to multiple agents/connectors and you do not have permission to contact some of those agents/connectors, the system does not throw an exception. Instead, the system shows @Failed@ in the /Description/ field.
-startDataCollectionByAgentIds
-    :: StartDataCollectionByAgentIds
-startDataCollectionByAgentIds =
-  StartDataCollectionByAgentIds' {_sAgentIds = mempty}
-
-
--- | The IDs of the agents or connectors from which to start collecting data. If you send a request to an agent/connector ID that you do not have permission to contact, according to your AWS account, the service does not throw an exception. Instead, it returns the error in the /Description/ field. If you send a request to multiple agents/connectors and you do not have permission to contact some of those agents/connectors, the system does not throw an exception. Instead, the system shows @Failed@ in the /Description/ field.
-sAgentIds :: Lens' StartDataCollectionByAgentIds [Text]
-sAgentIds = lens _sAgentIds (\ s a -> s{_sAgentIds = a}) . _Coerce
-
-instance AWSRequest StartDataCollectionByAgentIds
-         where
-        type Rs StartDataCollectionByAgentIds =
-             StartDataCollectionByAgentIdsResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 StartDataCollectionByAgentIdsResponse' <$>
-                   (x .?> "agentsConfigurationStatus" .!@ mempty) <*>
-                     (pure (fromEnum s)))
-
-instance Hashable StartDataCollectionByAgentIds where
-
-instance NFData StartDataCollectionByAgentIds where
-
-instance ToHeaders StartDataCollectionByAgentIds
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.StartDataCollectionByAgentIds"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StartDataCollectionByAgentIds where
-        toJSON StartDataCollectionByAgentIds'{..}
-          = object
-              (catMaybes [Just ("agentIds" .= _sAgentIds)])
-
-instance ToPath StartDataCollectionByAgentIds where
-        toPath = const "/"
-
-instance ToQuery StartDataCollectionByAgentIds where
-        toQuery = const mempty
-
--- | /See:/ 'startDataCollectionByAgentIdsResponse' smart constructor.
-data StartDataCollectionByAgentIdsResponse = StartDataCollectionByAgentIdsResponse'
-  { _srsAgentsConfigurationStatus :: !(Maybe [AgentConfigurationStatus])
-  , _srsResponseStatus            :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartDataCollectionByAgentIdsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srsAgentsConfigurationStatus' - Information about agents or the connector that were instructed to start collecting data. Information includes the agent/connector ID, a description of the operation performed, and whether the agent/connector configuration was updated.
---
--- * 'srsResponseStatus' - -- | The response status code.
-startDataCollectionByAgentIdsResponse
-    :: Int -- ^ 'srsResponseStatus'
-    -> StartDataCollectionByAgentIdsResponse
-startDataCollectionByAgentIdsResponse pResponseStatus_ =
-  StartDataCollectionByAgentIdsResponse'
-    { _srsAgentsConfigurationStatus = Nothing
-    , _srsResponseStatus = pResponseStatus_
-    }
-
-
--- | Information about agents or the connector that were instructed to start collecting data. Information includes the agent/connector ID, a description of the operation performed, and whether the agent/connector configuration was updated.
-srsAgentsConfigurationStatus :: Lens' StartDataCollectionByAgentIdsResponse [AgentConfigurationStatus]
-srsAgentsConfigurationStatus = lens _srsAgentsConfigurationStatus (\ s a -> s{_srsAgentsConfigurationStatus = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-srsResponseStatus :: Lens' StartDataCollectionByAgentIdsResponse Int
-srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a})
-
-instance NFData StartDataCollectionByAgentIdsResponse
-         where
diff --git a/gen/Network/AWS/Discovery/StartExportTask.hs b/gen/Network/AWS/Discovery/StartExportTask.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/StartExportTask.hs
+++ /dev/null
@@ -1,169 +0,0 @@
-{-# 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.Discovery.StartExportTask
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Begins the export of discovered data to an S3 bucket.
---
---
--- If you specify @agentIds@ in a filter, the task exports up to 72 hours of detailed data collected by the identified Application Discovery Agent, including network, process, and performance details. A time range for exported agent data may be set by using @startTime@ and @endTime@ . Export of detailed agent data is limited to five concurrently running exports.
---
--- If you do not include an @agentIds@ filter, summary data is exported that includes both AWS Agentless Discovery Connector data and summary data from AWS Discovery Agents. Export of summary data is limited to two exports per day.
---
-module Network.AWS.Discovery.StartExportTask
-    (
-    -- * Creating a Request
-      startExportTask
-    , StartExportTask
-    -- * Request Lenses
-    , setExportDataFormat
-    , setStartTime
-    , setFilters
-    , setEndTime
-
-    -- * Destructuring the Response
-    , startExportTaskResponse
-    , StartExportTaskResponse
-    -- * Response Lenses
-    , setrsExportId
-    , setrsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'startExportTask' smart constructor.
-data StartExportTask = StartExportTask'
-  { _setExportDataFormat :: !(Maybe [ExportDataFormat])
-  , _setStartTime        :: !(Maybe POSIX)
-  , _setFilters          :: !(Maybe [ExportFilter])
-  , _setEndTime          :: !(Maybe POSIX)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartExportTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'setExportDataFormat' - The file format for the returned export data. Default value is @CSV@ . __Note:__ /The/ @GRAPHML@ /option has been deprecated./
---
--- * 'setStartTime' - The start timestamp for exported data from the single Application Discovery Agent selected in the filters. If no value is specified, data is exported starting from the first data collected by the agent.
---
--- * 'setFilters' - If a filter is present, it selects the single @agentId@ of the Application Discovery Agent for which data is exported. The @agentId@ can be found in the results of the @DescribeAgents@ API or CLI. If no filter is present, @startTime@ and @endTime@ are ignored and exported data includes both Agentless Discovery Connector data and summary data from Application Discovery agents.
---
--- * 'setEndTime' - The end timestamp for exported data from the single Application Discovery Agent selected in the filters. If no value is specified, exported data includes the most recent data collected by the agent.
-startExportTask
-    :: StartExportTask
-startExportTask =
-  StartExportTask'
-    { _setExportDataFormat = Nothing
-    , _setStartTime = Nothing
-    , _setFilters = Nothing
-    , _setEndTime = Nothing
-    }
-
-
--- | The file format for the returned export data. Default value is @CSV@ . __Note:__ /The/ @GRAPHML@ /option has been deprecated./
-setExportDataFormat :: Lens' StartExportTask [ExportDataFormat]
-setExportDataFormat = lens _setExportDataFormat (\ s a -> s{_setExportDataFormat = a}) . _Default . _Coerce
-
--- | The start timestamp for exported data from the single Application Discovery Agent selected in the filters. If no value is specified, data is exported starting from the first data collected by the agent.
-setStartTime :: Lens' StartExportTask (Maybe UTCTime)
-setStartTime = lens _setStartTime (\ s a -> s{_setStartTime = a}) . mapping _Time
-
--- | If a filter is present, it selects the single @agentId@ of the Application Discovery Agent for which data is exported. The @agentId@ can be found in the results of the @DescribeAgents@ API or CLI. If no filter is present, @startTime@ and @endTime@ are ignored and exported data includes both Agentless Discovery Connector data and summary data from Application Discovery agents.
-setFilters :: Lens' StartExportTask [ExportFilter]
-setFilters = lens _setFilters (\ s a -> s{_setFilters = a}) . _Default . _Coerce
-
--- | The end timestamp for exported data from the single Application Discovery Agent selected in the filters. If no value is specified, exported data includes the most recent data collected by the agent.
-setEndTime :: Lens' StartExportTask (Maybe UTCTime)
-setEndTime = lens _setEndTime (\ s a -> s{_setEndTime = a}) . mapping _Time
-
-instance AWSRequest StartExportTask where
-        type Rs StartExportTask = StartExportTaskResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 StartExportTaskResponse' <$>
-                   (x .?> "exportId") <*> (pure (fromEnum s)))
-
-instance Hashable StartExportTask where
-
-instance NFData StartExportTask where
-
-instance ToHeaders StartExportTask where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.StartExportTask" ::
-                       ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StartExportTask where
-        toJSON StartExportTask'{..}
-          = object
-              (catMaybes
-                 [("exportDataFormat" .=) <$> _setExportDataFormat,
-                  ("startTime" .=) <$> _setStartTime,
-                  ("filters" .=) <$> _setFilters,
-                  ("endTime" .=) <$> _setEndTime])
-
-instance ToPath StartExportTask where
-        toPath = const "/"
-
-instance ToQuery StartExportTask where
-        toQuery = const mempty
-
--- | /See:/ 'startExportTaskResponse' smart constructor.
-data StartExportTaskResponse = StartExportTaskResponse'
-  { _setrsExportId       :: !(Maybe Text)
-  , _setrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartExportTaskResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'setrsExportId' - A unique identifier used to query the status of an export request.
---
--- * 'setrsResponseStatus' - -- | The response status code.
-startExportTaskResponse
-    :: Int -- ^ 'setrsResponseStatus'
-    -> StartExportTaskResponse
-startExportTaskResponse pResponseStatus_ =
-  StartExportTaskResponse'
-    {_setrsExportId = Nothing, _setrsResponseStatus = pResponseStatus_}
-
-
--- | A unique identifier used to query the status of an export request.
-setrsExportId :: Lens' StartExportTaskResponse (Maybe Text)
-setrsExportId = lens _setrsExportId (\ s a -> s{_setrsExportId = a})
-
--- | -- | The response status code.
-setrsResponseStatus :: Lens' StartExportTaskResponse Int
-setrsResponseStatus = lens _setrsResponseStatus (\ s a -> s{_setrsResponseStatus = a})
-
-instance NFData StartExportTaskResponse where
diff --git a/gen/Network/AWS/Discovery/StopDataCollectionByAgentIds.hs b/gen/Network/AWS/Discovery/StopDataCollectionByAgentIds.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/StopDataCollectionByAgentIds.hs
+++ /dev/null
@@ -1,138 +0,0 @@
-{-# 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.Discovery.StopDataCollectionByAgentIds
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Instructs the specified agents or connectors to stop collecting data.
---
---
-module Network.AWS.Discovery.StopDataCollectionByAgentIds
-    (
-    -- * Creating a Request
-      stopDataCollectionByAgentIds
-    , StopDataCollectionByAgentIds
-    -- * Request Lenses
-    , sdcbaiAgentIds
-
-    -- * Destructuring the Response
-    , stopDataCollectionByAgentIdsResponse
-    , StopDataCollectionByAgentIdsResponse
-    -- * Response Lenses
-    , sdcbairsAgentsConfigurationStatus
-    , sdcbairsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'stopDataCollectionByAgentIds' smart constructor.
-newtype StopDataCollectionByAgentIds = StopDataCollectionByAgentIds'
-  { _sdcbaiAgentIds :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopDataCollectionByAgentIds' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdcbaiAgentIds' - The IDs of the agents or connectors from which to stop collecting data.
-stopDataCollectionByAgentIds
-    :: StopDataCollectionByAgentIds
-stopDataCollectionByAgentIds =
-  StopDataCollectionByAgentIds' {_sdcbaiAgentIds = mempty}
-
-
--- | The IDs of the agents or connectors from which to stop collecting data.
-sdcbaiAgentIds :: Lens' StopDataCollectionByAgentIds [Text]
-sdcbaiAgentIds = lens _sdcbaiAgentIds (\ s a -> s{_sdcbaiAgentIds = a}) . _Coerce
-
-instance AWSRequest StopDataCollectionByAgentIds
-         where
-        type Rs StopDataCollectionByAgentIds =
-             StopDataCollectionByAgentIdsResponse
-        request = postJSON discovery
-        response
-          = receiveJSON
-              (\ s h x ->
-                 StopDataCollectionByAgentIdsResponse' <$>
-                   (x .?> "agentsConfigurationStatus" .!@ mempty) <*>
-                     (pure (fromEnum s)))
-
-instance Hashable StopDataCollectionByAgentIds where
-
-instance NFData StopDataCollectionByAgentIds where
-
-instance ToHeaders StopDataCollectionByAgentIds where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.StopDataCollectionByAgentIds"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON StopDataCollectionByAgentIds where
-        toJSON StopDataCollectionByAgentIds'{..}
-          = object
-              (catMaybes [Just ("agentIds" .= _sdcbaiAgentIds)])
-
-instance ToPath StopDataCollectionByAgentIds where
-        toPath = const "/"
-
-instance ToQuery StopDataCollectionByAgentIds where
-        toQuery = const mempty
-
--- | /See:/ 'stopDataCollectionByAgentIdsResponse' smart constructor.
-data StopDataCollectionByAgentIdsResponse = StopDataCollectionByAgentIdsResponse'
-  { _sdcbairsAgentsConfigurationStatus :: !(Maybe [AgentConfigurationStatus])
-  , _sdcbairsResponseStatus            :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StopDataCollectionByAgentIdsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdcbairsAgentsConfigurationStatus' - Information about the agents or connector that were instructed to stop collecting data. Information includes the agent/connector ID, a description of the operation performed, and whether the agent/connector configuration was updated.
---
--- * 'sdcbairsResponseStatus' - -- | The response status code.
-stopDataCollectionByAgentIdsResponse
-    :: Int -- ^ 'sdcbairsResponseStatus'
-    -> StopDataCollectionByAgentIdsResponse
-stopDataCollectionByAgentIdsResponse pResponseStatus_ =
-  StopDataCollectionByAgentIdsResponse'
-    { _sdcbairsAgentsConfigurationStatus = Nothing
-    , _sdcbairsResponseStatus = pResponseStatus_
-    }
-
-
--- | Information about the agents or connector that were instructed to stop collecting data. Information includes the agent/connector ID, a description of the operation performed, and whether the agent/connector configuration was updated.
-sdcbairsAgentsConfigurationStatus :: Lens' StopDataCollectionByAgentIdsResponse [AgentConfigurationStatus]
-sdcbairsAgentsConfigurationStatus = lens _sdcbairsAgentsConfigurationStatus (\ s a -> s{_sdcbairsAgentsConfigurationStatus = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-sdcbairsResponseStatus :: Lens' StopDataCollectionByAgentIdsResponse Int
-sdcbairsResponseStatus = lens _sdcbairsResponseStatus (\ s a -> s{_sdcbairsResponseStatus = a})
-
-instance NFData StopDataCollectionByAgentIdsResponse
-         where
diff --git a/gen/Network/AWS/Discovery/Types.hs b/gen/Network/AWS/Discovery/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/Types.hs
+++ /dev/null
@@ -1,244 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.Discovery.Types
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.Discovery.Types
-    (
-    -- * Service Configuration
-      discovery
-
-    -- * Errors
-    , _AuthorizationErrorException
-    , _InvalidParameterException
-    , _InvalidParameterValueException
-    , _ServerInternalErrorException
-    , _OperationNotPermittedException
-    , _ResourceNotFoundException
-
-    -- * AgentStatus
-    , AgentStatus (..)
-
-    -- * ConfigurationItemType
-    , ConfigurationItemType (..)
-
-    -- * ExportDataFormat
-    , ExportDataFormat (..)
-
-    -- * ExportStatus
-    , ExportStatus (..)
-
-    -- * OrderString
-    , OrderString (..)
-
-    -- * AgentConfigurationStatus
-    , AgentConfigurationStatus
-    , agentConfigurationStatus
-    , acsAgentId
-    , acsOperationSucceeded
-    , acsDescription
-
-    -- * AgentInfo
-    , AgentInfo
-    , agentInfo
-    , aiHostName
-    , aiLastHealthPingTime
-    , aiAgentNetworkInfoList
-    , aiConnectorId
-    , aiHealth
-    , aiAgentId
-    , aiVersion
-    , aiCollectionStatus
-    , aiRegisteredTime
-    , aiAgentType
-
-    -- * AgentNetworkInfo
-    , AgentNetworkInfo
-    , agentNetworkInfo
-    , aniIpAddress
-    , aniMacAddress
-
-    -- * ConfigurationTag
-    , ConfigurationTag
-    , configurationTag
-    , ctTimeOfCreation
-    , ctConfigurationId
-    , ctConfigurationType
-    , ctValue
-    , ctKey
-
-    -- * CustomerAgentInfo
-    , CustomerAgentInfo
-    , customerAgentInfo
-    , caiActiveAgents
-    , caiHealthyAgents
-    , caiBlackListedAgents
-    , caiShutdownAgents
-    , caiUnhealthyAgents
-    , caiTotalAgents
-    , caiUnknownAgents
-
-    -- * CustomerConnectorInfo
-    , CustomerConnectorInfo
-    , customerConnectorInfo
-    , cciActiveConnectors
-    , cciHealthyConnectors
-    , cciBlackListedConnectors
-    , cciShutdownConnectors
-    , cciUnhealthyConnectors
-    , cciTotalConnectors
-    , cciUnknownConnectors
-
-    -- * ExportFilter
-    , ExportFilter
-    , exportFilter
-    , efName
-    , efValues
-    , efCondition
-
-    -- * ExportInfo
-    , ExportInfo
-    , exportInfo
-    , eiConfigurationsDownloadURL
-    , eiRequestedStartTime
-    , eiRequestedEndTime
-    , eiIsTruncated
-    , eiExportId
-    , eiExportStatus
-    , eiStatusMessage
-    , eiExportRequestTime
-
-    -- * Filter
-    , Filter
-    , filter'
-    , fName
-    , fValues
-    , fCondition
-
-    -- * NeighborConnectionDetail
-    , NeighborConnectionDetail
-    , neighborConnectionDetail
-    , ncdTransportProtocol
-    , ncdDestinationPort
-    , ncdSourceServerId
-    , ncdDestinationServerId
-    , ncdConnectionsCount
-
-    -- * OrderByElement
-    , OrderByElement
-    , orderByElement
-    , obeSortOrder
-    , obeFieldName
-
-    -- * Tag
-    , Tag
-    , tag
-    , tagKey
-    , tagValue
-
-    -- * TagFilter
-    , TagFilter
-    , tagFilter
-    , tfName
-    , tfValues
-    ) where
-
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Discovery.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2015-11-01@ of the Amazon Application Discovery Service SDK configuration.
-discovery :: Service
-discovery =
-  Service
-    { _svcAbbrev = "Discovery"
-    , _svcSigner = v4
-    , _svcPrefix = "discovery"
-    , _svcVersion = "2015-11-01"
-    , _svcEndpoint = defaultEndpoint discovery
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "Discovery"
-    , _svcRetry = retry
-    }
-  where
-    retry =
-      Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
-    check e
-      | has (hasCode "ThrottledException" . hasStatus 400) e =
-        Just "throttled_exception"
-      | has (hasStatus 429) e = Just "too_many_requests"
-      | has (hasCode "ThrottlingException" . hasStatus 400) e =
-        Just "throttling_exception"
-      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-      | has (hasStatus 504) e = Just "gateway_timeout"
-      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
-        Just "request_throttled_exception"
-      | has (hasStatus 502) e = Just "bad_gateway"
-      | has (hasStatus 503) e = Just "service_unavailable"
-      | has (hasStatus 500) e = Just "general_server_error"
-      | has (hasStatus 509) e = Just "limit_exceeded"
-      | otherwise = Nothing
-
-
--- | The AWS user account does not have permission to perform the action. Check the IAM policy associated with this account.
---
---
-_AuthorizationErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_AuthorizationErrorException =
-  _MatchServiceError discovery "AuthorizationErrorException"
-
-
--- | One or more parameters are not valid. Verify the parameters and try again.
---
---
-_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidParameterException =
-  _MatchServiceError discovery "InvalidParameterException"
-
-
--- | The value of one or more parameters are either invalid or out of range. Verify the parameter values and try again.
---
---
-_InvalidParameterValueException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidParameterValueException =
-  _MatchServiceError discovery "InvalidParameterValueException"
-
-
--- | The server experienced an internal error. Try again.
---
---
-_ServerInternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_ServerInternalErrorException =
-  _MatchServiceError discovery "ServerInternalErrorException"
-
-
--- | This operation is not permitted.
---
---
-_OperationNotPermittedException :: AsError a => Getting (First ServiceError) a ServiceError
-_OperationNotPermittedException =
-  _MatchServiceError discovery "OperationNotPermittedException"
-
-
--- | The specified configuration ID was not located. Verify the configuration ID and try again.
---
---
-_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceNotFoundException =
-  _MatchServiceError discovery "ResourceNotFoundException"
-
diff --git a/gen/Network/AWS/Discovery/Types/Product.hs b/gen/Network/AWS/Discovery/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/Types/Product.hs
+++ /dev/null
@@ -1,931 +0,0 @@
-{-# 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.Discovery.Types.Product
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.Discovery.Types.Product where
-
-import Network.AWS.Discovery.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-
--- | Information about agents or connectors that were instructed to start collecting data. Information includes the agent/connector ID, a description of the operation, and whether the agent/connector configuration was updated.
---
---
---
--- /See:/ 'agentConfigurationStatus' smart constructor.
-data AgentConfigurationStatus = AgentConfigurationStatus'
-  { _acsAgentId            :: !(Maybe Text)
-  , _acsOperationSucceeded :: !(Maybe Bool)
-  , _acsDescription        :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AgentConfigurationStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acsAgentId' - The agent/connector ID.
---
--- * 'acsOperationSucceeded' - Information about the status of the @StartDataCollection@ and @StopDataCollection@ operations. The system has recorded the data collection operation. The agent/connector receives this command the next time it polls for a new command.
---
--- * 'acsDescription' - A description of the operation performed.
-agentConfigurationStatus
-    :: AgentConfigurationStatus
-agentConfigurationStatus =
-  AgentConfigurationStatus'
-    { _acsAgentId = Nothing
-    , _acsOperationSucceeded = Nothing
-    , _acsDescription = Nothing
-    }
-
-
--- | The agent/connector ID.
-acsAgentId :: Lens' AgentConfigurationStatus (Maybe Text)
-acsAgentId = lens _acsAgentId (\ s a -> s{_acsAgentId = a})
-
--- | Information about the status of the @StartDataCollection@ and @StopDataCollection@ operations. The system has recorded the data collection operation. The agent/connector receives this command the next time it polls for a new command.
-acsOperationSucceeded :: Lens' AgentConfigurationStatus (Maybe Bool)
-acsOperationSucceeded = lens _acsOperationSucceeded (\ s a -> s{_acsOperationSucceeded = a})
-
--- | A description of the operation performed.
-acsDescription :: Lens' AgentConfigurationStatus (Maybe Text)
-acsDescription = lens _acsDescription (\ s a -> s{_acsDescription = a})
-
-instance FromJSON AgentConfigurationStatus where
-        parseJSON
-          = withObject "AgentConfigurationStatus"
-              (\ x ->
-                 AgentConfigurationStatus' <$>
-                   (x .:? "agentId") <*> (x .:? "operationSucceeded")
-                     <*> (x .:? "description"))
-
-instance Hashable AgentConfigurationStatus where
-
-instance NFData AgentConfigurationStatus where
-
--- | Information about agents or connectors associated with the user’s AWS account. Information includes agent or connector IDs, IP addresses, media access control (MAC) addresses, agent or connector health, hostname where the agent or connector resides, and agent version for each agent.
---
---
---
--- /See:/ 'agentInfo' smart constructor.
-data AgentInfo = AgentInfo'
-  { _aiHostName             :: !(Maybe Text)
-  , _aiLastHealthPingTime   :: !(Maybe Text)
-  , _aiAgentNetworkInfoList :: !(Maybe [AgentNetworkInfo])
-  , _aiConnectorId          :: !(Maybe Text)
-  , _aiHealth               :: !(Maybe AgentStatus)
-  , _aiAgentId              :: !(Maybe Text)
-  , _aiVersion              :: !(Maybe Text)
-  , _aiCollectionStatus     :: !(Maybe Text)
-  , _aiRegisteredTime       :: !(Maybe Text)
-  , _aiAgentType            :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AgentInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aiHostName' - The name of the host where the agent or connector resides. The host can be a server or virtual machine.
---
--- * 'aiLastHealthPingTime' - Time since agent or connector health was reported.
---
--- * 'aiAgentNetworkInfoList' - Network details about the host where the agent or connector resides.
---
--- * 'aiConnectorId' - The ID of the connector.
---
--- * 'aiHealth' - The health of the agent or connector.
---
--- * 'aiAgentId' - The agent or connector ID.
---
--- * 'aiVersion' - The agent or connector version.
---
--- * 'aiCollectionStatus' - Status of the collection process for an agent or connector.
---
--- * 'aiRegisteredTime' - Agent's first registration timestamp in UTC.
---
--- * 'aiAgentType' - Type of agent.
-agentInfo
-    :: AgentInfo
-agentInfo =
-  AgentInfo'
-    { _aiHostName = Nothing
-    , _aiLastHealthPingTime = Nothing
-    , _aiAgentNetworkInfoList = Nothing
-    , _aiConnectorId = Nothing
-    , _aiHealth = Nothing
-    , _aiAgentId = Nothing
-    , _aiVersion = Nothing
-    , _aiCollectionStatus = Nothing
-    , _aiRegisteredTime = Nothing
-    , _aiAgentType = Nothing
-    }
-
-
--- | The name of the host where the agent or connector resides. The host can be a server or virtual machine.
-aiHostName :: Lens' AgentInfo (Maybe Text)
-aiHostName = lens _aiHostName (\ s a -> s{_aiHostName = a})
-
--- | Time since agent or connector health was reported.
-aiLastHealthPingTime :: Lens' AgentInfo (Maybe Text)
-aiLastHealthPingTime = lens _aiLastHealthPingTime (\ s a -> s{_aiLastHealthPingTime = a})
-
--- | Network details about the host where the agent or connector resides.
-aiAgentNetworkInfoList :: Lens' AgentInfo [AgentNetworkInfo]
-aiAgentNetworkInfoList = lens _aiAgentNetworkInfoList (\ s a -> s{_aiAgentNetworkInfoList = a}) . _Default . _Coerce
-
--- | The ID of the connector.
-aiConnectorId :: Lens' AgentInfo (Maybe Text)
-aiConnectorId = lens _aiConnectorId (\ s a -> s{_aiConnectorId = a})
-
--- | The health of the agent or connector.
-aiHealth :: Lens' AgentInfo (Maybe AgentStatus)
-aiHealth = lens _aiHealth (\ s a -> s{_aiHealth = a})
-
--- | The agent or connector ID.
-aiAgentId :: Lens' AgentInfo (Maybe Text)
-aiAgentId = lens _aiAgentId (\ s a -> s{_aiAgentId = a})
-
--- | The agent or connector version.
-aiVersion :: Lens' AgentInfo (Maybe Text)
-aiVersion = lens _aiVersion (\ s a -> s{_aiVersion = a})
-
--- | Status of the collection process for an agent or connector.
-aiCollectionStatus :: Lens' AgentInfo (Maybe Text)
-aiCollectionStatus = lens _aiCollectionStatus (\ s a -> s{_aiCollectionStatus = a})
-
--- | Agent's first registration timestamp in UTC.
-aiRegisteredTime :: Lens' AgentInfo (Maybe Text)
-aiRegisteredTime = lens _aiRegisteredTime (\ s a -> s{_aiRegisteredTime = a})
-
--- | Type of agent.
-aiAgentType :: Lens' AgentInfo (Maybe Text)
-aiAgentType = lens _aiAgentType (\ s a -> s{_aiAgentType = a})
-
-instance FromJSON AgentInfo where
-        parseJSON
-          = withObject "AgentInfo"
-              (\ x ->
-                 AgentInfo' <$>
-                   (x .:? "hostName") <*> (x .:? "lastHealthPingTime")
-                     <*> (x .:? "agentNetworkInfoList" .!= mempty)
-                     <*> (x .:? "connectorId")
-                     <*> (x .:? "health")
-                     <*> (x .:? "agentId")
-                     <*> (x .:? "version")
-                     <*> (x .:? "collectionStatus")
-                     <*> (x .:? "registeredTime")
-                     <*> (x .:? "agentType"))
-
-instance Hashable AgentInfo where
-
-instance NFData AgentInfo where
-
--- | Network details about the host where the agent/connector resides.
---
---
---
--- /See:/ 'agentNetworkInfo' smart constructor.
-data AgentNetworkInfo = AgentNetworkInfo'
-  { _aniIpAddress  :: !(Maybe Text)
-  , _aniMacAddress :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AgentNetworkInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aniIpAddress' - The IP address for the host where the agent/connector resides.
---
--- * 'aniMacAddress' - The MAC address for the host where the agent/connector resides.
-agentNetworkInfo
-    :: AgentNetworkInfo
-agentNetworkInfo =
-  AgentNetworkInfo' {_aniIpAddress = Nothing, _aniMacAddress = Nothing}
-
-
--- | The IP address for the host where the agent/connector resides.
-aniIpAddress :: Lens' AgentNetworkInfo (Maybe Text)
-aniIpAddress = lens _aniIpAddress (\ s a -> s{_aniIpAddress = a})
-
--- | The MAC address for the host where the agent/connector resides.
-aniMacAddress :: Lens' AgentNetworkInfo (Maybe Text)
-aniMacAddress = lens _aniMacAddress (\ s a -> s{_aniMacAddress = a})
-
-instance FromJSON AgentNetworkInfo where
-        parseJSON
-          = withObject "AgentNetworkInfo"
-              (\ x ->
-                 AgentNetworkInfo' <$>
-                   (x .:? "ipAddress") <*> (x .:? "macAddress"))
-
-instance Hashable AgentNetworkInfo where
-
-instance NFData AgentNetworkInfo where
-
--- | Tags for a configuration item. Tags are metadata that help you categorize IT assets.
---
---
---
--- /See:/ 'configurationTag' smart constructor.
-data ConfigurationTag = ConfigurationTag'
-  { _ctTimeOfCreation    :: !(Maybe POSIX)
-  , _ctConfigurationId   :: !(Maybe Text)
-  , _ctConfigurationType :: !(Maybe ConfigurationItemType)
-  , _ctValue             :: !(Maybe Text)
-  , _ctKey               :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ConfigurationTag' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctTimeOfCreation' - The time the configuration tag was created in Coordinated Universal Time (UTC).
---
--- * 'ctConfigurationId' - The configuration ID for the item to tag. You can specify a list of keys and values.
---
--- * 'ctConfigurationType' - A type of IT asset to tag.
---
--- * 'ctValue' - A value on which to filter. For example /key = serverType/ and /value = web server/ .
---
--- * 'ctKey' - A type of tag on which to filter. For example, /serverType/ .
-configurationTag
-    :: ConfigurationTag
-configurationTag =
-  ConfigurationTag'
-    { _ctTimeOfCreation = Nothing
-    , _ctConfigurationId = Nothing
-    , _ctConfigurationType = Nothing
-    , _ctValue = Nothing
-    , _ctKey = Nothing
-    }
-
-
--- | The time the configuration tag was created in Coordinated Universal Time (UTC).
-ctTimeOfCreation :: Lens' ConfigurationTag (Maybe UTCTime)
-ctTimeOfCreation = lens _ctTimeOfCreation (\ s a -> s{_ctTimeOfCreation = a}) . mapping _Time
-
--- | The configuration ID for the item to tag. You can specify a list of keys and values.
-ctConfigurationId :: Lens' ConfigurationTag (Maybe Text)
-ctConfigurationId = lens _ctConfigurationId (\ s a -> s{_ctConfigurationId = a})
-
--- | A type of IT asset to tag.
-ctConfigurationType :: Lens' ConfigurationTag (Maybe ConfigurationItemType)
-ctConfigurationType = lens _ctConfigurationType (\ s a -> s{_ctConfigurationType = a})
-
--- | A value on which to filter. For example /key = serverType/ and /value = web server/ .
-ctValue :: Lens' ConfigurationTag (Maybe Text)
-ctValue = lens _ctValue (\ s a -> s{_ctValue = a})
-
--- | A type of tag on which to filter. For example, /serverType/ .
-ctKey :: Lens' ConfigurationTag (Maybe Text)
-ctKey = lens _ctKey (\ s a -> s{_ctKey = a})
-
-instance FromJSON ConfigurationTag where
-        parseJSON
-          = withObject "ConfigurationTag"
-              (\ x ->
-                 ConfigurationTag' <$>
-                   (x .:? "timeOfCreation") <*>
-                     (x .:? "configurationId")
-                     <*> (x .:? "configurationType")
-                     <*> (x .:? "value")
-                     <*> (x .:? "key"))
-
-instance Hashable ConfigurationTag where
-
-instance NFData ConfigurationTag where
-
--- | Inventory data for installed discovery agents.
---
---
---
--- /See:/ 'customerAgentInfo' smart constructor.
-data CustomerAgentInfo = CustomerAgentInfo'
-  { _caiActiveAgents      :: !Int
-  , _caiHealthyAgents     :: !Int
-  , _caiBlackListedAgents :: !Int
-  , _caiShutdownAgents    :: !Int
-  , _caiUnhealthyAgents   :: !Int
-  , _caiTotalAgents       :: !Int
-  , _caiUnknownAgents     :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CustomerAgentInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'caiActiveAgents' - Number of active discovery agents.
---
--- * 'caiHealthyAgents' - Number of healthy discovery agents
---
--- * 'caiBlackListedAgents' - Number of blacklisted discovery agents.
---
--- * 'caiShutdownAgents' - Number of discovery agents with status SHUTDOWN.
---
--- * 'caiUnhealthyAgents' - Number of unhealthy discovery agents.
---
--- * 'caiTotalAgents' - Total number of discovery agents.
---
--- * 'caiUnknownAgents' - Number of unknown discovery agents.
-customerAgentInfo
-    :: Int -- ^ 'caiActiveAgents'
-    -> Int -- ^ 'caiHealthyAgents'
-    -> Int -- ^ 'caiBlackListedAgents'
-    -> Int -- ^ 'caiShutdownAgents'
-    -> Int -- ^ 'caiUnhealthyAgents'
-    -> Int -- ^ 'caiTotalAgents'
-    -> Int -- ^ 'caiUnknownAgents'
-    -> CustomerAgentInfo
-customerAgentInfo pActiveAgents_ pHealthyAgents_ pBlackListedAgents_ pShutdownAgents_ pUnhealthyAgents_ pTotalAgents_ pUnknownAgents_ =
-  CustomerAgentInfo'
-    { _caiActiveAgents = pActiveAgents_
-    , _caiHealthyAgents = pHealthyAgents_
-    , _caiBlackListedAgents = pBlackListedAgents_
-    , _caiShutdownAgents = pShutdownAgents_
-    , _caiUnhealthyAgents = pUnhealthyAgents_
-    , _caiTotalAgents = pTotalAgents_
-    , _caiUnknownAgents = pUnknownAgents_
-    }
-
-
--- | Number of active discovery agents.
-caiActiveAgents :: Lens' CustomerAgentInfo Int
-caiActiveAgents = lens _caiActiveAgents (\ s a -> s{_caiActiveAgents = a})
-
--- | Number of healthy discovery agents
-caiHealthyAgents :: Lens' CustomerAgentInfo Int
-caiHealthyAgents = lens _caiHealthyAgents (\ s a -> s{_caiHealthyAgents = a})
-
--- | Number of blacklisted discovery agents.
-caiBlackListedAgents :: Lens' CustomerAgentInfo Int
-caiBlackListedAgents = lens _caiBlackListedAgents (\ s a -> s{_caiBlackListedAgents = a})
-
--- | Number of discovery agents with status SHUTDOWN.
-caiShutdownAgents :: Lens' CustomerAgentInfo Int
-caiShutdownAgents = lens _caiShutdownAgents (\ s a -> s{_caiShutdownAgents = a})
-
--- | Number of unhealthy discovery agents.
-caiUnhealthyAgents :: Lens' CustomerAgentInfo Int
-caiUnhealthyAgents = lens _caiUnhealthyAgents (\ s a -> s{_caiUnhealthyAgents = a})
-
--- | Total number of discovery agents.
-caiTotalAgents :: Lens' CustomerAgentInfo Int
-caiTotalAgents = lens _caiTotalAgents (\ s a -> s{_caiTotalAgents = a})
-
--- | Number of unknown discovery agents.
-caiUnknownAgents :: Lens' CustomerAgentInfo Int
-caiUnknownAgents = lens _caiUnknownAgents (\ s a -> s{_caiUnknownAgents = a})
-
-instance FromJSON CustomerAgentInfo where
-        parseJSON
-          = withObject "CustomerAgentInfo"
-              (\ x ->
-                 CustomerAgentInfo' <$>
-                   (x .: "activeAgents") <*> (x .: "healthyAgents") <*>
-                     (x .: "blackListedAgents")
-                     <*> (x .: "shutdownAgents")
-                     <*> (x .: "unhealthyAgents")
-                     <*> (x .: "totalAgents")
-                     <*> (x .: "unknownAgents"))
-
-instance Hashable CustomerAgentInfo where
-
-instance NFData CustomerAgentInfo where
-
--- | Inventory data for installed discovery connectors.
---
---
---
--- /See:/ 'customerConnectorInfo' smart constructor.
-data CustomerConnectorInfo = CustomerConnectorInfo'
-  { _cciActiveConnectors      :: !Int
-  , _cciHealthyConnectors     :: !Int
-  , _cciBlackListedConnectors :: !Int
-  , _cciShutdownConnectors    :: !Int
-  , _cciUnhealthyConnectors   :: !Int
-  , _cciTotalConnectors       :: !Int
-  , _cciUnknownConnectors     :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CustomerConnectorInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cciActiveConnectors' - Number of active discovery connectors.
---
--- * 'cciHealthyConnectors' - Number of healthy discovery connectors.
---
--- * 'cciBlackListedConnectors' - Number of blacklisted discovery connectors.
---
--- * 'cciShutdownConnectors' - Number of discovery connectors with status SHUTDOWN,
---
--- * 'cciUnhealthyConnectors' - Number of unhealthy discovery connectors.
---
--- * 'cciTotalConnectors' - Total number of discovery connectors.
---
--- * 'cciUnknownConnectors' - Number of unknown discovery connectors.
-customerConnectorInfo
-    :: Int -- ^ 'cciActiveConnectors'
-    -> Int -- ^ 'cciHealthyConnectors'
-    -> Int -- ^ 'cciBlackListedConnectors'
-    -> Int -- ^ 'cciShutdownConnectors'
-    -> Int -- ^ 'cciUnhealthyConnectors'
-    -> Int -- ^ 'cciTotalConnectors'
-    -> Int -- ^ 'cciUnknownConnectors'
-    -> CustomerConnectorInfo
-customerConnectorInfo pActiveConnectors_ pHealthyConnectors_ pBlackListedConnectors_ pShutdownConnectors_ pUnhealthyConnectors_ pTotalConnectors_ pUnknownConnectors_ =
-  CustomerConnectorInfo'
-    { _cciActiveConnectors = pActiveConnectors_
-    , _cciHealthyConnectors = pHealthyConnectors_
-    , _cciBlackListedConnectors = pBlackListedConnectors_
-    , _cciShutdownConnectors = pShutdownConnectors_
-    , _cciUnhealthyConnectors = pUnhealthyConnectors_
-    , _cciTotalConnectors = pTotalConnectors_
-    , _cciUnknownConnectors = pUnknownConnectors_
-    }
-
-
--- | Number of active discovery connectors.
-cciActiveConnectors :: Lens' CustomerConnectorInfo Int
-cciActiveConnectors = lens _cciActiveConnectors (\ s a -> s{_cciActiveConnectors = a})
-
--- | Number of healthy discovery connectors.
-cciHealthyConnectors :: Lens' CustomerConnectorInfo Int
-cciHealthyConnectors = lens _cciHealthyConnectors (\ s a -> s{_cciHealthyConnectors = a})
-
--- | Number of blacklisted discovery connectors.
-cciBlackListedConnectors :: Lens' CustomerConnectorInfo Int
-cciBlackListedConnectors = lens _cciBlackListedConnectors (\ s a -> s{_cciBlackListedConnectors = a})
-
--- | Number of discovery connectors with status SHUTDOWN,
-cciShutdownConnectors :: Lens' CustomerConnectorInfo Int
-cciShutdownConnectors = lens _cciShutdownConnectors (\ s a -> s{_cciShutdownConnectors = a})
-
--- | Number of unhealthy discovery connectors.
-cciUnhealthyConnectors :: Lens' CustomerConnectorInfo Int
-cciUnhealthyConnectors = lens _cciUnhealthyConnectors (\ s a -> s{_cciUnhealthyConnectors = a})
-
--- | Total number of discovery connectors.
-cciTotalConnectors :: Lens' CustomerConnectorInfo Int
-cciTotalConnectors = lens _cciTotalConnectors (\ s a -> s{_cciTotalConnectors = a})
-
--- | Number of unknown discovery connectors.
-cciUnknownConnectors :: Lens' CustomerConnectorInfo Int
-cciUnknownConnectors = lens _cciUnknownConnectors (\ s a -> s{_cciUnknownConnectors = a})
-
-instance FromJSON CustomerConnectorInfo where
-        parseJSON
-          = withObject "CustomerConnectorInfo"
-              (\ x ->
-                 CustomerConnectorInfo' <$>
-                   (x .: "activeConnectors") <*>
-                     (x .: "healthyConnectors")
-                     <*> (x .: "blackListedConnectors")
-                     <*> (x .: "shutdownConnectors")
-                     <*> (x .: "unhealthyConnectors")
-                     <*> (x .: "totalConnectors")
-                     <*> (x .: "unknownConnectors"))
-
-instance Hashable CustomerConnectorInfo where
-
-instance NFData CustomerConnectorInfo where
-
--- | Used to select which agent's data is to be exported. A single agent ID may be selected for export using the <http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_StartExportTask.html StartExportTask> action.
---
---
---
--- /See:/ 'exportFilter' smart constructor.
-data ExportFilter = ExportFilter'
-  { _efName      :: !Text
-  , _efValues    :: ![Text]
-  , _efCondition :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ExportFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'efName' - A single @ExportFilter@ name. Supported filters: @agentId@ .
---
--- * 'efValues' - A single @agentId@ for a Discovery Agent. An @agentId@ can be found using the <http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_DescribeExportTasks.html DescribeAgents> action. Typically an ADS @agentId@ is in the form @o-0123456789abcdef0@ .
---
--- * 'efCondition' - Supported condition: @EQUALS@
-exportFilter
-    :: Text -- ^ 'efName'
-    -> Text -- ^ 'efCondition'
-    -> ExportFilter
-exportFilter pName_ pCondition_ =
-  ExportFilter'
-    {_efName = pName_, _efValues = mempty, _efCondition = pCondition_}
-
-
--- | A single @ExportFilter@ name. Supported filters: @agentId@ .
-efName :: Lens' ExportFilter Text
-efName = lens _efName (\ s a -> s{_efName = a})
-
--- | A single @agentId@ for a Discovery Agent. An @agentId@ can be found using the <http://docs.aws.amazon.com/application-discovery/latest/APIReference/API_DescribeExportTasks.html DescribeAgents> action. Typically an ADS @agentId@ is in the form @o-0123456789abcdef0@ .
-efValues :: Lens' ExportFilter [Text]
-efValues = lens _efValues (\ s a -> s{_efValues = a}) . _Coerce
-
--- | Supported condition: @EQUALS@
-efCondition :: Lens' ExportFilter Text
-efCondition = lens _efCondition (\ s a -> s{_efCondition = a})
-
-instance Hashable ExportFilter where
-
-instance NFData ExportFilter where
-
-instance ToJSON ExportFilter where
-        toJSON ExportFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("name" .= _efName),
-                  Just ("values" .= _efValues),
-                  Just ("condition" .= _efCondition)])
-
--- | Information regarding the export status of discovered data. The value is an array of objects.
---
---
---
--- /See:/ 'exportInfo' smart constructor.
-data ExportInfo = ExportInfo'
-  { _eiConfigurationsDownloadURL :: !(Maybe Text)
-  , _eiRequestedStartTime        :: !(Maybe POSIX)
-  , _eiRequestedEndTime          :: !(Maybe POSIX)
-  , _eiIsTruncated               :: !(Maybe Bool)
-  , _eiExportId                  :: !Text
-  , _eiExportStatus              :: !ExportStatus
-  , _eiStatusMessage             :: !Text
-  , _eiExportRequestTime         :: !POSIX
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ExportInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eiConfigurationsDownloadURL' - A URL for an Amazon S3 bucket where you can review the exported data. The URL is displayed only if the export succeeded.
---
--- * 'eiRequestedStartTime' - The value of @startTime@ parameter in the @StartExportTask@ request. If no @startTime@ was requested, this result does not appear in @ExportInfo@ .
---
--- * 'eiRequestedEndTime' - The @endTime@ used in the @StartExportTask@ request. If no @endTime@ was requested, this result does not appear in @ExportInfo@ .
---
--- * 'eiIsTruncated' - If true, the export of agent information exceeded the size limit for a single export and the exported data is incomplete for the requested time range. To address this, select a smaller time range for the export by using @startDate@ and @endDate@ .
---
--- * 'eiExportId' - A unique identifier used to query an export.
---
--- * 'eiExportStatus' - The status of the data export job.
---
--- * 'eiStatusMessage' - A status message provided for API callers.
---
--- * 'eiExportRequestTime' - The time that the data export was initiated.
-exportInfo
-    :: Text -- ^ 'eiExportId'
-    -> ExportStatus -- ^ 'eiExportStatus'
-    -> Text -- ^ 'eiStatusMessage'
-    -> UTCTime -- ^ 'eiExportRequestTime'
-    -> ExportInfo
-exportInfo pExportId_ pExportStatus_ pStatusMessage_ pExportRequestTime_ =
-  ExportInfo'
-    { _eiConfigurationsDownloadURL = Nothing
-    , _eiRequestedStartTime = Nothing
-    , _eiRequestedEndTime = Nothing
-    , _eiIsTruncated = Nothing
-    , _eiExportId = pExportId_
-    , _eiExportStatus = pExportStatus_
-    , _eiStatusMessage = pStatusMessage_
-    , _eiExportRequestTime = _Time # pExportRequestTime_
-    }
-
-
--- | A URL for an Amazon S3 bucket where you can review the exported data. The URL is displayed only if the export succeeded.
-eiConfigurationsDownloadURL :: Lens' ExportInfo (Maybe Text)
-eiConfigurationsDownloadURL = lens _eiConfigurationsDownloadURL (\ s a -> s{_eiConfigurationsDownloadURL = a})
-
--- | The value of @startTime@ parameter in the @StartExportTask@ request. If no @startTime@ was requested, this result does not appear in @ExportInfo@ .
-eiRequestedStartTime :: Lens' ExportInfo (Maybe UTCTime)
-eiRequestedStartTime = lens _eiRequestedStartTime (\ s a -> s{_eiRequestedStartTime = a}) . mapping _Time
-
--- | The @endTime@ used in the @StartExportTask@ request. If no @endTime@ was requested, this result does not appear in @ExportInfo@ .
-eiRequestedEndTime :: Lens' ExportInfo (Maybe UTCTime)
-eiRequestedEndTime = lens _eiRequestedEndTime (\ s a -> s{_eiRequestedEndTime = a}) . mapping _Time
-
--- | If true, the export of agent information exceeded the size limit for a single export and the exported data is incomplete for the requested time range. To address this, select a smaller time range for the export by using @startDate@ and @endDate@ .
-eiIsTruncated :: Lens' ExportInfo (Maybe Bool)
-eiIsTruncated = lens _eiIsTruncated (\ s a -> s{_eiIsTruncated = a})
-
--- | A unique identifier used to query an export.
-eiExportId :: Lens' ExportInfo Text
-eiExportId = lens _eiExportId (\ s a -> s{_eiExportId = a})
-
--- | The status of the data export job.
-eiExportStatus :: Lens' ExportInfo ExportStatus
-eiExportStatus = lens _eiExportStatus (\ s a -> s{_eiExportStatus = a})
-
--- | A status message provided for API callers.
-eiStatusMessage :: Lens' ExportInfo Text
-eiStatusMessage = lens _eiStatusMessage (\ s a -> s{_eiStatusMessage = a})
-
--- | The time that the data export was initiated.
-eiExportRequestTime :: Lens' ExportInfo UTCTime
-eiExportRequestTime = lens _eiExportRequestTime (\ s a -> s{_eiExportRequestTime = a}) . _Time
-
-instance FromJSON ExportInfo where
-        parseJSON
-          = withObject "ExportInfo"
-              (\ x ->
-                 ExportInfo' <$>
-                   (x .:? "configurationsDownloadUrl") <*>
-                     (x .:? "requestedStartTime")
-                     <*> (x .:? "requestedEndTime")
-                     <*> (x .:? "isTruncated")
-                     <*> (x .: "exportId")
-                     <*> (x .: "exportStatus")
-                     <*> (x .: "statusMessage")
-                     <*> (x .: "exportRequestTime"))
-
-instance Hashable ExportInfo where
-
-instance NFData ExportInfo where
-
--- | A filter that can use conditional operators.
---
---
--- For more information about filters, see <http://docs.aws.amazon.com/application-discovery/latest/APIReference/discovery-api-queries.html Querying Discovered Configuration Items> .
---
---
--- /See:/ 'filter'' smart constructor.
-data Filter = Filter'
-  { _fName      :: !Text
-  , _fValues    :: ![Text]
-  , _fCondition :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Filter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fName' - The name of the filter.
---
--- * 'fValues' - A string value on which to filter. For example, if you choose the @destinationServer.osVersion@ filter name, you could specify @Ubuntu@ for the value.
---
--- * 'fCondition' - A conditional operator. The following operators are valid: EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS. If you specify multiple filters, the system utilizes all filters as though concatenated by /AND/ . If you specify multiple values for a particular filter, the system differentiates the values using /OR/ . Calling either /DescribeConfigurations/ or /ListConfigurations/ returns attributes of matching configuration items.
-filter'
-    :: Text -- ^ 'fName'
-    -> Text -- ^ 'fCondition'
-    -> Filter
-filter' pName_ pCondition_ =
-  Filter' {_fName = pName_, _fValues = mempty, _fCondition = pCondition_}
-
-
--- | The name of the filter.
-fName :: Lens' Filter Text
-fName = lens _fName (\ s a -> s{_fName = a})
-
--- | A string value on which to filter. For example, if you choose the @destinationServer.osVersion@ filter name, you could specify @Ubuntu@ for the value.
-fValues :: Lens' Filter [Text]
-fValues = lens _fValues (\ s a -> s{_fValues = a}) . _Coerce
-
--- | A conditional operator. The following operators are valid: EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS. If you specify multiple filters, the system utilizes all filters as though concatenated by /AND/ . If you specify multiple values for a particular filter, the system differentiates the values using /OR/ . Calling either /DescribeConfigurations/ or /ListConfigurations/ returns attributes of matching configuration items.
-fCondition :: Lens' Filter Text
-fCondition = lens _fCondition (\ s a -> s{_fCondition = a})
-
-instance Hashable Filter where
-
-instance NFData Filter where
-
-instance ToJSON Filter where
-        toJSON Filter'{..}
-          = object
-              (catMaybes
-                 [Just ("name" .= _fName),
-                  Just ("values" .= _fValues),
-                  Just ("condition" .= _fCondition)])
-
--- | Details about neighboring servers.
---
---
---
--- /See:/ 'neighborConnectionDetail' smart constructor.
-data NeighborConnectionDetail = NeighborConnectionDetail'
-  { _ncdTransportProtocol   :: !(Maybe Text)
-  , _ncdDestinationPort     :: !(Maybe Int)
-  , _ncdSourceServerId      :: !Text
-  , _ncdDestinationServerId :: !Text
-  , _ncdConnectionsCount    :: !Integer
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NeighborConnectionDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ncdTransportProtocol' - The network protocol used for the connection.
---
--- * 'ncdDestinationPort' - The destination network port for the connection.
---
--- * 'ncdSourceServerId' - The ID of the server that opened the network connection.
---
--- * 'ncdDestinationServerId' - The ID of the server that accepted the network connection.
---
--- * 'ncdConnectionsCount' - The number of open network connections with the neighboring server.
-neighborConnectionDetail
-    :: Text -- ^ 'ncdSourceServerId'
-    -> Text -- ^ 'ncdDestinationServerId'
-    -> Integer -- ^ 'ncdConnectionsCount'
-    -> NeighborConnectionDetail
-neighborConnectionDetail pSourceServerId_ pDestinationServerId_ pConnectionsCount_ =
-  NeighborConnectionDetail'
-    { _ncdTransportProtocol = Nothing
-    , _ncdDestinationPort = Nothing
-    , _ncdSourceServerId = pSourceServerId_
-    , _ncdDestinationServerId = pDestinationServerId_
-    , _ncdConnectionsCount = pConnectionsCount_
-    }
-
-
--- | The network protocol used for the connection.
-ncdTransportProtocol :: Lens' NeighborConnectionDetail (Maybe Text)
-ncdTransportProtocol = lens _ncdTransportProtocol (\ s a -> s{_ncdTransportProtocol = a})
-
--- | The destination network port for the connection.
-ncdDestinationPort :: Lens' NeighborConnectionDetail (Maybe Int)
-ncdDestinationPort = lens _ncdDestinationPort (\ s a -> s{_ncdDestinationPort = a})
-
--- | The ID of the server that opened the network connection.
-ncdSourceServerId :: Lens' NeighborConnectionDetail Text
-ncdSourceServerId = lens _ncdSourceServerId (\ s a -> s{_ncdSourceServerId = a})
-
--- | The ID of the server that accepted the network connection.
-ncdDestinationServerId :: Lens' NeighborConnectionDetail Text
-ncdDestinationServerId = lens _ncdDestinationServerId (\ s a -> s{_ncdDestinationServerId = a})
-
--- | The number of open network connections with the neighboring server.
-ncdConnectionsCount :: Lens' NeighborConnectionDetail Integer
-ncdConnectionsCount = lens _ncdConnectionsCount (\ s a -> s{_ncdConnectionsCount = a})
-
-instance FromJSON NeighborConnectionDetail where
-        parseJSON
-          = withObject "NeighborConnectionDetail"
-              (\ x ->
-                 NeighborConnectionDetail' <$>
-                   (x .:? "transportProtocol") <*>
-                     (x .:? "destinationPort")
-                     <*> (x .: "sourceServerId")
-                     <*> (x .: "destinationServerId")
-                     <*> (x .: "connectionsCount"))
-
-instance Hashable NeighborConnectionDetail where
-
-instance NFData NeighborConnectionDetail where
-
--- | A field and direction for ordered output.
---
---
---
--- /See:/ 'orderByElement' smart constructor.
-data OrderByElement = OrderByElement'
-  { _obeSortOrder :: !(Maybe OrderString)
-  , _obeFieldName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OrderByElement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'obeSortOrder' - Ordering direction.
---
--- * 'obeFieldName' - The field on which to order.
-orderByElement
-    :: Text -- ^ 'obeFieldName'
-    -> OrderByElement
-orderByElement pFieldName_ =
-  OrderByElement' {_obeSortOrder = Nothing, _obeFieldName = pFieldName_}
-
-
--- | Ordering direction.
-obeSortOrder :: Lens' OrderByElement (Maybe OrderString)
-obeSortOrder = lens _obeSortOrder (\ s a -> s{_obeSortOrder = a})
-
--- | The field on which to order.
-obeFieldName :: Lens' OrderByElement Text
-obeFieldName = lens _obeFieldName (\ s a -> s{_obeFieldName = a})
-
-instance Hashable OrderByElement where
-
-instance NFData OrderByElement where
-
-instance ToJSON OrderByElement where
-        toJSON OrderByElement'{..}
-          = object
-              (catMaybes
-                 [("sortOrder" .=) <$> _obeSortOrder,
-                  Just ("fieldName" .= _obeFieldName)])
-
--- | Metadata that help you categorize IT assets.
---
---
---
--- /See:/ 'tag' smart constructor.
-data Tag = Tag'
-  { _tagKey   :: !Text
-  , _tagValue :: !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:
---
--- * 'tagKey' - The type of tag on which to filter.
---
--- * 'tagValue' - A value for a tag key on which to filter.
-tag
-    :: Text -- ^ 'tagKey'
-    -> Text -- ^ 'tagValue'
-    -> Tag
-tag pKey_ pValue_ = Tag' {_tagKey = pKey_, _tagValue = pValue_}
-
-
--- | The type of tag on which to filter.
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\ s a -> s{_tagKey = a})
-
--- | A value for a tag key on which to filter.
-tagValue :: Lens' Tag Text
-tagValue = lens _tagValue (\ s a -> s{_tagValue = a})
-
-instance Hashable Tag where
-
-instance NFData Tag where
-
-instance ToJSON Tag where
-        toJSON Tag'{..}
-          = object
-              (catMaybes
-                 [Just ("key" .= _tagKey),
-                  Just ("value" .= _tagValue)])
-
--- | The tag filter. Valid names are: @tagKey@ , @tagValue@ , @configurationId@ .
---
---
---
--- /See:/ 'tagFilter' smart constructor.
-data TagFilter = TagFilter'
-  { _tfName   :: !Text
-  , _tfValues :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TagFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tfName' - A name of the tag filter.
---
--- * 'tfValues' - Values for the tag filter.
-tagFilter
-    :: Text -- ^ 'tfName'
-    -> TagFilter
-tagFilter pName_ = TagFilter' {_tfName = pName_, _tfValues = mempty}
-
-
--- | A name of the tag filter.
-tfName :: Lens' TagFilter Text
-tfName = lens _tfName (\ s a -> s{_tfName = a})
-
--- | Values for the tag filter.
-tfValues :: Lens' TagFilter [Text]
-tfValues = lens _tfValues (\ s a -> s{_tfValues = a}) . _Coerce
-
-instance Hashable TagFilter where
-
-instance NFData TagFilter where
-
-instance ToJSON TagFilter where
-        toJSON TagFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("name" .= _tfName),
-                  Just ("values" .= _tfValues)])
diff --git a/gen/Network/AWS/Discovery/Types/Sum.hs b/gen/Network/AWS/Discovery/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/Types/Sum.hs
+++ /dev/null
@@ -1,179 +0,0 @@
-{-# 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.Discovery.Types.Sum
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.Discovery.Types.Sum where
-
-import Network.AWS.Prelude
-
-data AgentStatus
-  = Blacklisted
-  | Healthy
-  | Running
-  | Shutdown
-  | Unhealthy
-  | Unknown
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText AgentStatus where
-    parser = takeLowerText >>= \case
-        "blacklisted" -> pure Blacklisted
-        "healthy" -> pure Healthy
-        "running" -> pure Running
-        "shutdown" -> pure Shutdown
-        "unhealthy" -> pure Unhealthy
-        "unknown" -> pure Unknown
-        e -> fromTextError $ "Failure parsing AgentStatus from value: '" <> e
-           <> "'. Accepted values: blacklisted, healthy, running, shutdown, unhealthy, unknown"
-
-instance ToText AgentStatus where
-    toText = \case
-        Blacklisted -> "BLACKLISTED"
-        Healthy -> "HEALTHY"
-        Running -> "RUNNING"
-        Shutdown -> "SHUTDOWN"
-        Unhealthy -> "UNHEALTHY"
-        Unknown -> "UNKNOWN"
-
-instance Hashable     AgentStatus
-instance NFData       AgentStatus
-instance ToByteString AgentStatus
-instance ToQuery      AgentStatus
-instance ToHeader     AgentStatus
-
-instance FromJSON AgentStatus where
-    parseJSON = parseJSONText "AgentStatus"
-
-data ConfigurationItemType
-  = Application
-  | Connection
-  | Process
-  | Server
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ConfigurationItemType where
-    parser = takeLowerText >>= \case
-        "application" -> pure Application
-        "connection" -> pure Connection
-        "process" -> pure Process
-        "server" -> pure Server
-        e -> fromTextError $ "Failure parsing ConfigurationItemType from value: '" <> e
-           <> "'. Accepted values: application, connection, process, server"
-
-instance ToText ConfigurationItemType where
-    toText = \case
-        Application -> "APPLICATION"
-        Connection -> "CONNECTION"
-        Process -> "PROCESS"
-        Server -> "SERVER"
-
-instance Hashable     ConfigurationItemType
-instance NFData       ConfigurationItemType
-instance ToByteString ConfigurationItemType
-instance ToQuery      ConfigurationItemType
-instance ToHeader     ConfigurationItemType
-
-instance ToJSON ConfigurationItemType where
-    toJSON = toJSONText
-
-instance FromJSON ConfigurationItemType where
-    parseJSON = parseJSONText "ConfigurationItemType"
-
-data ExportDataFormat
-  = CSV
-  | Graphml
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ExportDataFormat where
-    parser = takeLowerText >>= \case
-        "csv" -> pure CSV
-        "graphml" -> pure Graphml
-        e -> fromTextError $ "Failure parsing ExportDataFormat from value: '" <> e
-           <> "'. Accepted values: csv, graphml"
-
-instance ToText ExportDataFormat where
-    toText = \case
-        CSV -> "CSV"
-        Graphml -> "GRAPHML"
-
-instance Hashable     ExportDataFormat
-instance NFData       ExportDataFormat
-instance ToByteString ExportDataFormat
-instance ToQuery      ExportDataFormat
-instance ToHeader     ExportDataFormat
-
-instance ToJSON ExportDataFormat where
-    toJSON = toJSONText
-
-data ExportStatus
-  = Failed
-  | InProgress
-  | Succeeded
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ExportStatus where
-    parser = takeLowerText >>= \case
-        "failed" -> pure Failed
-        "in_progress" -> pure InProgress
-        "succeeded" -> pure Succeeded
-        e -> fromTextError $ "Failure parsing ExportStatus from value: '" <> e
-           <> "'. Accepted values: failed, in_progress, succeeded"
-
-instance ToText ExportStatus where
-    toText = \case
-        Failed -> "FAILED"
-        InProgress -> "IN_PROGRESS"
-        Succeeded -> "SUCCEEDED"
-
-instance Hashable     ExportStatus
-instance NFData       ExportStatus
-instance ToByteString ExportStatus
-instance ToQuery      ExportStatus
-instance ToHeader     ExportStatus
-
-instance FromJSON ExportStatus where
-    parseJSON = parseJSONText "ExportStatus"
-
-data OrderString
-  = Asc
-  | Desc
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText OrderString where
-    parser = takeLowerText >>= \case
-        "asc" -> pure Asc
-        "desc" -> pure Desc
-        e -> fromTextError $ "Failure parsing OrderString from value: '" <> e
-           <> "'. Accepted values: asc, desc"
-
-instance ToText OrderString where
-    toText = \case
-        Asc -> "ASC"
-        Desc -> "DESC"
-
-instance Hashable     OrderString
-instance NFData       OrderString
-instance ToByteString OrderString
-instance ToQuery      OrderString
-instance ToHeader     OrderString
-
-instance ToJSON OrderString where
-    toJSON = toJSONText
diff --git a/gen/Network/AWS/Discovery/UpdateApplication.hs b/gen/Network/AWS/Discovery/UpdateApplication.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/UpdateApplication.hs
+++ /dev/null
@@ -1,146 +0,0 @@
-{-# 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.Discovery.UpdateApplication
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates metadata about an application.
---
---
-module Network.AWS.Discovery.UpdateApplication
-    (
-    -- * Creating a Request
-      updateApplication
-    , UpdateApplication
-    -- * Request Lenses
-    , uaName
-    , uaDescription
-    , uaConfigurationId
-
-    -- * Destructuring the Response
-    , updateApplicationResponse
-    , UpdateApplicationResponse
-    -- * Response Lenses
-    , uarsResponseStatus
-    ) where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Discovery.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | /See:/ 'updateApplication' smart constructor.
-data UpdateApplication = UpdateApplication'
-  { _uaName            :: !(Maybe Text)
-  , _uaDescription     :: !(Maybe Text)
-  , _uaConfigurationId :: !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:
---
--- * 'uaName' - New name of the application to be updated.
---
--- * 'uaDescription' - New description of the application to be updated.
---
--- * 'uaConfigurationId' - Configuration ID of the application to be updated.
-updateApplication
-    :: Text -- ^ 'uaConfigurationId'
-    -> UpdateApplication
-updateApplication pConfigurationId_ =
-  UpdateApplication'
-    { _uaName = Nothing
-    , _uaDescription = Nothing
-    , _uaConfigurationId = pConfigurationId_
-    }
-
-
--- | New name of the application to be updated.
-uaName :: Lens' UpdateApplication (Maybe Text)
-uaName = lens _uaName (\ s a -> s{_uaName = a})
-
--- | New description of the application to be updated.
-uaDescription :: Lens' UpdateApplication (Maybe Text)
-uaDescription = lens _uaDescription (\ s a -> s{_uaDescription = a})
-
--- | Configuration ID of the application to be updated.
-uaConfigurationId :: Lens' UpdateApplication Text
-uaConfigurationId = lens _uaConfigurationId (\ s a -> s{_uaConfigurationId = a})
-
-instance AWSRequest UpdateApplication where
-        type Rs UpdateApplication = UpdateApplicationResponse
-        request = postJSON discovery
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 UpdateApplicationResponse' <$> (pure (fromEnum s)))
-
-instance Hashable UpdateApplication where
-
-instance NFData UpdateApplication where
-
-instance ToHeaders UpdateApplication where
-        toHeaders
-          = const
-              (mconcat
-                 ["X-Amz-Target" =#
-                    ("AWSPoseidonService_V2015_11_01.UpdateApplication"
-                       :: ByteString),
-                  "Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON UpdateApplication where
-        toJSON UpdateApplication'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _uaName,
-                  ("description" .=) <$> _uaDescription,
-                  Just ("configurationId" .= _uaConfigurationId)])
-
-instance ToPath UpdateApplication where
-        toPath = const "/"
-
-instance ToQuery UpdateApplication where
-        toQuery = const mempty
-
--- | /See:/ 'updateApplicationResponse' smart constructor.
-newtype UpdateApplicationResponse = UpdateApplicationResponse'
-  { _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:
---
--- * 'uarsResponseStatus' - -- | The response status code.
-updateApplicationResponse
-    :: Int -- ^ 'uarsResponseStatus'
-    -> UpdateApplicationResponse
-updateApplicationResponse pResponseStatus_ =
-  UpdateApplicationResponse' {_uarsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-uarsResponseStatus :: Lens' UpdateApplicationResponse Int
-uarsResponseStatus = lens _uarsResponseStatus (\ s a -> s{_uarsResponseStatus = a})
-
-instance NFData UpdateApplicationResponse where
diff --git a/gen/Network/AWS/Discovery/Waiters.hs b/gen/Network/AWS/Discovery/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/Discovery/Waiters.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.Discovery.Waiters
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.Discovery.Waiters where
-
-import Network.AWS.Discovery.Types
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.Discovery
+import Test.Amazonka.Discovery.Internal
 import Test.Tasty
-import Test.AWS.Discovery
-import Test.AWS.Discovery.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "Discovery"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "Discovery"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Discovery.hs b/test/Test/AWS/Discovery.hs
deleted file mode 100644
--- a/test/Test/AWS/Discovery.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- |
--- Module      : Test.AWS.Discovery
--- Copyright   : (c) 2013-2018 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.Discovery
-    ( tests
-    , fixtures
-    ) where
-
-import           Network.AWS.Discovery
-import           Test.AWS.Gen.Discovery
-import           Test.Tasty
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/Discovery/Internal.hs b/test/Test/AWS/Discovery/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/Discovery/Internal.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Test.AWS.Discovery.Internal
--- Copyright   : (c) 2013-2018 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.Discovery.Internal where
-
-import           Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/Discovery.hs b/test/Test/AWS/Gen/Discovery.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/Discovery.hs
+++ /dev/null
@@ -1,345 +0,0 @@
-{-# 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.Discovery
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.Gen.Discovery where
-
-import Data.Proxy
-import Network.AWS.Discovery
-import Test.AWS.Discovery.Internal
-import Test.AWS.Fixture
-import Test.AWS.Prelude
-import Test.Tasty
-
--- 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"
---         [ requestDescribeTags $
---             describeTags
---
---         , requestStopDataCollectionByAgentIds $
---             stopDataCollectionByAgentIds
---
---         , requestCreateTags $
---             createTags
---
---         , requestDeleteTags $
---             deleteTags
---
---         , requestDeleteApplications $
---             deleteApplications
---
---         , requestUpdateApplication $
---             updateApplication
---
---         , requestDescribeConfigurations $
---             describeConfigurations
---
---         , requestCreateApplication $
---             createApplication
---
---         , requestListConfigurations $
---             listConfigurations
---
---         , requestDescribeAgents $
---             describeAgents
---
---         , requestDescribeExportTasks $
---             describeExportTasks
---
---         , requestStartDataCollectionByAgentIds $
---             startDataCollectionByAgentIds
---
---         , requestGetDiscoverySummary $
---             getDiscoverySummary
---
---         , requestDisassociateConfigurationItemsFromApplication $
---             disassociateConfigurationItemsFromApplication
---
---         , requestAssociateConfigurationItemsToApplication $
---             associateConfigurationItemsToApplication
---
---         , requestListServerNeighbors $
---             listServerNeighbors
---
---         , requestStartExportTask $
---             startExportTask
---
---           ]
-
---     , testGroup "response"
---         [ responseDescribeTags $
---             describeTagsResponse
---
---         , responseStopDataCollectionByAgentIds $
---             stopDataCollectionByAgentIdsResponse
---
---         , responseCreateTags $
---             createTagsResponse
---
---         , responseDeleteTags $
---             deleteTagsResponse
---
---         , responseDeleteApplications $
---             deleteApplicationsResponse
---
---         , responseUpdateApplication $
---             updateApplicationResponse
---
---         , responseDescribeConfigurations $
---             describeConfigurationsResponse
---
---         , responseCreateApplication $
---             createApplicationResponse
---
---         , responseListConfigurations $
---             listConfigurationsResponse
---
---         , responseDescribeAgents $
---             describeAgentsResponse
---
---         , responseDescribeExportTasks $
---             describeExportTasksResponse
---
---         , responseStartDataCollectionByAgentIds $
---             startDataCollectionByAgentIdsResponse
---
---         , responseGetDiscoverySummary $
---             getDiscoverySummaryResponse
---
---         , responseDisassociateConfigurationItemsFromApplication $
---             disassociateConfigurationItemsFromApplicationResponse
---
---         , responseAssociateConfigurationItemsToApplication $
---             associateConfigurationItemsToApplicationResponse
---
---         , responseListServerNeighbors $
---             listServerNeighborsResponse
---
---         , responseStartExportTask $
---             startExportTaskResponse
---
---           ]
---     ]
-
--- Requests
-
-requestDescribeTags :: DescribeTags -> TestTree
-requestDescribeTags = req
-    "DescribeTags"
-    "fixture/DescribeTags.yaml"
-
-requestStopDataCollectionByAgentIds :: StopDataCollectionByAgentIds -> TestTree
-requestStopDataCollectionByAgentIds = req
-    "StopDataCollectionByAgentIds"
-    "fixture/StopDataCollectionByAgentIds.yaml"
-
-requestCreateTags :: CreateTags -> TestTree
-requestCreateTags = req
-    "CreateTags"
-    "fixture/CreateTags.yaml"
-
-requestDeleteTags :: DeleteTags -> TestTree
-requestDeleteTags = req
-    "DeleteTags"
-    "fixture/DeleteTags.yaml"
-
-requestDeleteApplications :: DeleteApplications -> TestTree
-requestDeleteApplications = req
-    "DeleteApplications"
-    "fixture/DeleteApplications.yaml"
-
-requestUpdateApplication :: UpdateApplication -> TestTree
-requestUpdateApplication = req
-    "UpdateApplication"
-    "fixture/UpdateApplication.yaml"
-
-requestDescribeConfigurations :: DescribeConfigurations -> TestTree
-requestDescribeConfigurations = req
-    "DescribeConfigurations"
-    "fixture/DescribeConfigurations.yaml"
-
-requestCreateApplication :: CreateApplication -> TestTree
-requestCreateApplication = req
-    "CreateApplication"
-    "fixture/CreateApplication.yaml"
-
-requestListConfigurations :: ListConfigurations -> TestTree
-requestListConfigurations = req
-    "ListConfigurations"
-    "fixture/ListConfigurations.yaml"
-
-requestDescribeAgents :: DescribeAgents -> TestTree
-requestDescribeAgents = req
-    "DescribeAgents"
-    "fixture/DescribeAgents.yaml"
-
-requestDescribeExportTasks :: DescribeExportTasks -> TestTree
-requestDescribeExportTasks = req
-    "DescribeExportTasks"
-    "fixture/DescribeExportTasks.yaml"
-
-requestStartDataCollectionByAgentIds :: StartDataCollectionByAgentIds -> TestTree
-requestStartDataCollectionByAgentIds = req
-    "StartDataCollectionByAgentIds"
-    "fixture/StartDataCollectionByAgentIds.yaml"
-
-requestGetDiscoverySummary :: GetDiscoverySummary -> TestTree
-requestGetDiscoverySummary = req
-    "GetDiscoverySummary"
-    "fixture/GetDiscoverySummary.yaml"
-
-requestDisassociateConfigurationItemsFromApplication :: DisassociateConfigurationItemsFromApplication -> TestTree
-requestDisassociateConfigurationItemsFromApplication = req
-    "DisassociateConfigurationItemsFromApplication"
-    "fixture/DisassociateConfigurationItemsFromApplication.yaml"
-
-requestAssociateConfigurationItemsToApplication :: AssociateConfigurationItemsToApplication -> TestTree
-requestAssociateConfigurationItemsToApplication = req
-    "AssociateConfigurationItemsToApplication"
-    "fixture/AssociateConfigurationItemsToApplication.yaml"
-
-requestListServerNeighbors :: ListServerNeighbors -> TestTree
-requestListServerNeighbors = req
-    "ListServerNeighbors"
-    "fixture/ListServerNeighbors.yaml"
-
-requestStartExportTask :: StartExportTask -> TestTree
-requestStartExportTask = req
-    "StartExportTask"
-    "fixture/StartExportTask.yaml"
-
--- Responses
-
-responseDescribeTags :: DescribeTagsResponse -> TestTree
-responseDescribeTags = res
-    "DescribeTagsResponse"
-    "fixture/DescribeTagsResponse.proto"
-    discovery
-    (Proxy :: Proxy DescribeTags)
-
-responseStopDataCollectionByAgentIds :: StopDataCollectionByAgentIdsResponse -> TestTree
-responseStopDataCollectionByAgentIds = res
-    "StopDataCollectionByAgentIdsResponse"
-    "fixture/StopDataCollectionByAgentIdsResponse.proto"
-    discovery
-    (Proxy :: Proxy StopDataCollectionByAgentIds)
-
-responseCreateTags :: CreateTagsResponse -> TestTree
-responseCreateTags = res
-    "CreateTagsResponse"
-    "fixture/CreateTagsResponse.proto"
-    discovery
-    (Proxy :: Proxy CreateTags)
-
-responseDeleteTags :: DeleteTagsResponse -> TestTree
-responseDeleteTags = res
-    "DeleteTagsResponse"
-    "fixture/DeleteTagsResponse.proto"
-    discovery
-    (Proxy :: Proxy DeleteTags)
-
-responseDeleteApplications :: DeleteApplicationsResponse -> TestTree
-responseDeleteApplications = res
-    "DeleteApplicationsResponse"
-    "fixture/DeleteApplicationsResponse.proto"
-    discovery
-    (Proxy :: Proxy DeleteApplications)
-
-responseUpdateApplication :: UpdateApplicationResponse -> TestTree
-responseUpdateApplication = res
-    "UpdateApplicationResponse"
-    "fixture/UpdateApplicationResponse.proto"
-    discovery
-    (Proxy :: Proxy UpdateApplication)
-
-responseDescribeConfigurations :: DescribeConfigurationsResponse -> TestTree
-responseDescribeConfigurations = res
-    "DescribeConfigurationsResponse"
-    "fixture/DescribeConfigurationsResponse.proto"
-    discovery
-    (Proxy :: Proxy DescribeConfigurations)
-
-responseCreateApplication :: CreateApplicationResponse -> TestTree
-responseCreateApplication = res
-    "CreateApplicationResponse"
-    "fixture/CreateApplicationResponse.proto"
-    discovery
-    (Proxy :: Proxy CreateApplication)
-
-responseListConfigurations :: ListConfigurationsResponse -> TestTree
-responseListConfigurations = res
-    "ListConfigurationsResponse"
-    "fixture/ListConfigurationsResponse.proto"
-    discovery
-    (Proxy :: Proxy ListConfigurations)
-
-responseDescribeAgents :: DescribeAgentsResponse -> TestTree
-responseDescribeAgents = res
-    "DescribeAgentsResponse"
-    "fixture/DescribeAgentsResponse.proto"
-    discovery
-    (Proxy :: Proxy DescribeAgents)
-
-responseDescribeExportTasks :: DescribeExportTasksResponse -> TestTree
-responseDescribeExportTasks = res
-    "DescribeExportTasksResponse"
-    "fixture/DescribeExportTasksResponse.proto"
-    discovery
-    (Proxy :: Proxy DescribeExportTasks)
-
-responseStartDataCollectionByAgentIds :: StartDataCollectionByAgentIdsResponse -> TestTree
-responseStartDataCollectionByAgentIds = res
-    "StartDataCollectionByAgentIdsResponse"
-    "fixture/StartDataCollectionByAgentIdsResponse.proto"
-    discovery
-    (Proxy :: Proxy StartDataCollectionByAgentIds)
-
-responseGetDiscoverySummary :: GetDiscoverySummaryResponse -> TestTree
-responseGetDiscoverySummary = res
-    "GetDiscoverySummaryResponse"
-    "fixture/GetDiscoverySummaryResponse.proto"
-    discovery
-    (Proxy :: Proxy GetDiscoverySummary)
-
-responseDisassociateConfigurationItemsFromApplication :: DisassociateConfigurationItemsFromApplicationResponse -> TestTree
-responseDisassociateConfigurationItemsFromApplication = res
-    "DisassociateConfigurationItemsFromApplicationResponse"
-    "fixture/DisassociateConfigurationItemsFromApplicationResponse.proto"
-    discovery
-    (Proxy :: Proxy DisassociateConfigurationItemsFromApplication)
-
-responseAssociateConfigurationItemsToApplication :: AssociateConfigurationItemsToApplicationResponse -> TestTree
-responseAssociateConfigurationItemsToApplication = res
-    "AssociateConfigurationItemsToApplicationResponse"
-    "fixture/AssociateConfigurationItemsToApplicationResponse.proto"
-    discovery
-    (Proxy :: Proxy AssociateConfigurationItemsToApplication)
-
-responseListServerNeighbors :: ListServerNeighborsResponse -> TestTree
-responseListServerNeighbors = res
-    "ListServerNeighborsResponse"
-    "fixture/ListServerNeighborsResponse.proto"
-    discovery
-    (Proxy :: Proxy ListServerNeighbors)
-
-responseStartExportTask :: StartExportTaskResponse -> TestTree
-responseStartExportTask = res
-    "StartExportTaskResponse"
-    "fixture/StartExportTaskResponse.proto"
-    discovery
-    (Proxy :: Proxy StartExportTask)
diff --git a/test/Test/Amazonka/Discovery.hs b/test/Test/Amazonka/Discovery.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Discovery.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.Discovery
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Discovery
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/Discovery/Internal.hs b/test/Test/Amazonka/Discovery/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Discovery/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.Discovery.Internal
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Discovery.Internal where
diff --git a/test/Test/Amazonka/Gen/Discovery.hs b/test/Test/Amazonka/Gen/Discovery.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/Discovery.hs
@@ -0,0 +1,498 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.Discovery
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Gen.Discovery where
+
+import Amazonka.Discovery
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Discovery.Internal
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- 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"
+--         [ requestAssociateConfigurationItemsToApplication $
+--             newAssociateConfigurationItemsToApplication
+--
+--         , requestBatchDeleteImportData $
+--             newBatchDeleteImportData
+--
+--         , requestCreateApplication $
+--             newCreateApplication
+--
+--         , requestCreateTags $
+--             newCreateTags
+--
+--         , requestDeleteApplications $
+--             newDeleteApplications
+--
+--         , requestDeleteTags $
+--             newDeleteTags
+--
+--         , requestDescribeAgents $
+--             newDescribeAgents
+--
+--         , requestDescribeConfigurations $
+--             newDescribeConfigurations
+--
+--         , requestDescribeContinuousExports $
+--             newDescribeContinuousExports
+--
+--         , requestDescribeExportTasks $
+--             newDescribeExportTasks
+--
+--         , requestDescribeImportTasks $
+--             newDescribeImportTasks
+--
+--         , requestDescribeTags $
+--             newDescribeTags
+--
+--         , requestDisassociateConfigurationItemsFromApplication $
+--             newDisassociateConfigurationItemsFromApplication
+--
+--         , requestGetDiscoverySummary $
+--             newGetDiscoverySummary
+--
+--         , requestListConfigurations $
+--             newListConfigurations
+--
+--         , requestListServerNeighbors $
+--             newListServerNeighbors
+--
+--         , requestStartContinuousExport $
+--             newStartContinuousExport
+--
+--         , requestStartDataCollectionByAgentIds $
+--             newStartDataCollectionByAgentIds
+--
+--         , requestStartExportTask $
+--             newStartExportTask
+--
+--         , requestStartImportTask $
+--             newStartImportTask
+--
+--         , requestStopContinuousExport $
+--             newStopContinuousExport
+--
+--         , requestStopDataCollectionByAgentIds $
+--             newStopDataCollectionByAgentIds
+--
+--         , requestUpdateApplication $
+--             newUpdateApplication
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAssociateConfigurationItemsToApplication $
+--             newAssociateConfigurationItemsToApplicationResponse
+--
+--         , responseBatchDeleteImportData $
+--             newBatchDeleteImportDataResponse
+--
+--         , responseCreateApplication $
+--             newCreateApplicationResponse
+--
+--         , responseCreateTags $
+--             newCreateTagsResponse
+--
+--         , responseDeleteApplications $
+--             newDeleteApplicationsResponse
+--
+--         , responseDeleteTags $
+--             newDeleteTagsResponse
+--
+--         , responseDescribeAgents $
+--             newDescribeAgentsResponse
+--
+--         , responseDescribeConfigurations $
+--             newDescribeConfigurationsResponse
+--
+--         , responseDescribeContinuousExports $
+--             newDescribeContinuousExportsResponse
+--
+--         , responseDescribeExportTasks $
+--             newDescribeExportTasksResponse
+--
+--         , responseDescribeImportTasks $
+--             newDescribeImportTasksResponse
+--
+--         , responseDescribeTags $
+--             newDescribeTagsResponse
+--
+--         , responseDisassociateConfigurationItemsFromApplication $
+--             newDisassociateConfigurationItemsFromApplicationResponse
+--
+--         , responseGetDiscoverySummary $
+--             newGetDiscoverySummaryResponse
+--
+--         , responseListConfigurations $
+--             newListConfigurationsResponse
+--
+--         , responseListServerNeighbors $
+--             newListServerNeighborsResponse
+--
+--         , responseStartContinuousExport $
+--             newStartContinuousExportResponse
+--
+--         , responseStartDataCollectionByAgentIds $
+--             newStartDataCollectionByAgentIdsResponse
+--
+--         , responseStartExportTask $
+--             newStartExportTaskResponse
+--
+--         , responseStartImportTask $
+--             newStartImportTaskResponse
+--
+--         , responseStopContinuousExport $
+--             newStopContinuousExportResponse
+--
+--         , responseStopDataCollectionByAgentIds $
+--             newStopDataCollectionByAgentIdsResponse
+--
+--         , responseUpdateApplication $
+--             newUpdateApplicationResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAssociateConfigurationItemsToApplication :: AssociateConfigurationItemsToApplication -> TestTree
+requestAssociateConfigurationItemsToApplication =
+  req
+    "AssociateConfigurationItemsToApplication"
+    "fixture/AssociateConfigurationItemsToApplication.yaml"
+
+requestBatchDeleteImportData :: BatchDeleteImportData -> TestTree
+requestBatchDeleteImportData =
+  req
+    "BatchDeleteImportData"
+    "fixture/BatchDeleteImportData.yaml"
+
+requestCreateApplication :: CreateApplication -> TestTree
+requestCreateApplication =
+  req
+    "CreateApplication"
+    "fixture/CreateApplication.yaml"
+
+requestCreateTags :: CreateTags -> TestTree
+requestCreateTags =
+  req
+    "CreateTags"
+    "fixture/CreateTags.yaml"
+
+requestDeleteApplications :: DeleteApplications -> TestTree
+requestDeleteApplications =
+  req
+    "DeleteApplications"
+    "fixture/DeleteApplications.yaml"
+
+requestDeleteTags :: DeleteTags -> TestTree
+requestDeleteTags =
+  req
+    "DeleteTags"
+    "fixture/DeleteTags.yaml"
+
+requestDescribeAgents :: DescribeAgents -> TestTree
+requestDescribeAgents =
+  req
+    "DescribeAgents"
+    "fixture/DescribeAgents.yaml"
+
+requestDescribeConfigurations :: DescribeConfigurations -> TestTree
+requestDescribeConfigurations =
+  req
+    "DescribeConfigurations"
+    "fixture/DescribeConfigurations.yaml"
+
+requestDescribeContinuousExports :: DescribeContinuousExports -> TestTree
+requestDescribeContinuousExports =
+  req
+    "DescribeContinuousExports"
+    "fixture/DescribeContinuousExports.yaml"
+
+requestDescribeExportTasks :: DescribeExportTasks -> TestTree
+requestDescribeExportTasks =
+  req
+    "DescribeExportTasks"
+    "fixture/DescribeExportTasks.yaml"
+
+requestDescribeImportTasks :: DescribeImportTasks -> TestTree
+requestDescribeImportTasks =
+  req
+    "DescribeImportTasks"
+    "fixture/DescribeImportTasks.yaml"
+
+requestDescribeTags :: DescribeTags -> TestTree
+requestDescribeTags =
+  req
+    "DescribeTags"
+    "fixture/DescribeTags.yaml"
+
+requestDisassociateConfigurationItemsFromApplication :: DisassociateConfigurationItemsFromApplication -> TestTree
+requestDisassociateConfigurationItemsFromApplication =
+  req
+    "DisassociateConfigurationItemsFromApplication"
+    "fixture/DisassociateConfigurationItemsFromApplication.yaml"
+
+requestGetDiscoverySummary :: GetDiscoverySummary -> TestTree
+requestGetDiscoverySummary =
+  req
+    "GetDiscoverySummary"
+    "fixture/GetDiscoverySummary.yaml"
+
+requestListConfigurations :: ListConfigurations -> TestTree
+requestListConfigurations =
+  req
+    "ListConfigurations"
+    "fixture/ListConfigurations.yaml"
+
+requestListServerNeighbors :: ListServerNeighbors -> TestTree
+requestListServerNeighbors =
+  req
+    "ListServerNeighbors"
+    "fixture/ListServerNeighbors.yaml"
+
+requestStartContinuousExport :: StartContinuousExport -> TestTree
+requestStartContinuousExport =
+  req
+    "StartContinuousExport"
+    "fixture/StartContinuousExport.yaml"
+
+requestStartDataCollectionByAgentIds :: StartDataCollectionByAgentIds -> TestTree
+requestStartDataCollectionByAgentIds =
+  req
+    "StartDataCollectionByAgentIds"
+    "fixture/StartDataCollectionByAgentIds.yaml"
+
+requestStartExportTask :: StartExportTask -> TestTree
+requestStartExportTask =
+  req
+    "StartExportTask"
+    "fixture/StartExportTask.yaml"
+
+requestStartImportTask :: StartImportTask -> TestTree
+requestStartImportTask =
+  req
+    "StartImportTask"
+    "fixture/StartImportTask.yaml"
+
+requestStopContinuousExport :: StopContinuousExport -> TestTree
+requestStopContinuousExport =
+  req
+    "StopContinuousExport"
+    "fixture/StopContinuousExport.yaml"
+
+requestStopDataCollectionByAgentIds :: StopDataCollectionByAgentIds -> TestTree
+requestStopDataCollectionByAgentIds =
+  req
+    "StopDataCollectionByAgentIds"
+    "fixture/StopDataCollectionByAgentIds.yaml"
+
+requestUpdateApplication :: UpdateApplication -> TestTree
+requestUpdateApplication =
+  req
+    "UpdateApplication"
+    "fixture/UpdateApplication.yaml"
+
+-- Responses
+
+responseAssociateConfigurationItemsToApplication :: AssociateConfigurationItemsToApplicationResponse -> TestTree
+responseAssociateConfigurationItemsToApplication =
+  res
+    "AssociateConfigurationItemsToApplicationResponse"
+    "fixture/AssociateConfigurationItemsToApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AssociateConfigurationItemsToApplication)
+
+responseBatchDeleteImportData :: BatchDeleteImportDataResponse -> TestTree
+responseBatchDeleteImportData =
+  res
+    "BatchDeleteImportDataResponse"
+    "fixture/BatchDeleteImportDataResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BatchDeleteImportData)
+
+responseCreateApplication :: CreateApplicationResponse -> TestTree
+responseCreateApplication =
+  res
+    "CreateApplicationResponse"
+    "fixture/CreateApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateApplication)
+
+responseCreateTags :: CreateTagsResponse -> TestTree
+responseCreateTags =
+  res
+    "CreateTagsResponse"
+    "fixture/CreateTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTags)
+
+responseDeleteApplications :: DeleteApplicationsResponse -> TestTree
+responseDeleteApplications =
+  res
+    "DeleteApplicationsResponse"
+    "fixture/DeleteApplicationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteApplications)
+
+responseDeleteTags :: DeleteTagsResponse -> TestTree
+responseDeleteTags =
+  res
+    "DeleteTagsResponse"
+    "fixture/DeleteTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTags)
+
+responseDescribeAgents :: DescribeAgentsResponse -> TestTree
+responseDescribeAgents =
+  res
+    "DescribeAgentsResponse"
+    "fixture/DescribeAgentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeAgents)
+
+responseDescribeConfigurations :: DescribeConfigurationsResponse -> TestTree
+responseDescribeConfigurations =
+  res
+    "DescribeConfigurationsResponse"
+    "fixture/DescribeConfigurationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeConfigurations)
+
+responseDescribeContinuousExports :: DescribeContinuousExportsResponse -> TestTree
+responseDescribeContinuousExports =
+  res
+    "DescribeContinuousExportsResponse"
+    "fixture/DescribeContinuousExportsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeContinuousExports)
+
+responseDescribeExportTasks :: DescribeExportTasksResponse -> TestTree
+responseDescribeExportTasks =
+  res
+    "DescribeExportTasksResponse"
+    "fixture/DescribeExportTasksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeExportTasks)
+
+responseDescribeImportTasks :: DescribeImportTasksResponse -> TestTree
+responseDescribeImportTasks =
+  res
+    "DescribeImportTasksResponse"
+    "fixture/DescribeImportTasksResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeImportTasks)
+
+responseDescribeTags :: DescribeTagsResponse -> TestTree
+responseDescribeTags =
+  res
+    "DescribeTagsResponse"
+    "fixture/DescribeTagsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeTags)
+
+responseDisassociateConfigurationItemsFromApplication :: DisassociateConfigurationItemsFromApplicationResponse -> TestTree
+responseDisassociateConfigurationItemsFromApplication =
+  res
+    "DisassociateConfigurationItemsFromApplicationResponse"
+    "fixture/DisassociateConfigurationItemsFromApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DisassociateConfigurationItemsFromApplication)
+
+responseGetDiscoverySummary :: GetDiscoverySummaryResponse -> TestTree
+responseGetDiscoverySummary =
+  res
+    "GetDiscoverySummaryResponse"
+    "fixture/GetDiscoverySummaryResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDiscoverySummary)
+
+responseListConfigurations :: ListConfigurationsResponse -> TestTree
+responseListConfigurations =
+  res
+    "ListConfigurationsResponse"
+    "fixture/ListConfigurationsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListConfigurations)
+
+responseListServerNeighbors :: ListServerNeighborsResponse -> TestTree
+responseListServerNeighbors =
+  res
+    "ListServerNeighborsResponse"
+    "fixture/ListServerNeighborsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListServerNeighbors)
+
+responseStartContinuousExport :: StartContinuousExportResponse -> TestTree
+responseStartContinuousExport =
+  res
+    "StartContinuousExportResponse"
+    "fixture/StartContinuousExportResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartContinuousExport)
+
+responseStartDataCollectionByAgentIds :: StartDataCollectionByAgentIdsResponse -> TestTree
+responseStartDataCollectionByAgentIds =
+  res
+    "StartDataCollectionByAgentIdsResponse"
+    "fixture/StartDataCollectionByAgentIdsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartDataCollectionByAgentIds)
+
+responseStartExportTask :: StartExportTaskResponse -> TestTree
+responseStartExportTask =
+  res
+    "StartExportTaskResponse"
+    "fixture/StartExportTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartExportTask)
+
+responseStartImportTask :: StartImportTaskResponse -> TestTree
+responseStartImportTask =
+  res
+    "StartImportTaskResponse"
+    "fixture/StartImportTaskResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartImportTask)
+
+responseStopContinuousExport :: StopContinuousExportResponse -> TestTree
+responseStopContinuousExport =
+  res
+    "StopContinuousExportResponse"
+    "fixture/StopContinuousExportResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopContinuousExport)
+
+responseStopDataCollectionByAgentIds :: StopDataCollectionByAgentIdsResponse -> TestTree
+responseStopDataCollectionByAgentIds =
+  res
+    "StopDataCollectionByAgentIdsResponse"
+    "fixture/StopDataCollectionByAgentIdsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StopDataCollectionByAgentIds)
+
+responseUpdateApplication :: UpdateApplicationResponse -> TestTree
+responseUpdateApplication =
+  res
+    "UpdateApplicationResponse"
+    "fixture/UpdateApplicationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateApplication)
